MAİL GÖNDERME

MAİL GÖNDERME

Mail göndermek için CL_BCS sınıfı kullanılır. Bunun dışında aşağıdaki eski fonkiyonlar kullanılabilir ancak 6.10 versiyonundan sonra kullanılması önerilmez. CL_BCS sınıfı eski fonksiyonlara göre daha fazla seçenek ve esneklik sunar.

CL_BCS sınıfı ile aşağıdaki sınıftan nesne oluşturularak ve yöntemler kullanılarak basit şekilde mail gönderimi yapılabilir.

Sınıf / Nesne Metod/nesne Tip Anlamı
cl_bcs create_persistent nesne Gönderim isteği nesnesi oluşturur.
cl_document_bcs create_document nesne Mail içeriği nesnesi oluşturur.
gonderim_istegi set_document yöntem Dökümanı gönderi isteğine ekler.
cl_sapuser_bcs create nesne Mail gönderen kişi nesnesini oluşturur.
gonderim_istegi set_sender yöntem Gönderi isteğine göndereni ekleyen yöntem.
cl_cam_address_bcs create_internet_address nesne Alıcı nesnesi oluşturur.
gonderim_istegi add_recipient yöntem Gönderi isteğine alıcı ekler.
gonderim_istegi send yöntem Gönderi isteğini gerçekleştirir.

 

Mail özellikleri (mesaj içeriği, alıcı ve gönderen, ek,…) tanımlandıktan sonra mail gönderim işlemi yapılabilir. Gönderilen mailler SAPconnect tarafından toplanır ve belirli periyotta gönderilir. Gönderim periyodu SAPconnect içerisinde bir defa konfigüre edilir. Gönderim işlemi SCOT işlem kodu ile gönderi zamanını beklemeden başlatılabileceği gibi RSCONN01 programı kullanılarak da çalıştırılabilir.

Gönderim periyodunu beklemeden mailin gönderilmesi için CL_BCS sınıfındaki set_send_immediately yöntemi kullanılabilir.

Mail göndermek için kullanılan eski fonksiyonlar şunlardır.

· SO_NEW_DOCUMENT_SEND_API1

· SO_NEW_DOCUMENT_ATT_SEND_API1

· SO_DOCUMENT_SEND_API1

· SO_OBJECT_SEND

MAIL GÖNDERME ÖRNEKLERİ

1. CL_BCS sınıfı kullanılarak SPFLI tablosundaki bazı sütunları mail gönderen örnek. alankisi@abcdef.com kısmına mail gönderilmek istenen kişinin mail adresi yazılmalıdır.

DATA: gs_spfli TYPE spfli.
DATA: go_gonderim_istegi TYPE REF TO cl_bcs,
gt_mailicerigi     TYPE STANDARD TABLE OF soli,
gs_mailicerigi     TYPE soli,
go_mailbelgesi     TYPE REF TO cl_document_bcs,
go_gonderen        TYPE REF TO cl_sapuser_bcs,
go_alicibilgileri  TYPE REF TO if_recipient_bcs,
go_bcs_istisna     TYPE REF TO cx_bcs,
gv_sent_to_all     TYPE os_boolean.
gs_mailicerigi = ‘SPFLI Tablo içeriği aşağıdaki gibidir.’.
APPEND gs_mailicerigi TO gt_mailicerigi.
SELECT * FROM spfli INTO gs_spfli UP TO 10 ROWS.
CLEAR gs_mailicerigi.
CONCATENATE gs_spfli-carrid   gs_spfli-connid gs_spfli-countryfr
gs_spfli-cityfrom gs_spfli-airpfrom
INTO gs_mailicerigi SEPARATED BY space.
APPEND gs_mailicerigi TO gt_mailicerigi.
ENDSELECT.
TRY.
go_gonderim_istegi = cl_bcs=>create_persistent( ).
go_mailbelgesi = cl_document_bcs=>create_document(
i_type    = ‘RAW’
i_text    = gt_mailicerigi
i_subject = ‘Örnek CL_BCS Sınıfı Mail Gönderimi’ ).
CALL METHOD go_gonderim_istegi->set_document( go_mailbelgesi ).
go_gonderen = cl_sapuser_bcs=>create( sy-uname ).
CALL METHOD go_gonderim_istegi->set_sender
EXPORTING
i_sender = go_gonderen.
go_alicibilgileri = cl_cam_address_bcs=>create_internet_address(
‘alankisi@abcdef.com’ ).
CALL METHOD go_gonderim_istegi->add_recipient
EXPORTING
i_recipient = go_alicibilgileri
i_express   = ‘X’.
CALL METHOD go_gonderim_istegi->send(
EXPORTING
i_with_error_screen = ‘X’
RECEIVING
result              = gv_sent_to_all ).
IF gv_sent_to_all = ‘X’.
COMMIT WORK.
WRITE ‘Mail gönderildi.’.
ENDIF.
CATCH cx_bcs INTO go_bcs_istisna.
WRITE: ‘Hata oluştu!’, go_bcs_istisna->error_type.
EXIT.
ENDTRY.

