77范文网 - 专业文章范例文档资料分享平台

ABAP内表操作

来源:网络收集 时间:2020-04-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

ABAP内表操作

ABAP中的内表相当于其他程序设计语言中的二维数组,存储多行结构相同的数据 不同于二维数组,内表在创建后,列结构与列数是固定不变的,而行数是动态增长的 内表支持循环对每行数据进行操作,也支持整体操作

内表是具有行和列的表结构,然而,不同于数据库表,内表仅在程序运行期间在内存中存储数据

ABAP中有三种内表类型:标准表,哈希表,排序表 - ABAP内表数据类型

内表数据对象是实际的内表,可以用数据进行填充

内表数据类型是用于定义内表数据对象的抽象数据类型(ADT)

可以使用的内表数据类型有: Structure

数据库表

用户自定义数据类型 -ABAP内表声明 1>

TYPES: BEGIN OF line, field1 TYPE i, field2 TYPE i, END OF line.

声明一个数据类型

DATA: ITAB_WA TYPE(LIKE) line. “ 声明一个内表工作区

DATA: ITAB TYPE(LIKE) line OCCURS 0. “ 声明一个无工作区的内表

DATA: ITAB TYPE(LIKE) STANDARD TABLE OF line INITIAL SIZE 0. “ 声明一个有工作区的内表 DATA: ITAB TYPE(LIKE) line OCCURS 0 WITH HEADER LINE.

DATA: ITAB TYPE(LIKE) STANDARD TABLE OF line INITIAL SIZE 0 WITH HEADER LINE. 2>

DATA: BEGIN OF line, field1 TYPE i, field2 TYPE i, END OF line.

* 声明一个line对象,该对象可以作为工作区使用

* 用DATA定义的line本身也是一个结构类型,也可再声明一个工作区 DATA: ITAB_WA TYPE(LIKE) line. “ 声明一个工作区

DATA: ITAB TYPE(LIKE) line OCCURS 0 WITH HEADER LINE. “ 声明一个带工作区的内表

DATA: ITAB TYPE(LIKE) STANDARD TABLE OF line INITIAL SIZE 0 WITH HEADER LINE . “ 声明一个带工作区的内表

3> 直接定义内表,这个内表是有工作区的 DATA: BEGIN OF ITAB OCCURS 0 , CARR1 LIKE SPFLI-CARRID, CONN1 LIKE SPFLI-CONNID, END OF ITAB.

* DATA: ITAB1 TYPE ITAB.(错误的,实践证明,定义出来的什么都不是)。 正确方法:ITAB1 TYPE ITAB OCCURS 0.(这样定义后的是一个无工作区的内表)。 DATA: ITAB1 LIKE ITAB OCCURS 0 WITH HEADER LINE. “定义一个带工作区内表 4> type ref to 定义内表

type ref to 属于ABAP中面向对象的编程。它是定义一个类的对象。 5>通过数据库表定义

data itab1 type table of sflight . “ 定义一个不带内表的工作区 data wa1 like line of sflgit . “ 定义一个内表工作区

data itab1 type table of sflight with header line . “定义一个带内表的工作区 两种内表定义方式的主要区别在于是否有隐式表头行

内表是按行进行访问的,然而,程序对内表的行操作不能直接进行,必须使用一种接口来传输,这个接口就是工作区(Work Area) 内表操作

1、填充内表行

append to “ 不带表头行的填充 append “ 带隐式表头行的填充 2、插入内表行

insert into [INDEX idx] “

insert [INDEX idx ] “ 隐式表头行插入内表 -- 如果没有指定INDEX ,则默认插入到内表最后一行 3、读取内表行

read into [INDEX idx] read [INDEX IDX] 4、修改内表行

modify from [INDEX idx] modify [INDEX idx] -- read itab index 3 . -- itab-XX = ‘xxx’ .

-- modify itab index 4 . 5、删除内表行

delete [INDEX idx] .

-- 带表头行和不带表头行语法一致 。 6、内表循环

Loop at into .

endloop. “ 带表头行的内表循环操作 Loop at .

endloop. “ 不带表头行内表操作

-- 循环体的MODIFY,DELETE等语句不必指定INDEX项,系统默认处理当前行 . -- 如果不需要读取所有的内表行,可以使用WHERE选项进行限制 -- LOOP AT [WHERE ] 7、清空内表

clear . “清空不带表头行内表

clear*+ . “清空带表头行内表 8、内表排序

SORT [ASCENDING | DESCENDING] [AS TEXT]

--ASCENDING和DESCENDING指定升序还是降序排列,如果不指定,缺省排序方式是升序 --AS TEXT影响字符字段的排序方式,如果不使用该选项,系统将按字符平台相应内部编码进行排序,否则,系统根据当前语言按字母顺序排序字符字段 9、删除重复行

DELETE ADJACENT DUPLICATES FROM [COMPARING ].

-- 删除重复行之前须对内表进行排序 10、判断内表行数

DESCRIBE TALBE LINES .

11、将内表中部分或全部的数据行整体插入另一内表

INSERT LINES OF [FROM n1] [TO n2] INTO [TABLE] [INDEX ]. -- insert lines of itab1 from 1 to 100 into itab2 . “ 将内表1前100行数据附加到内表2 . -- 两个内表必须具有相同的或可转换的行结构 将内表中部分或全部的数据行整体填充到另一内表 APPEND LINES OF [FROM n1] [TO n2] TO .

按照条件或者索引删除一组选定行

DELETE [FROM n1] [TO n2] [WHERE ].

-- delete itab1 from 1 to 100 where age >30 . \删除内表前100行中年龄大于30 的记录 。 整体复制内表,目标内表原有内容被覆盖

MOVE TO 不带表头行的内表之间进行复制 MOVE [] TO []. 带表头行的内表之间进行复制

MOVE TO []. 不带表头行的内表复制到带表头行的内表

MOVE-CORRESPONDING TO 复制内表1中与内表2具有相同结构的字段进行复制,同样适用于工作区

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库ABAP内表操作在线全文阅读。

ABAP内表操作.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/1001660.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: