ABAP Program to Send Mail with Attachment

ribkhan / Pixabay
Here are two ABAP Programs to send mail with and without attachment.
ABAP Program to send mail with Attachment
This ABAP program uses the function module ‘SO_NEW_DOCUMENT_ATT_SEND_API1’ to send the email with an attachment. There are five steps involved in sending the email with an attachment.
- Add Recipients
- Put in the mail contents
- Create the attachment
- Pack the mail contents and attachment
- Finally, send the mail out.
Before we start writing the code, ensure that everything is configured correctly in the SCOT. Get in touch with the basis team and they will help you configure it.
Declare the following
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. |
Now, lets start formatting the mail.
Add Recipients
lt_mailrecipients-rec_type = 'U'. lt_mailrecipients-com_type = 'INT'. lt_mailrecipients-receiver = '[email protected]'. APPEND lt_mailrecipients . CLEAR lt_mailrecipients . |
Put in the Mail Contents
lt_mailtxt = 'Hi How are you'. APPEND lt_mailtxt. CLEAR lt_mailtxt. lt_mailtxt = 'Here is a test mail'. APPEND lt_mailtxt. CLEAR lt_mailtxt. lt_mailtxt = 'Thanks'. APPEND lt_mailtxt. CLEAR lt_mailtxt. |
Create the attachment
DATA: BEGIN OF lt_po_data_cons OCCURS 0, ebeln like ekpo-ebeln, ebelp like ekpo-ebelp, END OF lt_po_data_cons. SELECT ebeln ebelp INTO TABLE lt_po_data_cons UP TO 10 ROWS FROM ekpo. CLASS cl_abap_char_utilities DEFINITION LOAD. CONCATENATE 'PO' 'PO Line' 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. |
Pack the mail contents and attachment
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 = 1. lt_packing_list-body_start = 1. lt_packing_list-body_num = LINES( lt_attachment ). lt_packing_list-doc_type = 'XLS'. " You can give RAW incase if you want just a txt file. lt_packing_list-obj_name = 'data.xls'. lt_packing_list-obj_descr = 'data.xls'. lt_packing_list-doc_size = lt_packing_list-body_num * 255. APPEND lt_packing_list. CLEAR lt_packing_list. lt_mailsubject-obj_name = 'MAILATTCH'. lt_mailsubject-obj_langu = sy-langu. lt_mailsubject-obj_descr = 'You have got mail'. lt_mailsubject-sensitivty = 'F'. gv_cnt = LINES( lt_attachment ). lt_mailsubject-doc_size = ( gv_cnt - 1 ) * 255 + STRLEN( lt_attachment ). |
Finally, send the mail out.
That’s it. You are all done. Just call the function module to send the mail out.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1' EXPORTING document_data = lt_mailsubject TABLES packing_list = lt_packing_list contents_bin = lt_attachment contents_txt = lt_mailtxt receivers = lt_mailrecipients 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 EQ 0. COMMIT WORK. SUBMIT rsconn01 WITH mode = 'INT' AND RETURN. ENDIF. |
ABAP Program to send email (without attachments)
* Data Declarations DATA: lt_mailsubject TYPE sodocchgi1. DATA: lt_mailrecipients TYPE STANDARD TABLE OF somlrec90 WITH HEADER LINE. DATA: lt_mailtxt TYPE STANDARD TABLE OF soli WITH HEADER LINE. |
* Recipients lt_mailrecipients-rec_type = 'U'. lt_mailrecipients-receiver = '[email protected]'. APPEND lt_mailrecipients . CLEAR lt_mailrecipients . |
* Subject. lt_mailsubject-obj_name = 'TEST'. lt_mailsubject-obj_langu = sy-langu. lt_mailsubject-obj_descr = 'Mail Subject'. |
* Mail Contents lt_mailtxt = 'This is a test mail'. APPEND lt_mailtxt. CLEAR lt_mailtxt. |
* Send Mail CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1' EXPORTING document_data = lt_mailsubject TABLES object_content = lt_mailtxt receivers = lt_mailrecipients 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 EQ 0. COMMIT WORK. * Push mail out from SAP outbox SUBMIT rsconn01 WITH mode = 'INT' AND RETURN. ENDIF. |
check ABAP tutorials for more.
hi can u give the selection screen details for this code……
There is none
Hi, can you please provide basic programs to learn in detail with explanation. I am beginner in ABAP. Thanks in advance..