PDA

Ver la Versión Completa : Como insertar varios ficheros PDF en un mail


javibest
11/09/13, 13:46:44
Antes de realizar la función estuve buscando info de como hacer para recoger los archivos anexados en un objeto (archivelink) y enviarlos por correo.

Me encontré con 2 problemas
- Obtener los links de los archivos anexados al objeto
- Insertar varios documentos en un mismo mail.

Copio y pego el codigo de la funcíon :

FUNCTION zpinf_get_attach_cesion.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(LS_PSPID) TYPE PS_PSPID
*" EXPORTING
*" REFERENCE(LS_RETURN) TYPE BAPIRET2
*"----------------------------------------------------------------------

*"----------------------------------------------------------------------


DATA : lwa_zir_er_doc_gos LIKE zir_er_doc_gos,
lwa_prps LIKE prps,
lwa_proj LIKE proj,
ld_nombre TYPE soli,
ld_return TYPE bapiret2,
ld_document_id TYPE so_entryid,
ld_document_data TYPE sofolenti1,
ld_sodocchgi1 LIKE sodocchgi1,
ld_lineas_txt LIKE sy-index,
ld_lineas_pdf LIKE sy-index.




DATA : lt_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE, "Header data for document
lt_object_content LIKE solisti1 OCCURS 0 WITH HEADER LINE, "Document Content
lt_contents_hex LIKE solix OCCURS 0 WITH HEADER LINE, "Table for Binary Content
lt_contents_bin LIKE solisti1 OCCURS 0 WITH HEADER LINE, "Table for Binary Content
lt_contents_txt LIKE solisti1 OCCURS 0 WITH HEADER LINE, "Table for mail body
lt_receivers LIKE somlreci1 OCCURS 5 WITH HEADER LINE, "Receivers
lt_packinglist LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE.



SELECT SINGLE * INTO lwa_proj
FROM proj
WHERE pspid = ls_pspid.

CHECK sy-subrc = 0.

SELECT SINGLE * INTO lwa_zir_er_doc_gos
FROM zir_er_doc_gos
WHERE pspid = lwa_proj-pspid
AND carpeta = 'CES'.

CHECK sy-subrc = 0.

MOVE lwa_zir_er_doc_gos-attachment TO ld_document_id.

*------------------------------------------------------------------------------------------------
*- Lectura del documento
*------------------------------------------------------------------------------------------------

CALL FUNCTION 'SO_DOCUMENT_READ_API1'
EXPORTING
document_id = ld_document_id
* FILTER = 'X '
IMPORTING
document_data = ld_document_data
TABLES
object_header = lt_object_header
object_content = lt_object_content
* OBJECT_PARA =
* OBJECT_PARB =
* ATTACHMENT_LIST =
* RECEIVER_LIST =
contents_hex = lt_contents_hex
EXCEPTIONS
document_id_not_exist = 1
operation_no_authorization = 2
x_error = 3
OTHERS = 4.

IF sy-subrc <> 0.
MOVE-CORRESPONDING sy TO ls_return.
ENDIF.




*------------------------------------------------------------------------------------------------
*- Recipientes del correo
*------------------------------------------------------------------------------------------------
lt_receivers-receiver = 'javier.fernandezrodriguez.externo@hcenergia.com'.
lt_receivers-express = 'X'.
lt_receivers-rec_type = 'U'.
APPEND lt_receivers.
CLEAR lt_receivers.

*------------------------------------------------------------------------------------------------
* Objeto con el cuerpo del e-mail.
*------------------------------------------------------------------------------------------------
lt_contents_txt = 'Se adjunta fichero de cesion'.
APPEND lt_contents_txt.
CLEAR lt_contents_txt.

DESCRIBE TABLE lt_contents_txt LINES ld_lineas_txt.

*------------------------------------------------------------------------------------------------
*- Datos que pueden ser modificados en un objeto.
*------------------------------------------------------------------------------------------------

