abap<itab>refresh,clear,free

   在ABAP开发过程中,clear,refresh,free都有用来清空内表的作用,但用法还是有区别的。

  •     clear itab,清空内表行以及工作区,但保存内存区。
  •     clear itab[],清空内表行,但不清空工作区,但保存内存区。
  •     refresh itab,与clear itab[]相似,只清空内表行,但保存内存区。
  •     free itab,与refresh相似,清空内表行,但不清空工作区,且释放内存区域。
 

clear itab. 清表头(如果没有表头,清表体) 保存内存区

clear itab[]. 清表体保存内存区

refresh itab. = clear itab[]. 清表体 保存内存区

free itab. 清表体同时释放内存区

----------------------------------------------------------------------------

REFRESH .
该语句将内 表重置为填 充它以前的 状态。这意 味着表格将 不包含任何 行。
如果使用没 有表格工作 区域的内表 ,可以使用 CLEAR 语句代替 REFRESH 语句
1、Deletes all table lines.
2、Storage space is not released.
3、Paging is released.
4、Header line remains unchanged.

CLEAR .
如果使用有 表头行的内 表,CLEAR 仅 清除表格工 作区域。要 重置整个内 表而不清除 表格工作区 域,使用 REFRESH 语句或 CLEAR 语句
CLEAR [].
内表名称之 后的方括号 指内表体。
使用 REFRESH 或 CLEAR 初始化内表 后,系统保 持在内存中 保留的空间 。可以用 FREE 语句释放内 存
1、Initialises the header line.
2、Internal table lines remain unchanged.


FREE .
也可以使用 FREE 语句重置内 表并直接释 放其内存, 而不必先使 用 REFRESH 或 CLEAR。 与 REFRESH 一样,FREE
在表格体上 ,而不在表 格工作区域 上工作。
在 FREE 语句之后, 可以再次定 位内表。这 样,系统就 再次保留内 存空间。
可以使用如 下逻辑表达 式检查内表 是否为空
1、Deletes all table lines.
2、Storage space is released.
3、Header line remains unchanged.

例:

DATA: BEGIN OF LINE,
COL1,
COL2,
END OF LINE.
DATA ITAB LIKE LINE OCCURS 10.
LINE-COL1 = 'A'. LINE-COL2 = 'B'.
APPEND LINE TO ITAB.
REFRESH ITAB.
IF ITAB IS INITIAL.
WRITE 'ITAB is empty'.
FREE ITAB.
ENDIF.

其输出为:
ITAB is empty.
在该程序中 ,先对内表 ITAB进 行填充,然 后再用 REFRESH 初始化。在 IF 语句中,用 带 IS INITIAL 参数的逻辑 表达式检查 ITAB 是否为空。 如果空着, 则释放内存 。

扫描二维码关注公众号,回复: 5463223 查看本文章

  

猜你喜欢

转载自www.cnblogs.com/yjyongil/p/10495237.html