Sending an Excel Attachment through mail
*&---------------------------------------------------------------------*
*& Report ZVB_EMAIL_WITH_ATTACHMENT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zvb_email_with_attachment.
*Data declarations
DATA: lt_mailrecipients TYPE STANDARD TABLE OF somlrec90 WITH HEADER LINE,
lt_mailtxt TYPE STANDARD TABLE OF soli WITH HEADER LINE,
lt_attachment TYPE STANDARD TABLE OF solisti1 WITH HEADER LINE,
lt_mailsubject TYPE sodocchgi1,
lt_packing_list TYPE STANDARD TABLE OF sopcklsti1 WITH HEADER LINE,
gv_cnt TYPE i.
DATA: BEGIN OF lt_po_data_cons OCCURS 0,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
END OF lt_po_data_cons.
START-OF-SELECTION.
SELECT ebeln ebelp INTO TABLE lt_po_data_cons UP TO 10 ROWS FROM ekpo.
*create the attachment
CLEAR lt_attachment.
CLASS cl_abap_char_utilities DEFINITION LOAD.
CONCATENATE 'PO' 'PO Item'
INTO lt_attachment SEPARATED BY
cl_abap_char_utilities=>horizontal_tab.
APPEND lt_attachment.
CLEAR lt_attachment.
LOOP AT lt_po_data_cons.
CONCATENATE lt_po_data_cons-ebeln lt_po_data_cons-ebelp
INTO lt_attachment SEPARATED BY
cl_abap_char_utilities=>horizontal_tab.
CONCATENATE cl_abap_char_utilities=>newline lt_attachment
INTO lt_attachment.
APPEND lt_attachment.
CLEAR lt_attachment.
ENDLOOP.
*put in the mail contents
lt_mailtxt = 'Hi,'.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
lt_mailtxt = 'Find the PO details in attached excel'.
APPEND lt_mailtxt.
CLEAR lt_mailtxt.
*pack the mail contents and attachments
lt_packing_list-transf_bin = space.
lt_packing_list-head_start = 1.
lt_packing_list-head_num = 0.
lt_packing_list-body_start = 1.
lt_packing_list-body_num = lines( lt_mailtxt ).
lt_packing_list-doc_type = 'RAW'.
APPEND lt_packing_list.
CLEAR lt_packing_list.
lt_packing_list-transf_bin = 'X'.
lt_packing_list-head_start = 1.
lt_packing_list-head_num = 0.
lt_packing_list-body_start = 1.
lt_packing_list-body_num = lines( lt_attachment ).
lt_packing_list-doc_type = 'XLS'. "RAW if we want just a txt file
lt_packing_list-obj_name = 'File'.
lt_packing_list-obj_descr = 'Excel File'.
APPEND lt_packing_list.
CLEAR lt_packing_list.
lt_mailsubject-obj_name = 'MAILATTCH'.
lt_mailsubject-obj_langu = sy-langu.
lt_mailsubject-obj_descr = 'PO Details'.
lt_mailsubject-sensitivty = 'F'.
gv_cnt = lines( lt_attachment ).
lt_mailsubject-doc_size = ( gv_cnt - 1 ) * 255 + strlen( lt_attachment ).
*add recipients
lt_mailrecipients-rec_type = 'U'.
lt_mailrecipients-com_type = 'INT'.
lt_mailrecipients-receiver = 'abc@gmail.com'.
APPEND lt_mailrecipients.
CLEAR lt_mailrecipients.
*send the mail out
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = lt_mailsubject
* PUT_IN_OUTBOX = 'X'
commit_work = 'X'
TABLES
packing_list = lt_packing_list
contents_bin = lt_attachment
contents_txt = lt_mailtxt
receivers = lt_mailrecipients.
IF sy-subrc = 0.
WRITE 'Mail sent successfully'.
ENDIF.
Output: Go to T-CODE 'SOST'. select the mail and click on 'Display Document' icon'.
click on excel. The file automatically downloaded into Documents folder.
Comments
Post a Comment