‎2005 Dec 06 9:15 PM
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
‎2005 Dec 06 9:34 PM
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
‎2005 Dec 06 9:45 PM
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
‎2005 Dec 15 10:38 AM
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