用 RAP BO 和 EML 更新销售订单抬头与行项目,Clean Core 语境下的一条更稳路径

用 RAP BO 和 EML 更新销售订单抬头与行项目,Clean Core 语境下的一条更稳路径
我们今天处理的是一个很典型的销售订单增强场景,业务希望在销售订单抬头和销售订单行项目上写入扩展字段,字段可能来自 SAP S/4HANA 的标准字段,也可能来自 Custom Fields and Logic 创建出来的ZZ1_字段。过去在 ABAP On-Premise 项目里,很多团队会直接想到增强VBAK、VBAP,再去补 CDS、补 Gateway、补 BAdI、补 UI 字段映射。这个做法短期看起来快,长期维护起来却很像在高速公路上临时搭便道,每升级一次系统,都要重新确认这条便道有没有被新版本的标准逻辑压坏。在 RAP 和 ABAP Cloud 语境里,更推荐的方式是绕开对标准表和标准对象的直接修改,把销售订单看成一个被 SAP 发布出来的业务对象,也就是 Business Object。SAP 官方文档把 EML 定义为 ABAP 语言的一部分,用于访问 RAP business objects,并且 RAP 用来建模数据和相关业务逻辑,以实现面向 SAP Fiori apps 或 Web APIs 的事务型 OData 服务。这个定位很关键,我们不是在写一段孤立的 SQL 更新语句,而是在通过 BO 暴露出来的契约去修改业务数据。(SAP Help Portal)在销售订单这个场景里,