Como insertar varios ficheros PDF en un mail

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • javibest
    Senior Member
    • ene
    • 185

    #1

    Como insertar varios ficheros PDF en un mail

    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.
Trabajando...