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

send mail with multiple excel attachments

murat_kaya
Participant
0 Likes
1,958

hello experts,

i need to send e-mail with three excel attachments. is it possible, if so, how can i do that?

early replies appreciated.

regards,

Murat Kaya

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,257

What is the source of this excels...

Please provide full info to get apt replies.

chek if this wiki can be of help to you.

Multiple Attachments Explanation :

https://www.sdn.sap.com/irj/sdn/wiki?path=/display/snippets/multiple%2battachments%2bexplanation

11 REPLIES 11
Read only

Former Member
0 Likes
1,258

What is the source of this excels...

Please provide full info to get apt replies.

chek if this wiki can be of help to you.

Multiple Attachments Explanation :

https://www.sdn.sap.com/irj/sdn/wiki?path=/display/snippets/multiple%2battachments%2bexplanation

Read only

0 Likes
1,257

Hi,

i used internal tables as the data source. i have data but i don't know how to put them as seperate attachments. now i am looking at the link you posted.

thanks,

Murat Kaya

Read only

0 Likes
1,257

Hi Kiran,

your link was helpful but i have a question about it. in the sample code there are two excel attachments. can we make it three?

Hi Dieter,

i looked at BCS_EXAMPLE_5, it looks fine but it requires binary data to add as attachment. i have 3 different internal tables with 8 fields and want to put this data to excel and mail it. can i do this like BCS_EXAMPLE_5?

regards,

Murat Kaya

Read only

0 Likes
1,257

see the method parameters you will see the other options also apart from binary attachement option.

Read only

0 Likes
1,257

thanks for the replies,

now i know i can attach my files to mail but in the excel file all the fields are written in one line. how should i edit my source tab so that the excel will be in the right format?

regards,

Murat Kaya

Read only

0 Likes
1,257

Hi murat,

here a simple example with 3 xls-att.

DATA: SEND_REQUEST TYPE REF TO CL_BCS.

DATA: SUBJECT TYPE SO_OBJ_DES.

DATA: ATT_TYPE TYPE SOODK-OBJTP.

DATA: IT_TEXT TYPE BCSY_TEXT.

DATA: WA_TEXT LIKE SOLI.

DATA: IT_BIN TYPE SOLIX_TAB.

DATA: WA_BIN TYPE SOLIX.

DATA: DOCUMENT TYPE REF TO CL_DOCUMENT_BCS.

DATA: SENDER TYPE REF TO CL_SAPUSER_BCS.

DATA: RECIPIENT TYPE REF TO IF_RECIPIENT_BCS.

DATA: BCS_EXCEPTION TYPE REF TO CX_BCS.

DATA: SENT_TO_ALL TYPE OS_BOOLEAN.

  • Bytes der Datei

DATA: IT_LENGHT TYPE SO_OBJ_LEN.

DATA: N10(10) TYPE N.

*

CONSTANTS: CON_NEWL TYPE ABAP_CHAR1

VALUE CL_ABAP_CHAR_UTILITIES=>NEWLINE,

CON_TAB TYPE ABAP_CHAR1

VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.

*

START-OF-SELECTION.

PERFORM MAIN.

PERFORM RSCONN01_EXECUTE.

END-OF-SELECTION.

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

FORM MAIN.

TRY.

*

SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).

*

PERFORM HEAD_CONT.

PERFORM XLS_ATT.

PERFORM XLS_ATT1.

PERFORM XLS_ATT2.

*

  • Dokument (mit Anhang) setzen

CALL METHOD SEND_REQUEST->SET_DOCUMENT( DOCUMENT ).

*

  • Absender setzen

*

SENDER = CL_SAPUSER_BCS=>CREATE( SY-UNAME ).

CALL METHOD SEND_REQUEST->SET_SENDER

EXPORTING

I_SENDER = SENDER.

*

  • Empfänger setzen

  • email-Empfänger

*

RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(

'yourmailaddress' ).

CALL METHOD SEND_REQUEST->ADD_RECIPIENT

