注意下面例子中:
RECVLIST-REC_TYPE = 'U'.
RECVLIST-COM_TYPE = 'INT'.
设定发送到internet的mail而非SAP用户inbox。如要发送到SAP mail的话应该将上面设定注释掉。
REPORT Z_EMAIL .
****************************************************************
* *
* Mit diesem Programm k鰊nt ihr aus dem R/3 heraus e-mails *
* versenden. Es ist eine vereinfachte Version mit 10 Eingabe- *
* zeilen aber funktioniert. Der Empf醤ger kann nicht an auf *
* die e-mail antworten. Die email-Adresse des Absenders sieht *
* wie folgt aus: SY-UNAME vor dem @ und sysid und client, *
* (z.B. DEV_100) nach dem @. *
****************************************************************
* Parameters
PARAMETERS: SUB LIKE SOMLRECI1-RECEIVER
DEFAULT 'Subject line'.
PARAMETERS: EAD LIKE SOMLRECI1-RECEIVER
DEFAULT 'me@here.com'.
PARAMETERS: L01 LIKE SOLISTI1-LINE
DEFAULT 'Body text'.
PARAMETERS: L02 LIKE SOLISTI1-LINE.
PARAMETERS: L03 LIKE SOLISTI1-LINE.
PARAMETERS: L04 LIKE SOLISTI1-LINE.
PARAMETERS: L05 LIKE SOLISTI1-LINE.
PARAMETERS: L06 LIKE SOLISTI1-LINE.
PARAMETERS: L07 LIKE SOLISTI1-LINE.
PARAMETERS: L08 LIKE SOLISTI1-LINE.
PARAMETERS: L09 LIKE SOLISTI1-LINE.
PARAMETERS: L10 LIKE SOLISTI1-LINE.
* Macro
DEFINE M_LINEADD.
IF NOT &1 IS INITIAL.
TAB = &1. APPEND TAB.
ENDIF.
END-OF-DEFINITION.
* Variables
DATA: BEGIN OF TAB OCCURS 10.
DATA: LINE(40).
DATA: END OF TAB.
DATA: RC LIKE SY-SUBRC.
* Main program
START-OF-SELECTION.
REFRESH TAB.
M_LINEADD L01.
M_LINEADD L02.
M_LINEADD L03.
M_LINEADD L04.
M_LINEADD L05.
M_LINEADD L06.
M_LINEADD L07.
M_LINEADD L08.
M_LINEADD L09.
M_LINEADD L10.
PERFORM Z_SEND_EMAIL TABLES TAB USING EAD SUB RC.
IF RC IS INITIAL.
WRITE: / 'Your e-mail has been sent successfully.'.
ELSE.
WRITE: / 'Your attempt to send an e-mail failed.'.
ENDIF.
*---------------------------------------------------------------------*
* FORM Z_SEND_EMAIL *
*---------------------------------------------------------------------*
* --> ITAB *
* --> EMAILADDRESS *
* --> SUBJECTLINE *
* --> RETURNCODE *
*---------------------------------------------------------------------*
FORM Z_SEND_EMAIL TABLES ITAB
USING EMAILADDRESS TYPE C
SUBJECTLINE TYPE C
RETURNCODE LIKE SY-SUBRC.
DATA: DOCUMENT LIKE SODOCCHGI1.
DATA: PACKLIST LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE.
DATA: CONTENTS LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE.
DATA: RECVLIST LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE.
DATA: FIELDLEN TYPE P.
DATA: TABLINES TYPE P.
*
* Initialization
CLEAR: CONTENTS, DOCUMENT, PACKLIST, RECVLIST.
REFRESH: CONTENTS, PACKLIST, RECVLIST.
RETURNCODE = 12.
* Contents
CONCATENATE
'The following message has been sent from SAP'
SY-SYSID
SY-MANDT
'(Do not reply to this message):'
INTO CONTENTS SEPARATED BY ' '.
APPEND CONTENTS.
CONTENTS = SY-ULINE(40).
APPEND CONTENTS.
LOOP AT ITAB.
CONTENTS = ITAB.
APPEND CONTENTS.
ENDLOOP.
CONTENTS = SY-ULINE(40).
APPEND CONTENTS.
* Document
DOCUMENT-OBJ_NAME = 'EMAIL'.
DOCUMENT-OBJ_DESCR = SUBJECTLINE.
DOCUMENT-OBJ_LANGU = SY-LANGU.
DOCUMENT-OBJ_EXPDAT = SY-DATUM.
DOCUMENT-SENSITIVTY = 'F'.
DOCUMENT-OBJ_PRIO = 9.
DOCUMENT-NO_CHANGE = 'X'.
DOCUMENT-PRIORITY = 9.
DOCUMENT-EXPIRY_DAT = SY-DATUM.
DESCRIBE FIELD CONTENTS-LINE LENGTH FIELDLEN.
DESCRIBE TABLE CONTENTS LINES TABLINES.
MULTIPLY FIELDLEN BY TABLINES.
DOCUMENT-DOC_SIZE = FIELDLEN.
* Packing list
PACKLIST-TRANSF_BIN = SPACE.
PACKLIST-HEAD_START = 1.
PACKLIST-HEAD_NUM = 0.
PACKLIST-BODY_START = 1.
DESCRIBE TABLE CONTENTS LINES PACKLIST-BODY_NUM.
PACKLIST-DOC_TYPE = 'RAW'.
APPEND PACKLIST.
* Receiver list
RECVLIST-RECEIVER = EMAILADDRESS.
RECVLIST-REC_TYPE = 'U'.
RECVLIST-COM_TYPE = 'INT'.
RECVLIST-NOTIF_DEL = 'X'.
RECVLIST-NOTIF_NDEL = 'X'.
APPEND RECVLIST.
* Call the mail function
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOCUMENT
PUT_IN_OUTBOX = 'X'
TABLES
PACKING_LIST = PACKLIST
CONTENTS_TXT = CONTENTS
RECEIVERS = RECVLIST
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.
RETURNCODE = SY-SUBRC.
*
ENDFORM.