ABAP 没有现成的 distinctUntilChanged,但可以按数据流语义精确实现 在日常 SAP 项目里,经常会碰到这样的场景。一个采购订单状态连续被写入多次,某个设备测量值不断上传,Fiori Elements 页面反复发送内容相同的字段更新,或者多个业务事件携带相同的状态到达后端。我们的真实需求往往不是删除所有重复值,而是忽略连续出现、并且没有发生有效变化的值,避免重复计算、重复写日志、重复调用接口或重复触发工作流。在RxJS中,这正是distinctUntilChanged负责的事情。ABAP 标准库里没有一个可以直接写成source-pipe( distinct_until_changed )的现成 Operator,但它的语义完全可以在 ABAP 中实现。只是不同场景要采用不同技术。处理已经存在的内表,可以使用显式循环或DELETE ADJACENT DUPLICATES。处理持续发生的事件,需要在事件消费者中保存上一次已输出的值。处理RAP业务对象更新,则要区分%control所表达的字段参与修改,与真正的新旧值比较。处理海量时间序列数据,还可以把相邻比较下推到 SAP HANA 或 ABAP SQL 的LAG窗口函数中。先把 distinctUntilChanged 的语义钉牢RxJS官方文档对distinctUntilChanged的定义很明确,它返回一个新的Observable,源流中的当前值只有在与结果