ld_sodocchgi1-obj_name = 'Cesion'. "Nombre del documento, de la carpeta o lista de distribución
ld_sodocchgi1-obj_descr = 'Documento de cesión'. "Breve descripción del contenido
ld_sodocchgi1-obj_langu = sy-langu. "Idioma en que se ha creado el documento
ld_sodocchgi1-obj_sort = ''. "Campo de clasificación
ld_sodocchgi1-obj_expdat = ''. "Fecha de caducidad del objeto
ld_sodocchgi1-sensitivty = ''. "Objeto: Carácter (privado, funcional, etc.)
ld_sodocchgi1-obj_prio = ''. "Prioridad del documento
ld_sodocchgi1-no_change = ''. "No es posible modificar este doc.
ld_sodocchgi1-doc_size = ld_lineas_txt.


*------------------------------------------------------------------------------------------------
*- Pack to main body as RAW
*------------------------------------------------------------------------------------------------


lt_packinglist-transf_bin = ''. "Indicador para visual.objeto a transportar de modo binario
lt_packinglist-head_start = '1'. "Línea de inicio de cabecera de obj.en paquete transporte
lt_packinglist-head_num = '0'. "Ctd.de líneas de cabecera de objeto en paquete
lt_packinglist-body_start = '1'. "Línea de inicio de contenido de objeto en paquete
lt_packinglist-body_num = ld_lineas_txt. "Cantidad de líneas de contenido de objeto en paquete
lt_packinglist-doc_type = 'RAW'. "Sigla p.tipo de documento
lt_packinglist-obj_name = 'Cesion'. "Nombre del documento, de la carpeta o lista de distribución
lt_packinglist-obj_descr = 'Documento de cesión'. "Breve descripción del contenido
lt_packinglist-obj_langu = sy-langu. "Idioma en que se ha creado el documento
lt_packinglist-doc_size = ld_lineas_txt * 255. "Tamaño de documento SAPoffice (para API1)
lt_packinglist-mess_type = ''. "Clase de mensaje

APPEND lt_packinglist.
CLEAR lt_packinglist.


*------------------------------------------------------------------------------------------------
*- Descripcion de elementos del objeto importados (PDF)
*------------------------------------------------------------------------------------------------
DESCRIBE TABLE lt_contents_hex LINES ld_lineas_pdf.

lt_packinglist-transf_bin = 'X'. "Indicador para visual.objeto a transportar de modo binario
lt_packinglist-head_start = '1'. "Línea de inicio de cabecera de obj.en paquete transporte
lt_packinglist-head_num = '1'. "Ctd.de líneas de cabecera de objeto en paquete
lt_packinglist-body_start = '1'. "Línea de inicio de contenido de objeto en paquete
lt_packinglist-body_num = ld_lineas_pdf. "Cantidad de líneas de contenido de objeto en paquete
lt_packinglist-doc_type = 'PDF'. "Sigla p.tipo de documento
lt_packinglist-obj_name = 'Cesion'. "Nombre del documento, de la carpeta o lista de distribución
lt_packinglist-obj_descr = 'Documento de cesión'. "Breve descripción del contenido
lt_packinglist-obj_langu = sy-langu. "Idioma en que se ha creado el documento
lt_packinglist-doc_size = ld_lineas_pdf * 255. "Tamaño de documento SAPoffice (para API1)
lt_packinglist-mess_type = ''. "Clase de mensaje

APPEND lt_packinglist.
CLEAR lt_packinglist.

*------------------------------------------------------------------------------------------------
*- Envío del correo con el adjunto.
*------------------------------------------------------------------------------------------------

* lt_contents_bin[] = lt_contents_hex[].

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = ld_sodocchgi1
* PUT_IN_OUTBOX = ' '
commit_work = 'X'
* IMPORTING
* SENT_TO_ALL =
* NEW_OBJECT_ID =
TABLES
packing_list = lt_packinglist
object_header = lt_object_header
* contents_bin = lt_contents_bin
contents_txt = lt_contents_txt
contents_hex = lt_contents_hex
* OBJECT_PARA =
* OBJECT_PARB =
receivers = lt_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.

IF sy-subrc <> 0.
MOVE-CORRESPONDING sy TO ls_return.
ENDIF.



ENDFUNCTION.


En este caso , el objeto que recibe la funcion es un elemento pep.