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: 

Sending more that 1 attachment in single mail

Former Member
0 Kudos

Hi,

I am sending a mail with attachment it is working fine.

Now I want to send on more attachment.Please tell me whether it is possible to send more than 1 attachemnt in single mail.I am using FM 'SO_NEW_DOCUMENT_ATT_SEND_API1'

Sample code will be appreciated.

regards,

Yuvaraj

8 REPLIES 8

former_member181962
Active Contributor
0 Kudos

Yes you can send more than one attachment using this FM.

REPORT ZSSO_DOCUMENT_SEND_API1.

DATA: OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.

DATA: OBJHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.

DATA: OBJBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE.

DATA: DOC_CHNG LIKE SODOCCHGI1.

DATA: TAB_LINES LIKE SY-TABIX.

  • Creating the document to be sent

DOC_CHNG-OBJ_NAME = 'OFFER'.

DOC_CHNG-OBJ_DESCR = 'Auction of a Picasso jr'.

OBJTXT = 'Reserve price : $250000'.

APPEND OBJTXT.

OBJTXT = 'A reproduction of the painting to be auctioned'.

APPEND OBJTXT.

OBJTXT = 'is enclosed as an attachment.'.

APPEND OBJTXT.

DESCRIBE TABLE OBJTXT LINES TAB_LINES.

READ TABLE OBJTXT INDEX TAB_LINES.

DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ).

  • Creating the entry for the compressed document

CLEAR OBJPACK-TRANSF_BIN.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 0.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = TAB_LINES.

OBJPACK-DOC_TYPE = 'RAW'.

APPEND OBJPACK.

  • Creating the document attachment

  • (Assume the data in OBJBIN are given in BMP format)

OBJBIN = ' \O/ '. APPEND OBJBIN.

OBJBIN = ' '. APPEND OBJBIN.

OBJBIN = ' / \ '. APPEND OBJBIN.

DESCRIBE TABLE OBJBIN LINES TAB_LINES.

OBJHEAD = 'picasso.bmp'. APPEND OBJHEAD.

  • Creating the entry for the compressed attachment

OBJPACK-TRANSF_BIN = 'X'.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 1.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = TAB_LINES.

OBJPACK-DOC_TYPE = 'BMP'.

OBJPACK-OBJ_NAME = 'ATTACHMENT1'.

OBJPACK-OBJ_DESCR = 'Reproduction object 138'.

OBJPACK-DOC_SIZE = TAB_LINES * 255.

APPEND OBJPACK..

  • Creating the entry for the compressed attachment

OBJPACK-TRANSF_BIN = 'X'.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 1.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = TAB_LINES.

OBJPACK-DOC_TYPE = 'BMP'.

OBJPACK-OBJ_NAME = 'ATTACHMENT2'.

OBJPACK-OBJ_DESCR = 'Reproduction object 138'.

OBJPACK-DOC_SIZE = TAB_LINES * 255.

APPEND OBJPACK..

  • Entering names in the distribution list

RECLIST-RECEIVER = 'guido.geldsack@money.com'.

RECLIST-REC_TYPE = 'U'.

APPEND RECLIST.

RECLIST-RECEIVER = 'DLI-NEUREICH'.

RECLIST-REC_TYPE = 'P'.

APPEND RECLIST.

  • Sending the document

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = DOC_CHNG

PUT_IN_OUTBOX = 'X'

COMMIT_WORK = 'X'

TABLES

PACKING_LIST = OBJPACK

OBJECT_HEADER = OBJHEAD

CONTENTS_BIN = OBJBIN

CONTENTS_TXT = OBJTXT

RECEIVERS = RECLIST

EXCEPTIONS

TOO_MANY_RECEIVERS = 1

DOCUMENT_NOT_SENT = 2

OPERATION_NO_AUTHORIZATION = 4

OTHERS = 99.

CASE SY-SUBRC.

WHEN 0.

WRITE: / 'Result of the send process:'.

LOOP AT RECLIST.

WRITE: / RECLIST-RECEIVER(48), ':'.

