Como te dije, "No olvides manejar los errores (SY-SUBRC, excepciones), y depurar tu código.".
Nota: mi programa independiente anterior funciona seguro, siempre y cuando uses la ruta de archivo correcta.
Avalados por :
Hola a todos,
Estoy teniendo problemas al convertir un código base64 a un archivo pdf en AL11, después de grabar y descargar me doy cuenta de que el archivo está vacío, por favor ayúdenme.
- He intentado usar los siguientes métodos, pero sin éxito, el archivo pdf siempre sale en blanco:
CÓDIGO 1:
DATA: fic_binario TYPE xstring,
contents_tb TYPE TABLE OF sdokcntbin,
contents_st TYPE sdokcntbin,
file_length TYPE i,
flag TYPE c,
off TYPE i,
len TYPE i.
CALL FUNCTION 'SSFC_BASE64_DECODE'
EXPORTING
b64data = lv_return_string
IMPORTING
bindata = fic_binario.
TRY.
len = xstrlen( fic_binario ).
file_length = len.
WHILE flag IS INITIAL.
IF len LE 1022.
contents_st-line = fic_binario+off(len).
flag = 'X'.
ELSE.
contents_st-line = fic_binario+off(1022).
off = off + 1022.
len = len - 1022.
ENDIF.
APPEND contents_st TO contents_tb.
ENDWHILE.
DATA(lv_filename_path) = |{ c_path_al11 }{ p_idgarantia }_{ p_tpform }.pdf|.
OPEN DATASET lv_filename_path FOR OUTPUT IN BINARY MODE.
LOOP AT contents_tb ASSIGNING FIELD-SYMBOL(<contents_fs>).
TRANSFER <contents_fs> TO lv_filename_path.
ENDLOOP.
CLOSE DATASET lv_filename_path.
ENDTRY.
CÓDIGO 2:
* CALL FUNCTION 'SCMS_BASE64_DECODE_STR'
* EXPORTING
* input = lv_return_string
* IMPORTING
* output = lv_base64_xtring
* EXCEPTIONS
* failed = 1
* OTHERS = 2.
*
* IF sy-subrc EQ 0.
*
* CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
* EXPORTING
* buffer = lv_base64_xtring
* IMPORTING
* output_length = lv_length
* TABLES
* binary_tab = lt_binary
* EXCEPTIONS
* error_message = 1
* OTHERS = 2.
*
* IF sy-subrc EQ 0.
*
* CALL FUNCTION 'SCMS_BINARY_TO_STRING'
* EXPORTING
* input_length = lv_length
* IMPORTING
* text_buffer = lv_string
* TABLES
* binary_tab = lt_binary
* EXCEPTIONS
* failed = 1
* OTHERS = 2.
CÓDIGO 3:
* DATA(lv_base64_pdf) = VALUE string( ).
* DATA: lv_decodedx TYPE xstring,
* lv_bin_filesize TYPE i,
* lt_data_s TYPE solix_tab.
*
* CALL METHOD cl_http_utility=>if_http_utility~decode_x_base64
* EXPORTING
** encoded = lv_base64_pdf
* encoded = lv_return_string
* RECEIVING
Como te dije, "No olvides manejar los errores (SY-SUBRC, excepciones), y depurar tu código.".
Nota: mi programa independiente anterior funciona seguro, siempre y cuando uses la ruta de archivo correcta.
Estoy teniendo el mismo problema de archivo en blanco.
Intenta simplificar tu código. Por ejemplo:
DATA: xstring TYPE xstring, base64_string TYPE string.
base64_string = 'YGE='.
CALL TRANSFORMATION id SOURCE whatever = base64_string RESULT whatever = xstring.
OPEN DATASET path_file FOR OUTPUT IN BINARY MODE.
TRANSFER xstring TO path_file.
CLOSE DATASET path_file.
No olvides manejar los errores (SY-SUBRC, excepciones) y depurar tu código.
No es necesario publicar código muerto, eso solo confundirá a la gente.
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute