PDA

Ver la Versión Completa : Ejemplo generar smartforms a PDF


rhein
13/10/09, 14:51:44
Hola foreros, necesito un ejemplo de como transformar la impresion de un smartfomrs a PDF, es un formulario muy simple pero debeo transformarlo a PDF.

de antemano agradecido
rhein

RAMONES
13/10/09, 15:26:47
Buen dia!! Proba con este codigo y contanos como te fue!!

Saludos!!





*&---------------------------------------------------------------------*
*& Report Z_ALE_SMARTFORMS_PDF
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT Z_ALE_SMARTFORMS_PDF.

PARAMETERS:
SPOOLNO LIKE TSP01-RQIDENT, " Orden Spool
DOWNLOAD AS CHECKBOX DEFAULT 'X',
P_FILE LIKE RLGRAP-FILENAME DEFAULT 'C:\file.pdf'. " Destino del
" archivo

DATA: name like RSTSTYPE-NAME,
client like tst01-dclient.

* Tabla donde se van a guardar los datos del SPOOL, para bajarlos al
* archivo
DATA PDF LIKE TLINE OCCURS 100 WITH HEADER LINE.

DATA: v_file TYPE string.

* Se utiliza para poder utilizarlo como condición cuando se pregunta si
* es = ´X´ OTF (Sapscript, Smartform) = '' (Lista)
DATA is_otf.

* Tipo de dato donde se guarda el tipo de documento de la orden de
* spool, si es un Smartforms o una lista ABAP
DATA: objtype LIKE rststype-type,
type LIKE rststype-type.


START-OF-SELECTION.

TABLES: tsp01.

SELECT SINGLE * FROM tsp01 WHERE rqident = spoolno.

client = tsp01-rqclient. " Mandante
name = tsp01-rqo1name. " N° de Spool


* Función que se le pasan los datos de la orden de Spool con la cual
* vamos a trabajar y devuelve de que tipo es el documento que tiene la
* orden de Spool. 'OTF' = Smartforms
CALL FUNCTION 'RSTS_GET_ATTRIBUTES'
EXPORTING
AUTHORITY = 'SP01'
CLIENT = client
NAME = name
PART = 1
IMPORTING
* CHARCO =
* CREATER =
* CREDATE =
* DELDATE =
* MAX_CREDATE =
* MAX_DELDATE =
* NON_UNIQ =
* NOOF_PARTS =
* RECTYP =
* SIZE =
* STOTYP =
TYPE = type
OBJTYPE = objtype
EXCEPTIONS
FB_ERROR = 1
FB_RSTS_OTHER = 2
NO_OBJECT = 3
NO_PERMISSION = 4.

IF objtype(3) = 'OTF'. " Si es un Smartforms
is_otf = 'X'.
ELSE. " Si es una lista ABAP
is_otf = space.
ENDIF.

IF is_otf = 'X'. " Si es un Smartforms

" Función que se encarga de bajar los datos del documento (Smartforms)
" de la orden de Spool a una tabla interna (PDF)
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
EXPORTING
SRC_SPOOLID = spoolno
NO_DIALOG = ' '
" DST_DEVICE =
" PDF_DESTINATION =
" IMPORTING
" PDF_BYTECOUNT = numbytes
" PDF_SPOOLID = spoolno
"" OTF_PAGECOUNT =
" 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.

ELSE. " Si es una lista ABAP

" Función que se encarga de bajar los datos del documento (Lista ABAP)
" de la orden de Spool a una tabla interna (PDF)
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
SRC_SPOOLID = spoolno
NO_DIALOG = ' '
" DST_DEVICE =
" PDF_DESTINATION =
" IMPORTING
" PDF_BYTECOUNT = numbytes
" PDF_SPOOLID = pdfspoolid
"" LIST_PAGECOUNT =
" BTC_JOBNAME = jobname
" BTC_JOBCOUNT = jobcount
TABLES
PDF = 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.
ENDIF.


v_file = p_file. " Variable del nombre del path tipo string

* Función que se encarga de bajar los datos guardados en una tabla
* interna a PC en formato PDF.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE = bin_filesize
FILENAME = v_file
FILETYPE = 'BIN'
* APPEND = ' '
* CODEPAGE = ' '
* NO_BYTEORDER_MARK = ' '
* IMPORTING
* FILELENGTH = c
TABLES
DATA_TAB = pdf
* FORMAT_TAB =
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6.