本文仔细测试总结了ABAP中的clear、refresh、free,因为很多时候程序的BUG就是出现在变量没有清理干净,希望整理一个定式出来以后少出BUG。 用clear、refresh、free对带表头的表执行的测试结果如下表:
看起来,最好的避免这些清空命令出现BUG的方案就是放弃带表头的表的使用,包括今天中午出现的BUG也是这个原因,为什么我的程序中会出现表头表呢,原来程序中照搬了一段信息记录的BDC程序,原程序使用了带表头的表啊!
测试的部分代码:
--------带表头的表------------
REPORT ZTESTFREE.
DATA GT_TABLE type TABLE OF SCARR WITH HEADER LINE.
SELECT * FROM SCARR INTO TABLE GT_TABLE.
WRITE:/'显示表:'.
LOOP AT GT_TABLE.
WRITE:/ GT_TABLE-MANDT && ',' && GT_TABLE-CARRNAME && ',' && GT_TABLE-CURRCODE.
ENDLOOP.
WRITE:/'显示表头:'.
WRITE:/ GT_TABLE-MANDT && ',' && GT_TABLE-CARRNAME && ',' && GT_TABLE-CURRCODE.
WRITE:/.WRITE:/ 'clear GT_TABLE后'.WRITE:/.
clear GT_TABLE.
WRITE:/'显示表头:'.
WRITE:/ GT_TABLE-MANDT && ',' && GT_TABLE-CARRNAME && ',' && GT_TABLE-CURRCODE.
WRITE:/'显示表:'.
LOOP AT GT_TABLE.
WRITE:/ GT_TABLE-MANDT && ',' && GT_TABLE-CARRNAME && ',' && GT_TABLE-CURRCODE.
ENDLOOP.
clear TABLE 命令清理带表头的表,表头清空,表没有:
clear TABLE[] 命令清理带表头的表,表头未清,表清空。