ABAP 免费内部 table

ABAP free internal table

下面问题的答案为2。为什么刷新只删除第一行?难道不希望它删除内部table的所有行吗?

下面的代码会输出什么?

DATA: BEGIN OF itab OCCURS 0, fval type i, END OF itab. 

itab­-fval = 1. APPEND itab.

itab­-fval = 2. APPEND itab.

REFRESH itab.

WRITE: /1 itab­-fval.

答:1

B: 2

C: 空白

D: 0

答案:B

如果代码不包含任何语法错误,例如分配值 2 和写入值时缺少“-”,则 B 是正确答案,但不是您陈述的原因。并不是说 REFRESH 只删除了 table 的第一行,这是因为 REFRESH 没有清除 table 的 header 行。因此,在 REFRESH 之后,header 行仍然具有最新分配的值,即 2。当 运行 程序在调试器中时,可以很容易地确定这一点。

请注意,内部 table 与 header 行的使用已过时,如 SAP help 中所述。

您可以使用清除命令清除 header 行。

REFRESH itab.
CLEAR itab.