一个企业级RAP应用做到可以新增、修改、删除业务数据,通常只是完成了业务功能的一半。系统真正投入使用之后,很快就会出现另一类问题。
某个字段原来是什么值,后来被改成了什么值。
是谁改的。
什么时候改的。
这次变化来自创建、修改还是删除操作。
如果业务对象涉及审批、价格、状态、主数据、财务属性或者其他需要追溯的内容,这些问题就不再只是技术人员调试时关心的问题,而会逐渐变成业务审计的一部分。
在SAP BTP ABAP Environment上开发RAP应用时,一种很自然的设计是额外建立一张自定义日志表。每次保存业务对象时,由 Behavior Implementation 自己比较新旧值,再向日志表插入一条记录。
这种方案确实能够工作,但代码很快就会变得越来越重。应用需要自己维护日志表结构,需要自己解决事务一致性,需要自己判断哪些字段发生了变化,还要处理创建、修改和删除之间的差异。如果以后业务对象增加字段,日志代码往往也需要同步调整。
ABAP平台其实已经有一套成熟的 Change Document 机制。到了新的RAP编程模型里,这套机制已经能够直接和 managedRAP BO集成。SAP 的RAP BDLFeature Table 显示,changedocuments master、changedocuments dependent以及对应的changedocumen