IF RECLIST-RETRN_CODE = 0.

WRITE 'sent successfully'.

ELSE.

WRITE 'not sent'.

ENDIF.

ENDLOOP.

WHEN 1.

WRITE: / 'no authorization to send to the specified number of'

'recipients!'.

WHEN 2.

WRITE: / 'document could not be sent to any of the recipients!'.

WHEN 4.

WRITE: / 'no authorization to send !'.

WHEN OTHERS.

WRITE: / 'error occurred during sending !'.

ENDCASE.

Regards,

Ravi

0 Kudos

same thread...

rahulkavuri
Active Contributor
0 Kudos

<b>Check the thread above and reward points if found helpful</b>

Former Member
0 Kudos

Hi All,

I want to send 2 attachments. The data which needs to be sent is in two different internal tables.

PLease tell me as how I should send these two tables as an attachment.

Regards,

Yuvaraj

0 Kudos

HI YUVARAJ,

TRY THIS

&----


*& Report ZPSENDMAILEXTERNAL *

*& *

&----


*& *

*& *

&----


REPORT ZPSENDMAILEXTERNAL .

DATA: OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.

DATA: OBJHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.

DATA: OBJBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE.

DATA: DOC_CHNG LIKE SODOCCHGI1.

DATA: TAB_LINES LIKE SY-TABIX.

  • Creation of the document to be sent

  • File Name

DOC_CHNG-OBJ_NAME = 'SENDFILE'.

  • Mail Subject

DOC_CHNG-OBJ_DESCR = 'Send test Mail'.

  • Mail Contents

OBJTXT = 'HELLO'.

APPEND OBJTXT.

OBJTXT = 'THIS IS THE FIRST TEST MAIL'.

APPEND OBJTXT.

OBJTXT = 'have a good day'.

APPEND OBJTXT.

DESCRIBE TABLE OBJTXT LINES TAB_LINES.

READ TABLE OBJTXT INDEX TAB_LINES.

**attachment

OBJBIN-LINE = 'this is the first document'.

APPEND OBJBIN.

DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ).

CLEAR OBJPACK-TRANSF_BIN.

*OBJPACK-TRANSF_BIN = 'X'.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 0.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = TAB_LINES.

*OBJPACK-BODY_NUM = 1.

OBJPACK-DOC_TYPE = 'RAW'.

OBJPACK-OBJ_NAME = 'Mail'.

OBJPACK-OBJ_DESCR = 'First Mail'.

OBJPACK-DOC_SIZE = 1 * 255.

APPEND OBJPACK.

  • Creation of the entry for the compressed document

*CLEAR OBJPACK-TRANSF_BIN.

OBJPACK-TRANSF_BIN = 'X'.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 0.

OBJPACK-BODY_START = 1.

*OBJPACK-BODY_NUM = TAB_LINES.

OBJPACK-BODY_NUM = 1.

OBJPACK-DOC_TYPE = 'RAW'.

OBJPACK-OBJ_NAME = 'ATTACHMENT'.

OBJPACK-OBJ_DESCR = 'Attached Document'.

OBJPACK-DOC_SIZE = 1 * 255.

APPEND OBJPACK.

**Creation of the document attachment

    • (Assume that the data in OBJBIN is in BMP format)

*CLEAR OBJPACK-TRANSF_BIN.

OBJBIN = ' \O/ '. APPEND OBJBIN.

OBJBIN = ' | '. APPEND OBJBIN.

OBJBIN = ' / \ '. APPEND OBJBIN.

DESCRIBE TABLE OBJBIN LINES TAB_LINES.

OBJHEAD = 'Ram149_jpg.jpg'.

APPEND OBJHEAD.

    • Creation of the entry for the compressed attachment

OBJPACK-TRANSF_BIN = 'X'.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 1.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = TAB_LINES.

OBJPACK-DOC_TYPE = 'JPG'.

OBJPACK-OBJ_NAME = 'PICTURE'.

OBJPACK-OBJ_DESCR = 'Picture'.

OBJPACK-DOC_SIZE = TAB_LINES * 255.

