¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como baixar um arquivo PDF de um programa ABAP gerado no SPOOL corretamente

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


Olá ABAPers, gostaria de baixar o arquivo PDF utilizando um programa que já está gerado no SPOOL. Tentei usar o seguinte código

FM CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = lv_spool_id
no_dialog = 'X'
dst_device = 'PDF1'
pdf_destination = 'X'
IMPORTING
pdf_bytecount = lv_bin_size
pdf_spoolid = ev_spoolid
bin_file = lv_xstring
TABLES
pdf = lta_lt_pdf
EXCEPTIONS
err_no_abap_spooljob = 1
err_no_spooljob = 2
err_no_permission = 3
err_conv_not_possible = 4
err_bad_destdevice = 5
user_cancelled = 6
err_spoolerror = 7
err_temseerror = 8
err_btcjob_open_failed = 9
err_btcjob_submit_failed = 10
err_btcjob_close_failed = 11
OTHERS = 12.
IF sy-subrc <> 0.
* Implementar um tratamento de erro adequado aqui
ENDIF.
A tabela interna LTA_LT_PDF não está recebendo nenhum dado da FM, só vejo que os campos binsize e xstring são preenchidos, como proceder? Tentei converter xstring para PDF usando

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_xstring
TABLES
binary_tab = data_tab.
y

CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = lv_bin_size
filename = lv_path
filetype = 'BIN'
TABLES
data_tab = data_tab
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc <> 0.
* Implementar um tratamento de erro adequado aqui
ENDIF.

Mas o PDF que está sendo baixado parece estar corrompido, qual poderia ser a razão?

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

2 Respuestas

0
Cargando...

Primeiramente, existem vários tipos de solicitações de spool, ABAP List, OTF (Formulário SAPScript, Smart Form), Adobe PDF, etc.

CONVERT_ABAPSPOOLJOB_2_PDF é apenas para solicitações de spool do tipo ABAP List.

Se você usar PDF_DESTINATION = 'X', apenas preencha o parâmetro BIN_FILE (não PDF_BYTECOUNT e não PDF).

Uma possível solução (entre outras):

  1. não use PDF_DESTINATION (igual a passar = espaço) que preencherá os parâmetros PDF_BYTECOUNT e PDF,
  2. declare LTA_LX_PDF do tipo SOLIX_TAB (linhas com um componente do tipo X e comprimento 255),
  3. não é necessário SCMS_XSTRING_TO_BINARY,
  4. faça o download com BIN_FILESIZE = lv_bin_size e DATA_TAB = lta_lx_pdf.
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Por favor, formateie seu código corretamente. Consulte Resolvido: Como postar código na Comunidade SAP >=2024 - Comunidade SAP .

por exemplo, veja como fica depois:

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    EXPORTING
      buffer     = lv_xstring
    TABLES
      binary_tab = data_tab.

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?