ABAP 发送邮件

SAP邮件发送情况T-CODE:SCOT.

  sost : 所有待发送的邮件清单,也可以监视邮件发送状态,也可以在此页面发送邮件!

      sbwp:发送邮件功能

 

     so01 :邮件/消息

 

如下代码复制,修改一下收件人和发件人信息即可

DATA: it_document_data  TYPE sodocchgi1,
      it_content_text   TYPE STANDARD TABLE OF solisti1 WITH HEADER LINE,
      it_packing_list   TYPE TABLE OF sopcklsti1 WITH HEADER LINE,
      it_receivers      TYPE STANDARD TABLE OF somlreci1 WITH HEADER LINE,
      lc_mail_attach    TYPE string,
      lt_content_hex    TYPE STANDARD TABLE OF solix WITH HEADER LINE,
      lt_object_header  TYPE STANDARD TABLE OF solisti1 WITH HEADER LINE,
      lc_mail_xattach   TYPE xstring,
      lv_send_all       TYPE c,
      it_makt           LIKE TABLE OF makt WITH HEADER LINE,
      fir_date          TYPE sy-datum,
      mimetype          TYPE char64.
DATA: it_itab           TYPE TABLE OF itab WITH HEADER LINE,
      wa_itab           TYPE itab.

CONSTANTS:lc_tab  TYPE c VALUE cl_bcs_convert=>gc_tab,       "excel换格符
          lc_ctrl TYPE c VALUE cl_bcs_convert=>gc_crlf.      "excel换行符

PARAMETER p_flag  TYPE c AS CHECKBOX.

IF p_flag = 'X'.
  PERFORM send_email.
ENDIF.

*&---------------------------------------------------------------------*
*&      Form  SEND_EMAIL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM send_email.
  DATA sy_vline TYPE i.
  DATA:mblnr TYPE string,   "物料凭证
       matnr TYPE string,   "物料
       mjahr TYPE string,   "年度
       maktx TYPE string.   "物料描述

  it_document_data-obj_descr = '邮件主题' .    "内容的简短描述
  it_document_data-priority = '1'.             "优先次序  1~9  1:最高优先权
  it_document_data-obj_name = 'OFFER'.
  it_document_data-obj_langu = sy-langu.

*  ****邮件正文信息
  it_content_text = '各位好:'.
  APPEND it_content_text.
  it_content_text = '  此邮件为测试邮件!!!!!!!'.
  APPEND it_content_text.

  DESCRIBE TABLE it_content_text LINES sy_vline.
  it_document_data-doc_size = 255 * ( sy_vline - 1 ) + strlen( it_content_text ).  "SAPoffice 文档的大小(用于 API1)

  it_packing_list-transf_bin = space.
  it_packing_list-head_start = 1.
  it_packing_list-head_num = 0 .
  it_packing_list-body_num = sy_vline.
  it_packing_list-body_start = 1.
  it_packing_list-doc_type = 'RAW'.
  APPEND it_packing_list.


***收件人信息
  it_receivers-receiver = '收件人邮箱'.  "收件人地址
  it_receivers-rec_type = 'U'.
  it_receivers-com_type = 'INT'.
  it_receivers-notif_del =  'X'.
  it_receivers-notif_ndel = 'X'.
  APPEND it_receivers.

  CONCATENATE '物料'     lc_tab
              '物料凭证' lc_tab
              '物料描述' lc_tab
              '年度'     lc_ctrl INTO lc_mail_attach.   "lc_ctrl换行符

  CLEAR:mblnr, matnr, mjahr, maktx.
  mblnr  = '7777777'.
  matnr  = '7777777'.
  mjahr  = '7777'.
  maktx  = 'seven'."物料类型

  CONCATENATE lc_mail_attach
              matnr  lc_tab
              mblnr  lc_tab
              mjahr  lc_tab
              maktx  lc_ctrl INTO lc_mail_attach.      "lc_ctrl换行符

  CLEAR:mblnr, matnr, mjahr, maktx.
  mblnr  = '8888888'.
  matnr  = '8888888'.
  mjahr  = '8888'.
  maktx  = 'seven'."物料类型

  CONCATENATE lc_mail_attach
              matnr  lc_tab
              mblnr  lc_tab
              mjahr  lc_tab
              maktx  lc_ctrl INTO lc_mail_attach.      "lc_ctrl换行符

  mimetype = 'APPLICATION/MSEXCEL;CHARSET=UTF-16LE'.
  CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
    EXPORTING
      text       = lc_mail_attach
      mimetype   = mimetype
*     ENCODING   =
   IMPORTING
      buffer     =  lc_mail_xattach
   EXCEPTIONS
      failed     = 1
      others     = 2 .

  IF sy-subrc = 0.
    CONCATENATE cl_abap_char_utilities=>byte_order_mark_little lc_mail_xattach INTO lc_mail_xattach IN BYTE MODE.
  ENDIF.

  CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    EXPORTING
      buffer          = lc_mail_xattach
*    APPEND_TO_TABLE  = ' '
*  IMPORTING
*    OUTPUT_LENGTH    =
    TABLES
      binary_tab      = lt_content_hex.

"不知道干啥用的
  lt_object_header = 'Seven test'.
  APPEND lt_object_header.

  DESCRIBE TABLE lt_content_hex LINES sy_vline.

  it_packing_list-transf_bin = 'X'.
  it_packing_list-head_start = 1 .
  it_packing_list-head_num =  0 .
  it_packing_list-body_start = 1.
  it_packing_list-body_num = sy_vline.
  it_packing_list-doc_type = 'XLS'.
  it_packing_list-doc_size = 255 * sy_vline.
  it_packing_list-obj_name = '附件名'.
  it_packing_list-obj_descr = it_packing_list-obj_name.
  APPEND it_packing_list.


"方法1  无法指定发送人邮箱
*******  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
*******    EXPORTING
*******      document_data              = it_document_data
*******      put_in_outbox              = 'X'
*******      commit_work                = 'X'
*******    IMPORTING
*******      sent_to_all                = lv_send_all
********       NEW_OBJECT_ID              =
*******    TABLES
*******      packing_list               = it_packing_list[]
*******      object_header              = lt_object_header[]
********     contents_bin               =
*******      contents_txt               = it_content_text[]
*******      contents_hex               = lt_content_hex[]
********     object_para                =
********     object_parb                =
*******      receivers                  = it_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 .

"方法2  可以指定发送人邮箱
  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
    EXPORTING
      document_data                    = it_document_data
      put_in_outbox                    = 'X'
      sender_address                   = '发件人邮箱'
      sender_address_type              = 'INT'
      commit_work                      = 'X'
*     IP_ENCRYPT                       =
*     IP_SIGN                          =
*     IV_VSI_PROFILE                   =
    IMPORTING
      sent_to_all                      = lv_send_all
*     NEW_OBJECT_ID                    =
*     SENDER_ID                        =
    TABLES
      packing_list                     = it_packing_list[]
      object_header                    = lt_object_header[]
*     CONTENTS_BIN                     =
      contents_txt                     = it_content_text[]
      contents_hex                     = lt_content_hex[]
*     OBJECT_PARA                      =
*     OBJECT_PARB                      =
      receivers                        = it_receivers[]
*     ET_VSI_ERROR                     =
    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.
*   Implement suitable error handling here
  ELSE.
    SUBMIT RSCONN01 WITH MODE = 'INT'
                   WITH OUTPUT = 'X'
                   AND RETURN.
  ENDIF.

ENDFORM.                    "SEND_EMAIL

 

posted on 2022-01-26 11:36  seven1314pp  阅读(536)  评论(0)    收藏  举报