Inicio > Reports > Mandar un email por sap adjuntando un adobe form (PDF)

Mandar un email por sap adjuntando un adobe form (PDF)

Programa que lanza la ejecución de un adobe form y su resultado lo adjunta en un pdf para enviarlo por correo

El programa a partir del número de un empleado, lanza la ejecución del adobe form ZENVIO_MAIL para recuperar sus datos de liquidación. Una vez obtenidos lo adjuntamos en un correo y lo enviamos a un buzón genérico.

Para luego ver lo que nos ha lanzado nos vamos a la transacción SOST

El código del programa es el siguiente:

REPORT  Zmail_pdf.

tablespa0001.
data:
l_fm_name         TYPE rs38l_fnam,
l_formname        TYPE fpname VALUE ‘ZENVIO_MAIL’ “Nombre de mi Adobe FORM,
fp_docparams      TYPE sfpdocparams,
FP_FORMOUTPUT     TYPE FPFORMOUTPUT,
fp_outputparams   TYPE sfpoutputparams.
data:
t_att_content_hex type SOLIX_TAB.

parametersp_pernr like pa0001pernr.
STARTOFSELECTION.

* Recuperamos el nombre del adobe form y lo ejecutamos
PERFORM get_function_module.

* Recuperamos el nombre del adobe form y lo ejecutamos

  PERFORM convert_pdf_binary.

PERFORM mail_attachment.
*&———————————————————————*
*&      Form  GET_FUNCTION_MODULE
*&———————————————————————
FORM GET_FUNCTION_MODULE .
datanombre_justif type pa0001ename,
d_text_pernr(100),
d_bukrs type bukrs,
d_name_bukrs type butxt.

CALL FUNCTION ‘FP_FUNCTION_MODULE_NAME’
EXPORTING
i_name     l_formname
IMPORTING
e_funcname l_fm_name.

fp_outputparamsnodialog ‘X’.
fp_outputparamsgetpdf   ‘X’.
CALL FUNCTION ‘FP_JOB_OPEN’
CHANGING
ie_outputparams fp_outputparams
EXCEPTIONS
cancel          1
usage_error     2
system_error    3
internal_error  4
OTHERS          5.
IF sysubrc <> 0.
CASE sysubrc.
WHEN OTHERS.
ENDCASE.                           ” CASE sy-subrc
ENDIF.
fp_docparamslangu sylangu.
fp_docparamscountry ‘ES’.

  cleard_text_pernr.

select single ename bukrs
from pa0001
into (nombre_justifd_bukrs)
where pernr eq p_pernr.

select single butxt from  T001 into d_name_bukrs
where  BUKRS  d_bukrs.

concatenate text001 p_pernr nombre_justif into d_text_pernr SEPARATED BY space.

