viernes, 25 de septiembre de 2009

ABAP envia por pdf el ultimo spool creado

*&---------------------------------------------------------------------*
*& Form ENVIA_MAIL2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*

form envia_mail2.

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 = 'C:\Aviso.pdf'
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 'Aviso de pago creado'
' '
' '.
*se envia un correo a la direccion correspondiente con el Aviso adjunto
CALL FUNCTION 'ZCORREO'
EXPORTING
correo2 = 'felipe.carrales@gmail.com'
adjunto2 = 'C:\Aviso.pdf'.


ELSE.
MESSAGE I014(ZSM) WITH 'No se pudo transferir el archivo c:\Aviso.pdf'.
DELETE FROM TSP01 WHERE RQIDENT EQ IT_TSP01-RQIDENT.
ENDIF.

ENDIF.



endform.

No hay comentarios: