将字段符号传递给FORM

时间:2012-08-24 13:44:13

标签: loops reference field abap assign

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

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.

此代码不起作用。

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

1 个答案:

答案 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.