¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Solución para convertir código base64 a archivo pdf en AL11 y evitar archivos vacíos

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

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

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

4 Respuestas

0
Cargando...

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.

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

Estoy teniendo el mismo problema de archivo en blanco.

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

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.

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

No es necesario publicar código muerto, eso solo confundirá a la gente.

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?