ABAP 内表清空 refresh clear free

在我们使用完内表或者工作区后,需要进行一些清理工作。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之后:






  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值