2020-08-22 03:23发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我有一个动态表的动态结构。 我想循环遍历表,并检查结构中是否存在字段名称" ABC"。 如果存在,则根据字段的值,我将更改结构中另一个字段的值。
例如,如果字段struct-fieldname ='ABC'和字段值='S',则我将字段XYZ(struct-xyz)显示为正,否则显示为负。 是否可以通过字段符号使用动态结构和动态表来实现? 谢谢
你好,
像这样
数据:
ls_comp类型abap_componentdescr,
ls_stru类型参考cl_abap_structdescr, p>
lt_comp类型的abap_componentdescr标准表。
ls_stru?= cl_abap_typedescr => describe_by_data()。
lt_comp = ls_stru-> get_components()。
p>
内部表lt_comp同时具有字段名称和值。
在lt_comp循环到ls_comp。
ls_comp-name-> fieldname
的组件sy-tabix
分配给。---> fieldvalue
endloop。
问候
Prabhu
谢谢,但是您的代码由于没有数据定义而使我出现编译错误:
如果我声明任何,
将没有组件名称-名称。
什么是wf_var1,wf_update_coc?
无论如何,我解决了这个问题。 我只是在动态结构中循环查看组件字段名称" XXX"和" YYY"是否存在,如果两个字段名称都存在,
然后我可以通过命令更改值
将结构的组件" XXX"分配给。
将结构的组件'YYY'分配给。
如果 ='H'。
= *-1。
endif。
感谢您的帮助。
嗨,
您可以使用以下代码段
FIELD-SYMBOLS:键入任何类型。
将结构struc的组件'ABC'指定为。
如果sy-subrc = 0。
如果是初始值。
ENDIF。
这将从您的结构中将字段" ABC"的值读取到
您可以尝试
数据:tb_struct类型参考cl_abap_structdescr, tb_comp TYPE abap_component_tab。 *填充wa_pc_model_data2的字段 tb_struct?= cl_abap_typedescr => describe_by_data(wa_pc_model_data2)。 循环tb_struct-> components ASSIGNING 。 wf_var1 = -名称。 使用wf_var1执行fill_fields wa_pc_model_data2 更改wf_update_coc。 清除:wf_var1。 结局。 清除tb_struct。 UNASSIGN:, , 。
使用pf_wf_var1填写fill_fields pf_wa_pc_data_field 更改pf_wf_update_coc。 **将结构的组件分配给字段符号 分配组件pf_wf_var1 结构pf_wa_pc_data_field至。 如果sy-subrc = 0。 分配组件pf_wf_var1 wa_coc_tech TO 的结构。 如果sy-subrc = 0。 **检查IDOC数据是否已填写 **还要检查IDOC和数据库表数据是否相同 如果不是为INITIAL,并且" IDOC数据 NE 。 " IDOC数据NE数据库表数据 = 。 "从IDOC字段更新数据库字段 pf_wf_update_coc ='X'。 "设置标志 万一。 万一。 万一。 ENDFORM。 " fill_fields
Valerie,
很高兴听到您解决了此问题,但是对于那些不知道的人,可以将声明为,键入abap_compdescr。
您可以将lv_name声明为字符串。
lv_name = -名称。
因此,在LV_NAME中,您将获得任何动态结构的名称。 现在,使用分配组件,您可以从结构中获取值。
此致
Jayesh
最多设置5个标签!
你好,
像这样
数据:
ls_comp类型abap_componentdescr,
ls_stru类型参考cl_abap_structdescr, p>
lt_comp类型的abap_componentdescr标准表。
ls_stru?= cl_abap_typedescr => describe_by_data()。
lt_comp = ls_stru-> get_components()。
p>
内部表lt_comp同时具有字段名称和值。
在lt_comp循环到ls_comp。
ls_comp-name-> fieldname
< p>将结构i_copaitem的组件sy-tabix
分配给。---> fieldvalue
endloop。
问候
Prabhu
谢谢,但是您的代码由于没有数据定义而使我出现编译错误:
如果我声明任何,
将没有组件名称-名称。
什么是wf_var1,wf_update_coc?
无论如何,我解决了这个问题。 我只是在动态结构中循环查看组件字段名称" XXX"和" YYY"是否存在,如果两个字段名称都存在,
然后我可以通过命令更改值
将结构的组件" XXX"分配给。
将结构的组件'YYY'分配给。
如果 ='H'。
endif。
感谢您的帮助。
嗨,
您可以使用以下代码段
FIELD-SYMBOLS:键入任何类型。
将结构struc的组件'ABC'指定为。
如果sy-subrc = 0。
如果是初始值。
ENDIF。
ENDIF。
这将从您的结构中将字段" ABC"的值读取到
嗨,
您可以尝试
Valerie,
很高兴听到您解决了此问题,但是对于那些不知道的人,可以将声明为,键入abap_compdescr。
您可以将lv_name声明为字符串。
lv_name =-名称。
因此,在LV_NAME中,您将获得任何动态结构的名称。 现在,使用分配组件,您可以从结构中获取值。
此致
Jayesh
一周热门 更多>