2024-11-25
[SAP/ABAP] SEND EMAIL Example code
SAP ABAP 에서 이메일 보내는로직
TABLES: SOMLRECI1.
DATA : SENDER_TYPE TYPE SOEXTRECI1-ADR_TYP.
SELECT-OPTIONS: S_RECEIV FOR SOMLRECI1-RECEIVER DEFAULT '~~@gmail.com.
CONSTANTS: CON_CRET TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF.
DATA: W_DOC_DATA LIKE SODOCCHGI1,
T_PACKING_LIST LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,
T_ATTACHMENT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
IT_MESSAGE LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
T_RECEIVERS LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF ITAB OCCURS 0, "Excel Internal Table
NAME(10) TYPE C,
SEX(4) TYPE C,
END OF ITAB.
LOOP AT ITAB.
CONCATENATE ITAB-NAME ITAB-SEX INTO T_ATTACHMENT SEPARATED BY ','.
CONCATENATE CON_CRET T_ATTACHMENT INTO T_ATTACHMENT.
APPEND T_ATTACHMENT.
ENDLOOP.
IT_MESSAGE = 'TEST.'.
APPEND IT_MESSAGE.
MOVE 'TEST CONTENT' TO IT_MESSAGE.
APPEND IT_MESSAGE.
W_DOC_DATA-DOC_SIZE = STRLEN( T_ATTACHMENT ).
W_DOC_DATA-OBJ_LANGU = SY-LANGU.
W_DOC_DATA-OBJ_NAME = 'SAPRPT'.
W_DOC_DATA-OBJ_DESCR = 'Email subject'. " 메일 제목
W_DOC_DATA-SENSITIVTY = 'F'.
T_PACKING_LIST-TRANSF_BIN = SPACE.
T_PACKING_LIST-HEAD_START = 1.
T_PACKING_LIST-HEAD_NUM = 0.
T_PACKING_LIST-BODY_START = 1.
DESCRIBE TABLE IT_MESSAGE LINES T_PACKING_LIST-BODY_NUM.
T_PACKING_LIST-DOC_TYPE = 'RAW'.
APPEND T_PACKING_LIST.
LOOP AT S_RECEIV .
T_RECEIVERS-RECEIVER = S_RECEIV-LOW.
T_RECEIVERS-REC_TYPE = 'U'.
T_RECEIVERS-COM_TYPE = 'INT'.
T_RECEIVERS-NOTIF_DEL = 'X'.
T_RECEIVERS-NOTIF_NDEL = 'X'.
APPEND T_RECEIVERS.
ENDLOOP.
SENDER_TYPE = 'INT'.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
DOCUMENT_DATA = W_DOC_DATA "메일 Structure
PUT_IN_OUTBOX = 'X' "발신함 LOG
COMMIT_WORK = 'X' "Process
SENDER_ADDRESS = 'NO-REPLY@test.com' " 송신자
SENDER_ADDRESS_TYPE = SENDER_TYPE
TABLES
PACKING_LIST = T_PACKING_LIST "파일 속성 Internal Table
* CONTENTS_BIN = T_ATTACHMENT "첨부파일 양식
CONTENTS_TXT = IT_MESSAGE "메일 내용
RECEIVERS = T_RECEIVERS. "수신자
WAIT UP TO 2 SECONDS. "이거 해야 메일이 바로감
SUBMIT RSCONN01 WITH MODE = 'INT'.