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

Method or Function Module to attache Documents

Former Member
0 Likes
513

Hi,

I need to attach various documents (more than 2 files) along with mail which I am sending through my program.

It will be highly appreciated if some one can suggest me the name of function module or method by that i can do so.

Actually I am using :

CALL METHOD document->add_attachment

EXPORTING

i_attachment_type = 'PDF'

i_attachment_subject = g_pdf_name

i_att_content_hex = it_binary_content.

method but it is always attaching the last file from the selected files. Pls suggest..

Thanks & Regards,

Pradeep

3 REPLIES 3
Read only

Former Member
0 Likes
487

hi

I hope the below code may help your requirement.

        • Declarations******

DATA: I_OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.

  • A structure to hold SAPoffice: Single List with Column Length 255

DATA: I_OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

  • Structure to hold mail subject

DATA: WA_DOC_CHNG LIKE SODOCCHGI1.

  • Structure to hold SAPoffice: Structure of the API Recipient List

DATA: I_RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE.

  • data : objhead like solisti1 occurs 1 with header line.

DATA : COLS1 LIKE LINE OF TC_RECEPIENT-COLS.

DATA: SELECTION_TAB LIKE SOOS1 OCCURS 10 WITH HEADER LINE.

DATA : BEGIN OF RECEIVER,

NAME TYPE SOS04-L_ADR_NAME,

REC_TYPE TYPE SOMLRECI1-REC_TYPE,

EXPRESS TYPE SOMLRECI1-EXPRESS,

COPY TYPE SOMLRECI1-COPY,

BLIND_COPY TYPE SOMLRECI1-BLIND_COPY,

END OF RECEIVER.

DATA : REC_TEMP LIKE RECEIVER OCCURS 0 WITH HEADER LINE.

DATA : WA_REC_TEMP LIKE LINE OF REC_TEMP.

DATA : RECEPIENT_LINES LIKE SY-LOOPC.

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

CLEAR:LT_PDF_NUC_DATA, I_OBJPACK, I_OBJTXT.

REFRESH: LT_PDF_NUC_DATA, I_OBJPACK, I_OBJTXT.

WA_DOC_CHNG-OBJ_DESCR = IO_TITLE.

CASE CHANGE.

WHEN 'CH01'.

WA_DOC_CHNG-NO_CHANGE = 'X'.

WHEN 'CH02'.

WA_DOC_CHNG-NO_CHANGE = 'X'.

WHEN 'CH03'.

WA_DOC_CHNG-NO_CHANGE = ' '.

ENDCASE.

CASE SENS.

WHEN 'SE01'.

WA_DOC_CHNG-SENSITIVTY = 'O'.

WHEN 'SE02'.

WA_DOC_CHNG-SENSITIVTY = 'P'.

WHEN 'SE03'.

WA_DOC_CHNG-SENSITIVTY = 'F'.

ENDCASE.

CASE PRIOR.

WHEN 'L'.

WA_DOC_CHNG-PRIORITY = 9.

WA_DOC_CHNG-OBJ_PRIO = 9.

WHEN 'M'.

WA_DOC_CHNG-PRIORITY = 5.

WA_DOC_CHNG-OBJ_PRIO = 5.

WHEN 'H'.

WA_DOC_CHNG-PRIORITY = 1.

WA_DOC_CHNG-OBJ_PRIO = 1.

ENDCASE.

WA_DOC_CHNG-OBJ_LANGU = LANGU.

WA_DOC_CHNG-OBJ_EXPDAT = EXPIRYDATE.

I_OBJTXT[] = MYTABLE.

DESCRIBE TABLE I_OBJTXT LINES TAB_LINES .

READ TABLE I_OBJTXT INDEX TAB_LINES INTO L_CLINE.

WA_DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 +

STRLEN( L_CLINE ).

CLEAR I_OBJPACK-TRANSF_BIN.

I_OBJPACK-HEAD_START = 1.

I_OBJPACK-HEAD_NUM = 0.

I_OBJPACK-BODY_START = 1.

I_OBJPACK-BODY_NUM = TAB_LINES.

I_OBJPACK-DOC_TYPE = 'RAW'. "'RAW'.

APPEND I_OBJPACK.

DATA : LT_INDEX TYPE SY-TABIX.

DATA : DOC_TYPE(3) TYPE C.

DATA : DESCR TYPE LOCALFILE,

TYPE TYPE CHAR04.

DATA : TEMP_DATA LIKE P_PATH1-LOW.

