ABAP 里 FILTER 关键字的用法举例

举报
汪子熙 发表于 2023/08/27 08:44:59 2023/08/27
【摘要】 FILTER是ABAP中的一个关键字,用于在内部表中进行数据筛选和过滤,以便于提取所需的数据集。FILTER关键字用于从内部表中筛选符合特定条件的数据行。它通过提供条件表达式,只返回满足条件的数据行,从而在不修改原始数据的情况下生成一个新的内部表。FILTER关键字在处理大量数据时非常有用,可以有效地减少内部表的大小,同时提高代码的可读性和可维护性。REPORT ZJERRY_FILTER....

FILTER是ABAP中的一个关键字,用于在内部表中进行数据筛选和过滤,以便于提取所需的数据集。

FILTER关键字用于从内部表中筛选符合特定条件的数据行。它通过提供条件表达式,只返回满足条件的数据行,从而在不修改原始数据的情况下生成一个新的内部表。FILTER关键字在处理大量数据时非常有用,可以有效地减少内部表的大小,同时提高代码的可读性和可维护性。

REPORT ZJERRY_FILTER.

DATA: lt_spfli TYPE STANDARD TABLE OF spfli
       WITH NON-UNIQUE SORTED KEY carr_city COMPONENTS carrid,
      lt_lh TYPE TABLE OF spfli.

SELECT * INTO TABLE lt_spfli FROM spfli.

"data(lt) = FILTER #( lt_spfli using key carrid where carrid = '1' ).

lt_lh = FILTER #( lt_spfli using key carr_city where carrid = conv #( 'LH' ) ).
BREAK-POINT.

filter 之前:

filter 之后:

第二个例子:

report z.

TYPES: BEGIN OF ty_person,
           name type string,
           age type int4,
      end of ty_person.

data: lt_person type STANDARD TABLE OF ty_person
                        with NON-UNIQUE SORTED KEY person_key COMPONENTS age,
      lt_old1 like lt_person,
      lt_old2 like lt_person,
      ls_person type ty_person.

ls_person-name = 'Tom'. ls_person-age = '21'. INSERT ls_person into table lt_person.
ls_person-name = 'Jim'. ls_person-age = '62'. INSERT ls_person into table lt_person.
ls_person-name = 'Bob'. ls_person-age = '70'. INSERT ls_person into table lt_person.
ls_person-name = 'Kate'. ls_person-age = '30'. INSERT ls_person into table lt_person.

LOOP AT lt_person INTO ls_person WHERE age > 60.
   INSERT ls_person INTO TABLE lt_old1.
ENDLOOP.

lt_old2 = FILTER #( lt_person USING KEY person_key where age > 60 ).

IF lt_old1 = lt_old2.
   BREAK-POINT.
ENDIF.

总结

FILTER关键字是ABAP中用于数据筛选和过滤的强大工具。它允许开发人员根据特定条件从内部表中提取所需的数据,从而简化了数据处理过程,提高了代码的可读性和可维护性。通过上述示例,我们可以看到FILTER关键字在实际开发中的应用,以及如何使用它来从员工信息中筛选出符合条件的数据。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。