09.[SAP ABAP] 终止循环



09.[SAP ABAP] 终止循环

文章目录

  • [09.[SAP ABAP] 终止循环](#09.[SAP ABAP] 终止循环)
    • [一. EXIT](#一. EXIT)
    • [二. CONTINUE](#二. CONTINUE)
    • [三. CHECK](#三. CHECK)
      • [1. 事件块中](#1. 事件块中)
      • [2. 子程序或方法中](#2. 子程序或方法中)
      • [3. 在循环中(常用于过滤)](#3. 在循环中(常用于过滤))
      • [四. 总结](#四. 总结)

ABAP 中,循环语句的终止主要通过以下几种方式实现,具体取决于你使用的循环类型( DOWHILELOOP AT)以及业务逻辑需求。

终止循环语句可以使用以下3个关键字:

关键字 功能描述
EXIT 完全跳出循环
CONTINUE 无条件的终止当前循环并进行下一次循环
CHECK 有条件的终止当前循环并进行下一次循环

一. EXIT

如果循环语句中存在EXIT,当执行到EXIT时,将终止之后的所有循环 。

  • 作用: 跳出最内层的循环(DO/WHILE/LOOP AT) , 继续执行循环之后的代码。
  • 相当于其他语言中的break.
ABAP 复制代码
DO 10 TIMES.
  IF sy-index > 5.
    EXIT. " 循环到第6次时退出
  ENDIF.
  WRITE: / sy-index.
ENDDO.

在嵌套循环中,EXIT 只退出当前所在的循环层。

二. CONTINUE

  • **作用:**不终止整个循环,但跳过当前循环体中剩余语句,直接开始下一次迭代。
  • 相当于其他语言中的 continue
ABAP 复制代码
DO 5 TIMES.
  IF sy-index = 3.
    CONTINUE. " 跳过第3次
  ENDIF.
  WRITE: / sy-index.
ENDDO.

三. CHECK

CHECK 是一个非常常用且强大的流程控制语句 ,用于条件判断和提前退出当前处理块(如事件块、子程序、循环体等)。

  • 条件为真(TRUE) :继续执行后续代码。
  • 条件为假(FALSE):直接退出当前上下文

1. 事件块中

ABAP 复制代码
START-OF-SELECTION.
  CHECK sy-subrc = 0.        " 如果前面 SELECT 失败(sy-subrc ≠ 0),则不继续
  WRITE: / 'Processing data...'.

2. 子程序或方法中

ABAP 复制代码
FORM validate_input.
  CHECK input IS NOT INITIAL.
  WRITE: / 'Input is valid'.
  " ... 其他处理
ENDFORM.

3. 在循环中(常用于过滤)

ABAP 复制代码
LOOP AT it_spfli INTO wa_spfli.
  CHECK wa_spfli-carrid = 'LH'.   " 只处理 LH 航空公司
  WRITE: / wa_spfli-connid.
ENDLOOP.

四. 总结

场景 推荐写法 说明
循环中跳过不符合条件的行 CHECK condition. 更简洁,可读性高
需要复杂逻辑(如 ELSE 分支) IF ... ENDIF. CHECK不支持ELSE
退出整个子程序 CHECK condition.IF NOT condition. RETURN. ENDIF. 两者等效
仅退出循环 不要用 CHECK(它不会退出整个循环,只会跳过当前轮次) 此时用 EXIT
相关推荐
郭阿伟2 天前
会计核算 外币评估范围
sap
goyeer3 天前
07. [SAP ABAP] CASE控制语句
sap·abap
SAP Hua4 天前
SAP ALV 介绍以及一个简单且完整的报表快速开发
sap·alv
山茶花开时。5 天前
[SAP ABAP] CONVERSION_EXIT_ALPHA_INPUT
sap·abap
EasyStudios6 天前
金色传说:SAP-ABAP-Excel数据导入工具函数示例
sap·abap·excel导入
EasyStudios7 天前
金色传说:SAP-ABAP-交货单创建及过账工具类示例
sap·abap·工具类·se24·交货单bapi
goyeer10 天前
05.[SAP ABAP] ABAP中的运算符
算法·sap·abap·运算符
爱喝水的鱼丶24 天前
SAP-ABAP:SAP概述:数据处理的系统、应用与产品
运维·学习·sap·abap·1024程序员节
1314lay_100725 天前
SAP ABAP 导入excel表,导多个sheet
excel·abap