问题描述
我指的是这个问题:LOOP AT... GROUP BY with dynamic group key
我也想做一些动态的GROUP-BY-Aggregation。
我想像以下代码片段那样对GROUP-BY-Statement进行动态化:
WHEN 'vkorg'.
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.
目前我对此有些口吻:
LOOP AT ls_output-merged_data INTO ls_tmp
GROUP BY COND #( WHEN iv_dim1 EQ 'vkorg' THEN |{ ls_tmp-sales_org }| )
ASCENDING ASSIGNING FIELD-SYMBOL(<total_group>).
LOOP AT GROUP <total_group> ASSIGNING FIELD-SYMBOL(<line_data>).
ASSIGN COMPONENT 'vkorg' OF STRUCTURE <line_data> TO FIELD-SYMBOL(<vkorg>).
EXIT.
ENDLOOP.
ENDLOOP.
这里的问题是,我还需要GROUP SIZE字段。但是,我无法将其放入嵌入式表达式中,例如:| {ls_tmp-sales_org GROUP SIZE} |
我尝试了几种位置和语法,但无法使其正常工作。
有人以前做过类似的事情并且可以帮助我吗?
解决方法
感谢Sandra,现在可以使用了:
LOOP AT ls_output-merged_data INTO ls_tmp
GROUP BY ( sales_org = COND #( WHEN iv_dim1 EQ 'vkorg' THEN |{ ls_tmp-sales_org }| )
group_quantity = GROUP SIZE )
ASCENDING ASSIGNING FIELD-SYMBOL(<total_group>).
ENDLOOP.