0

我需要在几个代码位置将数据字段(另一个字段符号的组件)分配给字段符号。为了可重用性,我决定将此代码封装在过程中,但我不明白如何将字段符号传递到此过程中。

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.

此代码不起作用。

我应该怎么做才能更改字段符号引用?

4

1 回答 1

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.    
于 2012-08-24T14:10:39.797 回答