Cara Mengirimkan dari SAP ke Lotus Notes

<< 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

smln0001

smln0002

 

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”

smln0003

 

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

smln0004smln0005

 

Sesuaikan konfigurasi SMTP Connection sesuai dengan Domino Server.

Kemudian buka Settings -> Default Domain  

smln0006

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.

smln0007

Buka tcode “SM36”

Set Background Job menggunakan ABAP Program, sesuaikan dengan capture’an dibawah ini.

smln0008

 

 

Set “Start condition” sesuai dengan kebutuhan

smln0009

smln0010

 

4.KONFIGURASI USER ACCOUNT

Buka tcode “SU01”

Set User “Email” dan “Communication Method”seperti di bawah ini

smln0011

 

 

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”

smln0012

Buka tcode “SM36”

Set Background Job menggunakan ABAP Program, sesuaikan dengan capture’an dibawah ini.

smln0013

 

Set “Start condition” sesuai dengan kebutuhan

smln0014

 

smln0015