Alon e we can do so little; together we can do so much.
团结合作胜过于单打独斗。
1
程序效果
2
源码分享
*&\----------------------------------------------------------------------
*& 9\. For关键字 理解:循环内表
*&\----------------------------------------------------------------------
*& 语法:... FOR wa|<fs> IN itab [INDEX INTO idx] [cond] ...
*& ... FOR var = ... [THEN expr] UNTIL|WHILE log_exp [let_exp] ...
*&\----------------------------------------------------------------------
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 , "成绩
level ( 10 ) TYPE c , "级别
ispass TYPE c , "是否通过
END OF gty_student ,gty_t_student TYPE TABLE OF gty_student WITH EMPTY KEY .
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 > 10
( id = n
name = |{ pre } { n }|
gender = COND # ( WHEN n < 6 THEN '男' ELSE '女' )
age = 10 \+ n
class = |{ n }班|
score = random -> get_next ( ) ) ).
DATA ( lt_stu01 ) = VALUE gty_t_student ( FOR <stu> IN gt_student
INDEX INTO lv_index WHERE ( score >= 60 ) ( <stu> ) ).BEGIN OF line ,
col1 TYPE i ,
col2 TYPE i ,
col3 TYPE i ,
END OF line ,itab TYPE STANDARD TABLE OF line WITH EMPTY KEY .
DATA ( lt_itab01 ) = VALUE itab ( FOR j = 11 THEN j + 10 WHILE j< 40 "初始值,递增量,结束条件
( col1 = j col2 = j + 1 col3 = j + 2 ) ).
DATA ( lt_itab02 ) = VALUE itab ( FOR j = 11 THEN j + 10 UNTIL j> 40
( col1 = j col2 = j + 1 col3 = j + 2 )
"11 12 13 - value 到 lt_for03
"21 22 23 - value 到 lt_for03
"31 32 33 - value 到 lt_for03
"41 - 结束循环
).
3
AI解释
仅供参考
这段ABAP代码主要介绍了ABAP中新引入的 ` FOR ` 关键字的用法,其中核心点如下:
** FOR关键字:循环内表 **
FOR关键字用于在内表的基础上进行循环,提供了一种简洁而直观的循环语法。
在示例中,FOR关键字的应用分为两种情况:
**循环内表元素** : ` FOR <stu> IN gt_student INDEX INTO lv_index WHERE ( score >=60 ) ( <stu> ) ` 表示遍历 ` gt_student ` 内表,只选择成绩大于等于60的学生。
**数值循环:** ` FOR j = 11 THEN j + 10 WHILE j < 40 ( col1 = j col2 = j + 1 col3 =
j + 2 ) ` 表示从11开始,每次递增10,直到 ` j ` 大于等于40,然后将 ` col1 ` 、 ` col2 ` 和 `
col3 ` 的值加入内表。
**INDEX INTO和WHERE子句:**
` INDEX INTO lv_index ` :在循环内表元素的情况下,通过 ` INDEX INTO ` 可以获取当前元素的索引。 `
WHERE ( score >= 60 ) ` :在循环内表元素的情况下, ` WHERE ` 子句可以过滤出符合条件的元素。
**数值循环的THEN和UNTIL子句:**
` THEN j + 10 ` :表示每次循环递增的值。
` WHILE j < 40 ` :表示循环的结束条件,直到 ` j ` 的值大于等于40。
这种循环语法的引入使得代码更加简洁,易读性更强,特别是对于循环内表元素和数值循环的场景
以上是今日分享,希望对你有所帮助~~~
欢迎点赞、留言、分享
往期推荐
[ ABAP 新语法-LET
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495544&idx=1&sn=11a10fc7f45113282e9b0e600c49e9e8&chksm=cf0a3b96f87db280c12b7c18df0823a4207c9d52b56b9d773135e12d6173c9636ce091a79cf4&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 新语法-BASE
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495446&idx=1&sn=8476464d43a57338e2a9596e5da896d4&chksm=cf0a3bf8f87db2ee1589fe57b62fa4f30463b97719fb08f446f71c9dd4ab562cb210e25223cd&scene=21#wechat_redirect)
[ ABAP 新语法-CORRESPONDING
](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495438&idx=1&sn=09d533259a5ffb296befb7e244255fd2&chksm=cf0a3be0f87db2f67f6ba2b07ba64fc7d116a55012c914d5f96d49886373e3723499739d0dbd&scene=21#wechat_redirect)
点个 在看 你最好看