CALL FUNCTION l_fm_name
EXPORTING
/1bcdwb/docparams  fp_docparams
empleado_txt       d_text_pernr
sociedad_t         d_name_bukrs
empleado           p_pernr
sociedad           d_bukrs
IMPORTING
/1BCDWB/FORMOUTPUT FP_FORMOUTPUT
EXCEPTIONS
usage_error        1
system_error       2
internal_error     3
OTHERS             4.
IF sysubrc <> 0.
CASE sysubrc.
WHEN OTHERS.
ENDCASE.                           ” CASE sy-subrc
ENDIF.                               ” IF sy-subrc <> 0
CALL FUNCTION ‘FP_JOB_CLOSE’
*   IMPORTING
*     E_RESULT             = result
EXCEPTIONS
usage_error          1
system_error         2
internal_error       3
OTHERS               4
.
IF sysubrc <> 0.
CASE sysubrc.
WHEN OTHERS.
ENDCASE.                           ” CASE sy-subrc
ENDIF.                               ” IF sy-subrc <> 0.
ENDFORM.                    ” GET_FUNCTION_MODULE
*&———————————————————————*
*&      Form  CONVERT_PDF_BINARY
*&———————————————————————
FORM CONVERT_PDF_BINARY .
CALL FUNCTION ‘SCMS_XSTRING_TO_BINARY’
EXPORTING
BUFFER                FP_FORMOUTPUTpdf
*   APPEND_TO_TABLE       = ‘ ‘
* IMPORTING
*   OUTPUT_LENGTH         =
TABLES
BINARY_TAB            t_att_content_hex .
ENDFORM.                    ” CONVERT_PDF_BINARY
*&———————————————————————*
*&      Form  MAIL_ATTACHMENT
*&———————————————————————
FORM MAIL_ATTACHMENT .
CLASS cl_bcs DEFINITION LOAD.
DATA:
lo_send_request TYPE REF TO cl_bcs VALUE IS INITIAL.
lo_send_request cl_bcs=>create_persistent).
* Message body and subject
DATA:
lt_message_body TYPE bcsy_text VALUE IS INITIAL,
lo_document TYPE REF TO cl_document_bcs VALUE IS INITIAL.
APPEND ‘Dear,’ TO lt_message_body.
append ‘ ‘ to lt_message_body.
APPEND ‘Please fill the attached form and send it back to us.’
TO lt_message_body.
append ‘ ‘ to lt_message_body.
APPEND ‘Thank You,’ TO lt_message_body.
lo_document cl_document_bcs=>create_document(
i_type ‘RAW’
i_text lt_message_body
i_subject ‘Personnel Information Form’ ).
DATAlx_document_bcs TYPE REF TO cx_document_bcs VALUE IS INITIAL.
TRY.
lo_document->add_attachment(
EXPORTING
i_attachment_type ‘PDF’
i_attachment_subject ‘Personnel Information Form’
* I_ATTACHMENT_SIZE =
* I_ATTACHMENT_LANGUAGE = SPACE
* I_ATT_CONTENT_TEXT =
* I_ATTACHMENT_HEADER =
i_att_content_hex t_att_content_hex ).
CATCH cx_document_bcs INTO lx_document_bcs.
ENDTRY.
* Add attachment
* Pass the document to send request
lo_send_request->set_documentlo_document ).
* Create sender
DATA:
lo_sender TYPE REF TO if_sender_bcs VALUE IS INITIAL,
l_send type ADR6SMTP_ADDR value ‘mail_sender@prueba.es’,
l_dest type ADR6SMTP_ADDR value ‘mail_destino@prueba.es’.
lo_sender cl_cam_address_bcs=>create_internet_addressl_send ).
*  lo_sender = cl_sapuser_bcs=>create( sy-uname ).
* Set sender
lo_send_request->set_sender(
EXPORTING
i_sender lo_sender ).
* Create recipient
DATA:
lo_recipient TYPE REF TO if_recipient_bcs VALUE IS INITIAL.
*  lo_recipient = cl_sapuser_bcs=>create( sy-uname ).
lo_recipient cl_cam_address_bcs=>create_internet_addressl_dest ).
** Set recipient
lo_send_request->add_recipient(
EXPORTING
i_recipient lo_recipient
i_express ‘X’ ).
*  lo_send_request->add_recipient(
*  EXPORTING
*  i_recipient = lo_recipient
*  i_express = ‘X’ ).
* Send email
DATAlv_sent_to_all(1TYPE VALUE IS INITIAL.
lo_send_request->send(
EXPORTING
i_with_error_screen ‘X’
RECEIVING
result lv_sent_to_all ).
COMMIT WORK.
ENDFORM.                    ” MAIL_ATTACHMENT

Categorías:Reports Etiquetas: , , ,
  1. Isaac
    24 marzo, 2012 a las 12:52 am

    Buen post! Pero tengo una consulta, mi archivo lo tengo en la AL11 (servidor de archivos) … como hago para adjuntar un archivo de ahi y mandarlo a un correo … me podrías decir en que momento armo el correo? osea, el cuerpo, el correo destinario, titulo … gracias de antemano!

  2. 23 noviembre, 2012 a las 8:17 pm

    Have you ever considered creating an ebook or guest authoring on other blogs?
    I have a blog based upon on the same subjects you discuss and would really like
    to have you share some stories/information. I know my visitors would value
    your work. If you’re even remotely interested, feel free to shoot me an email.

  3. 18 febrero, 2013 a las 2:10 pm

    Does your blog have a contact page? I’m having a tough time locating it but, I’d like to shoot you an email.
    I’ve got some creative ideas for your blog you might be interested in hearing. Either way, great blog and I look forward to seeing it expand over time.

  4. 25 abril, 2013 a las 9:07 pm

    Hi there! This is my first comment here so I just wanted to give a quick
    shout out and say I truly enjoy reading through your posts.
    Can you suggest any other blogs/websites/forums that cover the same topics?
    Appreciate it!

  5. 30 abril, 2013 a las 2:04 am

    I have read so many content concerning the blogger lovers but this piece of writing is genuinely a pleasant paragraph,
    keep it up.

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: