电子邮件是非常常见的业务需求。 SAP 了解这一点,并在 S/4 HANA(cloud和on premise)中引入了非常有趣的功能——Email Template。它将CDS视图和HTML模板结合了起来,提供了方便的邮件功能。 本文将提供Email Template的概述和演示。

本文链接:https://www.cnblogs.com/hhelibeb/p/16626455.html

英文原文:E-Mail Templates in S/4 HANA

Email Template是什么?

借助 S/4 HANA 输出管理,SAP 提供了要配置的电子邮件模板,这些模板会映射到 BRF+ 中的输出类型。 我们可以在这些电子邮件模板中维护不同语言的 HTML 和纯文本,还可以映射 CDS 视图以处理动态变量。 该功能可以维护电子邮件内容,并节省大量硬编码或其他常见自定义开发。 尽管在 S/4 HANA 中,SAP在输出管理中使用电子邮件模板,但我们仍然可以独立使用此功能,我们将在下面演示它的用法。

前提

  • CDS视图基本知识
  • 熟练掌握ABAP
  • HTML基本知识

如何创建Email Template?

没有特定的事务用于创建电子邮件模板,我们可以将其创建为 SE80 事务中的存储库对象,如下所示:

1,选择包(或本地对象)并右键单击。

2,选择“创建”->“更多”->“电子邮件模板”

尽管如此,对于已有的Email Template,可以使用程序SMTG_WB_START来查看/编辑。

标题

  • 需要维护电子邮件模板的名称/描述。
  • 此外,我们可以维护一个 CDS 视图,该视图应该是预先交付的,可用于在电子邮件内容(正文或主题)中提供动态变量。

文本

  1. Languages 维护不同语言的电子邮件
  2. CDS Fields 邮件内容中使用的一组 CDS 视图字段
  3. Email Subject 邮件主题
  4. Body HTML HTML 格式的邮件正文内容
  5. Body Plain Text 纯文本邮件正文内容

邮件内容中的动态变量

为了维护动态变量,我们需要创建一个包含所需数据的 CDS 视图。 对于每个不同的电子邮件变量,可以将带有名称/值对的 CDS Key传递给电子邮件模板 API 类,并简单地地将变量替换为所需的内容。

创建一个CDS视图ZRSCDS_INVOICE_DATA(在这个示例里是Billing的抬头和行项目)

@AbapCatalog.sqlViewName: 'ZRSCDS_INVDATA'@AbapCatalog.compiler.compareFilter: true@AccessControl.authorizationCheck: #CHECK@EndUserText.label: 'Invoice Data Line Item wise' //@VDM.viewType:#BASICdefine view ZRSCDS_INVOICE_DATA as select from vbrk as zzrs_vbrkjoin vbrp as zzrs_vbrp    on zzrs_vbrk.vbeln = zzrs_vbrp.vbeln { key zzrs_vbrk.vbeln, key zzrs_vbrp.posnr,           zzrs_vbrk.fkart,      zzrs_vbrk.vbtyp,     @Semantics.currencyCode: true     zzrs_vbrk.waerk,      zzrs_vbrk.vkorg,      zzrs_vbrk.fkdat,         @Semantics.amount.currencyCode: 'waerk'      @DefaultAggregation: #SUM     zzrs_vbrk.netwr,      zzrs_vbrk.kunag as kunag,           zzrs_vbrp.fkimg,      zzrs_vbrp.vrkme,      zzrs_vbrp.meins,      zzrs_vbrp.matnr         }

在Email template Header中指定CDS,

在Body中使用{{}}指定CDS视图字段,类似于string template,

邮件预览

可以通过单击“预览”按钮来预览我们的电子邮件模板发送后的样子:

如何调用Email Template

到目前为止,我已经在系统中创建了电子邮件模板。 现在,我想将其集成到一个向客户发送电子邮件的程序中,电子邮件内容将从模板中获取。 为了演示,我创建了一个简单的程序,我可以在其中传递接收者电子邮件地址、电子邮件模板、语言和 CDS Key(在上面的例子中是Billing)。

SAP 提供了电子邮件模板 API 类,可以实例化并用于获取电子邮件内容。 步骤如下:

"创建 CL_SMTG_EMAIL_API 实例DATA(lo_email_api) = cl_smtg_email_api=>get_instance( iv_template_id = p_em_id  )."创建 CL_BCS 实例DATA(lo_bcs) = cl_bcs=>create_persistent( )."准备CDS视图KEYDATA(lt_cds_key) = VALUE ty_gt_data_key( ( name = 'vbeln' value = p_vbeln ) )."通过email实例集成邮件主题和正文lo_email_api->render_bcs( io_bcs = lo_bcs iv_language = p_spras it_data_key = lt_cds_key ). "设置发件人、收件人并发送  " Set Email SenderDATA(lo_sender) = cl_sapuser_bcs=>create( sy-uname ).lo_bcs->set_sender( i_sender = lo_sender )." Set Email Receiver(s)DATA(lo_recipient) = cl_cam_address_bcs=>create_internet_address( p_rec ).lo_bcs->add_recipient( EXPORTING i_recipient = lo_recipient )." Send Emaillo_bcs->send( ).

选择屏幕示例

收到的动态变量被替换的邮件,