1.基本的创建方式
DATA: BEGIN OF GS_01,
col1 TYPE i,
col2 TYPE ZSTU-CLO2,
END OF GS_01 . "结构体
DATA:GT_01 TYPE STANDARD TABLE OF GS_01. "创建内表
TABLES: MARA . "结构类型
DATA GT_01 LIKE STANDARD TABLE OF MARA . "直接参照数据库表创建
DATA GS_01 LIKE MARA .
DATA GS_011 LIKE LINE OF GT_01 ."参照表的一行也是一个结构(工作区)
2.用TYPE关键字创建
TABLES: ZGROUP_2. "结构体
TYPES: BEGIN OF TY_01.
INCLUDE STRUCTURE ZGROUP_2. "include 透明表
TYPES:
FIELD_COLOR TYPE LVC_T_SCOL,
FIELD_MODIFY TYPE LVC_T_STYL,
END OF TY_01.
DATA GT_GROUP TYPE TABLE OF TY_01. "参照TY_01 创建内表
DATA GS_GROUP TYPE TY_01. "工作区
3.内表相关操作(sy-tabix 返回循环内内表当前行)
3.1 向内表中添加数据 (INSERT,APPEND ,COLLECT三张方式)
INSERT LINE INTO TABLE ITAB . "添加一条
INSERT itable INDEX num . "利用索引追加一条数据
INSERT LINES OF ITAB1 FROM N RO M INTO TABLE ITAB2 . "利用索引追加多条数据
INSERT LINES OF ITAB1 INTO TABLE ITAB2 . "利用索引追加多条数据
标准表
追加到内表最后一行,与APPEND语句有相同的效果
排序表
按内表中排好的顺序追加数据,若按照关键字并非唯一的类型,重复的数据会追加到相同数据的上一行。
哈希表
按照关键字的哈希索引顺序追加数据
APPEND 只能利用索引追加数据
APPEND LINE TO ITAB . "添加一条
INSERT LINES OF ITAB1 FROM N RO TO TABLE ITAB2 . "追加多条数据
INSERT LINES OF ITAB1 TO TABLE ITAB2 . "追加多条数据
标准表
追加到内表最后一行
排序表
需要按照排好的数据追加数据,否则会dump。
哈希表
不能使用APPEND追加数据
3.4 COLLECT 合计内表中的数字类型的字段,出关键字以外的其他字段都需要是数字类型(F,I,P),按照关键字合计,未定义关键字的时候,则会吧所有的插入类型的字段视为关键字
COLLECT WA INTO ITAB .
3.2 READ 读取内表数据
READ TABLE ITAB INTO WA WITH KEY col1 = value .
BINARY SEARCH 二分查找,使用前sort
SORT ITAB BY CON1...
READ TABLE 内表 INTO 工作区 WITH KEY col1 = value BINARY SEARCH .
当用到 TRANSPORTING NO FIELDS时只读取不传值
READ TABLE GT_MAIN INTO GS_MAIN INDEX 1 TRANSPORTING NO FIELDS.
3.3 modify关键字,修改内表数据
MODIFY TABLE ITAB FROM WA TRANSPORTING FILED1 ..."参照工作区修改一条数据,TRANSPORTING 指定修改字段
MODIFY ITAB FROM WA TRANSPORTING FILED1 ... WHERE COND "参照工作区修改多条数据
MODIFY UTAB FROM WA INDEX SY-INDEX . " 利用索引修改一条数据
3.4 DELETE 删除数据
DELETE TABLE ITAB FROM WA ."删除一条
DELETE TABLE ITAB WITH TABLE KEY K1 = '**' . "利用关键字删除一条
DELETE ITAB WHERE COND . "删除多条
DELETE ITAB INDEX SY-INDEX.
DELETE ADJACENT DUMPLICATE FROM ITAB COMPARING CON1... " 删除重复行
4. RANGE表类型
是一种特殊的表类型,用于在ABAP中定义RANGE变量,拥有SIGN,OPTION,LOW,HIGH
RANGE 变量的构成:
SIGN: I (INCLUSIVE) , E(EXCLUSIVE)
OPTION : EQ ,BT, GE(大于等于),LE(小于等于),GT(大于),LT(小于),NE,CP(包含)
LOW :FROM 值
HIGH : TO值
6.at ...endat语法,()
这里包括: new , first , last , end of .
使用前提:一般在loop中使用,要提前对内表进行排序sort,排序的主键为统计时用到的节点(比如,按销售组织统计,节点为vkorg),Loop不能加where条件,在at 和 endat之间不能再使用loop语法。
AT FIRST
是内表第一条数据时执行
AT NEW F1
与上一条有变化时执行
AT END OF F1
与下一条数据有变化时执行
AT LAST .
是内表最后一条数据时执行
当进入AT … END AT.中的时候,工作区中的值除了key字段,其他字段会全部变为默认值,字符型字段值全变为*,数值全部变为0,而当跳出AT … END AT.语法块后,工作区内容恢复原样: