Zeal without knowledge is fire without light.
没有知识的热忱犹如 火之无光。
1
程序效果
2
源码分享
*&\----------------------------------------------------------------------
*& 12\. FILTER 关键字 理解:内表过滤
*&\----------------------------------------------------------------------
*& 语法:1. ... FILTER type( itab [EXCEPT] [USING KEY keyname]
• WHERE c1 op f1 [AND c2 op f2 [...]] ) ...
*
• 2. ... FILTER type( itab [EXCEPT] IN ftab [USING KEY keyname]
• WHERE c1 op f1 [AND c2 op f2 [...]] ) ...
*&\----------------------------------------------------------------------
BEGIN OF gty_student ,
name ( 10 ) TYPE c , "姓名
gender TYPE c , "性别
age TYPE i , "年龄
id ( 10 ) TYPE n , "学生ID
class ( 10 ) TYPE c , "班级
score TYPE p DECIMALS 1 , "成绩
END OF gty_student .TYPES gty_t_student TYPE SORTED TABLE OF gty_student WITH NON-UNIQUE KEY
gender .
DATA ( gt_student ) = VALUE gty_t_student ( LET pre = 'Student'
random = cl_abap_random_int => create ( seed = CONV # ( sy \- timlo
) min = 0 max = 100 ) IN
FOR n = 1 UNTIL n > 5
( id = n
name = |{ pre } { n }|
gender = COND # ( WHEN n MOD 2 = 0 THEN '男' ELSE '女' )
age = 10 \+ n
class = |{ n }班|
score = random -> get_next ( ) ) ).
DATA ( lt_stu01 ) = FILTER # ( gt_student WHERE gender = '男' ).
DATA ( lt_stu02 ) = FILTER # ( gt_student EXCEPT WHERE gender = '男').
TYPES lty_t_filter TYPE SORTED TABLE OF c WITH NON-UNIQUE KEY table_line .
DATA ( lt_filter ) = VALUE lty_t_filter ( ( '女' ) ).
DATA ( lt_stu03 ) = FILTER # ( gt_student IN lt_filter WHERE gender= table_line ).
3
AI解释
仅供参考
这段ABAP代码主要介绍了ABAP中新引入的 REDUCE 关键字的用法, ` FILTER `
关键字用于对内表进行筛选,从而生成新的内表,它允许按照指定的条件和键值进行过滤。
** 关键点: **
• ` itab ` :要过滤的内表。
• ` EXCEPT ` :如果使用,表示排除符合条件的行。
• ` USING KEY keyname ` :指定用于过滤的键名。
• ` WHERE ` 子句:定义过滤条件,可以使用多个条件,支持逻辑运算符(AND,OR)。
• ` IN ` 子句:指定一个内表 ` ftab ` ,从中提取过滤条件。
** 示例解释: **
• ` lt_stu01 ` :通过 ` FILTER ` ,生成只包含性别为 '男' 的新内表。
• ` lt_stu02 ` :通过 ` FILTER ` ,生成排除性别为 '男' 的新内表。
• ` lt_stu03 ` :通过 ` FILTER ` ,根据外部条件表 ` lt_filter ` ,生成新内表,筛选出性别符合条件的行。
` FILTER ` 关键字为开发者提供了一种简便的方式,通过条件对内表进行灵活的筛选和生成新的内表。
以上是今日分享,希望对你有所帮助~~~
欢迎点赞、留言、分享
往期推荐
[ ABAP 新语法-FOR
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495565&idx=1&sn=e1bbb20a6eb34dd2e0b4c96e9db3de13&chksm=cf0a3b63f87db275b201bd44ae400219f2542a4696122ccc6d3b243ec45a292c693a017b08e5&scene=21#wechat_redirect)
[ ABAP 新语法-SWITCH、COND
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495497&idx=1&sn=b28f14fe1ad6bb07ff1894d41a9c41b7&chksm=cf0a3ba7f87db2b1bffdddc196d2a40b0100fb280111fb5754433c56a0415693d0112b350cbb&scene=21#wechat_redirect)
[ ABAP 新语法-LET
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495544&idx=1&sn=11a10fc7f45113282e9b0e600c49e9e8&chksm=cf0a3b96f87db280c12b7c18df0823a4207c9d52b56b9d773135e12d6173c9636ce091a79cf4&scene=21#wechat_redirect)
[ ABAP 新语法-REDUCE
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495646&idx=1&sn=370e6863e1c40e7adfd42df62b799993&chksm=cf0a3b30f87db226babd5181e59cc61d9aebb6e759093c1c408fb22f24e5680fca2027db1b59&scene=21#wechat_redirect)
点个 在看 你最好看