
- SAP ABAP 教程
- SAP ABAP - 首页
- SAP ABAP - 概述
- SAP ABAP - 环境
- SAP ABAP - 屏幕导航
- SAP ABAP - 基本语法
- SAP ABAP - 数据类型
- SAP ABAP - 变量
- SAP ABAP - 常量和字面量
- SAP ABAP - 运算符
- SAP ABAP - 循环控制
- SAP ABAP - 决策
- SAP ABAP - 字符串
- SAP ABAP - 日期和时间
- SAP ABAP - 数据格式化
- SAP ABAP - 异常处理
- SAP ABAP - 字典
- SAP ABAP - 数据域
- SAP ABAP - 数据元素
- SAP ABAP - 表格
- SAP ABAP - 结构
- SAP ABAP - 视图
- SAP ABAP - 搜索帮助
- SAP ABAP - 锁定对象
- SAP ABAP - 模块化
- SAP ABAP - 子程序
- SAP ABAP - 宏
- SAP ABAP - 函数模块
- SAP ABAP - 包含程序
- SAP ABAP - Open SQL 概述
- SAP ABAP - Native SQL 概述
- SAP ABAP - 内部表
- SAP ABAP - 创建内部表
- ABAP - 填充内部表
- SAP ABAP - 复制内部表
- SAP ABAP - 读取内部表
- SAP ABAP - 删除内部表
- SAP ABAP - 面向对象
- SAP ABAP - 对象
- SAP ABAP - 类
- SAP ABAP - 继承
- SAP ABAP - 多态
- SAP ABAP - 封装
- SAP ABAP - 接口
- SAP ABAP - 对象事件
- SAP ABAP - 报表编程
- SAP ABAP - 对话编程
- SAP ABAP - 智能表单
- SAP ABAP - SAPscript
- SAP ABAP - 客户出口
- SAP ABAP - 用户出口
- SAP ABAP - 业务附加功能
- SAP ABAP - Web Dynpro
- SAP ABAP 有用资源
- SAP ABAP - 问答
- SAP ABAP - 快速指南
- SAP ABAP - 有用资源
- SAP ABAP - 讨论
SAP ABAP - 读取内部表
我们可以使用以下 READ TABLE 语句的语法读取表的行:
READ TABLE <internal_table> FROM <work_area_itab>.
在此语法中,<work_area_itab> 表达式表示一个与<internal_table> 表的行类型兼容的工作区。我们可以使用 WITH KEY 子句在 READ 语句中指定搜索键,但不能指定表键,如下面的语法所示:
READ TABLE <internal_table> WITH KEY = <internal_tab_field>.
这里,内部表的整行用作搜索键。表的整行的内容与<internal_tab_field> 字段的内容进行比较。如果<internal_tab_field> 字段的值与表的行类型不兼容,则会根据表的行类型转换这些值。搜索键允许您查找内部表中没有结构化行类型的条目,即行是单个字段或内部表类型的情况。
以下 READ 语句的语法用于使用 COMPARING 子句指定工作区或字段符号:
READ TABLE <internal_table> <key> INTO <work_area_itab> [COMPARING <F1> <F2>...<Fn>].
使用 COMPARING 子句时,指定的结构化行类型的表字段<F1>、<F2>…<Fn>会在传输之前与工作区的相应字段进行比较。如果指定了 ALL FIELDS 子句,则 SAP 系统会比较所有组件。当 SAP 系统根据键找到条目时,SY-SUBRC 变量的值将设置为 0。此外,如果比较字段的内容不相同或 SAP 系统找不到条目,则 SY-SUBRC 变量的值将设置为 2 或 4。但是,无论比较结果如何,只要 SAP 系统找到条目,就会将条目复制到目标工作区。
示例
REPORT ZREAD_DEMO. */Creating an internal table DATA: BEGIN OF Record1, ColP TYPE I, ColQ TYPE I, END OF Record1. DATA mytable LIKE HASHED TABLE OF Record1 WITH UNIQUE KEY ColP. DO 6 Times. Record1-ColP = SY-INDEX. Record1-ColQ = SY-INDEX + 5. INSERT Record1 INTO TABLE mytable. ENDDO. Record1-ColP = 4. Record1-ColQ = 12. READ TABLE mytable FROM Record1 INTO Record1 COMPARING ColQ. WRITE: 'SY-SUBRC =', SY-SUBRC. SKIP. WRITE: / Record1-ColP, Record1-ColQ.
以上代码产生以下输出:
SY-SUBRC = 2 4 9
在上面的示例中,mytable 是散列表类型的内部表,Record1 作为工作区,ColP 作为唯一键。最初,mytable 填充了六行,其中 ColP 字段包含 SY-INDEX 变量的值,ColQ 字段包含 (SY-INDEX + 5) 值。
Record1 工作区分别填充了 ColP 和 ColQ 字段的值 4 和 12。READ 语句通过使用 COMPARING 子句将 ColP 键字段的值与 Record1 工作区中的值进行比较后读取表的行,然后将读取的行内容复制到工作区中。SY-SUBRC 变量的值显示为 2,因为当 ColP 字段中的值为 4 时,ColQ 中的值不是 12,而是 9。