在很多 ABAP 项目里,内表声明常见到一种几乎条件反射式的写法:TYPE TABLE OF ...。它看起来简洁,跑起来也没立刻出问题,于是就被一代代复制粘贴,直到某天你把代码挪进面向对象的接口、RAP 行为实现、或一个对性能敏感的批处理里,问题才像积木塌方一样一起出现:类型不够明确、查找越来越慢、意外的排序与去重行为、ATC 或 Code Inspector 开始报警……
内表本质上是 ABAP 运行时里最核心的数据结构之一。把它的Table Category和Key设计好,往往比你在循环里抠一行IF更能决定系统的可维护性与性能表现。
下面就用一条主线把事情讲清楚:内表不只是TYPE TABLE,更重要的是你为它选择了什么 Key。
内表到底有哪几种类型:Standard、Sorted、Hashed
ABAP 里常用的内表类型就三类:
STANDARD TABLE:按插入顺序维护主索引,允许重复行,Key 访问不做专门优化,更像可增长的数组SORTED TABLE:按 Key 有序维护,允许NON-UNIQUE或UNIQUE,适合按范围与顺序访问HASHED TABLE:按 Hash Key 管理,要求UNIQUE