SAP abap 的 clear refresh free 对工作表头和表体内容的操作后的区别
SAP abap 的 clear refresh free 对工作表头和表体内容的操作后的区别
先要理解 表头和表体的概念。 表头就是工作区,可以理解为结构体,只放一行记录,用来动态记录的。
表体是具体的表内容。调试的时候可以区分,带表头的变量右边会有个小帽子图标,左边有个表格图标,如下图的 GIT_ITAB
一、针对有Header Line表头的内表
Clear itab,这种情况下itab表示内表itab的表头,因而该语句的意思是:仅清空Header Line表头数据,同时释放表头所占用的内存空间,针对该内表表体的数据不做任何变动。
Clear itab[],这种情况下itab[]表示内表itab的表体,因而该语句的意思是:仅清空内表表体的数据,同时释放表体所占用的内存空间,针对该内表表头的数据不做任何变动。
Refresh itab,Refresh itab[],效果同Clear itab[],即清空内表itab表体数据,但是没有释放内表表体所占用的内存空间,因而需要添加Free itab表示释放内表表体内存空间。由此可见,Refresh 和 Free语句通常是连在一起使用的。
Free itab,Free itab[],效果同Clear itab[],即清空内表itab表体数据,同时释放内表表体所占用的内存空间。
语句执行后: | 表头(存在数据) | 表体(存在数据) |
CLEAR git_itab. | 没有 | 有 |
CLEAR git_itab[]. | 有 | 没有 |
REFRESH git_itab. | 有 | 没有 |
REFRESH git_itab[]. | 有 | 没有 |
FREE git_itab. | 有 | 没有 |
FREE git_itab[]. | 有 | 没有 |
二、针对没有Header Line表头的内表
Clear itab,清空内表所有数据。
Clear itab[],效果同Clear itab。
Refresh itab,效果同Clear itab。
Free itab,效果同Clear itab。
也就是这4条语句针对没有表头的内表的效果都是一样的,即全部都是清空内表的数据。
测试语句:
DATA: BEGIN OF gs_line,
col1 TYPE i,
col2(1) TYPE c,
END OF gs_line.
*DATA: git_itab LIKE STANDARD TABLE OF gs_line.
DATA: git_itab LIKE STANDARD TABLE OF gs_line WITH HEADER LINE.
*gs_line-col1 = 1.
*gs_line-col2 = 'A'.
*INSERT gs_line INTO TABLE git_itab.
git_itab-col1 = 1. "执行后表头有数据
git_itab-col2 = 'A'. "执行后表头有数据
INSERT table git_itab. "执行后表体有数据
*BREAK-POINT.
CLEAR git_itab.
*CLEAR git_itab[].
*REFRESH git_itab.
*REFRESH git_itab[].
*FREE git_itab.
*FREE git_itab[].
IF git_itab IS INITIAL.
WRITE:/ '内表表头没有数据'.
ENDIF.
IF git_itab IS NOT INITIAL.
WRITE:/ '内表表头有数据'.
ENDIF.
IF git_itab[] IS INITIAL.
WRITE:/ '内表表体没有数据'.
ENDIF.
IF git_itab[] IS NOT INITIAL.
WRITE:/ '内表表体有数据'.
ENDIF.
作者: 轻烟随风
当前文章地址: https://www.zyxpp.com/sap-abap-clear-refresh-free/
来源: 轻烟随风的博客
文章版权归作者所有,欢迎转载
当前文章地址: https://www.zyxpp.com/sap-abap-clear-refresh-free/
来源: 轻烟随风的博客
文章版权归作者所有,欢迎转载
THE END
二维码
文章目录
关闭
共有 0 条评论