APPEND OBJPACK.

  • Completing the recipient list

RECLIST-RECEIVER = 'DEV02'.

RECLIST-REC_TYPE = 'B'.

APPEND RECLIST.

  • Sending the document

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = DOC_CHNG

PUT_IN_OUTBOX = 'X'

commit_work = 'X'

TABLES

PACKING_LIST = OBJPACK

OBJECT_HEADER = OBJHEAD

CONTENTS_BIN = OBJBIN

CONTENTS_TXT = OBJTXT

RECEIVERS = RECLIST

EXCEPTIONS

TOO_MANY_RECEIVERS = 1

DOCUMENT_NOT_SENT = 2

OPERATION_NO_AUTHORIZATION = 4

OTHERS = 99.

CASE SY-SUBRC.

WHEN 0.

WRITE: / 'Result of the send process:'.

LOOP AT RECLIST.

WRITE: / RECLIST-RECEIVER(48), ':'.

IF RECLIST-RETRN_CODE = 0.

WRITE 'The document was sent'.

ELSE.

WRITE 'The document could not be sent'.

ENDIF.

ENDLOOP.

WHEN 1.

WRITE: / 'No authorization for sending to the specified number',

'of recipients'.

WHEN 2.

WRITE: / 'Document could not be sent to any recipient'.

WHEN 4.

WRITE: / 'No send authorization'.

WHEN OTHERS.

WRITE: / 'Error occurred while sending'.

ENDCASE.

HOPE THIS HELPS,

PRIYA.

Former Member
0 Kudos

Hii

check this code..this works

DATA: ITCPO LIKE ITCPO,

TAB_LINES LIKE SY-TABIX.

  • Variables for EMAIL functionality

DATA: MAILDATA LIKE SODOCCHGI1.

DATA: MAILPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.

DATA: MAILHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.

DATA: MAILBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: MAILTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: MAILREC LIKE SOMLREC90 OCCURS 0 WITH HEADER LINE.

DATA: SOLISTI1 LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE.

PERFORM SEND_FORM_VIA_EMAIL.

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

  • FORM SEND_FORM_VIA_EMAIL *

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

FORM SEND_FORM_VIA_EMAIL.

CLEAR: MAILDATA, MAILTXT, MAILBIN, MAILPACK, MAILHEAD, MAILREC.

REFRESH: MAILTXT, MAILBIN, MAILPACK, MAILHEAD, MAILREC.

  • Creation of the document to be sent File Name

MAILDATA-OBJ_NAME = 'TEST'.

  • Mail Subject

MAILDATA-OBJ_DESCR = 'Subject'.

  • Mail Contents

MAILTXT-LINE = 'Here is your file'.

APPEND MAILTXT.

  • Prepare Packing List

PERFORM PREPARE_PACKING_LIST.

  • Set recipient - email address here!!!

MAILREC-RECEIVER = 'You@yourcompany.com'.

MAILREC-REC_TYPE = 'U'.

APPEND MAILREC.

MAILREC-RECEIVER = 'YourPartner@yourcompany.com'.

MAILREC-REC_TYPE = 'U'.

APPEND MAILREC.

  • Sending the document

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = MAILDATA

PUT_IN_OUTBOX = ' '

TABLES

PACKING_LIST = MAILPACK

OBJECT_HEADER = MAILHEAD

CONTENTS_BIN = MAILBIN

CONTENTS_TXT = MAILTXT

RECEIVERS = MAILREC

EXCEPTIONS

TOO_MANY_RECEIVERS = 1

DOCUMENT_NOT_SENT = 2

OPERATION_NO_AUTHORIZATION = 4

OTHERS = 99.

ENDFORM. "send_form_via_email

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

  • Form PREPARE_PACKING_LIST

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

FORM PREPARE_PACKING_LIST.

CLEAR: MAILPACK, MAILBIN, MAILHEAD.

REFRESH: MAILPACK, MAILBIN, MAILHEAD.

DESCRIBE TABLE MAILTXT LINES TAB_LINES.

