S/4 HANA 中的 Email Template

打印 上一主题 下一主题

主题 858|帖子 858|积分 2574

电子邮件是非常常见的业务需求。 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 视图,该视图应该是预先交付的,可用于在电子邮件内容(正文或主题)中提供动态变量。
 
 
文本


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

 
 
邮件内容中的动态变量

为了维护动态变量,我们需要创建一个包含所需数据的 CDS 视图。 对于每个不同的电子邮件变量,可以将带有名称/值对的 CDS Key传递给电子邮件模板 API 类,并简单地地将变量替换为所需的内容。
创建一个CDS视图ZRSCDS_INVOICE_DATA(在这个示例里是Billing的抬头和行项目)
  1. @AbapCatalog.sqlViewName: 'ZRSCDS_INVDATA'
  2. @AbapCatalog.compiler.compareFilter: true
  3. @AccessControl.authorizationCheck: #CHECK
  4. @EndUserText.label: 'Invoice Data Line Item wise'
  5. //@VDM.viewType:#BASIC
  6. define view ZRSCDS_INVOICE_DATA
  7. as select from vbrk as zzrs_vbrk
  8. join vbrp as zzrs_vbrp
  9.     on zzrs_vbrk.vbeln = zzrs_vbrp.vbeln
  10. {
  11. key zzrs_vbrk.vbeln,
  12. key zzrs_vbrp.posnr,      
  13.      zzrs_vbrk.fkart,
  14.      zzrs_vbrk.vbtyp,
  15.      @Semantics.currencyCode: true
  16.      zzrs_vbrk.waerk,
  17.      zzrs_vbrk.vkorg,
  18.      zzrs_vbrk.fkdat,   
  19.      @Semantics.amount.currencyCode: 'waerk'
  20.      @DefaultAggregation: #SUM
  21.      zzrs_vbrk.netwr,
  22.      zzrs_vbrk.kunag as kunag,      
  23.      zzrs_vbrp.fkimg,
  24.      zzrs_vbrp.vrkme,
  25.      zzrs_vbrp.meins,
  26.      zzrs_vbrp.matnr         
  27. }
复制代码
在Email template Header中指定CDS,

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

 
邮件预览

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

到目前为止,我已经在系统中创建了电子邮件模板。 现在,我想将其集成到一个向客户发送电子邮件的程序中,电子邮件内容将从模板中获取。 为了演示,我创建了一个简单的程序,我可以在其中传递接收者电子邮件地址、电子邮件模板、语言和 CDS Key(在上面的例子中是Billing)。
SAP 提供了电子邮件模板 API 类,可以实例化并用于获取电子邮件内容。 步骤如下:
 
  1. "创建 CL_SMTG_EMAIL_API 实例
  2. DATA(lo_email_api) = cl_smtg_email_api=>get_instance( iv_template_id = p_em_id  ).
  3. "创建 CL_BCS 实例
  4. DATA(lo_bcs) = cl_bcs=>create_persistent( ).
  5. "准备CDS视图KEY
  6. DATA(lt_cds_key) = VALUE ty_gt_data_key( ( name = 'vbeln' value = p_vbeln ) ).
  7. "通过email实例集成邮件主题和正文
  8. lo_email_api->render_bcs( io_bcs = lo_bcs iv_language = p_spras it_data_key = lt_cds_key ).
  9. "设置发件人、收件人并发送
  10.   
  11. " Set Email Sender
  12. DATA(lo_sender) = cl_sapuser_bcs=>create( sy-uname ).
  13. lo_bcs->set_sender( i_sender = lo_sender ).
  14. " Set Email Receiver(s)
  15. DATA(lo_recipient) = cl_cam_address_bcs=>create_internet_address( p_rec ).
  16. lo_bcs->add_recipient( EXPORTING i_recipient = lo_recipient ).
  17. " Send Email
  18. lo_bcs->send( ).
复制代码
选择屏幕示例
 
收到的动态变量被替换的邮件,

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万万哇

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表