APPEND 增加
APPEND 相当于在内表的最后追加一行,它只能使用在索引表中而且最好是标准表。而标准表是ABAP编程中最常用的表,所以这个语句很重要。
*APPEND 插到表的最后
APPEND GS_SCHOOL TO GT_SCHOOL.
APPEND GT_SCHOOL_H.
APPEND INITIAL LINE TO GT_SCHOOL.
APPEND LINES OF GT_SCHOOL_ZZZ FROM 1 TO 3 TO GT_SCHOOL.
INSERT 插入
将行插入到内表中指定的位置,需要使用INSERT语句。对于索引表,可以指定某行的索引,则新行将插入到该索引所代表的行之前;对于哈希表,不能指定行的索引,系统会按照关键字将新行插入其特殊位置。给内表插入行可以为单行,也可以为多行,甚至可以把整个内表的数据插入到其他内表中。
- 按照索引值插入(只能用于索引表)
INSERT line INTO itab INDEX idx .
INSERT GS_SCHOOL INTO GT_SCHOOL INDEX 2."根据索引插入数据
- 按照关键字插入(可以用于所有表)
INSERT line INTO TABLE table.
INSERT GS_SCHOOL INTO TABLE GT_SCHOOL_HASHED."根据关键字插入数据
- 多行插入
INSERTLINES OF itab1 [FROM n1] [TO n2] INTO [TABLE] itab2 [INDEX idx]
INSERT LINES OF GT_SCHOOL_ZZZ FROM 1 TO 3 INTO GT_SCHOOL INDEX 3."插入多行数据
INSERT LINES OF GT_SCHOOL_ZZZ INTO GT_SCHOOL INDEX 3.
COLLECT 聚集附加
这个语句的作用是将工作区里的关键字段值跟内表里的字段比较,如果相同的话不在内表里追加行,而是将工作区里的数值字段值跟内表里的相关行的字段值累加,然后将工作区里的数字值更新到内表的相关行里;如果比较后没有在内表里找到相关行就将工作区里的内容添加到内表里。
- 语法:COLLECT Iine INTO ITAB.
TYPES: BEGIN OF GTY_COLLECT,
NAME TYPE C LENGTH 10,
MONEY TYPE I,
END OF GTY_COLLECT.
DATA GT_COLLECT TYPE TABLE OF GTY_COLLECT.
DATA GS_COLLECT TYPE GTY_COLLECT.
GS_COLLECT-NAME = '甲'.
GS_COLLECT-MONEY = '20'.
COLLECT GS_COLLECT INTO GT_COLLECT.
GS_COLLECT-NAME = '甲'.
GS_COLLECT-MONEY = '20'.
COLLECT GS_COLLECT INTO GT_COLLECT.
GS_COLLECT-NAME = '乙'.
GS_COLLECT-MONEY = '20'.
COLLECT GS_COLLECT INTO GT_COLLECT.
GS_COLLECT-NAME = '甲'.
GS_COLLECT-MONEY = '20'.
COLLECT GS_COLLECT INTO GT_COLLECT.
LOOP AT GT_COLLECT INTO GS_COLLECT.
WRITE:/ GS_COLLECT-NAME,GS_COLLECT-MONEY.
ENDLOOP.
运行结果
MONDIFY 修改
-根据索引更改内表:
MODIFY itab [FROM wa] [INDEX idx] [TRANSPORTING f1 f2 ...].
- 使用表关键字来更改内表行可以应用于所有类型的内表:
MODIFY TABLE itab FROM Wa [TRANSPORTING f1 f2 ...].
READ 读取
- 对于索引表可以利用索引读取单行
READ TABLE itab [INTO wa | ASSIGNING ]INDEX idx. - 可以通过关键字读取任何类型的内表
READ TABLE itab WITH [TABLE] KEY K1 = f1 ...Kn =fn [INTO wa | ASSIGNING <FS>]INDEX idx.
- 使用TABLE关键字,要求指定的KEY字段必须都是关键字段,并且把所有的关键字段都列出来,是哈希表读取时比较合适的语句
- 不使用TABLE关键字,指定的KEY字段不必都是关键字,也无需把所有关键字段都列出来,是索引表读取时比较合适的语句
- 对于所索引表的读取可以使用Binary search 语句加快读取速度,Binary search 叫做二分法搜索,可以加快搜索速度。
1.内表必须是索引
2.内表必须已经按照要搜索的关键字排序 - 不进行传值-TRANSPORTINGNOFIELDS
排序 - 升序:ASCENDING
- 降序:DESCENDING
- 多个字段排序:
SORT itab BY field1 field2 ASCENDING field3 DESCENDING.
- 读取内表中的某一行,并修改该行
注意:
判断是否读取成功,使用sy-subrc系统变量
在修改内表内容时,需要单独指定index值
DELETE删除
- 根据索引删除内表:
DELETE itab [FRÃM wa] [INDEX idx].
使用表关键字来删除内表行可以应用于所有类型的内表:
DELETE TABLE itab FROM wa .
- 删除邻近的重复行
SORT itab By field1 field2 .
DELETE ADJACENT DUPLICATES FROM itab [COMPARING field1 field2].
- 清空内表
CLEAR: itab,itab[].
REFRESH: itab.
- 释放内存空间
FREE: itab