2. Eski SO_NEW_DOCUMENT_SEND_API1 fonksiyonu kullanarak mail gönderen örnek.

DATA   : gt_alicibilgileri  TYPE STANDARD TABLE OF somlreci1,
gs_alicibilgileri  TYPE somlreci1,
gt_mailicerigi     TYPE STANDARD TABLE OF solisti1,
gs_mailicerigi     TYPE solisti1,
gs_mailozellikleri TYPE sodocchgi1.
* Mail alıcıları
gs_alicibilgileri-receiver = ‘alankisi@abcdef.com’.
gs_alicibilgileri-rec_type = ‘U’.
APPEND gs_alicibilgileri TO gt_alicibilgileri.
* Mailin Konu kısmı ve özellikleri
gs_mailozellikleri-obj_langu  = ‘T’.
gs_mailozellikleri-obj_name   = ‘Mesaj’.
gs_mailozellikleri-obj_descr  = ‘Örnek Mail Gönderimi!’.
*Mailin içeriği dahili tabloya ekleniyor
gs_mailicerigi-line = ‘Mail içeriği’.
APPEND gs_mailicerigi TO gt_mailicerigi.
* Mail gönderme fonksiyonu
CALL FUNCTION ‘SO_NEW_DOCUMENT_SEND_API1’
EXPORTING
document_data                    = gs_mailozellikleri
commit_work                      = ‘X’
TABLES
object_content                   = gt_mailicerigi
receivers                        = gt_alicibilgileri
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.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

3. Eski SO_DOCUMENT_SEND_API1 fonksiyonu kullanılarak HTML içeriği olan bir mail gönderim örneği. Mailin mesaj kısmına iki sütundan oluşan html tablo ekler.

DATA: gt_alicibilgileri  TYPE STANDARD TABLE OF somlreci1,
gs_alicibilgileri  TYPE somlreci1,
gt_mailicerigi     TYPE STANDARD TABLE OF solisti1,
gs_mailicerigi     TYPE solisti1,
gt_icerikbilgileri TYPE STANDARD TABLE OF sopcklsti1,
gs_icerikbilgileri TYPE sopcklsti1,
gs_mailozellikleri TYPE sodocchgi1,
gv_gonderen        TYPE soextreci1-receiver VALUE ‘gonderen@abcdef.com’.
* Mail alıcıları
gs_alicibilgileri-receiver = ‘alankisi@abcdef.com’.
gs_alicibilgileri-rec_type = ‘U’.
APPEND gs_alicibilgileri TO gt_alicibilgileri.
* Mailin Konu kısmı ve özellikleri
gs_mailozellikleri-obj_langu  = ‘T’.
gs_mailozellikleri-obj_name   = ‘Mesaj’.
gs_mailozellikleri-obj_descr  = ‘Örnek HTML Mail Gönderimi’.
*Mailin içeriği dahili tabloya ekleniyor.
gs_mailicerigi-line = ‘<p>’.
APPEND gs_mailicerigi TO gt_mailicerigi.
gs_mailicerigi-line = ‘HTML Tablo Örneği’.
APPEND gs_mailicerigi TO gt_mailicerigi.
gs_mailicerigi-line = ‘</p>’.
APPEND gs_mailicerigi TO gt_mailicerigi.

