‎2008 Oct 30 1:52 PM
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
‎2008 Oct 30 1:55 PM
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
‎2008 Oct 30 1:55 PM
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
‎2008 Oct 30 2:09 PM
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
‎2008 Oct 30 3:26 PM
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
‎2008 Oct 30 3:41 PM
see the method parameters you will see the other options also apart from binary attachement option.
‎2008 Oct 30 6:07 PM
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
‎2008 Oct 30 9:28 PM
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
‎2008 Oct 31 9:11 AM
Thanks Dieter,
thanks for the detailed sample code, this solves my problem.
‎2008 Oct 30 1:57 PM
Hi,
Check out the link:
https://www.sdn.sap.com/irj/sdn/wiki?path=/display/snippets/email%2bfrom%2bsap
Thanks,
Chidanand
‎2008 Oct 30 1:58 PM
Hi,
have a look to BCS_EXAMPLE_* in SE38. There are very good and simple examples.
Regards, Dieter
‎2008 Oct 30 2:06 PM
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
‎2008 Oct 30 2:31 PM
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