最近在做 SAP S/4HANA Cloud Private Edition 和 ABAP Cloud 开发时,一个越来越绕不开的问题就是扩展。企业很少能够完全按照 SAP 标准业务流程运行。销售订单需要增加集团内部字段,采购申请需要增加新的校验规则,供应商主数据可能还要增加本地监管属性,甚至标准业务对象之外还需要挂接一组企业自己的子节点。过去做 ABAP 开发时,我们很容易想到 Append Structure、BAdI、Enhancement Spot、Implicit Enhancement,甚至直接修改标准程序。技术上确实能够解决问题,但到了 S/4HANA Cloud、ABAP Cloud 和 Clean Core 体系下,问题已经不只是功能能不能实现,而是扩展代码能不能在 SAP 升级之后继续存在,标准对象发生演进以后能不能继续工作,以及扩展代码与 SAP 标准实现之间到底应该建立什么样的依赖关系。RAP Extensibility 正是在解决这类问题。SAP 对 RAP Extensibility 的定位很明确,它允许开发人员在 RAP Stack 的多个层次上,为现有 RAP Business Object 增加语义完整、升级安全并且生命周期稳定的扩展。扩展开发人员并不是随意侵入原始 Business Object,而是通过 BO Provider 明确开放的 Extension Point,在允许的位置增加 Data Model、Behavior、Node 或 Service 层面的能力。这里真正重要的词并不是 Extension,而是 Stable。传统 Enhancement 更关注如何把逻辑插进去,RAP Extensibility 更关