
在 SAP S/4HANA 或 SAP BTP ABAP environment 中做事务型应用时,一个很常见的开发场景,是 SAP Fiori 页面修改了一张业务单据,前端发出 OData 请求,后端完成权限检查、锁处理、业务校验、数据修改、消息返回,保存成功后还可能发布一个业务事件,让外围系统继续执行后续流程。表面上看,这只是一次 HTTP 请求。真正进入 ABAP 后端以后,它实际上会经过一条相当完整的事务处理链路。CDS 负责描述数据,RAP Business Object 定义业务对象边界,Behavior Definition 描述允许执行的行为,ABAP Behavior Pool 实现领域逻辑,EML 在业务对象之间提供类型安全的调用机制,Service Projection 决定哪些能力能够暴露给特定消费场景,SAP Gateway 接收 OData 请求,RAP Runtime Engine 负责把请求调度到对应的业务对象,授权控制、锁、ETag、Validation、Determination、Save Sequence 等机制又共同保证整个事务不会被随意破坏。这正是 RAP 中 Transactional Programming Model 所覆盖的核心范围。SAP 官方目前仍将 RAP 定位为构建事务型 SAP Fiori 应用和 Web API 的核心 ABAP 编程模型。RAP 以 CDS 建模业务数据,通过 Behavior Definition 描述业务对象行为,再通过服务模型将业务对象暴露为 OData 服务。从业务视角看,所谓 Transactional Use Case,并不是简单等同于数据库里的INSERT、