之前的一系列帖子中介绍了内表的定义和分类,今天介绍内表的批量操作,单笔记录的增删改比较容易理解;批量操作主要包括批量新增/批量修改/批量删除。
先定义内表:
DATA GT_TAB1 TYPE STANDARD TABLE OF MARA.
DATA GS_TAB1 TYPE MARA.
DATA GT_TAB2 TYPE STANDARD TABLE OF MARA.
DATA GS_TAB2 TYPE MARA.
一,批量新增
可能大家都会想到
SELECT * FROM MARA INTO TALBE GT_TAB1.查询语句不是介绍的重点,来看下面两个:
APPEND LINES OF GT_TAB1 TO GT_TAB2. 等同于 GT_TAB2 = GT_TAB1.
APPEND LINES OF GT_TAB1 FROM 3 TO 100 TO GT_TAB2.
这类语句使用较少,但是在一些特殊的情况下运用起来还是很方便的。请持续关注SAP培训论坛!
二,批量修改
内表修改通常使用LOOP + MODIFY,如果内表数据大并且均是更改相同条件的数据时,即可使用批量修改,省时省力。
MODIFY GT_TAB1 FROM GS_TAB2 TRANSPORTING MTART WHERE MATNR = ''. "即可更新内表中所有MATNR = ''的记录的MTART的值
如有需要更新所有的字段,则需要在TRANSPORTING后添加所有的字段名;
如果需要更新所有的数据,则需要在WHERE后更换为一个恒为真的条件;
即是:批量修改内表数据,关键字TRANSPORTING和WHERE必须同时存在。
三,批量删除
FREE GT_TAB2
CLEAR GT_TAB2.
DELETE GT_TAB2 WHERE MATNR = ''.
DELETE GT_TAB2 WHERE MATNR NOT IN R_MATNR.
以上都是常用的可批量删除内表数据的语法。