问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ABAP 中内表的复制3

发布网友 发布时间:2023-09-17 17:31

我来回答

2个回答

热心网友 时间:2024-11-06 11:15

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)

--内表操作

填充内表行
append <wa> to <itab> “ 不带表头行的填充
append <itab> “ 带隐式表头行的填充

插入内表行
insert <wa> into <itab> [INDEX idx] “
insert <itab> [INDEX idx ] “ 隐式表头行插入内表
-- 如果没有指定INDEX ,则默认插入到内表最后一行

读取内表行
read <itab> into <wa> [INDEX idx]
read <itab> [INDEX IDX]

修改内表行
modify <itab> from <wa> [INDEX idx]
modify <itab> [INDEX idx]
-- read itab index 3 .
-- itab-XX = ‘xxx’ .
-- modify itab index 4 .

删除内表行
delete <itab> [INDEX idx] .
-- 带表头行和不带表头行语法一致 。

内表循环
Loop at <itab> into <wa> .
<statement block>
endloop. “ 带表头行的内表循环操作

Loop at <itab> .
<statement block>
endloop. “ 不带表头行内表操作

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

清空内表
clear <itab> . “清空不带表头行内表

clear<itab>[] . “清空带表头行内表

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

删除重复行
DELETE ADJACENT DUPLICATES FROM <itab> [COMPARING <comp>].
-- 删除重复行之前须对内表进行排序

判断内表行数
DESCRIBE TALBE <itab> LINES <count>.

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

将内表中部分或全部的数据行整体填充到另一内表
APPEND LINES OF <itab1> [FROM n1] [TO n2] TO <itab2>.

按照条件或者索引删除一组选定行
DELETE <itab> [FROM n1] [TO n2] [WHERE <condition>].
-- delete itab1 from 1 to 100 where age >30 . "删除内表前100行中年龄大于30 的记录 。

整体复制内表,目标内表原有内容被覆盖
MOVE <itab1> TO <itab2> 不带表头行的内表之间进行复制
MOVE <itab1>[] TO <itab2>[]. 带表头行的内表之间进行复制
MOVE <itab1> TO <itab2>[]. 不带表头行的内表复制到带表头行的内表
MOVE-CORRESPONDING <itab1> TO <itab2> 复制内表1中与内表2具有相同结构的字段进行复制,同样适用于工作区

热心网友 时间:2024-11-06 11:15

MOVE-CORRESPONDING itab1 to itab2.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
郎酒怎么分辨真假 郎酒买到假的怎么赔偿 如何除掉衣服上的超能胶迹 有什么方法洗掉"502超能胶水"??? 我想买块两三千元的玉,但又不知是否真假.不知玉器鉴别是怎样鉴的? 申请留学时间流程 95595光大银行,光大乐迷联名信用卡金卡额度多少 光大乐视卡是什么信用卡? 乐迷信用卡普卡额度大概是多少? ...sport的英语小作文,主题“打乒乓球”。初中水平 ps怎么画方框(ps怎么画方框线条) abap text elements &gt;selection ...2 解梦梦见刚生的小孩就会说话 梦见妈妈生了小妹妹预示着什么?5 五原罕乌拉水库距离包头市有多少公里1 今日早开车出上高速,发现五菱荣光无水高温,导致拿到汽修厂维修... 五菱荣光起动油门一阵一阵抖动是啥问题 烦死了,开了两年的五菱宏光,居然今天发现会冒蓝烟,我今天走高... 我的五菱荣光早晨难启动,刚一年,的启动2-3次才能打火。是怎...24 车子早上很难打火,打着以后就好起动了是什么原因3 五菱荣光开始打火要两三下才可以启动17 请问Alcl3由哪两种单质直接化合而生成? 五菱荣光缺缸开到修理厂 第二天换高压线点火线圈打不着车了 有... 怎样自己在家做番茄火锅342 被司法冻结可以申诉吗? 我的微信被盗了,手机号密码都被改了,也实名认证了怎么找回来? 《在远方》霍梅喜欢的人是谁? 微信实名认证解除了,现在冻结了能申诉回来么? 《在远方》剧中霍梅是不是非常有心机? 《在远方》霍梅拒绝高畅的表白理由是什么? 《在远方》里的霍梅最后成为了人生赢家,她黑化部分的演技让你有... ABAP内表APPEND和LOOP的特殊用法22 在ABAP中,类似用selection-screen beg...2 Abap 两次排序的结果不一致3 面包糠鸡翅的做法大全 求推荐一本有关中国近代史的书籍38 ...我的女儿阳历2009年1月16日 上午7点25分出生,高人请帮忙取个名字,敝... 洒在汽车仪表台上的香水产生了痕迹,怎样能清除掉?21 ...阳历是1992年1月10日,女,凌晨4点10分或者20分生。 小轿车前挡风玻璃 上的蜡怎么除干净58 请高手帮忙起名姓刘出生日期是2002年1月10日阳历的凌晨2点三十分 《在远方》刘云天使利用霍梅还是爱上她了? 如果你有《在远方》霍梅这样的闺蜜你会怎么办? 冻结还能申诉吗? 哪两种单质反应可以生成两种不同的离子化合物?组成单质的元素在短周期... ...一个作业本需要4元,小明带了20元,怎样购买可以刚好用完? 怎么查养老保险缴费情况? 梦见妈妈生了一个妹妹3 《恐怖游轮》看完没什么感觉,所以去百度了一下,给的答案说什么循环!大... 蜡烛的污渍怎么才能洗干净呢??7 衣服上沾有蜡烛,要怎样才能洗掉?187