READ TABLE MAILTXT INDEX TAB_LINES.

MAILDATA-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( MAILTXT ).

  • Creation of the entry for the compressed document

CLEAR MAILPACK-TRANSF_BIN.

MAILPACK-HEAD_START = 1.

MAILPACK-HEAD_NUM = 0.

MAILPACK-BODY_START = 1.

MAILPACK-BODY_NUM = TAB_LINES.

MAILPACK-DOC_TYPE = 'RAW'.

APPEND MAILPACK.

MAILHEAD = 'TEST.TXT'.

APPEND MAILHEAD.

  • File 1

MAILBIN = 'This is file 1'.

APPEND MAILBIN.

DESCRIBE TABLE MAILBIN LINES TAB_LINES.

MAILPACK-TRANSF_BIN = 'X'.

MAILPACK-HEAD_START = 1.

MAILPACK-HEAD_NUM = 1.

MAILPACK-BODY_START = 1.

MAILPACK-BODY_NUM = TAB_LINES.

MAILPACK-DOC_TYPE = 'TXT'.

MAILPACK-OBJ_NAME = 'TEST1'.

MAILPACK-OBJ_DESCR = 'Subject'.

MAILPACK-DOC_SIZE = TAB_LINES * 255.

APPEND MAILPACK.

*File 2

MAILBIN = 'This is file 2'.

APPEND MAILBIN.

DATA: START TYPE I.

DATA: END TYPE I.

START = TAB_LINES + 1.

DESCRIBE TABLE MAILBIN LINES END.

MAILPACK-TRANSF_BIN = 'X'.

MAILPACK-HEAD_START = 1.

MAILPACK-HEAD_NUM = 1.

MAILPACK-BODY_START = START.

MAILPACK-BODY_NUM = END.

MAILPACK-DOC_TYPE = 'TXT'.

MAILPACK-OBJ_NAME = 'TEST2'.

MAILPACK-OBJ_DESCR = 'Subject'.

MAILPACK-DOC_SIZE = TAB_LINES * 255.

APPEND MAILPACK.

ENDFORM. "prepare_packing_list

Regards

Naresh

Former Member
0 Kudos

Hi Priya,

Thanx for the reply. It is working fine.

But in my program I am not getting how to pass two different tables.I ma sending my code .I am sending table BDCLM here.Now I want to pass table ITAB.

Please guide me.

Here is my code:

DATA: sent_to_all LIKE SONV-FLAG.

DATA:

l_datum(10),

ls_docdata TYPE sodocchgi1,

lt_objpack TYPE TABLE OF sopcklsti1 WITH HEADER LINE,

lt_objhead TYPE TABLE OF solisti1 WITH HEADER LINE,

lt_objtxt TYPE TABLE OF solisti1 WITH HEADER LINE,

lt_objbin TYPE TABLE OF solisti1 WITH HEADER LINE,

lt_reclist TYPE TABLE OF somlreci1 WITH HEADER LINE,

lt_listobject TYPE TABLE OF abaplist WITH HEADER LINE,

l_tab_lines TYPE i,

l_att_type LIKE soodk-objtp.

  • Title and Description

ls_docdata-obj_name = 'CSAFILE'.

ls_docdata-obj_descr = 'CSAFILE'.

  • Main Text

lt_objtxt = 'CSA FILE for Journal entry' .

APPEND lt_objtxt.

  • Write Packing List (Main)

DESCRIBE TABLE lt_objtxt LINES l_tab_lines.

READ TABLE lt_objtxt INDEX l_tab_lines.

ls_docdata-doc_size = ( l_tab_lines - 1 ) * 255 + STRLEN( lt_objtxt ).

CLEAR lt_objpack-transf_bin.

lt_objpack-head_start = 1.

lt_objpack-head_num = 0.

lt_objpack-body_start = 1.

lt_objpack-body_num = l_tab_lines.

lt_objpack-doc_type = 'RAW'.

APPEND lt_objpack.

  • Create Message Attachment

LOOP AT BDCLM.

