matinal:SAP ABAP 内表数据操作详解
一、增加数据 1、INSERT插入数据
INSERT可以按内表的具体字段向表中插入一行或者多行数据:
INSERT [wa INTO|INITIAL LINE INTO] itab [INDEX idx].
INSERT [wa INTO|INITIAL LINE INTO] TABLE itab.
INSERT LINES OF itab1 [FROM idx] [TO idx2] INTO itab2 [INDEX idx3].
实例:
2、逐行填充内表
A、要将内表仅用于存储数据,出于性能方面的考虑,建议使用 APPEND。
B、要计算数字字段之和或要确保内表中没有出现重复条目,请使用 COLLECT 语句。
C、要在内表现有行之前插入新行,请使用INSERT语句。
语法:
APPEND [<wa> TO|INITIAL LINE TO] <itab>.
COLLECT [<wa> INTO] <itab>.
INSERT [<wa> INTO|INITIAL LINE INTO] <itab> [INDEX <idx>]. 3、 将内表内容复制到另一个内表
A、要将内表行附加到另一个内表中,请使用APPEND语句。
B、要将内表行插入另一个内表中,请使用INSERT语句。
C、要将内表条目内容复制到另一个内表中,并且覆盖该目标表格,请使用 MOVE语句。
语法:
附加内表行: APPEND LINES OF <itab1> [FROM <n1>] [TO <n2>] TO <itab2>.
插入内表: INSERT LINES OF <itab1> [FROM <n1>] [TO <n2>] INTO <itab2> [INDEX <idx>].
复制内表: MOVE <itab1> TO <itab2>.
<itab2> = <itab1>.
4、OPEN SQL将数据表数据放入内表
通过OPEN SQL将数据表中的数据按条件查询后放入内表中:
SELECT … INTO TABLE <itab>
SELECT … APPENDING TABLE <itab>
实例:SELECT BNAME AS NAME PERSNUMBER AS TELNUM ADDRNUMBER AS ADDR INTO TABLE EMP FROM USR21.
二、更改内表数据
MODIFY(直接修改内表数据)按内表位置或者具体内表字段值相等条件修改内表数据:
MODIFY itab [FROM wa] [INDEX idx] [TRANSPORTING f1...fn] WHERE cond.
实例:
MODIFY EMP INDEX 1. "更改内表EMP第一行数据
MODIFY EMP TRANSPORTING TELNUM WHERE NAME = 'JERY'. "更改内表中NAME=‘JERY’的TELNUM值
三、删除内表数据
DELETE(删除内表数据) :
按具体值删除:DELETE TABLE itab WITH TABLE KEY k1=v1...kn=vn.
参照其它内表值删除:DELETE TABLE itab [FROM wa].
删除具体行数据:DELETE itab INDEX idx.
删除具体行数范围间数据:DELETE itab FROM idx1 TO idx2.
删除重复数据,执行此条件前必须先排序: DELETE ADJACENT DUPLICATES FROM itab.
四、读取内表数据
READ依据具体行数或字段值等条件读取某一内表的数据:
参照其它内表值读取:READ TABLE itab FROM wa.
按具体值读取:READ TABLE itab WITH [TABLE] KEY k1=v1...kn=vn [BINARY SEARCH].
读取具体行数据: READ TABLE itab INDEX i.
LOOP循环常用于实现内表数据的循环读取和操作
注意: 1、 使用 READ 操作的表必须得 HEADER LINE 作为查找出的数据存储窗口