ABAP Program to Send Mail with Attachment
This ABAP program use the function module ‘SO_NEW_DOCUMENT_ATT_SEND_API1′ to send the email with attachment. There are five steps involved in sending the email with 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 = 'someone@erpdb.info'. 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.
If you like this post, you may as well like these too:
- ABAP Program to Send External Mail from SAP Here is a ABAP program which would allow you to send mail to any external system from SAP. Ensure that you have all the required configurations done by the basis...
- ABAP Program: Sample program for OLE Automation REPORT ZSOURCE2801. * Including OLE types INCLUDE OLE2INCL. * Tables and variables for later use TABLES: CUSTOMERS. DATA: APPLICATION TYPE OLE2_OBJECT, WORKBOOK TYPE OLE2_OBJECT, SHEET TYPE OLE2_OBJECT, CELLS TYPE OLE2_OBJECT....
- Reading PDF attachment from sap inbox through ABAP Function Modules used are as follows: 1.SO_USER_READ_API1 This fm will read the folder details in the sap inbox for the particular user id. 2.SO_FOLDER_READ_API1 This fm will read the folder...
- Call an ABAP program from a BSP Call an ABAP program from a BSP is somehow impossible due to memory context handling for a web transaction like a BSP. If you try, it would lead to an...
- Generate Temporary ABAP Program Ever had a need to create a temporary program during the run time. Here is a simple program which will allow you to learn that. REPORT ZSOURCE2501. * Internal table...
- Create a Program in SAP ABAP You can navigate to the ABAP Editor through the Menu. You can also create favorites for certain transactions and put it into your custom menu. You can type SE38 from...
- SAP ABAP Program Types Each ABAP program has a type, which is defined in the program attributes. What is the purpose of all the different program types? The program type determines which processing blocks...
- ABAP Program:Reading data from a file REPORT ZSOURCE2602. * Data declarations for later use TABLES CUSTOMERS. PARAMETERS FILENAME(128) DEFAULT '/usr/tmp/testfile.dat' LOWER CASE. DATA: MSG_TEXT(50), ALL_CUSTOMER_NAMES LIKE CUSTOMERS-NAME OCCURS 100 WITH HEADER LINE. * Opening the File...
- ABAP Program : Working with Temporary Programs Ever had a need to create a temporary program during the run time. Here is a simple program which will allow you to learn that. REPORT ZSOURCE2501. * Internal table...
- ABAP Program:Transferring data to a file (presentation server) REPORT ZSOURCE2603. * Data declarations for later use PARAMETERS FILENAME(128) DEFAULT 'c:usersdefaulttestfile.dat' LOWER CASE. TABLES CUSTOMERS. DATA ALL_CUSTOMERS LIKE CUSTOMERS OCCURS 100 WITH HEADER LINE. * Get data for file...
- ABAP Programs:Sample dialog program (flight reservation) * This program source contains all modules and subroutines of the * flight reservation program, but screen and GUI status definitions * are not included. *&———————————————————————* *&———————————————————————* *& Include MSABBTOP...
- ABAP Program: Dynamic external perform (call back form) Here the two programs which are calling dynamically. REPORT ZSOURCE2309. PERFORM EXTFORM IN PROGRAM ZSOURCE2310 USING 'CALL_BACK_FORM' SY-CPROG. FORM CALL_BACK_FORM. WRITE / 'I am the call back form in ZSOURCE2309.'....
- How do you add an attachment to a Purchase Order? One may attach any document to a PO manually without using the Document Management System in SAP, but no attachments can be added while you create a PO using ME21N....
- Send email to many users REPORT Z_SEND_EMAIL_to_Users. TABLES: USR02. DATA: C(15). DATA: SENT LIKE SONV-FLAG. DATA: EMAIL_ID LIKE SOFOLENTI1-OBJECT_ID. DATA: BEGIN OF EMAIL_DATA. INCLUDE STRUCTURE SODOCCHGI1. DATA: END OF EMAIL_DATA. DATA: BEGIN OF EMAIL_SEND OCCURS...



















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