問題

私はkey-value内部テーブルを持っており、既存の構造を埋めたいと思っています。

例:最初に、2つの既存のテーブルからデータを読み込んで作成するkey-valueテーブルを取得します。

 SELECT vals~attr_value, names~attr_name
  FROM atst_attr AS vals
    INNER JOIN tc_attr AS names
      ON vals~tc_attr_id = names~tc_attr_id
  WHERE vals~atst_id = @lv_atst_id
  INTO TABLE @DATA(itab)
  .
 

今私のitabは次のようになります:

 itab: 
      name      value  
 1. "field_a" "value_a"  
 2. "field_c" "value_c"
 

私のローカル構造(または頻繁に呼び出されるので作業領域)は空です:

 l_struc: 
   field_a: ""
   field_b: ""
   field_c: ""
 

今私は助けが必要な構造を埋めたい - 私は結果をしたい:

l_struc: field_a: "value_a" field_b: "" field_c: "value_c"

nameプロパティから構造コンポーネントの名前へのマッピングを自動的に行い、その値を設定するにはどうすればよいですか?

  ベストアンサー

何かのようなもの:

 FIELD-SYMBOLS lv_field TYPE ANY.

LOOP AT itab
     ASSIGNING FIELD-SYMBOL(<ls_itab>).
  ASSIGN COMPONENT <ls_itab>-name
         OF STRUCTURE l_struc
         TO <lv_field>.
  IF sy-subrc EQ 0.
    <lv_field> = <ls_itab>-value.
  ENDIF.
ENDLOOP.
 

  同じタグがついた質問を見る

abap