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
相关推荐
Henry-SAP5 小时前
SAP S/4HANA引领物流ERP新生态
人工智能·云原生·sap·erp
rm -rf * && haha.sh1 天前
【ABAP】SUBMIT 用法详解
sap·abap·abap开发
爱喝水的鱼丶2 天前
SAP-ABAP:性能优化效果验证与回归测试:优化前后性能对比、业务逻辑兼容性校验方案
性能优化·sap·abap·回归测试·开发交流·交流学习
Henry-SAP2 天前
SAP MRP类型如何影响计划订单生成
人工智能·云原生·sap·erp
爱喝水的鱼丶3 天前
SAP-ABAP:接口与报表场景专项优化:RFC/ODATA 接口、ALV 报表的性能提升方案
运维·性能优化·接口·sap·abap·rfc·经验交流
爱喝水的鱼丶7 天前
SAP-ABAP:SAP性能分析核心工具入门——ST05/SAT/ST12等常用事务码的基础用法解析
性能优化·sap·abap·性能分析·开发交流·交流学习
xlxxy_10 天前
外部系统调用SAP接口遇到的一些报错
开发语言·数据库·sap·abap
爱喝水的鱼丶11 天前
SAP-ABAP:调试器高级工具使用——内表分析、SQL追踪、内存检查功能实操
运维·sql·性能优化·sap·abap·经验交流
爱喝水的鱼丶15 天前
SAP-ABAP:SAP 实战笔记:BAPI_OUTB_DELIVERY_CONFIRM_DEC 详解——外向交货单过账的利器
运维·性能优化·sap·abap·经验交流
爱喝水的鱼丶18 天前
SAP-ABAP:SELECT大数据量查询性能调优——避免嵌套循环、减少数据库交互的核心方案
开发语言·数据库·sql·性能优化·sap·abap·erp