【ABAP Cheat Sheets】- 01 内表(Internal Table)
说明:本文是对 Github:SAP ABAP Cheat Sheets 的翻译和学习文章。
- 简介
- 创建内表和类型
- 填充内表
- 从内表中读取单行
- 通过表表达式访问单行
- 顺序处理多行内表
- 修改内表内容
- 删除内部表内容
- 对内表进行排序
- 分组内表
- 收集值
- 获取关于内表、表行、表类型的信息
- 使用 ABAP SQL SELECT 语句对内部表进行操作
- 补充说明
- 更多信息
- 可执行示例
简介
内部表 …
- 是在 ABAP 工作内存中临时存储可变数据(即任意行数、固定结构的表行)的表。
- 是动态数据对象,即内存消耗之外的所有属性均由数据类型静态确定。
- 由同一数据类型组成的可变行序列。
- 其数据类型为表类型(一种复杂数据类型),该类型定义了以下属性:
- 当需要以结构化方式处理任意数据类型的可变数据集时使用,例如,在 ABAP 程序中存储和处理数据库表内容。
- 允许通过表索引或表键访问单个表行。
内表的基本属性
🟢 点击展开查看更多详情
行类型
- 定义内部表中每一行的结构,即描述该表包含哪些列。
- 可以是任意 ABAP 数据类型,例如基础数据类型、复合数据类型,也可以是引用类型。
- 多数情况下,行类型采用结构化类型。此时,每行的独立组件也被称为内部表中的列。
- 简单情况下,行由包含基础数据对象的扁平结构组成;但也可以采用深度结构,其组件既可以是结构体,也可以是内部表。
表类别
- 定义内部表的管理和存储方式,以及如何访问单个表条目。
- 为何重要?选用合适的表类别应能满足您的需求,即当内部表数据量较大时,不同类别在访问表内容时可能存在显著的性能差异。
- 注意:访问内部表有两种方式:
- 通过表索引访问:通过行号访问内表的某一行。这种访问方式是访问表行的最快方式。
- 通过表键访问:通过在特定列中搜索特定值来访问内表的某一行。注意:搜索的列可以是键列,也可以是非键列。
| 类别 | 由内部管理 | 访问 | 主表键 | 使用时机 | 提示 |
|---|---|---|---|---|---|
STANDARD | 表索引(这也是这类表被称为索引表的原因) |
|
|
|
|
SORTED | 主表索引(这就是为什么这些表被称为索引表的原因)。 |
|
… 用于按升序对表进行排序。 |
|
|
HASHED | 哈希算法 |
| 始终唯一 |
|
|
关键属性
- 表键有两种类型:主表键 和 辅助表键。
- 表键…
- 旨在提供对内部表内容的优化访问。
- 键可以是唯一或非唯一的,即内部表中可以存在或不存在具有相同键的多行(重复行)。对于主表键,其定义取决于表类别。对于辅表键,其定义取决于键类型。对于标准表,主表键也可以定义为空,即不包含任何键列。请注意,对于标准表,只有使用辅表键才能实现优化访问。
- 键的类型:
- 排序键:
- 可以是排序表的主表键,也可以是任何表的次表键。
- 在内部通过表索引进行管理。对于排序表,这是主表索引。对于次表键,则会额外添加一个次表索引。
- 通过排序键进行访问意味着采用优化的二分查找。
- 哈希键:
- 可以是哈希表的主表键,也可以是任何表的辅助表键。
- 内部通过哈希算法进行管理。
- 哈希键没有表索引。
更多信息