*HTML tablo ekleniyor
gs_mailicerigi-line = ‘<table border=”1″ width=”100%” id=”table2″>’.
APPEND gs_mailicerigi TO gt_mailicerigi.
gs_mailicerigi-line = ‘<tr>’.
APPEND gs_mailicerigi TO gt_mailicerigi.
gs_mailicerigi-line = ‘<td>Başlık Sütunu 1</td>’.
APPEND gs_mailicerigi TO gt_mailicerigi.
gs_mailicerigi-line = ‘<td>Başlık Sütunu 2</td>’.
APPEND gs_mailicerigi TO gt_mailicerigi.
gs_mailicerigi-line = ‘</tr>’.
APPEND gs_mailicerigi TO gt_mailicerigi.
gs_mailicerigi-line = ‘<tr>’.
APPEND gs_mailicerigi TO gt_mailicerigi.
gs_mailicerigi-line = ‘<td>İçerik Sütunu 1</td>’.
APPEND gs_mailicerigi TO gt_mailicerigi.
gs_mailicerigi-line = ‘<td>İçerik Sütunu 2</td>’.
APPEND gs_mailicerigi TO gt_mailicerigi.
gs_mailicerigi-line = ‘</tr>’.
APPEND gs_mailicerigi TO gt_mailicerigi.
gs_mailicerigi-line = ‘</TABLE>’.
APPEND gs_mailicerigi TO gt_mailicerigi.
* Veri tablosu bilgileri
gs_icerikbilgileri-transf_bin = space.
gs_icerikbilgileri-head_start = 1.
gs_icerikbilgileri-head_num   = 0.
gs_icerikbilgileri-body_start = 1.
DESCRIBE TABLE gt_mailicerigi LINES gs_icerikbilgileri-body_num.
gs_icerikbilgileri-doc_type   = ‘HTM’.
APPEND gs_icerikbilgileri TO gt_icerikbilgileri.
CALL FUNCTION ‘SO_DOCUMENT_SEND_API1’
EXPORTING
document_data              = gs_mailozellikleri
commit_work                = ‘X’
sender_address             = gv_gonderen
sender_address_type        = ‘INT’
TABLES
packing_list               = gt_icerikbilgileri
contents_txt               = gt_mailicerigi
receivers                  = gt_alicibilgileri
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.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

Gönderilen Maillerin Kontrolü

SOST işlem kodu ile SAP sisteminden gönderilen mailleri kontrol edilebilir. Kontrol etmek için,

1. SOST işlem koduna girilir.

Period tabında gönderim tarihi (send date) bilgileri doldurulur. Send status tabında tüm seçenekler seçilir ve Refresh butona tıklanır. Yenilenen listede gönderilen mailler görülebilir.

Bir mailin içeriğini görüntülemek için listeden seçtikten sonra görüntüle ( ) butonuna tıklanması yeterlidir.

SAPconnect Ayarlarının Kontrolü

Mail göndermek için SAPconnect mail konfigürasyonunun daha önceden yapılmış olması gerekir. Aşağıdaki adımlarla SAPconnect ayarlarını kontrol edebilirsiniz.

1. SCOT işlem koduna çalıştırılır.

2. SMTP yazısına çift tıklanır.

3. Mail adresi, port numarası ve mail gönderme periyodunun doldurulmuş olması gerekir. Node in use tıklanmış ve Supported address types kısmında Internet tıklı ise mail ayarları yapılmış demektir. Hours/minutes girilen periyoda göre mail gönderimi gerçekleştirilir.

Gönderim Periyoduna Bağlı Olmadan Mail Gönderme İşlemininin Başlatılması

Mailler SAPconnect içerisinde tanımlanan periyoda göre gönderilir. Eğer bu periyodu beklemek istemiyorsanız SAPconnect Administration (SCOT) ile mail gönderimini hemen başlatabilirsiniz.

1. SCOT işlem koduna girilir.

2. SMTP yazısına tıklanır ve araç çubuğunda en sağdaki Start send process <IMG border=0 src=”file:///C:\Users\abapmaster\AppData\Local\Temp\msohtmlclip1\01\clip_image013.jpg” width=20 height=20 v:shapes=””> ikonu (veya Ctrl+F7) tıklanır.

3. Açılan ekranda Start butonu tıklanır.

Eğer bekleyen mesaj var ise yeni bir ekran açılır ve gönderilen maillerin bilgileri görüntülenir.

Gönderilecek mesaj yok ise No messages sent mesajı çıkar.

Leave a Reply

Your email address will not be published. Required fields are marked *