企业项目里有一类需求很常见,业务事件发生以后,SAP 系统需要给客户、供应商或者内部员工发送一封邮件。技术上看,这件事似乎很简单,调用CL_BCS,准备 Subject 和 Body,再执行SEND就结束了。
真正落到企业场景里,事情往往没这么简单。
业务部门通常不会满足于一封纯文本邮件。他们希望邮件里有企业 Logo、有统一的品牌色、有格式化的业务数据,还希望不同语言环境能够显示不同的邮件内容。模板调整以后,最好也不需要开发人员修改 ABAP 程序重新传输。
如果直接在 ABAP 代码里拼接几百行 HTML,这封邮件确实可以发送出去,但从维护角度看很快就会变成一个麻烦。标题、正文、CSS、动态业务字段、Logo 路径全部混在程序里,只要市场部门要求把标题从深蓝色改成浅蓝色,开发人员就得改代码。
SAP S/4HANA 的 Email Template 正好可以解决这部分问题。
SAP 官方文档对 Email Template 的定位非常明确,模板可以集中维护 Subject 和 Body,也可以建立语言相关的变体,将固定内容和变量内容分开处理。较新的 SAP S/4HANA 版本里,Message Composer 也进一步强化了集中维护 Email Template 和可重用消息内容的能力。
于是我们可以把职责拆开。
业务数据来自 CDS View,邮件标题和 HTML 页面留在 Email Template 里,ABAP 程序只负责找到业务数据、渲染模板、组装邮件和发送邮件。
问题出现在品牌 Logo 这里。
普通 HTML 页面里写一个<im