Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Email

Former Member
0 Kudos

Hye Experts,

I have requirement where a mail has to be triggered, it should contain an attachment which is an internal table and it should also have CC and BCC. Please send a sample code and relevant documentation.

Thanks in Advance.

Regards,

Imran.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hello Imran,

You can try this piece of code...

report yh_sample.

data: p_email type somlreci1-receiver
value '<the email-id >'.

data: begin of it001 occurs 0,
bukrs type t001-bukrs,
butxt type t001-butxt,
end of it001.

data: imessage type standard table of solisti1 with header line,
iattach type standard table of solisti1 with header line,
ipacking_list like sopcklsti1 occurs 0 with header line,
ireceivers like somlreci1 occurs 0 with header line,
iattachment like solisti1 occurs 0 with header line.

start-of-selection.

select bukrs butxt into table it001 from t001.

    * Populate table with detaisl to be entered into .xls file

perform build_xls_data .

    * Populate message body text

clear imessage. refresh imessage.
imessage = 'Please find attached excel file'.
append imessage.

    * Send file by email as .xls speadsheet

perform send_email_with_xls tables imessage
iattach
using p_email
'Example Excel Attachment'
'XLS'
'TestFileName'
'CompanyCodes'.

************************************************************************

    * Form BUILD_XLS_DATA

************************************************************************
form build_xls_data .

    * constants: con_cret type x value '0D', "OK for non Unicode
    * con_tab type x value '09'. "OK for non Unicode


*If you have Unicode check active in program attributes thnen you will
*need to declare constants as follows
*class cl_abap_char_utilities definition load.
constants:
con_tab type c value cl_abap_char_utilities=>horizontal_tab,
con_cret type c value cl_abap_char_utilities=>cr_lf.

concatenate 'BUKRS' 'BUTXT'
into iattach separated by con_tab.

concatenate con_cret iattach into iattach.
append iattach.

loop at it001 .
concatenate it001-bukrs it001-butxt
into iattach separated by con_tab.
concatenate con_cret iattach into iattach.
append iattach.
endloop .

endform.

************************************************************************

    * Form SEND_EMAIL_WITH_XLS

************************************************************************
form send_email_with_xls tables pit_message
pit_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription.

data: xdocdata like sodocchgi1,
xcnt type i.

    * Fill the document data.

xdocdata-doc_size = 1.

    * Populate the subject/generic message attributes

xdocdata-obj_langu = sy-langu .
xdocdata-obj_name = 'SAPRPT' .
xdocdata-obj_descr = p_mtitle .

    * Fill the document data and get size of attachment

clear xdocdata.
read table iattach index xcnt.
xdocdata-doc_size =
( xcnt - 1 ) * 255 + strlen( iattach ).
xdocdata-obj_langu = sy-langu.
xdocdata-obj_name = 'SAPRPT'.
xdocdata-obj_descr = p_mtitle.
clear iattachment. refresh iattachment.
iattachment = pit_attach.

    * Describe the body of the message

clear ipacking_list. refresh ipacking_list.
ipacking_list-transf_bin = space.
ipacking_list-head_start = 1.
ipacking_list-head_num = 0.
ipacking_list-body_start = 1.
describe table imessage lines ipacking_list-body_num.
ipacking_list-doc_type = 'RAW'.
append ipacking_list.

    * Create attachment notification

ipacking_list-transf_bin = 'X'.
ipacking_list-head_start = 1.
ipacking_list-head_num = 1.
ipacking_list-body_start = 1.

describe table iattachment lines ipacking_list-body_num.
ipacking_list-doc_type = p_format.
ipacking_list-obj_descr = p_attdescription.
ipacking_list-obj_name = p_filename.
ipacking_list-doc_size = ipacking_list-body_num * 255.
append ipacking_list.

    * Add the recipients email address

clear ireceivers. refresh ireceivers.
ireceivers-receiver = p_email.
ireceivers-rec_type = 'U'.
ireceivers-com_type = 'INT'.
ireceivers-notif_del = 'X'.
ireceivers-notif_ndel = 'X'.
append ireceivers.

call function 'SO_DOCUMENT_SEND_API1'
exporting
document_data = xdocdata
put_in_outbox = 'X'
commit_work = 'X'
tables
packing_list = ipacking_list
contents_bin = iattachment
contents_txt = imessage
receivers = ireceivers
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.

endform.

To get in the CC section, you have another parameter in receivers as RECEIVERS-COPY. Declare that work variable as you did it for the email-id and fill it and append it to the ireceivers

For example:

clear ireceivers. refresh ireceivers.
ireceivers-receiver = p_email.
ireceivers-copy = p_copy.
ireceivers-rec_type = 'U'.
ireceivers-com_type = 'INT'.
ireceivers-notif_del = 'X'.
ireceivers-notif_ndel = 'X'.
append ireceivers.

Hope it works out for you

Regards

Indu.

4 REPLIES 4

Former Member
0 Kudos
  • sorry

The attachement should be an excel sheel (*.xls).

Thanks.

0 Kudos

Hi ,