EXPORTING

I_RECIPIENT = RECIPIENT

I_EXPRESS = 'X'.

*

  • Dokument senden

*

CALL METHOD SEND_REQUEST->SEND(

EXPORTING

I_WITH_ERROR_SCREEN = 'X'

RECEIVING

RESULT = SENT_TO_ALL ).

*

COMMIT WORK.

*

  • Sende-Error abfangen

CATCH CX_BCS INTO BCS_EXCEPTION.

WRITE: 'Fehler aufgetreten.'(001).

WRITE: 'Fehlertyp:'(002), BCS_EXCEPTION->ERROR_TYPE.

EXIT.

ENDTRY.

ENDFORM. "main

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

FORM HEAD_CONT.

*

CLEAR: IT_TEXT[], WA_TEXT, SUBJECT.

*

ATT_TYPE = 'RAW'.

*

CONCATENATE 'Betreffzeile am' SY-DATUM 'um' SY-UZEIT

INTO SUBJECT SEPARATED BY SPACE.

*

WA_TEXT = 'Hello!'.

APPEND WA_TEXT TO IT_TEXT.

*

DESCRIBE TABLE IT_TEXT LINES N10.

N10 = ( N10 - 1 ) * 255 + STRLEN( WA_TEXT ).

IT_LENGHT = N10.

*

DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(

I_TYPE = ATT_TYPE

I_TEXT = IT_TEXT

I_LENGTH = IT_LENGHT

I_SUBJECT = SUBJECT ).

*

ENDFORM. "HEAD_CONT

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

FORM XLS_ATT.

*

DATA: BEGIN OF ITAB OCCURS 0,

MATNR LIKE MARA-MATNR,

MTART LIKE MARA-MTART,

MATKL LIKE MARA-MATKL,

BRGEW LIKE MARA-BRGEW,

END OF ITAB.

*

DATA: BRGEW(18).

*

CLEAR: IT_BIN[], WA_BIN, SUBJECT.

*

SELECT MATNR MTART MATKL BRGEW INTO TABLE ITAB

FROM MARA UP TO 10 ROWS.

*

CONCATENATE 'Material' CON_TAB

'Materialart' CON_TAB

'Warengruppe' CON_TAB

'Bruttogewicht' CON_NEWL

INTO WA_BIN.

APPEND WA_BIN TO IT_BIN.

*

LOOP AT ITAB.

WRITE ITAB-BRGEW TO BRGEW.

CONCATENATE ITAB-MATNR CON_TAB

ITAB-MTART CON_TAB

ITAB-MATKL CON_TAB

BRGEW CON_NEWL

INTO WA_BIN.

APPEND WA_BIN TO IT_BIN.

ENDLOOP.

*

ATT_TYPE = 'XLS'.

*

SUBJECT = 'My XLS attachment'.

*

DESCRIBE TABLE IT_BIN LINES N10.

N10 = ( N10 - 1 ) * 255 + STRLEN( WA_BIN ).

IT_LENGHT = N10.

*

CALL METHOD DOCUMENT->ADD_ATTACHMENT

EXPORTING

I_ATTACHMENT_TYPE = ATT_TYPE

I_ATT_CONTENT_HEX = IT_BIN

I_ATTACHMENT_SIZE = IT_LENGHT

I_ATTACHMENT_SUBJECT = SUBJECT.

*

ENDFORM. "XLS_ATT

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

FORM XLS_ATT1.

*

DATA: BEGIN OF ITAB OCCURS 0,

KUNNR LIKE KNA1-KUNNR,

END OF ITAB.

*

CLEAR: IT_BIN[], WA_BIN, SUBJECT.

*

SELECT KUNNR INTO TABLE ITAB

FROM KNA1 UP TO 10 ROWS.

*

CONCATENATE 'Kunde' CON_NEWL INTO WA_BIN.

APPEND WA_BIN TO IT_BIN.

*

LOOP AT ITAB.

CLEAR WA_BIN.

