码迷,mamicode.com
首页 > 其他好文 > 详细

变量声明内表操作

时间:2019-04-06 09:51:32      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:多行   新版本   现在   技术   end   内存   img   res   10个   

内表声明:内表分为三种 标准、排序、哈希
"标准内表,自带表头,有些人觉得新版本不应该使用此方法,但这个确实好用。
DATA:BEGIN OF T_ITAB OCCURS 0,
SID TYPE C,
SPINT TYPE I,
END OF T_ITAB.

"另一种
TYPES: BEGIN OF S_ITAB,
SID TYPE C,
SPINT TYPE I,
END OF S_ITAB.
TYPES T_ITAB TYPE S_ITAB OCCURS 10.
DATA T_ITAB1 TYPE T_ITAB."没有表头的内表
DATA T_ITAB2 LIKE T_ITAB1 WITH HEADER LINE."有表头的内表

"又一种
DATA:T_ITAB TYPE TABLE OF MARA WITH HEADER LINE."直接参考现有的透明表


"内表申明后现在讲内表的操作
"清空内表数据

技术图片

CLEAR T_ITAB.清空表头数据

技术图片

技术图片
REFRESH T_ITAB.

技术图片
FREE T_ITAB."清空内表数据

"增加内表数据
CLEAR T_ITAB.
APPEND T_ITAB."加一个空白行。
那要增加3个空白行怎么办,写3次
CLEAR T_ITAB.
APPEND T_ITAB."加一个空白行。
CLEAR T_ITAB.
APPEND T_ITAB."加一个空白行。
CLEAR T_ITAB.
APPEND T_ITAB."加一个空白行。
那要增加10个呢写10次,NO,写DO就OK,
DO 10 TIME."DO循环无条件执行重复执行多次代码,这里用笔记下
CLEAR T_ITAB.
APPEND T_ITAB."
ENDDO.

"LOOP循环
LOOP AT T_ITAB."如果是表头内表可以直接这样写,如不是则写成LOOP AT T_ITAB INTO S_ITAB.
T_ITAB-SID = 1.
MODIFY T_ITAB TRANSPORTING SID.逐行读取内表数据,为什么要读取,肯定是需要对内表操作才需要来LOOP,所以这里用MODIFY

ENDLOOP.

READ TABLE T_ITAB INDEX 1."单笔读取那一行,在数据多时比用LOOP更好,减少系统内存。
IF SY-SUBRC = 0."成功
T_ITAB-SID = 2.
MODIFY T_ITAB INDEX SY-TAIBX TRANSPORTING SID."在这里更改时使用了INDEX关键字,LOOP中不是不需要是默认INDEX为当前SY-TABIX.
ELSE."不成功。不成功则表明没有第一个索引数据
CLEAR T_ITAB.
T_ITAB-SID = 1.
APPEND T_ITAB.

ENDIF.
READ TABLE T_ITAB WITH KEY SID = 2."指定读什么数据,这里也是只读一笔,如果有两笔SID =2 的,也只读一笔数据
IF SY-SUBRC = 0.
T_ITAB-SID = 9.
MODIFY T_ITAB INDEX SY-TAIBX TRANSPORTING SID."在这里更改时使用了INDEX关键字,LOOP中不是不需要是默认INDEX为当前SY-TABIX.
ELSE."不成功。不成功则表明没有第一个索引数据
CLEAR T_ITAB.
T_ITAB-SID = 1.
APPEND T_ITAB.

ENDIF.
-------------------------------以上是单个内表的操作,现在讲多个内表操作----------------
DATA:BEGIN OF T_ITAB OCCURS 0,
SID TYPE C,
SPINT TYPE I,
END OF T_ITAB.
DATA:BEGIN OF T_ITABCOPY OCCURS 0,
SID TYPE C,
SPINT TYPE I,
END OF T_ITABCOPY.
DO 10 TIME."DO循环无条件执行重复执行多次代码,这里用笔记下
T_ITAB-SID = 1.
APPEND T_ITAB."
ENDDO.
"如何将T_ITAB的数据赋值给T_ITABCOPY。
一、
T_ITABCOPY[] = T_ITAB[].
二、
APPEND LINES OF T_ITAB TO T_ITABCOPY.
三、
LOOP AT T_ITAB.
MOVE-CORRESPONDING T_ITAB TO T_ITABCOPY.
APPEND T_ITABCOPY.
ENDLOOP.

”插入行
INSERT T_ITAB INTO TABLE T_ITABCOPY.“插入单行
INSERT lines of T_ITAB INTO TABLE T_ITABCOPY."插入多行
INSERT LINE INTO T_ITABCOPY INDEX 1.”按索引插入行
”删除内表数据
DELETE T_ITAB WHERE SID = 2."根据条件删除内表数据
DELETE T_ITAB INDEX 1.“指定删除第几行数据
DELETE T_ITAB."整个内表删除

SORT T_ITAB BY SID ."顺序排序 即ABCDE
SORT T_ITAB BY SID DESC."倒序排序,即EDCBA.

DELETE ADJACENT DUPLICATES FROM T_ITAB."删除重复行即有两行相同数据进行删除,保留第一笔数据,注删除前一定要排序

 以下数据类型图片是在网上下载的

技术图片

 

变量声明内表操作

标签:多行   新版本   现在   技术   end   内存   img   res   10个   

原文地址:https://www.cnblogs.com/jackbin/p/10660764.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!