PDA

Ver la Versión Completa : Enviar PDF a correo externo


josechc23
30/11/10, 19:20:35
Hola amigos del Foro .. tengo un problema ... estoy intentando enviar un archivo en un correo de una cuenta externa ... pero no consigo entender el funcionamiento y el armado de los parametros que requiere la funcion que lo hace ... alguien de ustedes me puede a yudar a entenderla ... y a usarla

Aqui les anexo el codigo en donde armo el archivo pdf ojala me puedan ayudar.

De esta manera armo el PDF
data :
BEGIN OF T_TSP01 OCCURS 0,
RQIDENT like TSP01-RQIDENT ,
END OF T_TSP01.
data : NUMBYTES TYPE I,
PDFSPOOLID LIKE TSP01-RQIDENT,
JOBNAME LIKE TBTCJOB-JOBNAME,
JOBCOUNT LIKE TBTCJOB-JOBCOUNT.
* NAME LIKE TST01-DNAME,
* OBJTYPE LIKE RSTSTYPE-TYPE.
data :
PDF LIKE TLINE OCCURS 100 WITH HEADER LINE.
data : D_NAME_FILE(20) type c.
DATA: CANCEL.

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.

PERFORM CREA_NOMBRE_ARCH CHANGING D_NAME_FILE.
CONCATENATE P_FILE D_NAME_FILE INTO P_FILE.

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 'DOWNLOAD'
EXPORTING
BIN_FILESIZE = NUMBYTES
FILENAME = P_FILE
FILETYPE = 'BIN'
IMPORTING
ACT_FILENAME = P_FILE
FILESIZE = NUMBYTES
CANCEL = CANCEL
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.



Con esta función intento enviarlo por correo.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOC_DATA
PUT_IN_OUTBOX = 'X'
TABLES
PACKING_LIST = I_OBJPACK
OBJECT_HEADER = OBJHEAD
CONTENTS_BIN = i_cont_bin
CONTENTS_TXT = OBJTXT
RECEIVERS = IT_RECEIVERS
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
OTHERS = 8.

VLozano
01/12/10, 06:38:01
Échale un vistazo a esto:
http://tulyidiots.wordpress.com/2008/09/15/how-to-send-a-mail-through-sap-and-not-to-die-trying-it/

Lo sé, está en inglés, pero es lo que hay. De ahí puedes sacar lo que necesitas tanto para pdf como para cualquier tipo de archivo que quieras adjuntar.

La función que usa no es exactamente la misma, porque la que había en el momento de escribirse ese post no permitía modificar el remitente del envío, cosa que el usuario exigía (sigh).

Suerte.