从 RxJS filter 到 ABAP 数据筛选,FILTER、FOR、LOOP 与数据库下推的完整对应
就拿我们正在讨论的销售订单头场景来说,程序已经拿到一批订单,业务只想继续处理状态为已审批、金额不低于一千元,而且当前用户有权查看的记录。写在 Angular 或 Node.js 里,很自然会想到 RxJS 的filter。写在 ABAP 里,也确实能找到几个外形和用途相近的办法,不过不能简单地把它们看成同一个东西。结论可以直接放在前面,ABAP 有名为FILTER的构造运算符,也有LOOP AT ... WHERE、VALUE ... FOR ... WHERE、SELECT ... WHERE等筛选手段。若问题只是从一张已经存在的内表中挑出符合条件的行,ABAP 的FILTER或VALUE表推导式很接近 RxJSfilter的结果。如果问题强调的是持续到来的异步事件、订阅、取消订阅、完成通知和错误通知,那么标准 ABAP 并没有一个与 RxJSfilter一一对应的响应式流运算符。两个filter看起来相似,运行模型却不同RxJS 官方文档对filter的定义很直接,源Observable每发出一个值,运算符就调用谓词函数,只把谓词结果为真的值继续发给下游。它的行为接近 JavaScript 数组的filter,但处理对象不是一次性数组,而是可能随时间持续发出值的Observab