De ALV a PDF

Para convertir el resultado de un ALV en un PDF hay que proceder de la siguiente forma.

En primer lugar se debe generar la orden de Spool a partir del ALV, eso se hace setenado el parámetro “IS_PRINT” en la llamada del ALV.

lv_print-print                  = ’X’.
lv_print-no_print_listinfos     = ’X’.   ” No muestra cabecera de informacion en el pdf
lv_print-no_change_print_params = ’X’. ” Deja por defecto los parametros de impresora.

sy-batch = ’X’. “Se ejecuta de fondo el ALV, de esta forma no aparece el Popup para setear los parameotrs de impresora.

CALL FUNCTION‘REUSE_ALV_LIST_DISPLAY’
EXPORTING
is_layout          = ls_layout
it_fieldcat        = gt_fieldcat[]
is_print           = lv_print
TABLES
t_outtab           = lt_bkpf
EXCEPTIONS
program_error                     = 1
OTHERS                            = 2.

Esto generara una orden de Spool, debemos capturar el numero de orden de la siguiente manera.

DATA: it_tsp01 LIKE tsp01 OCCURSWITH HEADER LINE,
ls_tsp01 TYPE tsp01.

SELECT rqident
INTO CORRESPONDING FIELDS OF TABLE it_tsp01
FROM tsp01
WHERE rqowner  EQ sy-uname
AND rqclient EQ sy-mandt.

*Ordeno en forma descendente para quedarme con el último formulario *generado
SORT it_tsp01 DESCENDING BY rqident.

READ TABLE it_tsp01 INTO ls_tsp01 INDEX 1.

f_rqident = ls_tsp01-rqident.

Para bajar la orden de Spool a formato PDF se usa la siguiente función.

DATA: gd_bytecount LIKE tst01-dsize.

DATA: x_rqid LIKE tsp01-rqident.

DATA: BEGIN OF gt_objaux OCCURS 0.
INCLUDE STRUCTURE tline.
DATA: END OF gt_objaux.

CALL FUNCTION‘CONVERT_ABAPSPOOLJOB_2_PDF’
EXPORTING
src_spoolid              = x_rqid
no_dialog                = space
IMPORTING
pdf_bytecount            = gd_bytecount
TABLES
pdf                      = gt_objaux.

Para poder bajarlo a un archivo PDF, habrá que hacer una conversión.

DATA: lines TYPE STANDARD TABLE OF hlpext WITH HEADER LINE.

LOOP AT gt_objaux.
lines-line+00(002) = gt_objaux-tdformat.
lines-line+02(132) = gt_objaux-tdline.
APPEND lines.
ENDLOOP.

CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename                = p_file
filetype                = ’BIN’
CHANGING
data_tab                = lines[]

….

Se adjunta un archivo con el ejemplo correspondiente.

z_reporte_pdf

Advertisement
Esta entrada fue publicada en Sin categoría y etiquetada , , , , . Guarda el enlace permanente.

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s