ABAP -发送邮件正文附带表格 直接粘贴复制可用

业务背景:业务要求发送邮件的同时正文要带出表格 

  • 不涉及SAP模块业务,单纯就开发,直接上代码了。 TIPS:可以在TCODE SBWP查看发出去的邮件,如果有多个收件人或者抄送人 ,建个底表把员工邮箱存进去,在ABAP程序查询底表数据放到内表,LOOP 内表把邮箱地址放进去就可以了,真实开发数据不应该是写死的,在填充表格数据的时候也可以LOOP 要发送的数据内表 把写死的文字用变量替代就可以了。
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,
      lo_sender     TYPE REF TO cl_sapuser_bcs,                         "发送人
      lv_to         TYPE adr6-smtp_addr,                                "接收人
      lo_bcs_to     TYPE REF TO if_recipient_bcs,                       "接收人
      lv_cc         TYPE adr6-smtp_addr,                                "抄送人
      lo_bcs_cc     TYPE REF TO if_recipient_bcs,                       "抄送人
      lv_result     TYPE os_boolean,                                    "发送结果
      lo_fail       TYPE REF TO cx_bcs.                                 "异常信息

lv_title = '大仓多库位库存预警表'.
wa_html-line = '<html><head><meta charset="utf-8" /><title></title><style>table {text-align: center;}</style></head><body>'.
APPEND wa_html TO html.
wa_html-line = '<h3>为避免印单个SKU存放多库位交货时,产品不能按批次先进先出原则,导致存在呆滞风险,烦请仓库重点关注对产品'&&
                '库位进行管控;单个SKU多库位存放的成品预警明细见附件:</h3>'.
APPEND wa_html TO html.
wa_html-line = '<table border="1" width="550px" height="150px" cellspacing="0" align="center">'.
APPEND wa_html TO html.
wa_html-line = '<thead><tr>'&&
                        '<th>装运点</th>'&&
                        '<th>数据获取时间</th>'&&
                        '<th>SKU总数</th>'&&
                        '<th>多库位SKU总数</th>'&&
                        '<th>多库位SKU占比</th>'&&
                        '<th>增长率</th>'&&
                '</tr></thead>'.
APPEND wa_html TO html.
wa_html-line = '<tbody><tr>'&&
                        '<td >广州</td>'&&
                        '<td>2023/8/29</td>'&&
                        '<td>1134</td>'&&
                        '<td>180</td>'&&
                        '<td>25%</td>'&&
                        '<td>23%</td>'&&
                      '</tr>'&&
                      '<tr>'&&
                        '<td>深圳</td>'&&
                        '<td>2023/8/29</td>'&&
                        '<td>1134</td>'&&
                        '<td>180</td>'&&
                        '<td>25%</td>'&&
                        '<td>23%</td>'&&
               '</tr></tbody>'.
APPEND wa_html TO html.
wa_html-line = ' </table>'.
APPEND wa_html TO html.
wa_html-line = '</body></html>'.
APPEND 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 ).
*   发件人:前提是这个邮箱地址能发邮件,并且不需要密码
    lo_sender = cl_sapuser_bcs=>create( sy-uname ).
    send_request->set_sender( lo_sender ).
*   收件人
    lv_to = ''. "邮箱地址 例163@qq.com
    lo_bcs_to = cl_cam_address_bcs=>create_internet_address( lv_to ).
    CALL METHOD send_request->add_recipient
      EXPORTING
        i_recipient = lo_bcs_to.
    "设置立即发送
    send_request->set_send_immediately( 'X' ).
    "与outbox关联
    send_request->send_request->set_link_to_outbox( 'X' ).

    "发送邮件
    CALL METHOD send_request->send(
      EXPORTING
        i_with_error_screen = 'X'
      RECEIVING
        result              = lv_result ).
  CATCH cx_bcs INTO bcs_exception.
    bcs_message = bcs_exception->get_text( ).
    MESSAGE bcs_exception TYPE 'E'.
    EXIT.
ENDTRY.
IF lv_result EQ 'X'.
  COMMIT WORK AND WAIT.
  MESSAGE '邮件推送成功' TYPE 'S'.
ELSE.
  ROLLBACK WORK.
  MESSAGE '有邮件推送失败' TYPE 'S' DISPLAY LIKE 'W'.
ENDIF.
IF sy-subrc NE 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  RETURN.
ENDIF.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABAP邮件发送开发是指在SAP系统中使用ABAP编程语言开发邮件发送功能。ABAP是SAP系统的一种编程语言,可以用来开发和定制各种功能和业务逻辑。 在ABAP邮件发送开发中,我们可以使用ABAP语言中的内置函数和类来实现邮件的发送。首先,我们需要配置SAP系统的邮件服务器信息和邮件发送方式。这可以通过SAP事务码SCOT来完成。 然后,在ABAP程序中,我们可以使用函数模块SO_NEW_DOCUMENT_ATT_SEND_API1来发送带有附件的邮件。该函数模块可以设置邮件的发送者、接收者、主题、正文内容等信息,还可以添加附件。 例如,我们可以使用FM SO_DOCUMENT_SEND_API1来创建一个邮件文档,然后使用函数模块SO_OBJECT_SEND来发送邮件。在创建邮件文档时,我们可以指定邮件的发送者、接收者、主题和正文内容。然后,我们可以使用函数模块SO_OBJECT_INSERT来添加附件。 除了使用函数模块,我们还可以使用SAP提供的类和方法来发送邮件。例如,我们可以使用类CL_BCS来创建邮件对象,并使用该类的方法来设置邮件的发送者、接收者、主题和正文内容。然后,我们可以使用该类的方法ADD_ATTACHMENT来添加附件。 通过ABAP邮件发送开发,我们可以实现各种邮件通知功能,例如在特定事件发生时发送邮件通知相关人员,或者将系统产生的报表以邮件形式发送给相关人员。这样可以提高系统的可操作性和用户的使用体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值