Thursday, October 12, 2006

Crear PDF en ABAP


Esto si es algo que puede serles muy útil...Por lo menos a mi me ha servido de mucho -:)

Supongamos que tienen que hacer un formulario SapScript y tienen que enviarlo por correo...¿Cómo lo hacen? Muy simple -;) Lo convierten en PDF.

Esta función, pide solamente una ruta donde generar el PDF, y toma los datos de la última orden de Spool que hayamos creado.

*"----------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(FILENAME) TYPE STRING
*"----------------------------------------------------------

SELECT RQIDENT
INTO (T_TSP01-RQIDENT)
FROM TSP01
WHERE RQOWNER EQ SY-UNAME
AND RQCLIENT EQ SY-MANDT.
APPEND T_TSP01.
ENDSELECT.

SORT T_TSP01 DESCENDING.

CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
EXPORTING
SRC_SPOOLID = T_TSP01-RQIDENT
NO_DIALOG = ''
IMPORTING
PDF_BYTECOUNT = NUMBYTES
PDF_SPOOLID = PDFSPOOLID
BTC_JOBNAME = JOBNAME
BTC_JOBCOUNT = JOBCOUNT
TABLES
PDF = PDF
EXCEPTIONS
ERR_NO_OTF_SPOOLJOB = 1
ERR_NO_SPOOLJOB = 2
ERR_NO_PERMISSION = 3
ERR_CONV_NOT_POSSIBLE = 4
ERR_BAD_DSTDEVICE = 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 EQ 0.

CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = NUMBYTES
FILENAME = FILENAME
FILETYPE = 'BIN'
TABLES
DATA_TAB = PDF
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6.

IF SY-SUBRC EQ 0.
DELETE FROM TSP01 WHERE RQIDENT EQ T_TSP01-RQIDENT.
ENDIF.

ENDIF.

ENDFUNCTION.


Saludos,

Blag.

2 comments:

Anonymous said...

Very Helpful. Thanks.

Anonymous said...

Excelente Codigo... Gracias!