ABAP几种内表的操作

这次的程序用到了哈希表,在这里,也顺便总结一下ABAP三种内表的特点。

ABAP中有三类内表,标准表,排序表和哈希表。

三种内表介绍

标准表的每一行对应一个逻辑索引-SY-TABIX,填充内表的时候,可以将数据附加在现有行之后,也可以插入到指定的位置,程序对内表行的寻址操作可通过关键字或索引进行。在对表进行插入删除等操作时,各数据行在内存中的位置不变,系统仅重新排列各数据行的索引值。

排序表也有逻辑索引,不同的是排序表总是按其表关键字升序排列后再进行存储,也就是在内存中的位置发生改变。 哈希表没有索引,只有关键字。

行访问方式

标准表                    排序表                 哈希表

索引访问             允许                       允许                 不允许

关键字访问           允许                       允许                  允许

相同值关键字行       可重复                   可重复或不可重复       不可重复

推荐访问方式       主要通过索引               主要通过关键字        只能通过关键字

具体到使用什么类型的内表

对于一个小于100行的内表,且很少使用关键字操作,则使用标准表没有效率问题;数据量比较巨大,切不存在重复行,只需使用关键字访问的内表应定义为哈希表;排序表适用于运行期内必须以某种排序形式出现的内表。

×××××××××××××××××××××××××××××××××××××××××××××××××

1. 内表的类型及定义:

( 1 ) .ANY TABLE :即任意表类型,此种定义方式只能在传递参数的时候定义。

例如: FORM XXX USING/CHANGING TYPE ANY TABLE .

( 2 ) .ANY TABLE 包括了两种类型: INDEX TABLE 和 HASHED TABLE 。

《 1 》 .INDEX TABLE :包括了 STANDARD TABLE 和 SORTED TABLE

A. STANDARD TABLE :其实就是一个线性表,通过 key 访问内表是线性查找的,也就是说,随着表中记录的增加,对表的操作的时间开销也相应的增加。

定义方法: TYPES/DATA : LIKE/TYPE STANDARD TABLE OF .

B. SORTED TABLE: 顾名思义,表中的记录是按照一定的顺序排列的。访问表的主要方式是表中定义的 key ,如果 key 不唯一,则选择 index 最小的那个。也可以通过 index 来访问排序表,如果你想通过 index 插入一条记录,系统会自动检查你插入的位置是否正确。所以,如果插入的时间比插入到标准表的时间会长。因此,尽量选择 key 来对排序表进行操作。

定义方法: TYPES/DATA : LIKE/TYPE SORTED TABLE OF .

《 2 》 .HASHED TABLE :对哈希表只能用你定义的 key 进行操作,而不能使用 index 进行操作。因此,定义哈希表必须定义 unique key 。注意:所有关于使用 index 操作表的语句都不能用于操作哈希表。例如: sort , loop 等。

定义方法: TYPES/DATA : LIKE/TYPE HASHED TABLE OF .

2. 内表的操作:

( 1 ) . 创建:

A. 定义一个结构,然后 type/like 这个结构

例如:

TYPES: BEGIN OF ,
...
igt; ..., 
...
END OF .

DATA TYPE STANDARD TABLE OF 
WITH NON-UNIQUE DEFAULT KEY
INITIAL SIZE 
WITH HEADER LINE.

B. type/like 系统表或者数据库表或者结构

DATA TYPE STANDARD TABLE OF < 系统表名 > 
INITIAL SIZE 
WITH HEADER LINE.

( 2 ) . 添加数据:

A . APPEND :直接向表中添加数据

1. APPEND [wa TO|INITIAL LINE TO] itab[ASSIGNING |REFERENCE INTO dref].

2. APPEND LINES OF itab1 [FROM idx1] [TO idx2] TO itab2.

