
ABAP 中的循环在一个多次执行的代码块中定义。
最简单的循环形式由语句 DO – ENDDO 包围的代码块组成。如果没有进一步措施,这些语句可以建立无限循环,必须避免以下一种可能性:
- 指定的循环数
- 通过使用后跟关键字 TIMES 的整数表达式扩展 DO 语句,可以明确指定代码块的处理频率。整数表达式可以像数字文字一样简单,但也可以使用算术计算。如果表达式的值等于 0,则 DO 和 ENDDO 之间的代码块根本不会执行,并且程序会立即在 ENDDO 后继续使用该代码。
- 基于逻辑条件中止
- 您可以随时使用 EXIT 语句中止循环。然后,程序在 ENDDO 后继续使用该代码。请注意,在循环 EXIT 之外,会产生不同的影响。在此,它会终止当前处理块(例如,当前方法)的处理。
通常,EXIT 由 IF 和 ENDIF 括起来,以根据中止条件终止循环。请注意,如果中止条件从不为 true,则此类循环可以变成无限循环。
当然,可以结合这两种技术,即显式指定循环数,然后用 EXIT 退出循环。因此,循环数成为运行时可能无法达到的最大数量。
在 DO 和 ENDDO 之间的代码块中,可以实施对 ABAP 内置数据对象 SY-INDEX 的读取访问。此整数变量用作循环计数器,即 ABAP 运行时在每个新循环开始时将变量增加 1。
ABAP 内置变量 SY-TABIX 可实现类似的循环目的。但请注意,SY-TABIX 实际上不是计数器,但它标识在当前循环中处理的表行的位置。