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 使用场景 最通用,需索引访问,数据量不大 需要按固定键频繁读取且保持顺序 仅通过唯一键进行极频繁的读取,数据量大

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

相关推荐
Henry-SAP21 小时前
SAP MRP关键参数业务视角解析
sap·erp
Henry-SAP5 天前
SAP MPS主生产计划,BOM分解物料结构,库存资源业务关系解析.
sap·erp
Jack.Huangjh5 天前
SAP ODATA
abap
Henry-SAP7 天前
SAP UI5中DOMParser解析XML关键步骤
sap·erp
Henry-SAP7 天前
SAP(ERP)客户订单与预测需求如何影响MRP净需求.
sap·erp
Henry-SAP9 天前
SAP Target mapping目标映射本质
sap
山茶花开时。23 天前
[SAP] SAP MM模块学习路径
sap·mm
stone08231 个月前
SAP - 使用CL_FDT_XL_SPREADSHEET将Excel文档导入到内表
sap
雨天行舟1 个月前
abap调用deepseek接口 v3.0
http·ai·sap·abap·聊天·deepseek
stone08231 个月前
SAP FICO程序 - 会计科目余额报表
sap