微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ABAP内部表的动态GROUP BY

如何解决ABAP内部表的动态GROUP BY

我想在RFC模块中聚合一些特定的数据。该模块采用多个参数(例如时间戳记)以及指定聚合类型的维度。

例如,我要在系统中的几个销售组织的特定时间范围内汇总所有合同。

为此,我对内部表使用GROUP BY功能,如下所示:

LOOP AT ls_output-merged_data INTO ls_tmp
          GROUP BY (  sales_org = ls_tmp-sales_org
                      group_quantity = GROUP SIZE )

           ASCENDING ASSIGNING FIELD-SYMBOL(<fs_tmp_2>).

          lt_tmp_dim1 = VALUE #( BASE lt_tmp_dim1 (
                              sales_org = <fs_tmp_2>-sales_org
                              group_quantity  = <fs_tmp_2>-group_quantity
                              ) ). 
ENDLOOP.

分组字段可能会因不同情况而改变,也应该有可能使用两个分组字段,例如汇总所有销售组织及其销售的物料。

我的问题是,如何能动态地执行GROUP-BY,而无需手动编程组域的每个组合?

非常感谢您

解决方法

请检查:Loop at group by dynamic group condition

我通过引用上面的链接实现了动态的“ group by”子句。也可能可以回答您的问题。

LOOP AT t_actual_data INTO DATA(actual) 
      GROUP BY cond string( when i_prodh_based eq abap_true THEN
                            |{ actual-prodh } { actual-vkorg } { actual-hl_kunnr } { actual-period }|
                            else
                            |{ actual-matnr } { actual-vkorg } { actual-hl_kunnr } { actual-period }| )
                            ASSIGNING FIELD-SYMBOL(<group>).

    "following assignment does not give any result. So I did a loop to get group conditions
    "ASSIGN COMPONENT 'PRODH' of STRUCTURE <group> to <prodh>. "no result

    "get group condition values
    LOOP AT GROUP <group> ASSIGNING FIELD-SYMBOL(<line_data>).
              ASSIGN COMPONENT 'PRODH' of STRUCTURE <line_data> to <prodh>.
              ASSIGN COMPONENT 'VKORG' of STRUCTURE <line_data> to <vkorg>.
              ASSIGN COMPONENT 'MATNR' of STRUCTURE <line_data> to <matnr>.
              ASSIGN COMPONENT 'HL_KUNNR' of STRUCTURE <line_data> to <tl_kunnr>.
              ASSIGN COMPONENT 'PERIOD' of STRUCTURE <line_data> to <period>.
              EXIT.
    ENDLOOP.

ENDLOOP.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。