SAP中的标准表、排序表、哈希表

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wtxhai/article/details/81178122

ABAP几种内表的操作

ABAP中有三类内表,标准表,排序表和哈希表。

标准表

标准表:关键字为STANDARD TABLE, 系统为该表的每一行数据生成一个逻辑索引。 填充标准表时,可以将数据附加在现有行之后,也可以插入到指定的位置,程序对内表行的寻址操作可通过关键字或索引进行。在对表进行插入、删除等操作时,各数据行在内存中的位置不变,系统仅重新排列各数据行的索引值。

排序表

排序表:关键字为 SORTED TABLE, 也具有一个逻辑索引,不同之处是排序表总是按其关键字升序排序后再进行存储,其访问方式与标准表相同。   

哈希表

哈希表:关键字为 HASHED TABLE, 没有索引,只能通过关键字来访问。系统用哈希算法管理表中的数据,因而其寻址一个数据行的时间和表的行数无关。

行访问方式

                                        标准表                    排序表               哈希表

索引访问                           允许                       允许                 不允许

关键字访问                       允许                       允许                  允许

相同值关键字行              可重复           可重复或不可重复       不可重复

推荐访问方式            主要通过索引        主要通过关键字        只能通过关键字 

具体到使用什么类型的内表    

   
 对于一个小于100行的内表,且很少使用关键字操作,则使用标准表没有效率问题;数据量比较巨大,切不存在重复行,只需使用关键字访问的内表应定义为哈希表;排序表适用于运行期内必须以某种排序形式出现的内表。

1. 内表的类型及定义:


( 1 ) .ANY TABLE :即任意表类型,此种定义方式只能在传递参数的时候定义。


例如: FORM XXX USING/CHANGING TYPE ANY TABLE .


( 2 ) .ANY TABLE 包括了两种类型: INDEX TABLE 和 HASHED TABLE 。


《 1 》 .INDEX TABLE :包括了 STANDARD TABLE 和 SORTED TABLE


A. STANDARD TABLE :其实就是一个线性表,通过 key 访问内表是线性查找的,也就是说,随着表中记录的增加,对表的操作的时间开销也相应的增加。


定义方法: TYPES/DATA : LIKE/TYPE STANDARD TABLE OF .


B. SORTED TABLE: 顾名思义,表中的记录是按照一定的顺序排列的。访问表的主要方式是表中定义的 key ,如果 key 不唯一,则选择 index 最小的那个。也可以通过 index 来访问排序表,如果你想通过 index 插入一条记录,系统会自动检查你插入的位置是否正确。所以,如果插入的时间比插入到标准表的时间会长。因此,尽量选择 key 来对排序表进行操作。


定义方法: TYPES/DATA : LIKE/TYPE SORTED TABLE OF .


《 2 》 .HASHED TABLE :对哈希表只能用你定义的 key 进行操作,而不能使用 index 进行操作。因此,定义哈希表必须定义 unique key 。注意:所有关于使用 index 操作表的语句都不能用于操作哈希表。例如: sort , loop 等。

猜你喜欢

转载自blog.csdn.net/wtxhai/article/details/81178122