• ABAP之内表定义、insert、read、update、delete


    一、内表定义.  

      1.1参照表类型创建内表——先定义类型,参照类型定义内表.

       TYPES:BEGIN OF s_type,
         no(6) TYPE c,
         name(10) TYPE c,
         part(16) TYPE c,
       END OF s_type.
       DATA:gt_itab TYPE STANDARD TABLE OF s_type with NON-UNIQUE  KEY no WITH HEADER LINE.

    参照结构体创建内表

    DATA:BEGIN OF s_type,
         no(6) TYPE c,
         name(10) TYPE c,
         part(16) TYPE c,
         END OF s_type.
    DATA:gt_itab LIKE STANDARD TABLE OF s_type with NON-UNIQUE  KEY no WITH HEADER LINE.

    1.2 参照表定义内表

       语法: DATA:itab TYPE <t_itab> WITH {UNIQUE|NON-UNIQUE} KEY <keys> [INITIAL SIZE <n>][WITH HEADER LINE].

    DATA gt_itab TYPE SORTED TABLE OF scarr WITH UNIQUE KEY carrid.
    DATA gs_str LIKE LINE OF  gt_itab. 

    二、内表操作

    2.1.内表赋值.

        "内表带表头的话,下面语句只赋值表头。

      MOVE itab1 TO itab2."同于 itab2 = itab1.

        "赋值表体数据

     MOVE itab1[] TO itab2[].  "同于 itab2[] = itab1[].

        "表类型不同时或者字段顺序不同时。

    MOVE-CORRESPONDING itab1 TO itab2.

    2.2.内表初始化

        CLEAR、REFRESH、FREE.
    1).CLEAR .

     CLEAR itab.

      --返回内存空间.

      --itab如果带表头,只清楚表头,如果不带表头,清除表体数据。

     CLEAR itab[]."清除带表头内表的表体数据。

    2)REFRESH.

      REFRESH itab.

      --删除表内数据,不删除内存空间,释放须执行free.

    3).FREE.

      FREE itab.

    2.3.内表排序

      1.SORT.

    SORT ITAB [ASCENDING|DESCENDING].

      2.指定排序字段.

     SORT ITAB  [ASCENDING|DESCENDING]
          BY f1 [ASCENDING|DESCENDING]
          ...
             fn [ASCENDING|DESCENDING].

    2.4 内表属性.

    DESCRIBE TABLE itab [LINES gv_line][OCCURS gv_init][KIND gv_kind].

          LINES:     返回内表包含的数据数.

          OCCURS:返回内表的初始大小.
          KIND :      内表类型,T代表标准表,S代表排序表,H代表哈希表.

    三、追加内表

       INSERT、APPEND、COLLECT三种方式实现内表追加数据。

      3.1.INSERT.

     1)插入一条数据.

     INSERT line INTO TABLE itab.

     成功:sy-subrc返回0;已存在返回4,不发生dump error。

     2)多条数据.

    INSERT LINES OF itab1 [FROM n1][TO n2] INTO TABLE itab2."itab1  itab2表结构相同.

     3)利用索引追加

     INSERT line INTO TABLE itab [INDEX idx].
     INSERT LINES OF itab1 INTO itab2 [INDEX idx].

    3.2.APPEND

         只支持按照索引进行追加.
    1.追加一条数据.

     APPEND  line TO itab.

    2.追加多条数据.

      APPEND  LINES OF itab1 TO itab2.
      APPEND  LINES OF itab1 [FROM n1][TO n2] TO itab2.

    3.3.COLLECT

    当存在相同关键字时,合计数字类型的字段,不存在相同关键字,则追加数据.

    COLLECT wa INTO itab.

    四、修改内表数据

    1.利用关键字修改一条数据.

    MODIFY TABLE itab FROM wa [TRANSPORTING f1 f2..].

    --如果关键字重复时,只会修改第一条数据. TRANSPORTING 修改指定关键字的值.

    2.修改多条数据.

    MODIFY TABLE itab FROM wa [TRANSPORTING f1 f2..]WHERE cond."限制检索条件.

    3.利用索引修改一条数据.

    MODIFY itab FROM wa [INDEX idx][TRANSPORTING f1 f2..].

      --只适合于标准表和排序表.

    五、删除内表数据.

    1.关键字删除一条数据.

      DELETE TABLE itab [FROM wa].
      DELETE TABLE itab WITH TABLE KEY k1=f1 ...kn=fn.

    2.WHERE条件删除.

    DELETE itab WHERE cond.
    DELETE gt_itab WHERE carrid = 'AA'.

    3.利用索引删除.

    DELETE itab [INDEX idx].
    DELETE itab FROM n1 TO n2. "删除索引号n1~n2间的数据.
    DELETE itab FROM n1.           "删除n1以后的数据.
    DELETE itab TO n2.               "删除n2之前的数据

    4.删除重复行.

    DELETE ADJACENT DUPLICATES ENTRIES FROM itab [COMPARING f1 f2...| ALL FIELDS].

      --执行前,先sort排序

    六、读取内表数据

      当存在表头时,对应数据保存至表头,否则保存到工作区。
    1.关键字读取数据.

    READ TABLE itab FROM wa INTO result.
    READ TABLE itab WITH TABLE KEY k1 = f1 kn = fn INTO result.
          
    gs_line_carrid = 'AA'.
    READ TABLE gt_itab FROM gs_line INTO gs_line.
          
    READ TABLE gt_itab WITH TABLE KEY carrid = 'AB' INTO gs_line.    

    2.利用索引读取数据.

    READ TABLE itab INDEX idx INTO result.
    READ TABLE gt_itab INTO gs_line INDEX 1.
  • 相关阅读:
    tcpdump分析tcp连接的建立、传输和关闭
    链表排序:冒泡和快排
    linux文件IO操作篇 (一) 非缓冲文件
    linux文件操作篇 (四) 目录操作
    linux文件操作篇 (三) 文件状态和操作属性
    linux文件操作篇 (二) 打开和关闭文件
    linux文件操作篇 (一)文件属性与权限
    linux编程(三)多线程
    linux编程(二)进程
    linux编程(一)文件IO 目录
  • 原文地址:https://www.cnblogs.com/zs-chenkang/p/13258544.html
Copyright © 2020-2023  润新知