¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Solução para converter código base64 em arquivo PDF no AL11 e evitar arquivos vazios

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 57 Vistas
0
Cargando...

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

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

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.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Estou enfrentando o mesmo problema de arquivo em branco.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

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.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Não é necessário publicar código morto, isso só confundirá as pessoas.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?