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
相关推荐
爱喝水的鱼丶1 天前
SAP-ABAP:一次关于“交货日期”的增强需求:从复杂增强到标准功能的回归之旅
运维·开发语言·性能优化·sap·abap·经验交流
爱喝水的鱼丶2 天前
SAP-ABAP:ALV通用封装实践——搭建可复用的ALV开发工具类,减少80%重复代码
开发语言·性能优化·sap·abap·erp·alv
爱喝水的鱼丶2 天前
SAP-ABAP:ALV跨版本兼容指南——适配ECC与S4 HANA系统的ALV开发注意事项
开发语言·性能优化·sap·abap·经验交流
爱喝水的鱼丶6 天前
SAP-ABAP:ALV数据导出增强——实现Excel/PDF/CSV多格式自定义导出
开发语言·性能优化·sap·abap·erp
海阔天空0927 天前
ABAP 网页端 通用配置表维护程序
abap
xlxxy_8 天前
sap获取批次特性报表
java·linux·开发语言·前端·数据库·abap·mm
爱喝水的鱼丶8 天前
SAP-ABAP:ALV字段布局定制全攻略——快速适配业务端个性化展示需求
运维·性能优化·sap·abap·经验交流·alv报表
在海边看星星11 天前
SAP 邮编管理
sap
爱喝水的鱼丶18 天前
SAP-ABAP:接口 vs 抽象类:ABAP OOP两类扩展方式的差异与选型原则
运维·性能优化·sap·abap·erp·经验交流
S4HANA云1 个月前
S/4HANA Public Cloud 权限问题自主排查指南
sap·s/4hana cloud·su53