How to Send Mail from SAP to Lotus Notes

<< Click to Display Table of Contents >>

Navigation:  All About ABAP Technique > English > Tips and Tricks ABAP >

How to Send Mail from SAP to Lotus Notes

Objective

Send Mail from SAP to Lotus Notes

Support

 

Contributor

Sigit Rachmanto

Durio Nusantoro

Albertus Reinandang ( reinandang@yahoo.com )

 

1.CONFIGURE SAP PROFILES

Open tcode “RZ10”, Then click change

smln0001

smln0002

 

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.

2.CONFIGURE SAP CONNECT

Open tcode “SCot”

smln0003

 

Double Click on  “SMTP” to show and edit SMTP Configuration

smln0004smln0005

 

Match SMTP Connection's configuration with Domino Server.

And Then Open Settings -> Default Domain  

smln0006

Insert domain domino server name.

 

 

3.CREATE BACKGROUND JOB

Background job is made for automatically sending mail/data trough SCOT according time seeting at job-configutration.

smln0007

Open tcode “SM36”

Set Background Job using ABAP Program refer to picture below.

smln0008

 

 

Set “Start condition” according to requirement

smln0009

smln0010

 

4.CONFIGURE USER ACCOUNT

Open tcode “SU01”

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

smln0011

 

 

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”

smln0012

Open tcode “SM36”

Set Background Job Using ABAP Program, Like picture below.

smln0013

 

Set “Start condition” as requirement

smln0014

 

smln0015