且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

ABAP内表在ABAP 740后支持的filter操作

更新时间:2022-09-01 18:22:27

ABAP内表和Java的Array一样,都是面向过程编程时代的产物。最近Jerry手头的工作,经常需要和Java Array对象化之后的集合类型和Java 8推出的流式API打交道。图一这种filter操作ABAP内表无法支持,但ABAP 740后新增了一个FILTER关键字。

ABAP内表在ABAP 740后支持的filter操作

图1的Java流的filter操作,传入一个Lambda函数,该函数是一个Java标准类型的Predicate,返回布尔值。filter方法像一个漏斗一样,对集合里的每一个元素施加这个Predicate函数,结果返回true的元素会存放到新生成的集合容器里。图1的Lambda函数的逻辑即比较集合内元素代表的时间值是否早于当前时间转换成UTC后的时间。


再看看ABAP内表支持的FILTER关键字。还是以ABAP开发人员喜闻乐见的SPFLI为例,在740之前,如果想从内表里提取出部分满足WHERE条件的部分记录,必须要用图2的LOOP操作。

ABAP内表在ABAP 740后支持的filter操作

740之后,用FILTER就简洁多了,如图3:

ABAP内表在ABAP 740后支持的filter操作

如果想支持多个过滤条件也是可以的,把过滤条件维护在一张过滤表里即可,如图4:

ABAP内表在ABAP 740后支持的filter操作