ABAP 里有没有 RxJS distinct,关键不在一个同名 Operator,而在于如何保存已经见过的值

ABAP 里有没有 RxJS distinct,关键不在一个同名 Operator,而在于如何保存已经见过的值 在 ABAP 项目里讨论 RxJS 的distinct,很容易出现一个直觉性的答案,直接想到SELECT DISTINCT。名字确实高度相似,而且在相当多的数据处理场景里,SELECT DISTINCT的结果也确实符合我们对去重的理解。但如果问题问得更严格一些,ABAP 有没有一个东西,在语义、状态管理和运行方式上都对应 RxJSdistinct,答案就需要加上一个限定。ABAP 没有一个类似 RxJSdistinct()的通用 Reactive Stream Operator。但 ABAP 拥有多种能够实现distinct核心语义的语言机制。数据仍然位于数据库时,最接近的是 ABAP SQL 的SELECT DISTINCT。数据已经进入 Internal Table 时,可以使用SORT配合DELETE ADJACENT DUPLICATES。如果希望在数据进入集合的同时保证某个 key 永远只出现一次,HASHED TABLE WITH UNIQUE KEY或SORTED TABLE WITH UNIQUE KEY会更加接近。如果还要模拟 RxJSdistinct那种持续记忆已经出现过哪些值的行为,一个以HASHED TABLE充当seen set的状态集合,反而是语义上最准确的 ABAP 实现。