2006 Aug 28 4:05 PM
I would like to send an email with attachment in Ascii format including CR/LF. The mail must also be copied to someone else.
Can I make use of function SO_NEW_DOCUMENT_ATT_SEND_API1 or is there an other solution.
Kind regards, Simon Tol
2006 Aug 28 4:19 PM
Hi Simon,
here a short example:
REPORT ZGRO_EMAIL_ITAB_EINFACH.
*
--- Parameter für SO_DOCUMENT_SEND_API1
DATA: OBJ_PACK LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,
OBJ_HEAD LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
OBJ_BIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
OBJ_TXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
REC_LIST LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,
DOC_DATA LIKE SODOCCHGI1.
*
DATA: BEGIN OF ITAB OCCURS 0,
TEXT(72),
END OF ITAB.
*
DATA: ITAB_LINE TYPE I.
*
START-OF-SELECTION.
*
PERFORM VERSORGEN_ITAB.
*
CHECK: ITAB_LINE > 1.
*
PERFORM EMAIL_ITAB_RAW.
*
PERFORM RSCONN01_EXECUTE.
*
END-OF-SELECTION.
*
FORM VERSORGEN_ITAB.
Fill itab as you like
READ REPORT SY-REPID INTO ITAB.
*
DESCRIBE TABLE ITAB LINES ITAB_LINE.
*
ENDFORM.
*
FORM EMAIL_ITAB_RAW.
*
CLEAR: DOC_DATA, OBJ_PACK, OBJ_HEAD, OBJ_BIN, OBJ_TXT, REC_LIST.
REFRESH: OBJ_PACK, OBJ_HEAD, OBJ_BIN, OBJ_TXT, REC_LIST.
email füllen
Betreff-Zeile
CLEAR: DOC_DATA.
DOC_DATA-OBJ_NAME = SY-REPID.
DOC_DATA-OBJ_DESCR = 'Send Abap via email RAW'.
Empfängerliste
email-User (U)
CLEAR REC_LIST.
REC_LIST-RECEIVER = '[email protected]'. "email address
REC_LIST-REC_TYPE = 'U'.
APPEND REC_LIST.
REC_LIST-RECEIVER = '[email protected]'. "email address
APPEND REC_LIST.
*
PACKING_LIST: 1. Zeile gilt immer für email-Inhalt
CLEAR OBJ_PACK.
OBJ_PACK-BODY_START = 01.
OBJ_PACK-BODY_NUM = 03.
OBJ_PACK-DOC_TYPE = 'RAW'.
APPEND OBJ_PACK.
*
PACKING_LIST: 2.
CLEAR OBJ_PACK.
OBJ_PACK-TRANSF_BIN = 'X'.
OBJ_PACK-BODY_START = 01.
OBJ_PACK-BODY_NUM = ITAB_LINE.
OBJ_PACK-DOC_TYPE = 'RAW'.
OBJ_PACK-OBJ_NAME = 'Anhang_RAW'.
OBJ_PACK-OBJ_DESCR = SY-REPID.
APPEND OBJ_PACK.
*
*emailinhalt
CLEAR: OBJ_TXT.
OBJ_TXT-LINE = 'Hallo,'.
APPEND OBJ_TXT.
CONCATENATE 'report:' SY-REPID 'als RAW' INTO OBJ_TXT-LINE
SEPARATED BY SPACE.
APPEND OBJ_TXT.
CONCATENATE 'Gruß' SY-UNAME INTO OBJ_TXT-LINE
SEPARATED BY SPACE.
APPEND OBJ_TXT.
*
CLEAR: OBJ_BIN.
LOOP AT ITAB.
OBJ_BIN = ITAB.
APPEND OBJ_BIN.
ENDLOOP.
*
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOC_DATA
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
TABLES
PACKING_LIST = OBJ_PACK
CONTENTS_TXT = OBJ_TXT
CONTENTS_BIN = OBJ_BIN
RECEIVERS = REC_LIST
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.
*
IF SY-SUBRC <> 0.
WRITE: / SY-SUBRC.
ENDIF.
*
ENDFORM.
*
FORM RSCONN01_EXECUTE.
Besser 2 Sekunden warten, damit alles versendet ist
WAIT UP TO 2 SECONDS.
*
SUBMIT RSCONN01 WITH MODE = 'INT'
WITH OUTPUT = ' '
AND RETURN.
*
ENDFORM.
Regards, Dieter
I would like to send an email with attachment in Ascii format including CR/LF. The mail must also be copied to someone else.
Can I make use of function SO_NEW_DOCUMENT_ATT_SEND_API1 or is there an other solution.
Kind regards, Simon Tol
2006 Aug 28 4:14 PM
this program is used to send mails to the users internet mail addresses.
if you want to place CR or LF, what you can do is use CL_ABAP_CHAR_UTILITIES class, get the values into the variables.
then while attaching the lines to the PACKLIST,just concatenate those values.
example
<b>CLASS CL_ABAP_CHAR_UTILITIES DEFINITION LOAD.
CONSTANTS: L_TAB TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.</b>
this L_TAB i used below,where i am attching my lines to the attachment internal table.
like that you also can do LF or CF etc..
REPORT ZSRIM_PRG_MAIL1 .
DATA : L_TABLE_LINES LIKE SY-TABIX, " table index
L_TAB TYPE X VALUE '09', " TAB value
L_MANDT TYPE SY-MANDT. " Client
DATA: X_DOC_CHNG LIKE SODOCCHGI1, " document attributes
IT_OBJPACK LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,
" attachment table
IT_OBJHEAD LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
" object header table
IT_OBJBIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
" binary table
IT_OBJTXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
IT_RECLIST LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE.
CLEAR IT_RECLIST.
REFRESH IT_RECLIST.
*-popualate email ids
IT_RECLIST-RECEIVER = '[email protected]'.
IT_RECLIST-REC_TYPE = 'U'.
*-append receiver table
APPEND IT_RECLIST.
CLEAR IT_RECLIST.
*-populate document attributes
CLEAR: X_DOC_CHNG.
X_DOC_CHNG-OBJ_NAME = 'HEADING'.
X_DOC_CHNG-OBJ_DESCR = 'SOME DESCRIPTION'.
*-populate body text
IT_OBJTXT = 'ARCOS Reporting Extraction Error file is attached'.
APPEND IT_OBJTXT.
*-document size
CLEAR : L_TABLE_LINES.
DESCRIBE TABLE IT_OBJTXT LINES L_TABLE_LINES.
READ TABLE IT_OBJTXT INDEX L_TABLE_LINES.
X_DOC_CHNG-DOC_SIZE =
( L_TABLE_LINES - 1 ) * 255 + STRLEN( IT_OBJTXT ).
*-populate packing list for body text
CLEAR IT_OBJPACK-TRANSF_BIN.
IT_OBJPACK-HEAD_START = 1.
IT_OBJPACK-HEAD_NUM = 0.
IT_OBJPACK-BODY_START = 1.
IT_OBJPACK-BODY_NUM = L_TABLE_LINES.
<b>IT_OBJPACK-DOC_TYPE = 'RAW'.</b> "this makes your attachment a raw format.
APPEND IT_OBJPACK.
CLEAR IT_OBJPACK.
*-populate object header
IT_OBJHEAD = 'Arcos Error Report'(057).
APPEND IT_OBJHEAD.
CLEAR IT_OBJHEAD.
*--for attachment ---start
*-populate object bin table for attachment
*-column header
<b> CONCATENATE 'Document No.'
'Year'
* 'Item'
* 'Material No.'
'Error Text'
INTO IT_OBJBIN SEPARATED BY L_TAB.</b>
APPEND IT_OBJBIN.
CLEAR IT_OBJBIN.
*-error details
CONCATENATE '1'
'1st record'
'1st record in attachment'
INTO IT_OBJBIN SEPARATED BY L_TAB.
APPEND IT_OBJBIN.
CLEAR IT_OBJBIN.
CONCATENATE '2'
'2st record'
'2st record in attachment'
INTO IT_OBJBIN SEPARATED BY L_TAB.
APPEND IT_OBJBIN.
CLEAR IT_OBJBIN.
*-get total no.of lines of Object table(attachment)
CLEAR : L_TABLE_LINES.
DESCRIBE TABLE IT_OBJBIN LINES L_TABLE_LINES.
*-populate object header
IT_OBJHEAD = 'Report'.
APPEND IT_OBJHEAD.
CLEAR IT_OBJHEAD.
*-packing list for attachment
IT_OBJPACK-TRANSF_BIN = 'X'.
IT_OBJPACK-HEAD_START = 1.
IT_OBJPACK-HEAD_NUM = 1.
IT_OBJPACK-BODY_START = 1.
IT_OBJPACK-BODY_NUM = L_TABLE_LINES .
IT_OBJPACK-DOC_TYPE = 'RAW' .
IT_OBJPACK-OBJ_NAME = 'ABCD'.
IT_OBJPACK-OBJ_DESCR = 'ERROR REPORT'.
IT_OBJPACK-DOC_SIZE = L_TABLE_LINES * 255.
APPEND IT_OBJPACK.
CLEAR IT_OBJPACK.
*--code for attachment -- end
*-Sending the document
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = X_DOC_CHNG
PUT_IN_OUTBOX = 'X'
* IMPORTING
* SENT_TO_ALL =
* NEW_OBJECT_ID =
TABLES
PACKING_LIST = IT_OBJPACK
OBJECT_HEADER = IT_OBJHEAD
CONTENTS_BIN = IT_OBJBIN
CONTENTS_TXT = IT_OBJTXT
* CONTENTS_HEX =
* OBJECT_PARA =
* OBJECT_PARB =
RECEIVERS = IT_RECLIST
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
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.regards
srikanth
Message was edited by: Srikanth Kidambi
2006 Aug 28 4:19 PM
Hi Simon,
here a short example:
REPORT ZGRO_EMAIL_ITAB_EINFACH.
*
--- Parameter für SO_DOCUMENT_SEND_API1
DATA: OBJ_PACK LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,
OBJ_HEAD LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
OBJ_BIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
OBJ_TXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
REC_LIST LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,
DOC_DATA LIKE SODOCCHGI1.
*
DATA: BEGIN OF ITAB OCCURS 0,
TEXT(72),
END OF ITAB.
*
DATA: ITAB_LINE TYPE I.
*
START-OF-SELECTION.
*
PERFORM VERSORGEN_ITAB.
*
CHECK: ITAB_LINE > 1.
*
PERFORM EMAIL_ITAB_RAW.
*
PERFORM RSCONN01_EXECUTE.
*
END-OF-SELECTION.
*
FORM VERSORGEN_ITAB.
Fill itab as you like
READ REPORT SY-REPID INTO ITAB.
*
DESCRIBE TABLE ITAB LINES ITAB_LINE.
*
ENDFORM.
*
FORM EMAIL_ITAB_RAW.
*
CLEAR: DOC_DATA, OBJ_PACK, OBJ_HEAD, OBJ_BIN, OBJ_TXT, REC_LIST.
REFRESH: OBJ_PACK, OBJ_HEAD, OBJ_BIN, OBJ_TXT, REC_LIST.
email füllen
Betreff-Zeile
CLEAR: DOC_DATA.
DOC_DATA-OBJ_NAME = SY-REPID.
DOC_DATA-OBJ_DESCR = 'Send Abap via email RAW'.
Empfängerliste
email-User (U)
CLEAR REC_LIST.
REC_LIST-RECEIVER = '[email protected]'. "email address
REC_LIST-REC_TYPE = 'U'.
APPEND REC_LIST.
REC_LIST-RECEIVER = '[email protected]'. "email address
APPEND REC_LIST.
*
PACKING_LIST: 1. Zeile gilt immer für email-Inhalt
CLEAR OBJ_PACK.
OBJ_PACK-BODY_START = 01.
OBJ_PACK-BODY_NUM = 03.
OBJ_PACK-DOC_TYPE = 'RAW'.
APPEND OBJ_PACK.
*
PACKING_LIST: 2.
CLEAR OBJ_PACK.
OBJ_PACK-TRANSF_BIN = 'X'.
OBJ_PACK-BODY_START = 01.
OBJ_PACK-BODY_NUM = ITAB_LINE.
OBJ_PACK-DOC_TYPE = 'RAW'.
OBJ_PACK-OBJ_NAME = 'Anhang_RAW'.
OBJ_PACK-OBJ_DESCR = SY-REPID.
APPEND OBJ_PACK.
*
*emailinhalt
CLEAR: OBJ_TXT.
OBJ_TXT-LINE = 'Hallo,'.
APPEND OBJ_TXT.
CONCATENATE 'report:' SY-REPID 'als RAW' INTO OBJ_TXT-LINE
SEPARATED BY SPACE.
APPEND OBJ_TXT.
CONCATENATE 'Gruß' SY-UNAME INTO OBJ_TXT-LINE
SEPARATED BY SPACE.
APPEND OBJ_TXT.
*
CLEAR: OBJ_BIN.
LOOP AT ITAB.
OBJ_BIN = ITAB.
APPEND OBJ_BIN.
ENDLOOP.
*
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOC_DATA
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
TABLES
PACKING_LIST = OBJ_PACK
CONTENTS_TXT = OBJ_TXT
CONTENTS_BIN = OBJ_BIN
RECEIVERS = REC_LIST
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.
*
IF SY-SUBRC <> 0.
WRITE: / SY-SUBRC.
ENDIF.
*
ENDFORM.
*
FORM RSCONN01_EXECUTE.
Besser 2 Sekunden warten, damit alles versendet ist
WAIT UP TO 2 SECONDS.
*
SUBMIT RSCONN01 WITH MODE = 'INT'
WITH OUTPUT = ' '
AND RETURN.
*
ENDFORM.
Regards, Dieter
2006 Aug 28 4:23 PM
to place any other user names in CC or BCC fields,
while populating the RECEIVERS internal table, you just pass the values to the below fields
COPY Send : As copy
BLIND_COPY : Send as a blind copy
just you have to populate either of the above fields with 'X',so that in the mail, this receiver ID will be placed either in CC or BCC.
*-popualate email ids
<b> IT_RECLIST-RECEIVER = '[email protected]'.
IT_RECLIST-REC_TYPE = 'U'.
IT_RECLIST-COPY = 'X' " to place in CC field
*-append receiver table
APPEND IT_RECLIST.
CLEAR IT_RECLIST.</b>or
<b> IT_RECLIST-BLIND_COPY = 'X' "to place in BCC field </b>
2006 Aug 28 4:26 PM
Hi,
FM SO_NEW_DOCUMENT_ATT_SEND_API1 is used to send
mail as attachment.
call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
exporting
document_data = doc_chng
put_in_outbox = 'X'
importing
sent_to_all = sent_to_all
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.
populate reclist with multiple
email address you want to copy.
Regards
Amole
2006 Aug 28 6:05 PM
Hai Simon
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.
DOC_CHNG-OBJ_NAME = 'TEST'.
DOC_CHNG-OBJ_DESCR = 'Test-Dokument fur API1 Test'(001).
OBJTXT = 'Mindestgebot : $250000'.
APPEND OBJTXT.
OBJTXT = 'Eine Abbildung des zur Versteigerung stehenden Bildes'.
APPEND OBJTXT.
OBJTXT = 'wurde als Anlage beigefugt.'.
APPEND OBJTXT.
DESCRIBE TABLE OBJTXT LINES TAB_LINES.
READ TABLE OBJTXT INDEX TAB_LINES.
DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ).
* ERSTELLEN DES EINTRAGS ZUM KOMPRIMIERTEN DOKUMENT
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.
* ERSTELLEN DER ANLAGE FUR DAS DOKUMENT
OBJBIN = '\O/ '. APPEND OBJBIN.
OBJBIN = ' '. APPEND OBJBIN.
OBJBIN = ' / \ '. APPEND OBJBIN.
DESCRIBE TABLE OBJBIN LINES TAB_LINES.
OBJHEAD = 'picasso.txt'. APPEND OBJHEAD.
* Erstellen des Eintrags zur komprimierten Anlage
OBJPACK-TRANSF_BIN = 'X'.
OBJPACK-HEAD_START = 1.
OBJPACK-HEAD_NUM = 1.
OBJPACK-BODY_START = 1.
OBJPACK-BODY_NUM = TAB_LINES.
OBJPACK-DOC_TYPE = 'TXT'.
OBJPACK-OBJ_NAME = 'ANLAGE'.
OBJPACK-OBJ_DESCR = 'Abbildung Objekt 138'.
OBJPACK-DOC_SIZE = TAB_LINES * 255.
APPEND OBJPACK.
* Fullen der Empfangerliste
RECLIST-RECEIVER = SY-UNAME.
RECLIST-REC_TYPE = 'B'.
APPEND RECLIST.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOC_CHNG
PUT_IN_OUTBOX = '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.
Regards
Sreeni
2006 Aug 29 11:18 AM
2006 Aug 29 12:03 PM
I am busy with some other urgent issues. Haven't had the time to try out. But thank you for your help.