3. APPEND [wa TO] itab SORTED BY f [ASSIGNING

B .向表中插入数据:

1. INSERT [wa INTO|INITIAL LINE INTO] itab [INDEX idx] [ASSIGNING |REFERENCE INTO dref].

2. INSERT [wa INTO|INITIAL LINE INTO] TABLE itab [ASSIGNING |REFERENCE INTO dref].

3. INSERT LINES OF itab1 [FROM idx1] [TO idx2] INTO itab2 [INDEX idx3].

4. INSERT LINES OF itab1 [FROM idx1] [TO idx2] INTO TABLE itab2.

C .相同字段求和向表里添加:

Basic form

COLLECT [wa INTO] itab.

Extras:

1. ... ASSIGNING 
2. ... REFERENCE INTO dref 
3. ... SORTED BY f

( 3 ) . 删除数据:

1. DELETE itab. 
2. DELETE TABLE itab WITH TABLE KEY k1 = v1 ... kn = vn. 
3. DELETE TABLE itab [FROM wa]. 
4. DELETE itab INDEX idx. 
5. DELETE itab FROM idx1 TO idx2. 
6. DELETE itab WHERE logexp. 
7. DELETE ADJACENT DUPLICATES FROM itab.

( 4 ) . 修改数据:

1. MODIFY itab [FROM wa] [INDEX idx] [ASSIGNING |REFERENCE INTO dref] [TRANSPORTING f1 ... fn].

2. MODIFY TABLE itab [FROM wa] [ASSIGNING |REFERENCE INTO dref] [TRANSPORTING f1 ... fn].

3. MODIFY itab [FROM wa] TRANSPORTING f1 ... fn WHERE cond.

ABAP几种内表的操作相关推荐

  1. 几种内表更新方式的性能比较

    ABAP程序中,内表更新主要有以下程序中的三种更新方式.一是通过字段符.二是使用索引.三是循环中直接更新.据我观察,直接使用第三种方式的人占大多数,使用字段符与使用索引的人应该差不多.这三种方式实际性 ...

  2. ABAP基础知识 内表汇总数据的方式

    点击蓝字 关注我们 一 前言 新开一个专题: ABAP基础知识. 用于介绍一些ABAP中的基础知识.希望可以帮助到一些新学ABAP的朋友.  本文主要介绍ABAP中使用内表统计的几种方式 二 四种统计 ...

  3. abap内表的操作汇总

    abap内表是abap开发中最常用的工具之一 这里总结一个常用的一些操作,以后可以直接复制使用 1,定义 参考字段定义 DATA:BEGIN OF i_list OCCURS 0 ,   matnr ...

  4. ABAP动态生成内表的三种方法

    动态内表的创建和使用主要有以下几点: 动态内表的创建,首先要定义动态结构,然后再根据定义的动态结构利用系统一个标准的method:"cl_ALV_table_create=>creat ...

  5. ABAP Excel处理-内表导出为Excel文件

    目录 一.概述 二.内表导出为Excel文件的实现 1. OLE下载内表数据为Excel文件 2. DOI下载内表数据为Excel文件 3. 生成文本形式的Excel(.xls或.csv) 4. 标准 ...

  6. abap中取内表中每一类中的一行的方法

    当一个内表有很多数据,并且每一类又有多条数据,而我们只要处理其中每一类中的一条数据,取得的这一条数据要有排序的. 比如取每个到货单号(xblnr)  的 第一次收货时间(budat) 1: 用 xbl ...

  7. ABAP定义声明内表、工作区

    TABLES:makt. TYPE-POOLS: slis. INCLUDE <icon>.TYPEES:BEGIN OF s_tmakt.maktx_en LIKE makt-maktx ...

  8. 介绍一种在ABAP内核态进行内表高效拷贝的方法,和对应的Java和JavaScript版本的伪实现

    内表操作是ABAP开发人员几乎在每个ABAP程序里都会遇到的. 看一个例子:有两个行结构不一样的内表,每个内表的行结构有三列,除了name这一列名字一致外,其他两列的名称都不同,下图用红色和蓝色标注出 ...

  9. 【04】SAP ABAP性能优化 - 如何选用内表类型(STANDARD, SORTED, HASHED)?

    ABAP提供了三种类型的内表, 即:标准表(Standard Table), 排序表(Sorted Table), 哈希表(Hashed Table).在未声明内表类型时,系统会将类型默认为标准表. ...

最新文章

  1. jquery 使用jquery操作Dom
  2. 本地配置文件git提交
  3. 程序员编程艺术第二章
  4. html hover图片效果,CSS第9款:Imagehover.css 纯CSS打造的图片悬停效果
  5. 最优化理论与方法(part2)--矩阵求逆和广义逆
  6. python ioc di_Sping(一)——IOC/DI
  7. 『C#基础』调用CMD的一个小工具
  8. Linux 系统应用编程——进程基础
  9. 最全Java面试180题:阿里11面试+网易+百度+美团!含答案大赠送!
  10. 万物智联时代的终端智能「管家」 重磅升级:混合云IoT一体机
  11. Google Earth的十个常用技巧应用
  12. oracle读写文件--利用utl_file包对磁盘文件的读写操作
  13. Android TV框架TIF
  14. 少数民族预科计算机基础教材答案,少数民族预科高等数学(普通高等学校少数民族预科教材)...
  15. 桌面图标整理工具(Fences Pro)
  16. SpringBoot part4 day15
  17. 50以内的质数顺口溜_100以内质数表顺口溜
  18. Unity中实现VR摄像机
  19. linux boot efi 大小,/boot/efi。
  20. net core mysql开源框架_.NetCore开源集成框架

热门文章

  1. 各国家分析之 古埃及非洲经济
  2. 开工大吉!送你一份「远程工作约定」
  3. 变形积木装饰科技发起创始人郭辉:I'm the Business Bible
  4. 做好数据分析必备的 5 种典型可视化图表 | 技能卡片 No.1
  5. 阿里云宣布 Serverless 容器服务 弹性容器实例 ECI 正式商业化
  6. 27.4. /etc/bandwidthd.conf
  7. ajxa异步请求数据
  8. java面向对象(二)之继承
  9. JAVA模拟HTTP post请求上传图片
  10. 实战3--设计管理模块,整合!!!