嵌套循环未知数量或时间

2020-08-30 21:10发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 在这种情况下,我有一...

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

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


专家们,

在这种情况下,我有一个包含2个字段的表IT_DIM_MEMBER。

DIMENSION(C20):尺寸ID

T_MEMBER(内部表):维的选定成员

示例:

此表的行数和行中的值是在运行时根据系统配置确定的。

我要填写的结果表(ET_RESULT)的结构是动态的,并且IT_DIM_MEMBER表中列出的尺寸显示为列。 最后,应使用T_MEMBER表的值的所有可能组合填充它。

有没有一种方法可以动态嵌套未知数量的循环(取决于IT_DIM_MEMBER表中的维数),以便我可以遍历所有T_MEMBER组合?

或者我们怎么能做到这一点?

谢谢

穆罕默德。

(12.4 kB)
5条回答
小灯塔
2020-08-30 21:33

首先,您必须找出结果表的字段列表。 您可以按照以下步骤进行操作

 FIELD-SYMBOLS:键入任何类型。
 数据:lt_comp TYPE abap_component_tab。
 数据:lo_ref_wa类型参考cl_abap_structdescr。

 "将单行附加到结果
 在et_result ASSIGNING 上附加初始行。

 "获取工作区域的参考
 lo_ref_wa?= cl_abap_tabledescr => describe_by_data(p_data = )。

 "获取工作区的组件列表-et_result
 lt_comp = lo_ref_wa-> get_components()。

一旦找到了字段列表,就可以如下填充结果表

数据:
    lv_index TYPE sy-tabix。

 字段符号:
      TYPE任意。

 v_index = 1。

 "为ET_Result内部表的所有列循环
 循环到lt_comp INTO ls_comp。
   读取表it_​​dim_member的INTO数据(ls_dim_member),其键维= ls_comp-name。
  
   如果sy-subrc eq 0。
     "分配结果表的相应列
     将结构的COMPONENT ls_comp-name分配给。
    
     如果已分配。
       "读取尺寸类型的特定行
       读取表ls_dim_member-t_member INTO数据(dim_member)INDEX lv_index。
       如果sy-subrc eq 0。
          = dim_member。
       万一。
     万一。

   万一。
 ENDLOOP。

上面的代码将读取每个维值的t_member的第一行。

希望这有助于您找到完整的解决方案。

谢谢

古拉布

一周热门 更多>