CONCATENATE ITAB-KUNNR CON_NEWL INTO WA_BIN.

APPEND WA_BIN TO IT_BIN.

ENDLOOP.

*

ATT_TYPE = 'XLS'.

*

SUBJECT = 'My XLS attachment1'.

*

DESCRIBE TABLE IT_BIN LINES N10.

N10 = ( N10 - 1 ) * 255 + STRLEN( WA_BIN ).

IT_LENGHT = N10.

*

CALL METHOD DOCUMENT->ADD_ATTACHMENT

EXPORTING

I_ATTACHMENT_TYPE = ATT_TYPE

I_ATT_CONTENT_HEX = IT_BIN

I_ATTACHMENT_SIZE = IT_LENGHT

I_ATTACHMENT_SUBJECT = SUBJECT.

*

ENDFORM. "XLS_ATT1

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

FORM XLS_ATT2.

*

DATA: BEGIN OF ITAB OCCURS 0,

LIFNR LIKE LFA1-LIFNR,

END OF ITAB.

*

CLEAR: IT_BIN[], WA_BIN, SUBJECT.

*

SELECT LIFNR INTO TABLE ITAB

FROM LFA1 UP TO 10 ROWS.

*

CONCATENATE 'Lieferant' CON_NEWL INTO WA_BIN.

APPEND WA_BIN TO IT_BIN.

*

LOOP AT ITAB.

CLEAR WA_BIN.

CONCATENATE ITAB-LIFNR CON_NEWL INTO WA_BIN.

APPEND WA_BIN TO IT_BIN.

ENDLOOP.

*

ATT_TYPE = 'XLS'.

*

SUBJECT = 'My XLS attachment2'.

*

DESCRIBE TABLE IT_BIN LINES N10.

N10 = ( N10 - 1 ) * 255 + STRLEN( WA_BIN ).

IT_LENGHT = N10.

*

CALL METHOD DOCUMENT->ADD_ATTACHMENT

EXPORTING

I_ATTACHMENT_TYPE = ATT_TYPE

I_ATT_CONTENT_HEX = IT_BIN

I_ATTACHMENT_SIZE = IT_LENGHT

I_ATTACHMENT_SUBJECT = SUBJECT.

*

ENDFORM. "XLS_ATT2

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

FORM RSCONN01_EXECUTE.

*

WAIT UP TO 2 SECONDS.

*

SUBMIT RSCONN01 WITH MODE = 'INT'

WITH OUTPUT = ' '

AND RETURN.

*

ENDFORM. "RSCONN01_EXECUTE

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

Hope it helpd.

If you need more than 3 ATT inser more ATT-Forms.

Regards, Dieter

Read only

0 Likes
1,257

Thanks Dieter,

thanks for the detailed sample code, this solves my problem.

Read only

Former Member
0 Likes
1,257
Read only

Former Member
0 Likes
1,257

Hi,

have a look to BCS_EXAMPLE_* in SE38. There are very good and simple examples.

Regards, Dieter

Read only

Former Member
0 Likes
1,257

hi murat,

kindly refer to the below link:

https://www.sdn.sap.com/irj/sdn/wiki?path=/display/bobj/excel-%2bsave%2bto%2bdi

regards,

alpa

Read only

Former Member
0 Likes
1,257

hi

check this out

do it 3 times and append to itab

(XLS-Attachment)

i_objpack-transf_bin = 'X'.

i_objpack-head_start = 1.

i_objpack-head_num = 0.

i_objpack-body_start = 1.

Länge des Attachment ermitteln

describe table i_objbin lines v_lines_bin.

read table i_objbin index v_lines_bin.

i_objpack-doc_size = v_lines_bin * 255 .

i_objpack-body_num = v_lines_bin.

i_objpack-doc_type = 'XLS'.

i_objpack-obj_name = 'smart'.

i_objpack-obj_descr = 'test'.

append i_objpack.

pass it to FM SO.... check the link

regards,

shiva