[ ABAP老白 ](javascript:void\(0\);)
“ABAP的坑”是一个系列,主要是揭示在ABAP开发中容易出错的地方,每篇推送推出一个坑。相信不论资深还是菜鸟,不论大神还是渣渣,只要做ABAP开发,就肯定被这些坑坑过,如果你还没有遇到过这些坑,说明你写的程序还太少。
另外,如果你有关于ABAP坑的故事,请在下面留言。
戳文章最下面的这个:
正文:
名列ABAP第一坑的是: **工作区域未清空**
**
**
先看一段代码:
我期望的结果是
而实际上程序运行出来的结果是
为啥错了呢?就是因为工作区域未清空,加上一句CLEAR,欧了
知识点:
内表(ITAB)和工作区域(WA)的概念是传统ABAP开发中非常基础和非常重要的概念,他们的关系就相当于存储柜和工作台,内表是存储柜,工作区域是工作台。一般来说,在不使用
FIELD-SYMBOLS的情况下,操作内表内容要通过工作区域来进行,所以在某些情况下工作区域的值就决定了内表的值。
工作区域里面的数除非你主动的或者隐式的去更改它,否则它是不会自己清空或者改变的。如果应该清空而没有清空,数据就错了,这个时候再用错误的数据去给内表赋值,内表的数据也就错了。
这个例子是非常明显的未清空的错误,有些复杂程序的未清空非常隐蔽,所以要养成清空工作区域的习惯。有事没事清一下。