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

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

相关推荐
爱喝水的鱼丶7 小时前
SAP-ABAP:SAP 权限控制深度解析:自定义程序与标准事务码的边界与协同
性能优化·sap·abap·权限·开发交流·交流学习
爱喝水的鱼丶2 天前
SAP-ABAP:MM 模块库存管理开发:出入库增强、批次管理与库存盘点功能开发
性能优化·sap·abap·增强·开发运维·经验交流·mm模块
goyeer3 天前
20.[SAP ABAP] DATA与TYPES异同
sap·abap·fico·fi·co·mm
爱喝水的鱼丶3 天前
SAP-ABAP:SAP MM 模块物料主数据批量导入与增强开发:字段扩展、校验逻辑与批量导入工具开发
开发语言·性能优化·sap·abap·增强·经验交流·mm
goyeer3 天前
21.[SAP ABAP] DATA关键字详解
sap·abap·fi·mm·opensql
修电脑的猫4 天前
在中国使用 Claude Code 解决 403 错误(VS CODE)
ai·sap
Henry-SAP4 天前
SAP PP模块核心机制解析
人工智能·云原生·sap·erp
ChampaignWolf7 天前
在 SAP S/4HANA 内部基于 ICF Handler 从零实现 ABAP MCP Server:架构、代码与踩坑实录
c++·架构·sap·abap·mcp
slacker-kian7 天前
[实践]-本地大模型 + MCP + Agent 对接 SAP OData API 实现Web Chart APP
ai·llm·sap·agent·mcp·odata·chart bot
ChampaignWolf7 天前
YAAI 生态一周年:把 ABAP 变成 Agent 工具栈的开源组合拳
开源·abap·mcp·开源ai·yaai