ABAP 邮件模板及邮件发送封装

作者:ABAP三叔 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:工具, 技术
ABAP 邮件模板及邮件发送封装 - 封面图
ABAP 邮件模板及邮件发送封装 - 封面图

前言

在ABAP中发送邮件也是一个比较常见的需求,如果想要发送一些比较正式的商业邮件,可以借助于SAP提供的邮件模板,它可以使用HTML来设置邮件的样式,然后使用占位符,在生成邮件的时候,将占位符替换成相应的内容即可。

本文将介绍我封装的邮件发送工具,支持发送纯文本、使用邮件模板、添加附件等,一句代码即可, 类似这样

NEW zcl_email(        template_id = 'ZET_DEMO01' "Email template doctype = 'HTM' data = ls_data )->send( ).

邮件模板介绍

创建方法如下图

ABAP 邮件模板及邮件发送封装 - 封面图
ABAP 邮件模板及邮件发送封装 - 封面图

示例模板

ABAP 邮件模板及邮件发送封装 - 封面图
ABAP 邮件模板及邮件发送封装 - 封面图

使用示例

1. 示例代码:使用邮件模板发送销售订单明细

REPORT zdemo_email01."send email with HTML body using email templateTYPES: BEGIN OF ty_tab, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, kwmeng TYPE vbap-kwmeng, vrkme TYPE vbap-vrkme, price TYPE prcd_elements-kbetr, total TYPE prcd_elements-kwert, END OF ty_tab, tt_tab TYPE STANDARD TABLE OF ty_tab WITH DEFAULT KEY. TYPES: BEGIN OF ty_data, vbeln TYPE vbak-vbeln, ernam TYPE vbak-ernam, it_tab TYPE tt_tab, END OF ty_data.DATA: ls_data TYPE ty_data.TRY.

DATA lv_vbeln TYPE vbeln VALUE '1120000019'.

SELECT a~vbeln,a~ernam,b~posnr,b~matnr,b~arktx,b~kwmeng,b~vrkme,c~kbetr AS price, c~kwert AS total FROM vbak AS a JOIN vbap AS b ON a~vbeln = b~vbeln JOIN prcd_elements AS c ON a~knumv = c~knumv AND b~posnr = c~kposn AND c~kschl = 'ZPR1' WHERE a~vbeln = @lv_vbeln INTO TABLE @DATA(lt_vbap). IF sy-subrc = 0. ls_data-vbeln = lt_vbap[ 1 ]-vbeln. ls_data-ernam = lt_vbap[ 1 ]-ernam. ls_data-it_tab[] = CORRESPONDING #( lt_vbap[] ). NEW zcl_email( template_id = 'ZET_DEMO01' "Email body from Email template doctype = 'HTM' data = ls_data )->send( ). ENDIF. CATCH cx_bcs_send INTO DATA(ex). MESSAGE ex->get_text( ) TYPE 'S'. ENDTRY.

在SOST中可以看到邮件发送内容

ABAP 邮件模板及邮件发送封装 - 封面图
ABAP 邮件模板及邮件发送封装 - 封面图

总结

GITHUB地址:https://github.com/a87b01c14/ZEMAIL.git

ABAP三叔

关于作者:ABAP三叔

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ABAP邮件模板及邮件发送封装.md」整理生成,仅用于内部技术分享与学习交流。