Send email in ABAP

本文介绍两种使用SAP系统发送电子邮件的方法:一种是通过Function Module的方式,构造HTML内容并指定接收者;另一种是采用ABAP面向对象编程,创建文档、设置发送者及接收者属性,并立即发送。

This article is copied from Tim's blog( http://jgtang82.javaeye.com/blog/186430 ). Tim, hope you don't mind. :)

 

 

1. Use FM to send email.

 

  report zrich_0002.
 
  data: maildata   like sodocchgi1.
  data: mailtxt    like solisti1 occurs 10 with header line.
  data: mailrec    like somlrec90 occurs 0  with header line.
 
start-of-selection.
  clear:    maildata, mailtxt,  mailrec.
  refresh:  mailtxt, mailrec.
 
  maildata-obj_name = 'TEST' .
  maildata-obj_descr = 'Test Subject' .
 
  mailtxt  = '<html>' .
  append mailtxt.
 
  mailtxt  = '<body>' .
  append mailtxt.
 
  mailtxt  = '<b>This is SAP</b>' .
  append mailtxt.
 
  mailtxt  = '<a href=" #" target="_blank">SAP Hyperlink</a> ' .
  append mailtxt.
 
  mailtxt  = '</body>' .
  append mailtxt.
 
  mailtxt  = '</html>' .
  append mailtxt.
 
  mailrec-receiver = 'you@yourcompany.com' .
  mailrec-rec_type  = 'U' .
  append mailrec.
 
  call function ' SO_NEW_DOCUMENT_SEND_API1 '
       exporting
            document_data              = maildata
            document_type              = 'HTM'
            put_in_outbox              = 'X'
       tables
            object_header              = mailtxt
             object_content             = mailtxt
            receivers                  = mailrec
       exceptions
            too_many_receivers         = 1
            document_not_sent          = 2
            document_type_not_exist    = 3
            operat ion_no_authorization = 4
            parameter_error            = 5
            x_error                    = 6
            enqueue_error              = 7
            others                     = 8.

 

-------------------------------------------------------- -------------------------------------

 

2. Use ABAP OO to send email.

 

REPORT  zsendmail.

DATA: lv_title          TYPE so_obj_des,
      send_request   TYPE REF TO CL_BCS ,
      document         TYPE REF TO CL_DOCUMENT_BCS ,
      conlengths        TYPE so_obj_len,
      html                  TYPE STANDARD TABLE OF w3html ,
      wa_html           TYPE w3html,
      sender_id         TYPE REF TO IF_SENDER_BCS ,
      recipient           TYPE REF TO IF_RECIPIENT_BCS ,
      sent_to_all        TYPE os_boolean,
      bcs_exception  TYPE REF TO cx_bcs,
      bcs_message   TYPE string.

 

     lv_title = 'This is the title'.

     wa_html-line = '<html><body>'.
     APPEND wa_html TO html.
    ...
    wa_html-line = '</body></html>'.
    APPEN D wa_html TO html.


TRY.
    CLEAR send_request.
    send_request = cl_bcs=>create_persistent( ).
   
    CLEAR document .
    document =  cl_document_bcs=>create_document (
                    i_type =    'HTM'
                    i_text =     html
                     i_length =  conlengths
                    i_subject = lv_title ).

*   Add document to send request
    CALL METHOD send_request->set_document( document ).

 

*   Construct sender and receiver
    CLEAR: sender_id , recipient .
    sender_id = cl_cam_address_bcs=>create_internet_address( 'abc@zh.cn' ).
    recipient = cl_cam_address_bcs=>create_internet_address( 'bcd@zh.cn' ).

 

*   Set sender
    CALL METHOD send_request-> set_sender
      EXPORTING
        i_sender = sender_id.

 

*   Add recipient with its respective attributes to send request
    CALL METHOD send_request->add_recipient
      EXPORTING
        i_recipient = recipient
        i_express   = 'X'.

 

*   Set E-m ail sending options
    CALL METHOD send_request->set_status_attributes
      EXPORTING
        i_requested_status = 'E'
        i_status_mail      = 'E'.
    CALL METHOD send_request->set_send_immediately( 'X' ).

 

*   Send document
    CALL METHOD send_r equest->send (
     EXPORTING
       i_with_error_screen = 'X'
     RECEIVING
       result = sent_to_all ).
      
    IF sent_to_all = 'X'.
      MESSAGE 'Mail sent successfully ' TYPE 'S'.
    ENDIF.
    COMMIT WORK.


  CATCH cx_bcs INTO bcs_exception.
    bcs_message = bcs_exception->get_text( ).
    MESSAGE bcs_exception TYPE 'E'.
    EXIT.
ENDTRY.

 

******************************************
* get sender email address.

  CALL   FUNCTION   'SUSR_USER_ADDRESS_READ'
    EXPORTING
        USER_NAME               = LV_BNAME
*       READ_DB_DIRECTLY       = ' '
     IMPORTING
        USER_ADDRESS           = FS_ADDR
        USER_USR03             = FS_USR03
     EXCEPTIONS
        USER_ADDRESS_NOT_FOUND =  1
         OTHERS                  =  2 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值