【ABAP】发送外部邮件代码2

通过函数的方式实现邮件发送,无法设定发件人和抄送人

*&---------------------------------------------------------------------*
*& Report YTEST7
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ytest7.

DATA:ls_doc_data     TYPE sodocchgi1,
     lt_contents_txt TYPE TABLE OF solisti1,
     lt_packing_list TYPE TABLE OF sopcklsti1,
     lt_receivers    TYPE TABLE OF somlreci1,
     lv_sent_to_all  TYPE sonv-flag.


"定义标题和优先级
CLEAR:ls_doc_data.
ls_doc_data = VALUE #( obj_descr  = '通知单-'
                       priority   = 1
                       obj_langu  = '1'
                       obj_name   = 'OFFER'
                       sensitivty = 'O' ).
"定义邮件内容
REFRESH:lt_contents_txt.
lt_contents_txt = VALUE #( ( line = '您好:' )
                           ( line = '' )
                           ( line = '请及时查看通知单' ) ).

"根据邮件内容计算行数
DESCRIBE TABLE lt_contents_txt LINES DATA(lv_lines).
ls_doc_data-doc_size = ( lv_lines - 1 ) * 255 + strlen( lt_contents_txt[ lv_lines ] ).

"根据邮件主体内容计算其行数
lt_packing_list = VALUE #( ( transf_bin = ''
                             head_start = 1
                             head_num   = 0
                             body_start = 1
                             body_num   = lv_lines
                             doc_type   = 'RAW'  ) ).

"填充收件人
lt_receivers = VALUE #( ( receiver   = 'littlefoam@163.com'
                          rec_type   = 'U'
                          notif_read = 'X'
                          com_type   = 'INT'
                          notif_del  = 'X'
                          notif_ndel = 'X'  ) ).

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
  EXPORTING
    document_data              = ls_doc_data          "新文件的属性
    put_in_outbox              = 'X'                  "发送后将文档移至发件箱
    commit_work                = 'X'                  "将设置显式COMMIT WORK
  IMPORTING
    sent_to_all                = lv_sent_to_all
  TABLES
    packing_list               = lt_packing_list      "填充邮件内容
*   object_header              = gt_object_header
*   contents_bin               = gt_contents_bin
    contents_txt               = lt_contents_txt       "对象和附件的ASCII内容
*   contents_hex               = gt_contents_hex
*   object_para                = gt_object_para
*   object_parb                = gt_object_parb
    receivers                  = lt_receivers         "具有发送属性的文档收件人
  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.

DATA(lv_subrc) = sy-subrc.

WAIT UP TO 2 SECONDS.

IF lv_subrc = 0.
  SUBMIT rsconn01 WITH mode = 'INT' WITH output = 'X' AND RETURN.
ENDIF.
CLEAR:lv_subrc.

CLEAR:lv_lines.

 

posted @ 2021-09-06 15:42  littlefoam  阅读(164)  评论(0)    收藏  举报