将键值映射到结构
Map key-value to structure
我有一个内部键值 table 并想用它填充现有结构。
示例:1st 我通过读取两个现有 table 中的数据获得了一个键值 table。
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.
我有一个内部键值 table 并想用它填充现有结构。
示例:1st 我通过读取两个现有 table 中的数据获得了一个键值 table。
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.