DATA : TEMP1 TYPE STRING.

LOOP AT P_PATH1-LOW.

TEMP1 = P_PATH1-LOW.

DESCR = P_PATH1-LOW.

CALL FUNCTION 'STRING_REVERSE'

EXPORTING

STRING = DESCR

LANG = 'E'

IMPORTING

RSTRING = DESCR.

CALL FUNCTION 'STRING_SPLIT'

EXPORTING

DELIMITER = '\'

STRING = DESCR

IMPORTING

HEAD = DESCR

TAIL = TEMP_DATA.

CALL FUNCTION 'STRING_REVERSE'

EXPORTING

STRING = DESCR

LANG = 'E'

IMPORTING

RSTRING = DESCR.

CALL FUNCTION 'STRING_SPLIT'

EXPORTING

DELIMITER = '.'

STRING = DESCR

IMPORTING

HEAD = TEMP_DATA

TAIL = DOC_TYPE.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = TEMP1

FILETYPE = 'BIN'

HEADER_LENGTH = 0

READ_BY_LINE = 'X'

REPLACEMENT = '#'

TABLES

DATA_TAB = LT_UPLOAD.

DESCRIBE TABLE LT_UPLOAD LINES TAB_LINES.

DESCRIBE TABLE LT_PDF_NUC_DATA LINES LT_INDEX.

LT_INDEX = LT_INDEX + 1.

LOOP AT LT_UPLOAD.

W_LT_PDF_NUC_DATA-LINE = LT_UPLOAD-LINE.

APPEND W_LT_PDF_NUC_DATA TO LT_PDF_NUC_DATA.

ENDLOOP.

I_OBJPACK-TRANSF_BIN = 'X'.

I_OBJPACK-HEAD_START = 0.

I_OBJPACK-HEAD_NUM = 0.

I_OBJPACK-BODY_START = LT_INDEX.

I_OBJPACK-BODY_NUM = TAB_LINES.

I_OBJPACK-DOC_TYPE = DOC_TYPE.

SPLIT DESCR AT '.' INTO DESCR TYPE.

I_OBJPACK-OBJ_DESCR = DESCR.

I_OBJPACK-DOC_SIZE = TAB_LINES * 255.

APPEND I_OBJPACK.

ENDLOOP.

LOOP AT REC_TEMP.

I_RECLIST-RECEIVER = REC_TEMP-NAME.

I_RECLIST-REC_TYPE = REC_TEMP-REC_TYPE.

I_RECLIST-EXPRESS = REC_TEMP-EXPRESS.

I_RECLIST-COPY = REC_TEMP-COPY.

I_RECLIST-BLIND_COPY = REC_TEMP-BLIND_COPY.

APPEND I_RECLIST.

ENDLOOP.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = WA_DOC_CHNG

PUT_IN_OUTBOX = 'X'

COMMIT_WORK = 'X'

TABLES

PACKING_LIST = I_OBJPACK

CONTENTS_BIN = LT_PDF_NUC_DATA

CONTENTS_TXT = I_OBJTXT

RECEIVERS = I_RECLIST

EXCEPTIONS

TOO_MANY_RECEIVERS = 1

DOCUMENT_NOT_SENT = 2

OPERATION_NO_AUTHORIZATION = 4

OTHERS = 99.

CASE SY-SUBRC.

WHEN 1.

MESSAGE I004(ZF_CD) WITH TEXT-020.

EXIT.

WHEN 2.

MESSAGE I004(ZF_CD) WITH TEXT-021.

EXIT.

WHEN 4.

MESSAGE I004(ZF_CD) WITH TEXT-022.

EXIT.

WHEN 0.

SUBMIT RSCONN01 WITH MODE = 'INT' AND RETURN.

SET SCREEN 0.

ENDCASE.

Regards

Vinay

Read only

Former Member
0 Likes
487

Hi,

You can use the FM SO_NEW_DOCUMENT_ATT_SEND_API1 & send multiple attachment.

only thing you need to do is append the structure OBJPACK, OBJBIN & OBJTXT twice with different doc type.

Hope this will work.

Thanks

Rajeev

Read only

gregorw
SAP Mentor
SAP Mentor
0 Likes
487

Hello Pradeep,

also have a look at this weblog:

<a href="/people/thomas.jung3/blog/2004/09/08/sending-e-mail-from-abap--version-610-and-higher--bcs-interface">Sending E-Mail from ABAP - Version 610 and Higher - BCS Interface</a>.

Regards

Gregor