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
相关推荐
S4HANA云13 天前
S/4HANA Public Cloud 权限问题自主排查指南
sap·s/4hana cloud·su53
修电脑的猫14 天前
LSMW target field DATAM mapped as CHAR1, length 1 in table /SAPDMC/LSGBDC
sap·abap
duangww14 天前
ALV通过GOS服务实现上传PDF附件
abap·附件
爱喝水的鱼丶14 天前
SAP-ABAP:SAP表与视图权限管控方案:表维护权限、视图访问权限配置实操
运维·数据库·性能优化·sap·abap·权限·表和视图
Henry-SAP15 天前
SAP MRP 增强自定义业务功能解析
人工智能·sap·erp
爱喝水的鱼丶17 天前
SAP-ABAP:SAP视图开发入门:四类标准视图的适用场景与创建步骤详解
服务器·数据库·性能优化·sap·abap
云道轩18 天前
Oracle Fusion Cloud Applications Suite 与 SAP S/4HANA 全方位对比
oracle·sap·业务套件
爱喝水的鱼丶18 天前
SAP-ABAP:SAP多表连接视图实战:内连接/外连接配置逻辑与性能优化技巧
运维·开发语言·学习·性能优化·sap·abap
Slow、19 天前
PPDS生产计划执行-反冲扣料
sap·apo
Slow、21 天前
PPDS生产计划排产-MRP运行
sap·apo