Objective
|
Send Mail from SAP to Lotus Notes
|
Support
|
|
Contributor
|
Sigit Rachmanto
Durio Nusantoro
Albertus Reinandang ( reinandang@yahoo.com )
|
| • | Open tcode “RZ10”, Then click change |


| • | Add “imc/server_port_*” base to port mail which used to connect between SAP Server and Domino Server. |
foe Example :
imc/server_port_1 -> PROT=SMTP,PORT=8025
Wings Surya only open for port 8025 to communicate mail in the network.

| • | Double Click on “SMTP” to show and edit SMTP Configuration |
 
| • | Match SMTP Connection's configuration with Domino Server. |
| • | And Then Open Settings -> Default Domain |

Insert domain domino server name.
| • | Background job is made for automatically sending mail/data trough SCOT according time seeting at job-configutration. |

| • | Set Background Job using ABAP Program refer to picture below. |

| • | Set “Start condition” according to requirement |


| • | Set User “Email” and “Communication Method” like picture below |

| 5. | CODE SAMPLE FOR SEND MAIL |
| • | Function “ZFN_SEND_EMAIL2” |
FUNCTION ZFN_SEND_EMAIL2.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(P_SUBJECT) LIKE SODOCCHGI1-OBJ_DESCR
*" REFERENCE(P_ATTACH_FORMAT) OPTIONAL
*" REFERENCE(P_ATTACH_DESCR) OPTIONAL
*" REFERENCE(P_ATTACH_FILENAME) OPTIONAL
*" REFERENCE(P_SENDER_ADDRESS) OPTIONAL
*" REFERENCE(P_SENDER_ADDRES_TYPE) OPTIONAL
*" TABLES
*" PI_RECEIVER STRUCTURE SOMLRECI1
*" PI_MESSAGE STRUCTURE SOLISTI1
*" PI_ATTACH STRUCTURE SOLISTI1 OPTIONAL
*"----------------------------------------------------------------------
DATA: T_PACKING_LIST LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,
T_CONTENTS LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
T_RECEIVERS LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,
T_ATTACHMENT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
T_OBJECT_HEADER LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
W_CNT TYPE I,
W_SENT_ALL(1) TYPE C,
W_DOC_DATA LIKE SODOCCHGI1,
GD_ERROR TYPE SY-SUBRC,
GD_RECIEVER TYPE SY-SUBRC.
DATA: LD_ERROR TYPE SY-SUBRC,
LD_RECIEVER TYPE SY-SUBRC,
LD_MTITLE LIKE SODOCCHGI1-OBJ_DESCR,
* ld_email LIKE somlreci1-receiver,
LD_FORMAT TYPE SO_OBJ_TP ,
LD_ATTDESCRIPTION TYPE SO_OBJ_NAM ,
LD_ATTFILENAME TYPE SO_OBJ_DES ,
LD_SENDER_ADDRESS LIKE SOEXTRECI1-RECEIVER,
LD_SENDER_ADDRESS_TYPE LIKE SOEXTRECI1-ADR_TYP,
LD_RECEIVER LIKE SY-SUBRC.
* ld_email = p_email.
LD_MTITLE = P_SUBJECT.
LD_FORMAT = P_ATTACH_FORMAT.
LD_ATTDESCRIPTION = P_ATTACH_DESCR.
LD_ATTFILENAME = P_ATTACH_FILENAME.
LD_SENDER_ADDRESS = P_SENDER_ADDRESS.
LD_SENDER_ADDRESS_TYPE = P_SENDER_ADDRES_TYPE.
* Fill the document data.
W_DOC_DATA-DOC_SIZE = 1.
* Populate the subject/generic message attributes
W_DOC_DATA-OBJ_LANGU = SY-LANGU.
W_DOC_DATA-OBJ_NAME = 'SAPRPT'.
W_DOC_DATA-OBJ_DESCR = LD_MTITLE .
W_DOC_DATA-SENSITIVTY = 'F'.
* Fill the document data and get size of attachment
CLEAR W_DOC_DATA.
READ TABLE PI_ATTACH INDEX W_CNT.
W_DOC_DATA-DOC_SIZE =
( W_CNT - 1 ) * 255 + STRLEN( PI_ATTACH ).
W_DOC_DATA-OBJ_LANGU = SY-LANGU.
W_DOC_DATA-OBJ_NAME = 'SAPRPT'.
W_DOC_DATA-OBJ_DESCR = LD_MTITLE.
W_DOC_DATA-SENSITIVTY = 'F'.
CLEAR T_ATTACHMENT.
REFRESH T_ATTACHMENT.
T_ATTACHMENT[] = PI_ATTACH[].
* Describe the body of the message
CLEAR T_PACKING_LIST.
REFRESH T_PACKING_LIST.
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 PI_MESSAGE LINES T_PACKING_LIST-BODY_NUM.
T_PACKING_LIST-DOC_TYPE = 'RAW'.
APPEND T_PACKING_LIST.
* Create attachment notification
T_PACKING_LIST-TRANSF_BIN = 'X'.
T_PACKING_LIST-HEAD_START = 1.
T_PACKING_LIST-HEAD_NUM = 1.
T_PACKING_LIST-BODY_START = 1.
IF P_ATTACH_FORMAT IS NOT INITIAL.
DESCRIBE TABLE T_ATTACHMENT LINES T_PACKING_LIST-BODY_NUM.
T_PACKING_LIST-DOC_TYPE = LD_FORMAT.
T_PACKING_LIST-OBJ_DESCR = LD_ATTDESCRIPTION.
T_PACKING_LIST-OBJ_NAME = LD_ATTFILENAME.
T_PACKING_LIST-DOC_SIZE = T_PACKING_LIST-BODY_NUM * 255.
APPEND T_PACKING_LIST.
ENDIF.
** Add the recipients email address
* CLEAR t_receivers.
* REFRESH t_receivers.
* t_receivers-receiver = ld_email.
* t_receivers-rec_type = 'U'.
* t_receivers-com_type = 'INT'.
* t_receivers-notif_del = 'X'.
* t_receivers-notif_ndel = 'X'.
* APPEND t_receivers.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
DOCUMENT_DATA = W_DOC_DATA
PUT_IN_OUTBOX = 'X'
SENDER_ADDRESS = LD_SENDER_ADDRESS
SENDER_ADDRESS_TYPE = LD_SENDER_ADDRESS_TYPE
COMMIT_WORK = 'X'
IMPORTING
SENT_TO_ALL = W_SENT_ALL
TABLES
PACKING_LIST = T_PACKING_LIST
CONTENTS_BIN = T_ATTACHMENT
CONTENTS_TXT = PI_MESSAGE
RECEIVERS = PI_RECEIVER
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.
* Populate zerror return code
LD_ERROR = SY-SUBRC.
ENDFUNCTION.
| • | Function “ZFN_GET_EMAIL_ADDRESS” |
FUNCTION ZFN_GET_EMAIL_ADDRESS.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(USER_NAME) LIKE SY-UNAME
*" EXPORTING
*" VALUE(EMAIL_ADDRESS) LIKE SZA5_D0700-SMTP_ADDR
*"----------------------------------------------------------------------
DATA L_PERSNR TYPE ADRP-PERSNUMBER.
DATA L_ADDRNR TYPE ADRC-ADDRNUMBER.
DATA LT_ADSMTP TYPE TABLE OF ADSMTP WITH HEADER LINE.
DATA L_UNAME TYPE XUBNAME.
CLEAR EMAIL_ADDRESS.
L_UNAME = USER_NAME .
* Get address key
CALL FUNCTION 'SUSR_USER_ADDRESSKEY_GET'
EXPORTING
BNAME = L_UNAME
IMPORTING
PERSNUMBER = L_PERSNR
ADDRNUMBER = L_ADDRNR
EXCEPTIONS
ADDRESS_NOT_FOUND = 1
OTHERS = 2.
* Get address details
CALL FUNCTION 'ADDR_PERS_COMP_COMM_GET'
EXPORTING
ADDRESS_NUMBER = L_ADDRNR
PERSON_NUMBER = L_PERSNR
TABLE_TYPE = 'ADSMTP'
TABLES
COMM_TABLE = LT_ADSMTP
EXCEPTIONS
PARAMETER_ERROR = 1
ADDRESS_NOT_EXIST = 2
PERSON_NOT_EXIST = 3
INTERNAL_ERROR = 4
OTHERS = 5.
.
LOOP AT LT_ADSMTP WHERE NOT FLGDEFAULT IS INITIAL.
EMAIL_ADDRESS = LT_ADSMTP-SMTP_ADDR.
ENDLOOP.
ENDFUNCTION.
| • | Program “YRE_CONTOH_KIRIM_EMAIL” |
*&---------------------------------------------------------------------*
*& Report YRE_CONTOH_KIRIM_EMAIL *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT YRE_CONTOH_KIRIM_EMAIL .
PARAMETERS: PA_UNAME LIKE SY-UNAME DEFAULT SY-UNAME.
START-OF-SELECTION.
PERFORM FM_WRITE_EMAIL USING PA_UNAME.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form FM_WRITE_EMAIL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM FM_WRITE_EMAIL USING PV_UNAME.
DATA: LV_SUBJECT LIKE SODOCCHGI1-OBJ_DESCR.
DATA: LI_RECEIVER LIKE STANDARD TABLE OF SOMLRECI1 WITH HEADER LINE,
LI_MESSAGE LIKE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE,
LV_EMAIL_ADDRESS LIKE SZA5_D0700-SMTP_ADDR.
* Pastikan Email Address Penerima sudah diinput di SU01
* Tulis Subject (Title) Message
LV_SUBJECT = 'Email dari SAP'.
* Tulis Penerima Message
FREE LV_EMAIL_ADDRESS.
PERFORM FM_GET_EMAIL_BY_USERID USING PV_UNAME LV_EMAIL_ADDRESS.
IF LV_EMAIL_ADDRESS IS NOT INITIAL.
LI_RECEIVER-RECEIVER = LV_EMAIL_ADDRESS.
LI_RECEIVER-REC_TYPE = 'U'.
LI_RECEIVER-EXPRESS = 'X'.
LI_RECEIVER-COM_TYPE = 'INT'.
LI_RECEIVER-NOTIF_DEL = 'X'.
LI_RECEIVER-NOTIF_NDEL = 'X'.
APPEND LI_RECEIVER.
LI_MESSAGE-LINE = ''.
APPEND LI_MESSAGE.
* Tulis Message
CONCATENATE 'Dikirim dari SAP oleh ' SY-UNAME INTO LI_MESSAGE-LINE SEPARATED BY SPACE.
APPEND LI_MESSAGE.
PERFORM FM_SEND_EMAIL TABLES LI_RECEIVER LI_MESSAGE USING LV_SUBJECT .
* Jika email dikirim ke lotus notes maka Email akan dikirim berdasarkan background job yg di setting di masing client
* Keterangan lebih lanjut hubungi Sigit atau iink
ELSE.
MESSAGE S398(00) with 'Email Address not found'.
ENDIF.
ENDFORM. "FM_WRITE_EMAIL
*&---------------------------------------------------------------------*
*& Form FM_GET_EMAIL_BY_USERID
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PV_UNAME text
* -->PV_EMAIL_ADDRESS text
*----------------------------------------------------------------------*
FORM FM_GET_EMAIL_BY_USERID USING PV_UNAME PV_EMAIL_ADDRESS.
CALL FUNCTION 'ZFN_GET_EMAIL_ADDRESS'
EXPORTING
USER_NAME = PV_UNAME
IMPORTING
EMAIL_ADDRESS = PV_EMAIL_ADDRESS.
ENDFORM. "FM_GET_EMAIL_BY_USERID
*&---------------------------------------------------------------------*
*& Form FM_SEND_EMAIL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PT_RECEIVER text
* -->PT_MESSAGE text
* -->PV_SUBJECT text
*----------------------------------------------------------------------*
FORM FM_SEND_EMAIL TABLES PT_RECEIVER PT_MESSAGE USING PV_SUBJECT .
CALL FUNCTION 'ZFN_SEND_EMAIL2'
EXPORTING
P_SUBJECT = PV_SUBJECT
* P_ATTACH_FORMAT =
* P_ATTACH_DESCR =
* P_ATTACH_FILENAME =
TABLES
PI_RECEIVER = PT_RECEIVER
PI_MESSAGE = PT_MESSAGE
* PI_ATTACH =
.
ENDFORM. "FM_SEND_EMAIL
| 6. | CREATE BACKGROUND JOB FOR WORKFLOW |
| • | background job information only can be see in program. Run SE38, excute program “RSWUWFML2" and then Click button “Program Documentation” |

| • | Set Background Job Using ABAP Program, Like picture below. |

| • | Set “Start condition” as requirement |


|