電子郵件是非常常見的業務需求, 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的抬頭和行專案)
@AbapCatalog.sqlViewName: 'ZRSCDS_INVDATA' @AbapCatalog.compiler.compareFilter: true @AccessControl.authorizationCheck: #CHECK @EndUserText.label: 'Invoice Data Line Item wise' //@VDM.viewType:#BASIC define view ZRSCDS_INVOICE_DATA as select from vbrk as zzrs_vbrk join 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視圖KEY DATA(lt_cds_key) = VALUE ty_gt_data_key( ( name = 'vbeln' value =https://www.cnblogs.com/hhelibeb/p/ p_vbeln ) ). "通過email實體集成郵件主題和正文 lo_email_api->render_bcs( io_bcs = lo_bcs iv_language = p_spras it_data_key = lt_cds_key ). "設定發件人、收件人并發送 " Set Email Sender DATA(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 Email lo_bcs->send( ).
選擇螢屏示例
收到的動態變數被替換的郵件,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/502730.html
標籤:SAP
