zoukankan      html  css  js  c++  java
  • 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.
  • 相关阅读:
    Python使用SMTP模块、email模块发送邮件
    harbor搭建及使用
    ELK搭建-windows
    ELK技术栈之-Logstash详解
    【leetcode】1078. Occurrences After Bigram
    【leetcode】1073. Adding Two Negabinary Numbers
    【leetcode】1071. Greatest Common Divisor of Strings
    【leetcode】449. Serialize and Deserialize BST
    【leetcode】1039. Minimum Score Triangulation of Polygon
    【leetcode】486. Predict the Winner
  • 原文地址:https://www.cnblogs.com/zs-chenkang/p/13258544.html
Copyright © 2011-2022 走看看