我需要在几个代码位中将数据字段(另一个字段符号的组件)分配给字段符号。为了可重用性,我决定将此代码封装在过程中,但我无法理解如何将字段符号传递给此过程。
LOOP bseg ASSIGNING <bseg>
...
PERFORM assigning USING <bseg>
CHANGING <wrbtr>.
...
ENDLOOP.
FORM assigning USING <bseg> TYPE bseg
CHANGING <wrbtr> TYPE bseg-wrbtr
IF ...
some logic here
ASSIGN <bseg>-wrbtr TO <wrbtr>.
ELSE
ASSIGN <bseg>-skfbt TO <wrbtr>.
ENDIF.
ENDFORM.
此代码不起作用。
我该怎么做才能更改字段符号引用?
答案 0 :(得分:2)
这是不可能的,至少不是你尝试这样做的方式。字段符号不能作为指针实际传递。如果你需要这样的东西,你将不得不使用真正的参考。
对代码的其余部分一无所知 - 看起来有点奇怪。为什么要直接更改BSEG字段中的数据?我只能假设你“滥用”字段在整个代码中传输一些自定义值,这通常是一个坏主意。如果你需要这样做,我宁愿这样做:
LOOP bseg ASSIGNING <bseg>.
IF foo.
l_my_wrbtr = <bseg>-wrbtr.
ELSE.
l_my_wrbtr = <bseg>-skfbt.
ENDIF.
" ... pro'lly thousands of lines I don't even want to see...
IF foo.
<bseg>-wrbtr = l_my_wrbtr.
ELSE.
<bseg>-skfbt = l_my_wrbtr.
ENDIF.
ENDLOOP.