sap-abap 基础4-内表操作

7 篇文章 0 订阅
本文详细介绍了SAP程序中的内表概念,包括其定义方式、类型(标准表、排序表和哈希表)、速度比较、常用命令如初始化、赋值、排序和修改等,以及内表追加、删除和读取数据的方法。
摘要由CSDN通过智能技术生成

文章目录


前言

内表是sap程序中频繁使用到。属于开发的基本功能,在其他语言中没有词语法,类似于动态数组。


一、内表概念

  1  概念

     内表属于本地表,在程序内部定义和使用,内表是动态数组。

   2  三种定义方式

 DATA <内表名> TYPE <结构类型> WITH [UNIQUE|NON-UNIQUE] [INITIAL SIZE n] [WITH HEADER LINE]。

    DATA <内表名> LIKE TABLE OF <内表或者透明表> WITH [UNIQUE|NON-UNIQUE] [INITIAL SIZE n] [WITH HEADER LINE]。

    DATA BEGIN OF itab OCCURS n,

       ......

    END OF itab [VALID BETWEEN f1 AND f2]。

方法一:参照局部表类型创建内表。

       也可以直接 data: gt_itab type standard table of s_type .

方法二:参照全局表类型创建内表

参照物理表 scarr定义内表gt_itab。

二、内表类型

 标准表,排序表,哈希表

1 标准表

  定义: standard table

        data: lt_table type standard table of mara .

  读取:可以按索引和指定关键字

       read table lt_table index 1 .

       read  table lt_table with table key field = '' .   table key 需指定所有key

       read table lt_table with key field = '' . with key 读取关键字以外的字段

     标准表sort后就等于 排序表。可以使用二分法查找。

  sort table lt_table by matnr

 read table  lt_table with key matnr = ''  binary search .

2 排序表

  定义: sorted table

   data: gt_itab type sorted table of mara with unique key matnr .

 特点: 1 必须指定key ,可以unique key 或者是 NON-UNIQUE KEY

            2 可以使用index和key来读取

           3  不需要在排序

3 哈希表

    定义: DATA IT_YM TYPE HASHED TABLE OF VBAP WITH UNIQUE KEY VBELN.

    特点:  必须指定key,并且是unique key 

                 只可以使用关键字访问,不可以使用index查询

                 查询时间和记录数无关

三、内表速度

 读取: 在大数据量情况下 哈希表最快,排序表次之 。

 插入:标准表>哈希表>排序表

四、内表命令

  1内表初始化

clear refresh 和free三种。

clear清除内表数据的同时,释放了内存空间。

refresh只能清空内表数据,不会释放内存,因此使用refresh需要结合 free释放内存 。

  2内表赋值

      表头赋值: move itab to itab2 。

      内表赋值: move itab[] to itab2 . 

      字段不一致赋值: move-corresponding itab to itab2 .

      

3内表排序

     sort itab by f1 asending|decending

    

4内表属性

  describe table itab  lines lv_line occurs gv_init   kind gv_kind

  lines 返回条数

 0ccurs 返回初始大小

kind 返回表类型 T标准 S 排序  H哈希

5 循环内表 loop

  循环控制 :

   at first

  at last

 at new

at end of

五、内表追加 

    1 insert

          默认追加到最后一条,可以索引指定位置

        追加一条: insert line into table itab

       追加多条: insert lines of itab into table itab2 .

    2  append

      插入到最后。

     哈希表不能使用

  

     3  collect

 功能:使用COLLECT语句可以合计内表中关键字相同的数字类型的字段;不存在关键字的内表,则会把CHAR类型的字段作为关键字执行相同的操作。

六、修改数据

  1 利用表关键字修改一条

      modify table itab from wa [transporting f1] 

     如果多条则只修改第一条

 2  利用where条件修改多条

     modify table itab from wa [transporting f1]  where 

3 利用索引修改一条

   modify table itab from wa  index idx [transporting f1] 

七、删除内表数据

  delete

删除重复数据 ADJACENT DUPLICATE  使用前先排序

八、读取内表数据

   

READ 三种使用

1 Read table itab [into wa | assigning <fs>] index idx .

2 Read table itab with table key k1 = f1 kn=fn  [into wa | assigning <fs>]  .

3 Read table itab with  key k1 = f1 kn=fn  [into wa | assigning <fs>]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值