18.[SAP ABAP] 内表(Internal Table)

18.[SAP ABAP] 内表(Internal Table)

文章目录

一、概述

内表 是ABAP编程语言中最核心、最强大的数据结构之一。它相当于其他编程语言中的"数组"、"列表"或"集合",但功能更为丰富。

内表是存在于ABAP程序运行期间(内存中)的一个临时表,用于处理和存储数据。它与数据库结构对应,是ABAP中进行数据操作的主要工具。

二、基本概念

  • 内表由行组成,每行具有相同的结构(即行类型)。
  • 内表只存于内存中,程序结束后自动释放。
  • 内表的行可以是带表头(Header Line)或不带表头(推荐使用不带表头的方式)。
  • 内表必须先定义,然后才能使用。

三、内表的类型

1.标准表

  • **特点:**拥有一个逻辑索引。系统会自动为每一行维护一个从1开始的索引号。这是最常用,最通用的内表类型。
  • **访问方式:**既可以通过索引快速访问,也可以通过键访问,但通过键访问时,系统会执行线程搜索,对于大数量可能较慢。
  • **声明关键字:**STANDARD TABLE
ABAP 复制代码
DATA:gt_material TYPE STANDARD TABLE OF mara. "标准表,存储物料主数据
     gs_material LIKE LINE OF gt_material.

2.排序表

  • **特点:**拥有一个逻辑索引,并且表中的行始终按照其主键自动升序排序。插入数据时会自动找到正确位置插入,以维持排序。
  • **访问方式:**既可以通过索引访问,也可以通过键访问。由于是排序的,通过键访问时使用二分查找算法,速度非常块。
  • **声明关键字:**SORTED TABLE。
ABAP 复制代码
DATA: gt_customer TYPE SORTED TABLE OF kna1
                   WITH UNIQUE KEY kunnr, " 主键为客户编号,且唯一
      gs_customer LIKE LINE OF gt_customer.

3.哈希表

  • **特点:**没有逻辑索引。访问完全依赖于其主键。主键必须是唯一的。
  • **访问方式:**只能通过键访问。其内部使用哈希算数管理,因此通过键访问的速度是恒定,极快,与数据量大小无关。
  • **声明关键字:**HASHED TABLE。
ABAP 复制代码
DATA:gt_currency TYPE HASHED TABLE OF t002
                  WITH UNIQUE KEY waers,"主键为货币代码,且唯一
      gs_currency LIKE LINE OF gt_currency.

四、总结

序号 特性 标准表 排序表 哈希表
1 索引 有,逻辑索引 有,逻辑索引
2 排序 按插入顺序 始终按主键排序 无特定顺序
3 主键 可选,可非唯一 必须,可唯一/非唯一 必须,且唯一
4 键访问 线性搜索 二分查找(快) 哈希算法(极快)
5 使用场景 最通用,需索引访问,数据量不大 需要按固定键频繁读取且保持顺序 仅通过唯一键进行极频繁的读取,数据量大

选择建议 : 如果不确定,优先使用标准表 。当需要频繁通过一个键查找且数据量较大时,考虑排序表 。当需要通过唯一键进行海量数据的极速查找时,使用哈希表

相关推荐
duangww2 天前
测试SAP的接口账号密码
abap
独行的猎人2 天前
SAP ABAP RANGE OF
sap·abap
goyeer2 天前
16.[SAP ABAP] ABAP中日期与时间
sap·abap
goyeer4 天前
15.[SAP ABAP] ABAP中的TYPES(自定义类型)
sap·abap
山茶花开时。4 天前
[SAP ABAP] 删除内表重复行数据
sap·abap
爱喝水的鱼丶5 天前
SAP-ABAP:通过接口创建生产订单报“没有工艺路线选中”错误解决办法详解
运维·开发语言·sap·abap·bapi·生产订单
duangww6 天前
SAPUI5消费OData例子
abap
goyeer6 天前
14.[SAP ABAP] MESSAGE 消息
sap·abap
abap帅哥6 天前
SAP MIRO/MIR4付款条件消失 :设计逻辑、根本原因与终极解决方案
数据库·后端·sap·abap·erp