SAP ABAP ile Mail Gönderme İşlemi

SAP sistemi üzerinden mail gönderme işlemi için adımlar:

Adım 1: Mail için ‘cl_bcs’ sınıfından obje yaratıyoruz ve ilk olarak mail konusunu veriyoruz.

DATA: lo_msg TYPE REF TO cl_bcs.
lo_msg = cl_bcs=>create_persistent( ).

lo_msg->set_message_subject( 
'Mail Gönderme Hk.' ).

Adım 2: Set sender metodu ile gönderici adresini veriyoruz. Bu adresi yaratmak için gönderici objesinin metodunu kullanıyoruz.

lo_sender = cl_cam_address_bcs=>
  create_internet_address(
  i_address_string = 'sender.name@nagarro.com' ).


TRY.
   lo_msg->set_sender( lo_sender ).
CATCH cx_send_req_bcs.
ENDTRY.


*lo_sender  if_sender_bcs classından
yaratılan gönderici objesi

Adım 3: Mail alıcısını ekliyoruz. Birden fazla alıcıya göndermek için örnekteki gibi adreslerin toplandığı bir tablodan döngü içerisinde alınabilir.

LOOP AT lt_recipients
INTO DATA(ls_recipients).
 TRY.
  lo_recipient = cl_cam_address_bcs=>
  create_internet_address( 
  ls_recipients-mail_adresi ).
 CATCH cx_address_bcs INTO lr_oref.
 ENDTRY.
 TRY.
      lo_msg->add_recipient(
        i_recipient  = lo_recipient 
      ). 
*lo_recipient  if_recipient_bcs classından
yaratılan gönderici objesi
 CATCH cx_send_req_bcs. 
 ENDTRY.
ENDLOOP.

Adım 4: Mail içeriği için doküman ekleyelim. Mail body, düz yazı formatında ya da html formatında yaratılabilir. Örnekte html için bir text yaratıyoruz.

lv_html_str = |<html>Dear Team,<br>
We would like to inform you that {someone} has 
been assigned as the Coordinator for following 
notification. Details are as follows:| &&
|<br/><br/><head><meta charset="utf-8"></head>
<body><ul><li>Notification ID:| &&
|{ lv_notifid }| && |</li><li>Assignment Date:| &&
|{ sy-datum }| && |</li></ul><br>Please take the 
necessary actions.<br>Best regards,</html>|.

Adım 5: Yarattığımız text ile html dokümanı oluşturmak için solix_tab tipine çeviriyoruz.

CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
    EXPORTING
      text   = lv_html_str
    IMPORTING
      buffer = lv_xhtml_str
    EXCEPTIONS
      failed = 1
      OTHERS = 2.

  CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    EXPORTING
      buffer     = lv_xhtml_str
    TABLES
      binary_tab = lt_hx.

Adım 6: Tablomuzu kullanarak html tipindeki dokümanı yaratıyoruz.

  TRY.
     lr_doc = cl_document_bcs=>create_document(
                       i_type    = 'HTM'
                       i_hex     = lt_hx
                       i_subject = lv_subj ).
    CATCH cx_document_bcs INTO lr_oref .
  ENDTRY.

Adım 7: Mesajınıza ek bir dosya eklemek için add_attachment metodunu kullanıyoruz.

lr_doc->add_attachment(
  EXPORTING
    i_attachment_type     = 'XLS'        
    i_attachment_subject  = 'ATTACHMENT_NAME'                
    i_att_content_hex     = lt_content_hex
).

*lt_content_hex  solix_tab tipinde excel
Verilerini tutan değişkenimiz.

Adım 8: Mail objemize dokümanı ekliyoruz.

TRY.
      lo_msg->set_document( lr_doc ).
    CATCH cx_send_req_bcs. 
  ENDTRY.

Adım 9: Send metodu ile mail gönderme komutunu veriyoruz.

TRY.
    lo_msg->send( ).
  CATCH cx_bcs_send.
ENDTRY.

Mail durumunu kontrol etmek için SOST işlem koduna gidiyoruz. Sayfayı yenileyerek en mailimizi seçip display butonuna basarak mail içeriğimizi ve durumunu kontrol edebiliriz.

Mail gönderme işlemi için örnek program:

DATA: lo_recipient TYPE REF TO if_recipient_bcs VALUE IS INITIAL,
      lo_sender    TYPE REF TO if_sender_bcs VALUE IS INITIAL,
      lo_doc       TYPE REF TO cl_document_bcs,
      lv_html_str  TYPE string,
      lv_xhtml_str TYPE xstring,
      lt_hx        TYPE solix_tab.


DATA: lo_msg TYPE REF TO cl_bcs.
lo_msg = cl_bcs=>create_persistent( ).

lo_msg->set_message_subject( 'Mail Gönderme Temp.' ).
lo_sender = cl_cam_address_bcs=>create_internet_address(
               i_address_string = 'zeynep.bolat@nagarro.com' ).

lo_msg->set_sender( lo_sender ).

lo_recipient = cl_cam_address_bcs=>create_internet_address(
                 i_address_string = 'zeynep.bolat@nagarro.com' ).

lo_msg->add_recipient( lo_recipient ).

lv_html_str =
  |<html><br/><br/><head><meta charset="utf-8"></head>| &&
  |Merhaba,<br>Bu bir örnek mail taslağıdır.<br></html>|.

CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
  EXPORTING
    text   = lv_html_str
  IMPORTING
    buffer = lv_xhtml_str
  EXCEPTIONS
    failed = 1
    OTHERS = 2.

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
  EXPORTING
    buffer     = lv_xhtml_str
  TABLES
    binary_tab = lt_hx.


TRY .
    lo_doc  = cl_document_bcs=>create_document(
                     i_type    = 'HTM'
                     i_hex     = lt_hx
                     i_subject = 'Mail Taslağı' ).
  CATCH cx_document_bcs.

ENDTRY.

TRY.
    lo_msg->set_document( lo_doc ).
  CATCH cx_send_req_bcs.
ENDTRY.


TRY.
    lo_msg->send( ).
    COMMIT WORK.
  CATCH cx_bcs_send.
ENDTRY.

Yazan : Zeynep Bolat

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.