ABAP 辨析 标准表|排序表|哈希表
1、文档介绍
本文档将介绍内表的区别和用法,涉及标准表、排序表、哈希表
2、用法与区别
2.1、内表种类
内表顶层为任意表,任意表分为索引表和哈希表,索引表又可分为标准表和排序表,结构如图:
2.2、内表用法
2.2.1、标准表
说明:标准表的每一行会有一个逻辑索引,查找数据时,可以通过关键字或索引进行查找;添加数据时,可通过索引添加到具体位置,也可以默认添加到最后
对表进行插入、删除等操作时,各数据行在内存中的位置不变,系统仅重新排列各数据行的索引值。
语法:STANDARD TABLE,现在ABAP版本可以省略STANDARD 关键字,默认定义的内表即为标准表
DATA:lt_ekpo TYPE STANDARD TABLE OF ty_ekpo.
定义关键字段:默认为本行非数字,非内表的字段为关键字。
还可以通过语法:WITH NON-UNIQUE KEY ebeln ebelp.定义关键字(非必要)
DATA:lt_ekpo TYPE STANDARD TABLE OF ty_ekpo WITH NON-UNIQUE KEY ebeln ebelp.
NON-UNIQUE | UNIQUE :(非特有|特有)代表内表中定义的关键字的数据行是否能重复出现,UNIQUE代表相同关键字字段的行不能重复出现。
因为标准表允许出现重复数据,因此,标准表中不允许使用UNIQUE KEY。
读取效率:消耗时间随表行数呈线性增长。
2.2.2、排序表
说明:每行数据也具有一个逻辑索引,并且总是按其关键字升序排序后再进行存储,其访问方式与标准表相同。
语法:SORTED TABLE
DATA:lt_sort TYPE SORTED TABLE OF ty_ekpo WITH NON-UNIQUE KEY ebeln ebelp.
定义关键字段:可使用NON-UNIQUE | UNIQUE
读取效率:系统使用二分法查找,消耗时间随表行数呈对数级增长。
2.2.3、哈希表
说明:没有索引,只能通过关键字来访问。
语法:HASHED TABLE
DATA:lt_hash TYPE HASHED TABLE OF ty_ekpo WITH UNIQUE KEY ebeln ebelp.
定义关键字段:哈希表关键字对应的行不允许重复,因此只能使用UNIQUE
读取效率:系统用哈希算法管理表中的数据,因此查询一行数据的时间和表的行数无关。
2.2.4、访问方式
根据数据预计的行数和访问频率,来决定使用什么类型的内表:
1、数据量少于100行,很少使用关键字操作,使用标准表没效率问题;
2、运行期间必须以某种排序形式出现的内表,使用排序表;
3、数据量较大,且不存在重复行,只需要使用关键字访问的内表,则定义哈希表;
定期更文,欢迎关注