|
<< Click to Display Table of Contents >> Navigation: All About ABAP Technique > Indonesia > Tips and Tricks ABAP > Cara Mengirimkan dari SAP ke Lotus Notes |
Objektif |
Mengirim Email dari SAP ke Lotus Notes |
Support |
|
Kontributor |
Sigit Rachmanto Durio Nusantoro Albertus Reinandang ( reinandang@yahoo.com ) |
1.KONFIGURASI SAP PROFILES
•Buka tcode “RZ10”, kemudian klik change


•Tambahkan “imc/server_port_*” sesuai dengan port mail yg digunakan dalam jaringan yg menghubungkan antara SAP Server dan Domino Server.
| Sebagai Contoh : |
| imc/server_port_1 -> PROT=SMTP,PORT=8025 |
| Wings Surya hanya membuka port 8025 utk komunikasi mail dalam jaringannya. |
2.KONFIGURASI SAP CONNECT
•Buka tcode “SCot”

•Double Klik di “SMTP” untuk lihat dan mengedit konfigurasi SMTP


•Sesuaikan konfigurasi SMTP Connection sesuai dengan Domino Server.
•Kemudian buka Settings -> Default Domain

Masukkan nama domain domino server.
3.MEMBUAT BACKGROUND JOB
•Background job ini dibuat agar proses pengiriman mail/data melalui SCOT dapat berjalan otomatis berdasarkan satu satuan waktu tertentu yg di konfigurasi di Job-nya.

•Buka tcode “SM36”
•Set Background Job menggunakan ABAP Program, sesuaikan dengan capture’an dibawah ini.

•Set “Start condition” sesuai dengan kebutuhan


4.KONFIGURASI USER ACCOUNT
•Buka tcode “SU01”
•Set User “Email” dan “Communication Method”seperti di bawah ini

5.KODE SAMPEL UNTUK MENGIRIM 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
•Informasi mengenai background job ini bisa di liat di dalam programnya. Jalankan SE38, excute program “RSWUWFML2” lalu klik tombol “Program Documentation”

•Buka tcode “SM36”
•Set Background Job menggunakan ABAP Program, sesuaikan dengan capture’an dibawah ini.

•Set “Start condition” sesuai dengan kebutuhan

