Jack Liang logo

【ABAP Cheat Sheets】- 01 内表(Internal Table)

头图

说明:本文是对 Github:SAP ABAP Cheat Sheets 的翻译和学习文章。


简介

内部表 …

⬆️ 回到顶部

内表的基本属性

🟢 点击展开查看更多详情

行类型

  • 定义内部表中每一行的结构,即描述该表包含哪些列。
  • 可以是任意 ABAP 数据类型,例如基础数据类型、复合数据类型,也可以是引用类型
  • 多数情况下,行类型采用结构化类型。此时,每行的独立组件也被称为内部表中的列。
  • 简单情况下,行由包含基础数据对象的扁平结构组成;但也可以采用深度结构,其组件既可以是结构体,也可以是内部表。

表类别

  • 定义内部表的管理和存储方式,以及如何访问单个表条目。
  • 为何重要?选用合适的表类别应能满足您的需求,即当内部表数据量较大时,不同类别在访问表内容时可能存在显著的性能差异。
  • 注意:访问内部表有两种方式:
    • 通过表索引访问:通过行号访问内表的某一行。这种访问方式是访问表行的最快方式。
    • 通过表键访问:通过在特定列中搜索特定值来访问内表的某一行。注意:搜索的列可以是键列,也可以是非键列。
类别由内部管理访问主表键使用时机提示
STANDARD表索引(这也是这类表被称为索引表的原因)
  • 表索引
  • 表键
  • 始终为非唯一键,即始终允许存在重复条目
  • 若键不相关,可定义空键(WITH EMPTY KEY)
  • 主要场景:通过顺序处理或表索引访问表内容时。
  • 使用主键访问表的响应时间:此类表访问仅针对排序表和哈希表进行了优化。对于标准表,主键访问会遍历所有表行进行线性搜索。这意味着当主要通过表键访问表时,包含超过 100 行的标准表并非理想选择。
SORTED主表索引(这就是为什么这些表被称为索引表的原因)。
  • 表索引
  • 表键
  • 非唯一
  • 唯一

  • … 用于按升序对表进行排序。
  • 通过表键和索引实现对表内容的优化访问。
  • 如果通过表键访问是主要访问方式,但无法定义唯一键。
  • 在插入或删除行时会自动进行排序。因此,表的索引通常需要进行重组。
  • 使用主键访问表的响应时间取决于表条目数的对数,因为采用了二分查找算法。
  • 标准表和排序表的管理开销最低。
HASHED哈希算法始终唯一
  • 适用于大型内部表。
  • 针对键访问进行了优化。通过表键访问表内容是主要的访问方式,可以定义唯一键。
  • 主键访问的响应时间是恒定的,且与表中的条目数量无关。
  • 哈希表的管理开销最高。

关键属性

  • 表键有两种类型:主表键辅助表键
  • 表键…
    • 旨在提供对内部表内容的优化访问。
    • 键可以是唯一或非唯一的,即内部表中可以存在或不存在具有相同键的多行(重复行)。对于主表键,其定义取决于表类别。对于辅表键,其定义取决于键类型。对于标准表,主表键也可以定义为空,即不包含任何键列。请注意,对于标准表,只有使用辅表键才能实现优化访问。
  • 键的类型:
  • 排序键:
    • 可以是排序表的主表键,也可以是任何表的次表键。
    • 在内部通过表索引进行管理。对于排序表,这是主表索引。对于次表键,则会额外添加一个次表索引。
    • 通过排序键进行访问意味着采用优化的二分查找。
  • 哈希键:
    • 可以是哈希表的主表键,也可以是任何表的辅助表键。
    • 内部通过哈希算法进行管理。
    • 哈希键没有表索引。

更多信息

⬆️ 回到顶部

持续更新中……