
在 SAP Gateway 项目里做增量同步时,最容易被低估的一类数据并不是新增记录,也不是修改记录,而是已经从业务系统里消失的记录。一条销售订单被修改,客户端还能通过新的字段值看出变化。一条 Business Partner 新建出来,客户端也很容易把它追加到本地数据库。麻烦出现在删除场景。后台数据库里已经没有这条记录,正常的GET_ENTITYSET自然也查不到它。如果客户端只是周期性地执行增量读取,却没有一种机制知道哪些对象已经删除,本地缓存就会留下越来越多实际上已经失效的数据。这正是Delta Query里的Deleted Entries要解决的问题。SAP 对 Delta Query 的定义很直接,它属于一种 pull model,客户端不是每次重新下载完整集合,而是基于上一次获得的delta token,再次询问服务端,从某个时间点之后有哪些对象被创建、修改或者删除。客户端可以周期性轮询,也可以在业务需要时执行增量读取。SAP 官方文档同时强调,这类机制特别适合频繁同步并且完整 payload 成本较高的场景。如果把它放到一个 SAP Fiori、移动应用或者外围系统的真实数据同步流程里,逻辑就很清楚了。假设我们的外围应用本地保存了 20 万条产品数据。每天可能只有几百条产品发生变化。如果每隔 10 分钟执行一次完整的GET /ProductSet网络传输、SAP Gateway serialization、ABAP 查询以及客户端 JSON 或 XML 解析都会重复处理大量没有发生变化的数