SAP ABAP 内表及其声明(标准表/排序表/哈希表、内表操作、清空内表)

1.概述:内表是程序运行过程中创建的存储空间,是内存中建立的临时表,程序结束后,会被释放。可对内表执行插入、修改和删除操作。

 

2.分类:

表名

说明

效率

语法

标准表

在增加或插入数据行时不对数据行的地址进行重新排序,包含index,可通过index和key查找,只能包含non unique key,key可为

效率取决于表的行,随行数线性增加

TYPE TABLE OF、TYPE STANDARD TABLE OF

 

排序表

在增加或插入数据行时对数据行的地址进行重新排序,包含index,可通过index和key查找,可包含unique和non unique key,key必需;具有自动排序功能,所以SORT关键字对其没有任何意义,还会导致编译错误

效率取决于表的行数,随行数对数级增长

TYPE SORTED TABLE OF

哈希表

只能通过关键字访问,在检索数据里与数据行数无关,不包含index,只能通过key查找,只能包含unique key,key必需

效率与行数无关,数据量大的情况下使用关键字查询时最快的

 

TYPE HASHED TABLE OF

 

 

示例:

TYPES:BEGIN OF TY_STU,

        ID TYPE N,

              NAME TYPE STRING,

              AGE TYPE I,

      END OF TY_STU.

表名

示例

注意

标准表

DATA GT_STU1 TYPE STANDARD TABLE OF TY_STU.

只能使用NON-UNIQUE,可以省略

排序表

DATA GT_STU2 TYPE SORTED TABLE OF TY_STU WITH UNIQUE KEY ID.

是否可以存储重复的,取决于定义时指定的KEY类型是UNIQUE还是NON-UNIQUE

哈希表

DATA GT_STU3 TYPE HASHED TABLE OF TY_STU WITH UNIQUE KEY ID.

只能使用UNIQUE,不能省略

3.内表操作:

操作类型

说明

语法

APPEND

追加数据(哈希表不支持)

① LOOP AT ITAB1

              APPEND ITAB1 TO ITAB2.

       ENDLOOP.

②APPEND LINES OF ITAB1 TO ITAB2.

INSERT

①标准表:与APPEND效果一样;排序表:根据关键字插入合适位置;哈希表:通过哈希算法根据关键字计算出插入的位置。②向UNIQUE的排序表/哈希表插入重复的数据,数据不会插入成功,不抛异常

① INSERT WA INTO TABLE ITAB.

② INSERT LINES OF ITAB1 INTO ITAB2.

DELETE

 

①删除单行:TABLE KEY(NON-UNIQUE类型的表,当查找多条时,只会删除第一条)②删除多行:WHERE③删除临近重复行:ADJACENT DUPLICATE

DELETE ITAB.

READ

标准表:顺序查找;排序表:二分查找;哈希表:根据哈希算法查找

READ TABLE ITAB INTO WA.

 

CHANGE

 

MODIFY TABLE ITAB FROM WA

 

COLLECT

内表分类汇总

①COOLECT <work area> INTO ITAB.

②COOLECT ITAB.

MODIFY

①修改单条记录:TABLE KEY(NON-UNIQUE类型的表,当查找多条时,只会修改第一条)②修改多条记录:WHERE

①根据索引:MODIFY ITAB FROM WA INDEX IDX.

②根据关键字段:MODIFY TABLE ITAB FROM WA.

AT

内表的第一行触发

AT FIRST.

   ……

ENDAT.

内表的最后一行触发

AT LAST.

   ……

ENDAT.

按内表列F,列的左边发生改变时触发(可用于按年、月、日统计)

AT NEW F.

   ……

ENDAT.

按内表列F,列的右边发生改变时触发

AT END OF F.

   ……

ENDAT.

SORT

排序

SORT ITAB.

DESCRIBE

获取内表行数

DESCRIBE TABLE ITAB LINES DATA(LV_LINE).

LINES

DATA(LV_DATA) = LINES(ITAB).

 

4.清空内表

CLEAR ITAB:仅清空HEADER LINE,对内表数据存储空间不影响

REFRESH ITAB:清空内表数据存储空间,对HEADER LINE不影响

DREE ITAB:清空内表数据存储空间,对HEADER LINE不影响

posted @ 2022-02-21 18:54  LikZ-WM  阅读(2027)  评论(0编辑  收藏  举报