ABAP 内表相关

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.语法块后,工作区内容恢复原样:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章