星期二, 三月 26, 2013

如何避免 field symbol has not yet been assigned 小技巧tips

Field Symbol类似其他语言中的指针,所有用Assign <fs1> to <fs2>;其实是一个指针,任何对<fs2>的修改,
都反应在<fs1>
所以必须用赋值操作 = 或者move, <fs2>=<fs1>. 或者move <fs1> to <fs2>来进行copy value的操作。
但是这两个语句往往就会出现 field symbol has not yet been assigned.

所以根据<fs2>的类型来做一下申明即可避免这种错误。
Data: ref1 like <fs2>的数据类型,如果是个internal table的 符号,
field-symbols <fs2> like line of so_table.
那么就需要以下声明:
data: lc_dref1 like line of so_table.
ASSIGN lc_dref1 TO <fs2>.
然后再使用 <fs2> = <fs1>. 就无问题了。

可以使用 UNASSIGN <fs2>  来释放。