Es común que nos pidan hacer un resguardo de un formulario. Y probablemente tengamos que hacer el backup a PDF.
Con este código vamos a poder tomar una orden de spool, por ejemplo de un formulario, para luego crear el PDF.
DATA: IT_TSP01 LIKE TSP01 OCCURS 0 WITH HEADER LINE.
DATA: NUMBYTES TYPE I,
PDFSPOOLID LIKE TSP01-RQIDENT,
IT_PDF LIKE TLINE OCCURS 0.
*Lo primero es buscar el número de la orden de spool en la tabla TSP01. *En este caso le paso el nombre del usuario y el mandante.
SELECT RQIDENT
INTO (IT_TSP01-RQIDENT)
FROM TSP01
WHERE RQOWNER EQ SY-UNAME
AND RQCLIENT EQ SY-MANDT.
APPEND IT_TSP01.
ENDSELECT.
*Ordeno en forma descendente para quedarme con el último formulario *generado
SORT IT_TSP01 DESCENDING.
*Al siguiente módulo de función le paso el número de la orden para que *me devuelva el formulario dentro de la tabla IT_PDF
CALL FUNCTION ‘CONVERT_OTFSPOOLJOB_2_PDF’
EXPORTING
SRC_SPOOLID = IT_TSP01-RQIDENT
IMPORTING
PDF_BYTECOUNT = NUMBYTES
TABLES
PDF = IT_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.
*Una vez que tengo el formulario en la tabla hago el download
CALL FUNCTION ‘GUI_DOWNLOAD’
EXPORTING
BIN_FILESIZE = NUMBYTES
FILENAME = P_FILE
FILETYPE = ‘BIN’
TABLES
DATA_TAB = IT_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.
MESSAGE I014(ZSM) WITH P_FILE
‘ .Nombre de archivo creado’
‘ con Nro. Doc. Interno Sap.’.
ELSE.
MESSAGE I014(ZSM) WITH P_FILE.
DELETE FROM TSP01 WHERE RQIDENT EQ T_TSP01-RQIDENT.
ENDIF.
ENDIF.
Technorati tags: sdn blogger
Comentarios Recientes: