如何解决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 举报,一经查实,本站将立刻删除。