ABAP 内表清空 refresh clear free

匿名 (未验证) 提交于 2019-12-03 00:03:02


在我们使用完内表或者工作区后,需要进行一些清理工作。abap提供了3中方式:refresh,clear, free。

这3种方式的作用:

refresh
此语句将删除内部表的全部内容(包括header line,如果是带有header line的内表)。之前所使用的部分内存仍可进行后续的插入操作。即清空了内存的数据,并没有回收完内存空间,内存还被改内表占据。

clear
含有header line的内表:clear语句和refresh有相同作用。
对于不含header line的内表:clear语句仅能初始化header line,内表数据并没有影响。

free
free会删除内表的全部内容(包括header line),并且会释放之前所用内存。一般用于已完成一些操作且程许后续不会再需要的内表。


现在并不建议使用带有header line的内表!当你使用的时候,比如为itab,你用itab-字段  表示工作区,用itab[]为内表。在abap调试器的变量就是这样处理的。

一个测试程序:

REPORT ZTEST_FERESH_FREE_CLEAR. TABLES: zyhy_table01. DATA: it_tab1 TYPE TABLE OF zyhy_table01 WITH HEADER LINE,       it_tab2 TYPE TABLE OF zyhy_table01 ,       wa_tab  TYPE zyhy_table01,       a TYPE i,       b TYPE i. SELECT *   INTO TABLE it_tab1   FROM zyhy_table01. SELECT *   INTO TABLE it_tab2   FROM zyhy_table01.   LOOP AT it_tab1 INTO wa_tab FROM 1 TO 2.   WRITE: / it_tab1-ZXH2. WRITE: /  wa_tab-ZXH2. ENDLOOP.   it_tab1-zxh2 = '20192000'. it_tab1-zxm2 = 'qqqq'. it_tab1-zxb2 = 'Ů'. it_tab1-zsg2 = '170'. it_tab1-znl2 = '20'. it_tab1-zdh2 = '1557510000'. APPEND it_tab1 . *CLEAR it_tab1 . * REFRESH it_tab1.  CLEAR it_tab1.  REFRESH it_tab2.  FREE it_tab1.  LOOP AT it_tab1 INTO wa_tab FROM 1 TO 2.   WRITE: / it_tab1-ZXH2. WRITE: /  wa_tab-ZXH2. ENDLOOP.



这里每次loop完,工作区就被初始化了。

 REFRESH it_tab2.<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">之后</span>

free之后:


――――――――――――――――
版权声明:本文为CSDN博主「wolf988」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yang362046076/article/details/49301771

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!