SAP ABAP - Send e-mail with excel file ( Simple )
Updated: Aug 29, 2022
PARAMETERS: p_email TYPE somlreci1-receiver
DEFAULT 'test@test.com.tr'.
TYPES: BEGIN OF ty_mara,
matnr TYPE mara-matnr,
maktx TYPE makt-maktx,
meins TYPE mara-meins,
mtart TYPE mara-mtart,
END OF ty_mara.
DATA: gt_mara TYPE TABLE OF ty_mara.
DATA: gt_message TYPE TABLE OF solisti1.
DATA: gt_attach TYPE TABLE OF solisti1.
DATA: gt_packing_list TYPE TABLE OF sopcklsti1,
gt_contents TYPE TABLE OF solisti1,
gt_receivers TYPE TABLE OF somlreci1,
gt_attachment TYPE TABLE OF solisti1,
gt_object_header TYPE TABLE OF solisti1,
gv_cnt TYPE i,
gv_sent_all(1) TYPE c,
gs_doc_data LIKE sodocchgi1,
gv_error TYPE sy-subrc,
gv_reciever TYPE sy-subrc.
START-OF-SELECTION.
PERFORM data_retrieval.
PERFORM build_xls_data_table.
END-OF-SELECTION.
* Populate message body text
PERFORM populate_email_message_body.
* Send file by email as .xls speadsheet
PERFORM send_file_as_email_attachment
TABLES gt_message
gt_attach
USING p_email
'Example .xls doc attachment'
'XLS'
'EXCEL FILENAME'
' '
' '
' '
CHANGING gv_error
gv_reciever.
PERFORM initiate_mail_execute_program.
*&---------------------------------------------------------------------*
*& Form DATA_RETRIEVAL
*&---------------------------------------------------------------------*
* Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
FORM data_retrieval.
SELECT mara~matnr,
makt~maktx,
mara~meins,
mara~mtart
FROM mara
INNER JOIN makt
ON mara~matnr = makt~matnr
AND makt~spras = @sy-langu
INTO TABLE @gt_mara.
ENDFORM. " DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*& Form BUILD_XLS_DATA_TABLE
*&---------------------------------------------------------------------*
* Build data table for .xls document
*----------------------------------------------------------------------*
FORM build_xls_data_table.
APPEND INITIAL LINE TO gt_attach REFERENCE INTO DATA(lr_attach).
CONCATENATE 'MATNR' 'MAKTX' 'MEINS' 'MTART'
INTO lr_attach->* SEPARATED BY cl_abap_char_utilities=>horizontal_tab.
CONCATENATE cl_abap_char_utilities=>cr_lf lr_attach->* INTO lr_attach->*.
LOOP AT gt_mara REFERENCE INTO DATA(lr_mara).
APPEND INITIAL LINE TO gt_attach REFERENCE INTO lr_attach.
CONCATENATE lr_mara->matnr
lr_mara->maktx
lr_mara->meins
lr_mara->mtart
INTO lr_attach->* SEPARATED BY cl_abap_char_utilities=>horizontal_tab.
CONCATENATE cl_abap_char_utilities=>cr_lf lr_attach->* INTO lr_attach->*.
ENDLOOP.
ENDFORM. " BUILD_XLS_DATA_TABLE
*&---------------------------------------------------------------------*
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
*&---------------------------------------------------------------------*
* Send email
*----------------------------------------------------------------------*
FORM send_file_as_email_attachment TABLES pit_message
pit_attach
USING p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
CHANGING p_error
p_reciever.
DATA: ld_error TYPE sy-subrc,
ld_reciever TYPE sy-subrc,
ld_mtitle LIKE sodocchgi1-obj_descr,
ld_email LIKE somlreci1-receiver,
ld_format TYPE so_obj_tp,
ld_attdescription TYPE so_obj_nam,
ld_attfilename TYPE so_obj_des,
ld_sender_address LIKE soextreci1-receiver,
ld_sender_address_type LIKE soextreci1-adr_typ,
ld_receiver LIKE sy-subrc.
ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
* Fill the document data.
gs_doc_data-doc_size = 1.
* Fill the document data and get size of attachment
CLEAR gs