从动态结构获取字段名称

2020-08-22 03:23发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个动态表的动态结构。 我想循环遍历表,并检查结构中是否存在字段名称" ABC"。 如果存在,则根据字段的值,我将更改结构中另一个字段的值。

例如,如果字段struct-fieldname ='ABC'和字段值='S',则我将字段XYZ(struct-xyz)显示为正,否则显示为负。 是否可以通过字段符号使用动态结构和动态表来实现? 谢谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个动态表的动态结构。 我想循环遍历表,并检查结构中是否存在字段名称" ABC"。 如果存在,则根据字段的值,我将更改结构中另一个字段的值。

例如,如果字段struct-fieldname ='ABC'和字段值='S',则我将字段XYZ(struct-xyz)显示为正,否则显示为负。 是否可以通过字段符号使用动态结构和动态表来实现? 谢谢

付费偷看设置
发送
5条回答
SAP小菜
1楼-- · 2020-08-22 03:40

你好,

像这样

数据:

ls_comp类型abap_componentdescr,

ls_stru类型参考cl_abap_structdescr,

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

Doze时光
2楼-- · 2020-08-22 03:57

谢谢,但是您的代码由于没有数据定义而使我出现编译错误:

如果我声明任何

将没有组件名称-名称。

什么是wf_var1,wf_update_coc?

无论如何,我解决了这个问题。 我只是在动态结构中循环查看组件字段名称" XXX"和" YYY"是否存在,如果两个字段名称都存在,

然后我可以通过命令更改值

将结构的组件" XXX"分配给

将结构的组件'YYY'分配给

如果 ='H'。

= *-1。

endif。

感谢您的帮助。

悠然的二货
3楼-- · 2020-08-22 03:57

嗨,

您可以使用以下代码段

FIELD-SYMBOLS:键入任何类型。

将结构struc的组件'ABC'指定为

如果sy-subrc = 0。

如果是初始值。

ENDIF。

ENDIF。

这将从您的结构中将字段" ABC"的值读取到

SAP小菜
4楼-- · 2020-08-22 03:58

嗨,

您可以尝试


 数据: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

 
灬番茄
5楼-- · 2020-08-22 03:35

Valerie,

很高兴听到您解决了此问题,但是对于那些不知道的人,可以将声明为,键入abap_compdescr。

您可以将lv_name声明为字符串。

lv_name = -名称。

因此,在LV_NAME中,您将获得任何动态结构的名称。 现在,使用分配组件,您可以从结构中获取值。

此致

Jayesh

一周热门 更多>