内表在ABAP开发中非常重要,这是一段连续的内存区域,今天我们先从内表的种类上对内表进行分类介绍。
一,STANDARD TABLE
这类内表在ABAP开发中用的最为广泛,一般程序中的内表都是定义为该类型的内表。它对所存储的数据无任何要求,也不会主动进行任何操作(如排序等),可以像操作EXCEL一样操作内表数据而不受约束(如出现重复数据);系统内部通过PRIMARY TABLE INDEX 管理内表;
定义使用语句:
DATA: SPFLI_TAB TYPE STANDARD TABLE OF SPFLI.
二,SORT TABLE
SORT TABLE 与STANDARD TABLE 的差别体现在两个方面:1,SORT TABLE需要指定一个KEY(唯一/不唯一);2,内表中的数据始终根据指定的KEY做升序排列。如果指定了唯一的KEY,那内表的中的数据按KEY纬度不能存放重复数据,任何尝试存放的动作均会DUMP。系统内部通过PRIMARY TABLE INDEX 管理内表。
定义使用语句:
DATA: SPFLI_TAB TYPE SORTED TABLE OF SPFLI WITH NON-UNIQUE KEY CARRID CONNID.
DATA: SPFLI_TAB TYPE SORTED TABLE OF SPFLI WITH UNIQUE KEY CARRID CONNID.
三,HASH TABLE
HASH TABLE通过HASD算法进行内部管理,内表数据没有进行拍讯,必须指定KEY,而且KEY必须唯一。
定义使用语句:DATA: SPFLI_TAB TYPE HASHED TABLE OF SPFLI WITH UNIQUE KEY CARRID CONNID.
从上面可以看出,STANDARD 和 SORT TABLE 也称为 INDEX TABLE ,都通过PRIMARY TABLE INDEX进行内部管理。不同类型内表在选用的时候,STANDARD TABLE 无任何门槛;SORT TABLE 如果指定了唯一的KEY,则不能用重复数据,HASH TABLE 同样。在内表数据特别的时候,通常选用HASH TABLE 提高检索的性能。