CONCATENATE BDCLM-INDATE BDCLM-INTIME

BDCLM+14 INTO lt_objbin.

APPEND lt_objbin.

ENDLOOP.

  • Write Packing List (Attachment)

l_att_type = 'HTM'.

DESCRIBE TABLE lt_objbin LINES l_tab_lines.

READ TABLE lt_objbin INDEX l_tab_lines.

lt_objpack-doc_size = ( l_tab_lines - 1 ) * 255 + STRLEN( lt_objbin ).

lt_objpack-transf_bin = 'X'.

lt_objpack-head_start = 1.

lt_objpack-head_num = 0.

lt_objpack-body_start = 1.

lt_objpack-body_num = l_tab_lines.

lt_objpack-doc_type = l_att_type.

lt_objpack-obj_name = 'CSAFILE'.

lt_objpack-obj_descr = 'CSAFILE'.

APPEND lt_objpack.

  • Create receiver list

lt_reclist-receiver = 'yuvraj_n_bhosale@yahoo.com'.

lt_reclist-rec_type = 'U'.

APPEND lt_reclist.

  • Send Message

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = ls_docdata

put_in_outbox = 'X'

commit_work = 'X'

*put_in_outbox = ''

IMPORTING

SENT_TO_ALL = sent_to_all

  • VALUE(NEW_OBJECT_ID) LIKE SOFOLENTI1-OBJECT_ID

TABLES

packing_list = lt_objpack

object_header = lt_objhead

contents_bin = lt_objbin

contents_txt = lt_objtxt

receivers = lt_reclist

*COMMIT_WORK = X

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.

SUBMIT RSCONN01

WITH MODE EQ 'INT'

AND RETURN.

IF sy-subrc = 0.

  • Document sent

MESSAGE ID 'SO' TYPE 'S' NUMBER '022'.

ELSE.

  • Document <&> could not be sent

MESSAGE ID 'SO' TYPE 'S' NUMBER '023'

WITH ls_docdata-obj_name.

ENDIF.

0 Kudos

Hi Yuva Raj,

LOOP AT BDCLM.

CONCATENATE BDCLM-INDATE BDCLM-INTIME

BDCLM+14 INTO lt_objbin.

APPEND lt_objbin.

ENDLOOP.

  • Write Packing List (Attachment)

l_att_type = 'HTM'.

DESCRIBE TABLE lt_objbin LINES l_tab_lines.

READ TABLE lt_objbin INDEX l_tab_lines.

lt_objpack-doc_size = ( l_tab_lines - 1 ) * 255 + STRLEN( lt_objbin ).

lt_objpack-transf_bin = 'X'.

lt_objpack-head_start = 1.

lt_objpack-head_num = 0.

lt_objpack-body_start = 1.

lt_objpack-body_num = l_tab_lines.

lt_objpack-doc_type = l_att_type.

lt_objpack-obj_name = 'CSAFILE'.

lt_objpack-obj_descr = 'CSAFILE'.

APPEND lt_objpack.

<b>LOOP AT itab.

CONCATENATE itab-field1 itab-field2

itab-field3 INTO lt_objbin.

APPEND lt_objbin.

ENDLOOP.

  • Write Packing List (Attachment)

l_att_type = 'HTM'.

DESCRIBE TABLE lt_objbin LINES l_tab_lines1.

l_tab_lines2 = l_tab_lines1 - l_tab_lines.

READ TABLE lt_objbin INDEX l_tab_lines2.

lt_objpack-doc_size = ( l_tab_lines2 - 1 ) * 255 + STRLEN( lt_objbin ).

lt_objpack-transf_bin = 'X'.

lt_objpack-head_start = l_tab_lines2.

lt_objpack-head_num = 0.

lt_objpack-body_start = l_tab_lines2.

lt_objpack-body_num = l_tab_lines2.

lt_objpack-doc_type = l_att_type.

lt_objpack-obj_name = 'CSAFILE2'.

lt_objpack-obj_descr = 'CSAFILE2'.

APPEND lt_objpack.</b>

Add the highlighted code