08.[SAP ABAP] 循环结构

08.SAP ABAP 循环结构

在 ABAP(Advanced Business Application Programming)中,循环结构用于重复执行一段代码。ABAP 提供了多种循环语句,主要包括以下几种:

一. DO...ENDDO 循环

无条件循环,通常配合 EXIT 使用来跳出循环。

ABAP 复制代码
DO.
  WRITE: / 'Hello GoYEER'.
  IF sy-index > 5.
    EXIT.
  ENDIF.
ENDDO.
  • sy-index 是系统变量,表示当前循环次数(从 1 开始)。
  • 上面的例子会输出 5 行 "Hello World"。

你也可以指定循环次数:

ABAP 复制代码
DO 3 TIMES.
  WRITE: / sy-index.
ENDDO.

二. WHILE...ENDWHILE 循环

当条件为真时继续循环。

ABAP 复制代码
DATA: d_count TYPE i VALUE 1.

WHILE d_count <= 5.
  WRITE: / d_count.
  d_count = d_count + 1.
ENDWHILE.

注意:确保循环体内有使条件变为假的逻辑,否则会陷入死循环。

三. WHILE...ENDWHILE 循环

这是最常用的循环,用于遍历内表(Internal Table)

基本用法:

ABAP 复制代码
DATA: it_use TYPE STANDARD TABLE OF use01,
      wa_use TYPE use01.

SELECT * FROM use01 INTO TABLE it_use.

LOOP AT it_use INTO wa_use.
  WRITE: / wa_use-name, wa_use-age.
ENDLOOP.

使用索引或行号:

ABAP 复制代码
DATA: it_use TYPE STANDARD TABLE OF use01,
      wa_use TYPE use01.
SELECT * FROM use01 INTO TABLE it_use.      
LOOP AT it_use INTO wa_use FROM 1 TO 10.
  ...
ENDLOOP.

使用 WHERE 条件过滤:

ABAP 复制代码
LOOP AT it_use INTO wa_use WHERE name = 'GY000001'.
  ...
ENDLOOP.

使用 REFERENCE INTO

ABAP 复制代码
DATA: lr_use TYPE REF TO use01.

LOOP AT it_use REFERENCE INTO lr_use.
  WRITE: / lr_use->age.
ENDLOOP.

四. 嵌套循环

ABAP 支持循环嵌套,例如:

ABAP 复制代码
LOOP AT it_outer INTO wa_outer.
  LOOP AT it_inner INTO wa_inner WHERE field = wa_outer-field.
    ...
  ENDLOOP.
ENDLOOP.

五. 总结

  • 使用 CONTINUE 可跳过当前迭代。
  • 使用 EXIT 可立即退出当前循环。
  • 在内表操作中,优先使用 ASSIGNING <fs> 而非 INTO wa,以避免不必要的数据复制,提高性能。

下一篇将着重讲解循环中的关键字。

相关推荐
snpgroupcn11 小时前
跨国企业SAP升级解决方案(上篇):难点在哪,推广策略怎么定
sap
slacker-kian9 天前
[实践]-让 SAP 工程 Skill 脱离 opencode跑在自定义Agent 上
ai·llm·sap·agent·abap·adt·opencode
爱喝水的鱼丶9 天前
SAP-ABAP:MM 模块供应商主数据开发:字段扩展、分级管控与同步接口开发
开发语言·性能优化·接口·sap·abap·增强·经验交流
slacker-kian10 天前
本地大模型 + 自建 MCP Server + SAP OData:让 LLM 代理 SAP 业务操作
大模型·llm·sap·agent·mcp·odata
爱喝水的鱼丶11 天前
SAP-ABAP:SAP 权限控制深度解析:自定义程序与标准事务码的边界与协同
性能优化·sap·abap·权限·开发交流·交流学习
爱喝水的鱼丶13 天前
SAP-ABAP:MM 模块库存管理开发:出入库增强、批次管理与库存盘点功能开发
性能优化·sap·abap·增强·开发运维·经验交流·mm模块
goyeer13 天前
20.[SAP ABAP] DATA与TYPES异同
sap·abap·fico·fi·co·mm
爱喝水的鱼丶13 天前
SAP-ABAP:SAP MM 模块物料主数据批量导入与增强开发:字段扩展、校验逻辑与批量导入工具开发
开发语言·性能优化·sap·abap·增强·经验交流·mm
goyeer14 天前
21.[SAP ABAP] DATA关键字详解
sap·abap·fi·mm·opensql
修电脑的猫14 天前
在中国使用 Claude Code 解决 403 错误(VS CODE)
ai·sap