SAP RAP 深入剖析,%is_draft 如何决定新实例落在 Draft 还是 Active 世界 📅 2026/8/21 19:34:38 在一个启用了 Draft 的 SAP RAP 应用里,我们经常会遇到一个看起来很不起眼的技术字段%is_draft。平时通过 SAP Fiori Elements 操作业务对象时,这个字段几乎不会主动进入我们的视野。点击 Create、Edit、Save,RAP Draft Runtime 已经替我们处理了 Draft 创建、Draft 持久化、Active 激活以及 Draft 删除等一整套生命周期。可一旦业务逻辑进入 Factory Action、普通 Action 或 EML,情况就不同了。就拿正在讨论的 Billing Document 复制场景来说,我们选中一张已经存在的 Billing Document,执行copyBillingDocument,业务代码读取原单据,再利用MODIFY ENTITIES ... CREATE产生一张新的 Billing Document。此时马上会遇到一个非常实际的问题,新单据究竟应该直接成为 Active 数据,还是先进入 Draft,让业务人员继续修改,确认无误以后再保存。控制这件事的关键,就是%is_draft。SAP 官方对 Draft Runtime 的定义很清楚。对于 Draft-enabled Business Object,RAP Runtime 需要同时面对 Draft Instance 和 Active Instance,因此请求必须能够告诉 Runtime 当前访问的是哪一个版本。%is_draft正是承担这个角色的 Draft Indicator。对于 Draft BO,它还会成为 tra