Check the following link

[Attach xls to email|;

Regards,

shrinivas

Former Member
0 Kudos

Hi Imran,

Use these function modules:

SO_DOCUMENT_SEND_API1

SO_NEW_DOCUMENT_ATT_SEND_API1

Check this link:

http://www.sap-img.com/abap/sending-email-with-attachment.htm

Hope this helps you.

Regards,

Chandra Sekhar

Former Member
0 Kudos

Hello Imran,

You can try this piece of code...

report yh_sample.

data: p_email type somlreci1-receiver
value '<the email-id >'.

data: begin of it001 occurs 0,
bukrs type t001-bukrs,
butxt type t001-butxt,
end of it001.

data: imessage type standard table of solisti1 with header line,
iattach type standard table of solisti1 with header line,
ipacking_list like sopcklsti1 occurs 0 with header line,
ireceivers like somlreci1 occurs 0 with header line,
iattachment like solisti1 occurs 0 with header line.

start-of-selection.

select bukrs butxt into table it001 from t001.

    * Populate table with detaisl to be entered into .xls file

perform build_xls_data .

    * Populate message body text

clear imessage. refresh imessage.
imessage = 'Please find attached excel file'.
append imessage.

    * Send file by email as .xls speadsheet

perform send_email_with_xls tables imessage
iattach
using p_email
'Example Excel Attachment'
'XLS'
'TestFileName'
'CompanyCodes'.

************************************************************************

    * Form BUILD_XLS_DATA

************************************************************************
form build_xls_data .

    * constants: con_cret type x value '0D', "OK for non Unicode
    * con_tab type x value '09'. "OK for non Unicode


*If you have Unicode check active in program attributes thnen you will
*need to declare constants as follows
*class cl_abap_char_utilities definition load.
constants:
con_tab type c value cl_abap_char_utilities=>horizontal_tab,
con_cret type c value cl_abap_char_utilities=>cr_lf.

concatenate 'BUKRS' 'BUTXT'
into iattach separated by con_tab.

concatenate con_cret iattach into iattach.
append iattach.

loop at it001 .
concatenate it001-bukrs it001-butxt
into iattach separated by con_tab.
concatenate con_cret iattach into iattach.
append iattach.
endloop .

endform.

************************************************************************

    * Form SEND_EMAIL_WITH_XLS

************************************************************************
form send_email_with_xls tables pit_message
pit_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription.

data: xdocdata like sodocchgi1,
xcnt type i.

    * Fill the document data.

xdocdata-doc_size = 1.

    * Populate the subject/generic message attributes

xdocdata-obj_langu = sy-langu .
xdocdata-obj_name = 'SAPRPT' .
xdocdata-obj_descr = p_mtitle .

    * Fill the document data and get size of attachment

clear xdocdata.
read table iattach index xcnt.
xdocdata-doc_size =
( xcnt - 1 ) * 255 + strlen( iattach ).
xdocdata-obj_langu = sy-langu.
xdocdata-obj_name = 'SAPRPT'.
xdocdata-obj_descr = p_mtitle.
clear iattachment. refresh iattachment.
iattachment = pit_attach.

    * Describe the body of the message

clear ipacking_list. refresh ipacking_list.
ipacking_list-transf_bin = space.
ipacking_list-head_start = 1.
ipacking_list-head_num = 0.
ipacking_list-body_start = 1.
describe table imessage lines ipacking_list-body_num.
ipacking_list-doc_type = 'RAW'.
append ipacking_list.

    * Create attachment notification

ipacking_list-transf_bin = 'X'.
ipacking_list-head_start = 1.
ipacking_list-head_num = 1.
ipacking_list-body_start = 1.

describe table iattachment lines ipacking_list-body_num.
ipacking_list-doc_type = p_format.
ipacking_list-obj_descr = p_attdescription.
ipacking_list-obj_name = p_filename.
ipacking_list-doc_size = ipacking_list-body_num * 255.
append ipacking_list.

    * Add the recipients email address

clear ireceivers. refresh ireceivers.
ireceivers-receiver = p_email.
ireceivers-rec_type = 'U'.
ireceivers-com_type = 'INT'.
ireceivers-notif_del = 'X'.
ireceivers-notif_ndel = 'X'.
append ireceivers.

call function 'SO_DOCUMENT_SEND_API1'
exporting
document_data = xdocdata
put_in_outbox = 'X'
commit_work = 'X'
tables
packing_list = ipacking_list
contents_bin = iattachment
contents_txt = imessage
receivers = ireceivers
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.

endform.

To get in the CC section, you have another parameter in receivers as RECEIVERS-COPY. Declare that work variable as you did it for the email-id and fill it and append it to the ireceivers

For example:

clear ireceivers. refresh ireceivers.
ireceivers-receiver = p_email.
ireceivers-copy = p_copy.
ireceivers-rec_type = 'U'.
ireceivers-com_type = 'INT'.
ireceivers-notif_del = 'X'.
ireceivers-notif_ndel = 'X'.
append ireceivers.

Hope it works out for you

Regards

Indu.