Como te mencioné, "Não se esqueça de lidar com os erros (SY-SUBRC, exceções) e depurar seu código.".
Nota: meu programa independente anterior funciona com certeza, desde que você utilize o caminho do arquivo correto.
Avalados por :
Olá a todos,
Estou enfrentando problemas ao converter um código base64 para um arquivo pdf em AL11, depois de gravar e fazer o download percebo que o arquivo está vazio, por favor, me ajudem.
- Eu tentei usar os seguintes métodos, mas sem sucesso, o arquivo pdf sempre fica em branco:
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 mencioné, "Não se esqueça de lidar com os erros (SY-SUBRC, exceções) e depurar seu código.".
Nota: meu programa independente anterior funciona com certeza, desde que você utilize o caminho do arquivo correto.
Estou enfrentando o mesmo problema de arquivo em branco.
Tente simplificar seu código. Por exemplo:
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.
Não se esqueça de lidar com erros (SY-SUBRC, exceções) e depurar seu código.
Não é necessário publicar código morto, isso só confundirá as pessoas.
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute