Application Development and Automation 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: 
Read only

Excel email attachment

Former Member
0 Likes
731

Hi,

My excel file contains a logo , text and other information .

I have to send this excel file(which is on the local PC in the C drive ) as email attachment .So I am using the FM SO_NEW_DOCUMENT_ATT_SEND_API1 .

The receiver is able to get the mail but the contents are missing in the attached file .

Suggest what changes should I make in the below code to successfully send the attachment

I am passing the file path as value to parameter object_header .

Also I feel the value to parameter CONTENTS_BIN is wrong.

So please help

Report ZKNTEST1.

TABLES: ekko.

PARAMETERS: p_email TYPE somlreci1-receiver.

DATA: it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0

WITH HEADER LINE.

DATA: it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0

WITH HEADER LINE.

DATA: TAB_LINES LIKE SY-TABIX.

DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,

t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,

t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,

t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,

t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,

w_cnt TYPE i,

w_sent_all(1) TYPE c,

w_doc_data LIKE sodocchgi1,

gd_error TYPE sy-subrc,

gd_reciever TYPE sy-subrc.

*Populate message body text

it_message = 'Please find attached a layout'.

APPEND it_message.

*Send file by email as .xls speadsheet

PERFORM send_file_as_email_attachment

tables it_message

it_attach

using p_email

'Excel layout documnet attachment'

'XLS'

'C:\layout.xls'

'Excel attachment'

' '

' '

changing gd_error

gd_reciever.

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.

it_message = pit_message.

*Fill the document data.

DESCRIBE TABLE it_attach LINES TAB_LINES.

w_doc_data-doc_size = ( TAB_LINES - 1 ) * 255 + STRLEN( it_attach ).

.

w_doc_data-obj_langu = sy-langu.

w_doc_data-obj_name = 'SAPRPT'.

w_doc_data-obj_descr = ld_mtitle .

w_doc_data-sensitivty = 'F'.

pit_attach = ' \O/ '. APPEND pit_attach.

pit_attach = ' | '. APPEND pit_attach.

pit_attach = ' / \ '. APPEND pit_attach.

t_attachment = pit_attach.

t_object_header = 'C:\layout.xls'.

append t_object_header .

*Create document notification

DESCRIBE TABLE it_message LINES TAB_LINES.

t_packing_list-TRANSF_BIN = 'X'.

t_packing_list-HEAD_START = 1.

t_packing_list-HEAD_NUM = 0.

t_packing_list-BODY_START = 1.

t_packing_list-BODY_NUM = TAB_LINES.

t_packing_list-doc_type = 'RAW'.

t_packing_list-DOC_SIZE = TAB_LINES * 255.

APPEND t_packing_list..

*Create attachment notification

DESCRIBE TABLE t_attachment LINES TAB_LINES.

t_packing_list-transf_bin = 'X'.

t_packing_list-head_start = 1.

t_packing_list-head_num = 1.

t_packing_list-body_start = 1.

t_packing_list-BODY_NUM = TAB_LINES.

t_packing_list-doc_type = ld_format.

t_packing_list-obj_descr = ld_attdescription.

t_packing_list-obj_name = ld_attfilename.

t_packing_list-DOC_SIZE = TAB_LINES * 255.

APPEND t_packing_list.

*Add the recipients email address

CLEAR t_receivers.

REFRESH t_receivers.

t_receivers-receiver = ld_email.

t_receivers-rec_type = 'U'.

t_receivers-com_type = 'INT'.

t_receivers-notif_del = 'X'.

t_receivers-notif_ndel = 'X'.

APPEND t_receivers.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = w_doc_data

PUT_IN_OUTBOX = 'X'

COMMIT_WORK = 'X'

IMPORTING

SENT_TO_ALL = w_sent_all

  • NEW_OBJECT_ID =

TABLES

PACKING_LIST = t_packing_list

OBJECT_HEADER = t_object_header

CONTENTS_BIN = t_attachment

  • CONTENTS_TXT = it_message

RECEIVERS = t_receivers

.

*Populate zerror return code

ld_error = sy-subrc.

*Populate zreceiver return code

LOOP AT t_receivers.

ld_receiver = t_receivers-retrn_code.

ENDLOOP.

ENDFORM.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
592

Hi Sandhya,

Try this out.Reward points if useful

ISR_FI_SEND_EMAIL

ISR_FI_SEND_EMAIL_NEW_USER

SLS_CUST_SEND_EMAIL_TOOL

OR

Refer to followinh code

report y_cr17_mail.

data method1 like sy-ucomm.

data g_user like soudnamei1.

data g_user_data like soudatai1.

data g_owner like soud-usrnam.

data g_receipients like soos1 occurs 0 with header line.

data g_document like sood4 .

data g_header like sood2.

data g_folmam like sofm2.

data g_objcnt like soli occurs 0 with header line.

data g_objhead like soli occurs 0 with header line.

data g_objpara like selc occurs 0 with header line.

data g_objparb like soop1 occurs 0 with header line.

data g_attachments like sood5 occurs 0 with header line.

data g_references like soxrl occurs 0 with header line.

data g_authority like sofa-usracc.

data g_ref_document like sood4.

data g_new_parent like soodk.

data: begin of g_files occurs 10 ,

text(4096) type c,

end of g_files.

data : fold_number(12) type c,

fold_yr(2) type c,

fold_type(3) type c.

parameters ws_file(4096) type c default 'c:\debugger.txt'.

Can me any file fromyour pc ....either xls or word or ppt etc ...

g_user-sapname = sy-uname.

call function 'SO_USER_READ_API1'

exporting

user = g_user

PREPARE_FOR_FOLDER_ACCESS = ' '

importing

user_data = g_user_data

EXCEPTIONS

USER_NOT_EXIST = 1

PARAMETER_ERROR = 2

X_ERROR = 3

OTHERS = 4

.

if sy-subrc 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

endif.

fold_type = g_user_data-outboxfol+0(3).

fold_yr = g_user_data-outboxfol+3(2).

fold_number = g_user_data-outboxfol+5(12).

clear g_files.

refresh : g_objcnt,

g_objhead,

g_objpara,

g_objparb,

g_receipients,

g_attachments,

g_references,

g_files.

method1 = 'SAVE'.

g_document-foltp = fold_type.

g_document-folyr = fold_yr.

g_document-folno = fold_number.

g_document-objtp = g_user_data-object_typ.

*g_document-OBJYR = '27'.

*g_document-OBJNO = '000000002365'.

*g_document-OBJNAM = 'MESSAGE'.

g_document-objdes = 'sap-img.com testing by program'.

g_document-folrg = 'O'.

*g_document-okcode = 'CHNG'.

g_document-objlen = '0'.

g_document-file_ext = 'TXT'.

g_header-objdes = 'sap-img.com testing by program'.

g_header-file_ext = 'TXT'.

call function 'SO_DOCUMENT_REPOSITORY_MANAGER'

exporting

method = method1

office_user = sy-uname

ref_document = g_ref_document

new_parent = g_new_parent

importing

authority = g_authority

tables

objcont = g_objcnt

objhead = g_objhead

objpara = g_objpara

objparb = g_objparb

recipients = g_receipients

attachments = g_attachments

references = g_references

files = g_files

changing

document = g_document

header_data = g_header

FOLMEM_DATA =

RECEIVE_DATA =

.

File from the pc to send...

method1 = 'ATTCREATEFROMPC'.

g_files-text = ws_file.

append g_files.

call function 'SO_DOCUMENT_REPOSITORY_MANAGER'

exporting

method = method1

office_user = g_owner

ref_document = g_ref_document

new_parent = g_new_parent

importing

authority = g_authority

tables

objcont = g_objcnt

objhead = g_objhead

objpara = g_objpara

objparb = g_objparb

recipients = g_receipients

attachments = g_attachments

references = g_references

files = g_files

changing

document = g_document

header_data = g_header

.

method1 = 'SEND'.

g_receipients-recnam = 'MK085'.

g_receipients-recesc = 'B'.

g_receipients-sndex = 'X'.

append g_receipients.

call function 'SO_DOCUMENT_REPOSITORY_MANAGER'

exporting

method = method1

office_user = g_owner

ref_document = g_ref_document

new_parent = g_new_parent

importing

authority = g_authority

tables

objcont = g_objcnt

objhead = g_objhead

objpara = g_objpara

objparb = g_objparb

recipients = g_receipients

attachments = g_attachments

references = g_references

files = g_files

changing

document = g_document

header_data = g_header.

End of Program[/code]

Also check this links as well.

http://www.sapdevelopment.co.uk/reporting/email/attach_xls.htm

/people/thomas.jung3/blog/2004/09/09/receiving-e-mail-and-processing-it-with-abap--version-610-and-higher

Edited by: ravee on May 15, 2008 11:26 PM

Hi,

My excel file contains a logo , text and other information .

I have to send this excel file(which is on the local PC in the C drive ) as email attachment .So I am using the FM SO_NEW_DOCUMENT_ATT_SEND_API1 .

The receiver is able to get the mail but the contents are missing in the attached file .

Suggest what changes should I make in the below code to successfully send the attachment

I am passing the file path as value to parameter object_header .

Also I feel the value to parameter CONTENTS_BIN is wrong.

So please help

Report ZKNTEST1.

TABLES: ekko.

PARAMETERS: p_email TYPE somlreci1-receiver.

DATA: it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0

WITH HEADER LINE.

DATA: it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0

WITH HEADER LINE.

DATA: TAB_LINES LIKE SY-TABIX.

DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,

t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,

t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,

t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,

t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,

w_cnt TYPE i,

w_sent_all(1) TYPE c,

w_doc_data LIKE sodocchgi1,

gd_error TYPE sy-subrc,

gd_reciever TYPE sy-subrc.

*Populate message body text

it_message = 'Please find attached a layout'.

APPEND it_message.

*Send file by email as .xls speadsheet

PERFORM send_file_as_email_attachment

tables it_message

it_attach

using p_email

'Excel layout documnet attachment'

'XLS'

'C:\layout.xls'

'Excel attachment'

' '

' '

changing gd_error

gd_reciever.

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.

it_message = pit_message.

*Fill the document data.

DESCRIBE TABLE it_attach LINES TAB_LINES.

w_doc_data-doc_size = ( TAB_LINES - 1 ) * 255 + STRLEN( it_attach ).

.

w_doc_data-obj_langu = sy-langu.

w_doc_data-obj_name = 'SAPRPT'.

w_doc_data-obj_descr = ld_mtitle .

w_doc_data-sensitivty = 'F'.

pit_attach = ' \O/ '. APPEND pit_attach.

pit_attach = ' | '. APPEND pit_attach.

pit_attach = ' / \ '. APPEND pit_attach.

t_attachment = pit_attach.

t_object_header = 'C:\layout.xls'.

append t_object_header .

*Create document notification

DESCRIBE TABLE it_message LINES TAB_LINES.

t_packing_list-TRANSF_BIN = 'X'.

t_packing_list-HEAD_START = 1.

t_packing_list-HEAD_NUM = 0.

t_packing_list-BODY_START = 1.

t_packing_list-BODY_NUM = TAB_LINES.

t_packing_list-doc_type = 'RAW'.

t_packing_list-DOC_SIZE = TAB_LINES * 255.

APPEND t_packing_list..

*Create attachment notification

DESCRIBE TABLE t_attachment LINES TAB_LINES.

t_packing_list-transf_bin = 'X'.

t_packing_list-head_start = 1.

t_packing_list-head_num = 1.

t_packing_list-body_start = 1.

t_packing_list-BODY_NUM = TAB_LINES.

t_packing_list-doc_type = ld_format.

t_packing_list-obj_descr = ld_attdescription.

t_packing_list-obj_name = ld_attfilename.

t_packing_list-DOC_SIZE = TAB_LINES * 255.

APPEND t_packing_list.

*Add the recipients email address

CLEAR t_receivers.

REFRESH t_receivers.

t_receivers-receiver = ld_email.

t_receivers-rec_type = 'U'.

t_receivers-com_type = 'INT'.

t_receivers-notif_del = 'X'.

t_receivers-notif_ndel = 'X'.

APPEND t_receivers.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = w_doc_data

PUT_IN_OUTBOX = 'X'

COMMIT_WORK = 'X'

IMPORTING

SENT_TO_ALL = w_sent_all

  • NEW_OBJECT_ID =

TABLES

PACKING_LIST = t_packing_list

OBJECT_HEADER = t_object_header

CONTENTS_BIN = t_attachment

  • CONTENTS_TXT = it_message

RECEIVERS = t_receivers

.

*Populate zerror return code

ld_error = sy-subrc.

*Populate zreceiver return code

LOOP AT t_receivers.

ld_receiver = t_receivers-retrn_code.

ENDLOOP.

ENDFORM.

3 REPLIES 3
Read only

Former Member
0 Likes
593

Hi Sandhya,

Try this out.Reward points if useful

ISR_FI_SEND_EMAIL

ISR_FI_SEND_EMAIL_NEW_USER

SLS_CUST_SEND_EMAIL_TOOL

OR

Refer to followinh code

report y_cr17_mail.

data method1 like sy-ucomm.

data g_user like soudnamei1.

data g_user_data like soudatai1.

data g_owner like soud-usrnam.

data g_receipients like soos1 occurs 0 with header line.

data g_document like sood4 .

data g_header like sood2.

data g_folmam like sofm2.

data g_objcnt like soli occurs 0 with header line.

data g_objhead like soli occurs 0 with header line.

data g_objpara like selc occurs 0 with header line.

data g_objparb like soop1 occurs 0 with header line.

data g_attachments like sood5 occurs 0 with header line.

data g_references like soxrl occurs 0 with header line.

data g_authority like sofa-usracc.

data g_ref_document like sood4.

data g_new_parent like soodk.

data: begin of g_files occurs 10 ,

text(4096) type c,

end of g_files.

data : fold_number(12) type c,

fold_yr(2) type c,

fold_type(3) type c.

parameters ws_file(4096) type c default 'c:\debugger.txt'.

Can me any file fromyour pc ....either xls or word or ppt etc ...

g_user-sapname = sy-uname.

call function 'SO_USER_READ_API1'

exporting

user = g_user

PREPARE_FOR_FOLDER_ACCESS = ' '

importing

user_data = g_user_data

EXCEPTIONS

USER_NOT_EXIST = 1

PARAMETER_ERROR = 2

X_ERROR = 3

OTHERS = 4

.

if sy-subrc 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

endif.

fold_type = g_user_data-outboxfol+0(3).

fold_yr = g_user_data-outboxfol+3(2).

fold_number = g_user_data-outboxfol+5(12).

clear g_files.

refresh : g_objcnt,

g_objhead,

g_objpara,

g_objparb,

g_receipients,

g_attachments,

g_references,

g_files.

method1 = 'SAVE'.

g_document-foltp = fold_type.

g_document-folyr = fold_yr.

g_document-folno = fold_number.

g_document-objtp = g_user_data-object_typ.

*g_document-OBJYR = '27'.

*g_document-OBJNO = '000000002365'.

*g_document-OBJNAM = 'MESSAGE'.

g_document-objdes = 'sap-img.com testing by program'.

g_document-folrg = 'O'.

*g_document-okcode = 'CHNG'.

g_document-objlen = '0'.

g_document-file_ext = 'TXT'.

g_header-objdes = 'sap-img.com testing by program'.

g_header-file_ext = 'TXT'.

call function 'SO_DOCUMENT_REPOSITORY_MANAGER'

exporting

method = method1

office_user = sy-uname

ref_document = g_ref_document

new_parent = g_new_parent

importing

authority = g_authority

tables

objcont = g_objcnt

objhead = g_objhead

objpara = g_objpara

objparb = g_objparb

recipients = g_receipients

attachments = g_attachments

references = g_references

files = g_files

changing

document = g_document

header_data = g_header

FOLMEM_DATA =

RECEIVE_DATA =

.

File from the pc to send...

method1 = 'ATTCREATEFROMPC'.

g_files-text = ws_file.

append g_files.

call function 'SO_DOCUMENT_REPOSITORY_MANAGER'

exporting

method = method1

office_user = g_owner

ref_document = g_ref_document

new_parent = g_new_parent

importing

authority = g_authority

tables

objcont = g_objcnt

objhead = g_objhead

objpara = g_objpara

objparb = g_objparb

recipients = g_receipients

attachments = g_attachments

references = g_references

files = g_files

changing

document = g_document

header_data = g_header

.

method1 = 'SEND'.

g_receipients-recnam = 'MK085'.

g_receipients-recesc = 'B'.

g_receipients-sndex = 'X'.

append g_receipients.

call function 'SO_DOCUMENT_REPOSITORY_MANAGER'

exporting

method = method1

office_user = g_owner

ref_document = g_ref_document

new_parent = g_new_parent

importing

authority = g_authority

tables

objcont = g_objcnt

objhead = g_objhead

objpara = g_objpara

objparb = g_objparb

recipients = g_receipients

attachments = g_attachments

references = g_references

files = g_files

changing

document = g_document

header_data = g_header.

End of Program[/code]

Also check this links as well.

http://www.sapdevelopment.co.uk/reporting/email/attach_xls.htm

/people/thomas.jung3/blog/2004/09/09/receiving-e-mail-and-processing-it-with-abap--version-610-and-higher

Edited by: ravee on May 15, 2008 11:26 PM

Read only

0 Likes
592

Thanks a lot Ravee, my problem got solved

Read only

0 Likes
592

Hi Ravee,

By executing the below code , I am able to send the attachment but there is a pop up box requesting for email id.

Can I avoid this popup and hardcoe the recepient email id in my code?

Pls gude...