我的场景是,我将一个IDOC段的数据转换为一个字段符号,并根据一些验证更改一些字段。
我的代码:
READ TABLE idoc_data ASSIGNING FIELD-SYMBOL(<idocdata>) with key = 'E1EDK01'
IF sy-subrc = 0.
lcl_struc ?= cl_abap_typedescr=>describe_by_name( 'E1EDK01' ).
CREATE DATA dref TYPE HANDLE lcl_struc.
ASSIGN dref->* TO FIELD-SYMBOL(<sdata>).
IF <sdata> IS ASSIGNED.
<sdata> = <idocdata>-sdata.
....
<idocdata>-sdata = <sdata>.
ENDIF.
ENDIF. 虽然上面的代码片段工作得很好,但是字段符号的连续性被打破了,现在我必须传回更改过的数据。如何使用ASSIGN并让字段符号处理更改而不是显式语句?
类似于下面的代码片段,但这不能工作,因为<IDOC_DATA>-SDATA和<SDATA>不兼容。
READ TABLE idoc_data ASSIGNING FIELD-SYMBOL(<idocdata>) with key = 'E1EDK01'
IF sy-subrc = 0.
FIELD-SYMBOLS: <sdata> TYPE E1EDK01.
ASSIGN <idocdata>-sdata TO <sdata>.
....
ENDIF.我的期望是,当我在<SDATA>-FIELD1中更改数据时,我希望在不使用<idocdata>-sdata = <sdata>的情况下将更改传递到<IDOCDATA>-SDATA中。
发布于 2021-07-02 20:31:15
正如@Sandra上面提到的,字段符号的不兼容性可以通过在赋值时使用CASTING来解决。这将使第二个代码片段正常工作。
...
IF sy-subrc = 0.
FIELD-SYMBOLS: <sdata> TYPE E1EDK01.
ASSIGN <idocdata>-sdata TO <sdata> CASTING.
...
ENDIF.https://stackoverflow.com/questions/68224049
复制相似问题