簡體   English   中英

通過字段符號更改 IDoc 段 SDATA?

[英]Changing IDoc segment SDATA via field-symbols?

我的情況是,我將 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而不使用<idocdata>-sdata = <sdata>

正如@Sandra 上面提到的,字段符號的不兼容可以通過在分配它們時使用CASTING來解決。 這將使第二個片段起作用。

...
IF sy-subrc = 0.
   FIELD-SYMBOLS: <sdata> TYPE E1EDK01.
   ASSIGN <idocdata>-sdata TO <sdata> CASTING.
   ...
ENDIF.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM