带表头行的內表通常定义方式为:
data lt_table type standard table of ty_type with headerline.
旧语法为
data begin of lt_table occurs 0,
...
end of lt_table.
这种內表自带一个同名工作区,很多程序写法就会很有迷惑性,如:
clear lt_table.
效果为清空同名工作区,而不是內表。
清空內表的语句为:
clear lt_table[].或
refresh lt_table.
对于无表头的內表来说,
clear lt_table 效果为清空內表。
对于下面的语句会更费解:
read table lt_table index l_index transporting no fields.
效果是不会给同名工作区赋值为內表l_index行,只是给sy-tabix系统变量定位到內表的l_index行,同时也不会清空工作区中的原有值。
这样会让程序可控性暴降。所以很多开发规范中禁用带表头的內表。
如果没有大量的重定位操作,这种內表还是可以用的,标准程序里就大量使用带表头工作区的內表。
最后,这些东西你看下自带的教程,自己练习个测试程序,比问别人的效果好得多。