08.[SAP ABAP] 循环结构
在 ABAP(Advanced Business Application Programming)中,循环结构用于重复执行一段代码。ABAP 提供了多种循环语句,主要包括以下几种:
一. DO...ENDDO 循环
无条件循环,通常配合 EXIT 使用来跳出循环。
ABAP
DO.
WRITE: / 'Hello GoYEER'.
IF sy-index > 5.
EXIT.
ENDIF.
ENDDO.
sy-index是系统变量,表示当前循环次数(从 1 开始)。- 上面的例子会输出 5 行 "Hello World"。
你也可以指定循环次数:
ABAP
DO 3 TIMES.
WRITE: / sy-index.
ENDDO.
二. WHILE...ENDWHILE 循环
当条件为真时继续循环。
ABAP
DATA: d_count TYPE i VALUE 1.
WHILE d_count <= 5.
WRITE: / d_count.
d_count = d_count + 1.
ENDWHILE.
注意:确保循环体内有使条件变为假的逻辑,否则会陷入死循环。
三. WHILE...ENDWHILE 循环
这是最常用的循环,用于遍历内表(Internal Table)
基本用法:
ABAP
DATA: it_use TYPE STANDARD TABLE OF use01,
wa_use TYPE use01.
SELECT * FROM use01 INTO TABLE it_use.
LOOP AT it_use INTO wa_use.
WRITE: / wa_use-name, wa_use-age.
ENDLOOP.
使用索引或行号:
ABAP
DATA: it_use TYPE STANDARD TABLE OF use01,
wa_use TYPE use01.
SELECT * FROM use01 INTO TABLE it_use.
LOOP AT it_use INTO wa_use FROM 1 TO 10.
...
ENDLOOP.
使用 WHERE 条件过滤:
ABAP
LOOP AT it_use INTO wa_use WHERE name = 'GY000001'.
...
ENDLOOP.
使用 REFERENCE INTO
ABAP
DATA: lr_use TYPE REF TO use01.
LOOP AT it_use REFERENCE INTO lr_use.
WRITE: / lr_use->age.
ENDLOOP.
四. 嵌套循环
ABAP 支持循环嵌套,例如:
ABAP
LOOP AT it_outer INTO wa_outer.
LOOP AT it_inner INTO wa_inner WHERE field = wa_outer-field.
...
ENDLOOP.
ENDLOOP.
五. 总结
- 使用
CONTINUE可跳过当前迭代。 - 使用
EXIT可立即退出当前循环。 - 在内表操作中,优先使用
ASSIGNING <fs>而非INTO wa,以避免不必要的数据复制,提高性能。
下一篇将着重讲解循环中的关键字。