我的问题不在于真正的编程语言。
我有一个 ABAP 语言练习,但该语言不是很重要。
无论如何,我有一张桌子:
我需要计算该职位的总成本(显然是在选择之后)。
然后,该表将按两个字段(MATNR 和 BUKRS)进行分组,因此我需要知道每个组的头寸总成本 MAX、总成本 MIN 和总成本 AVERAGE。
但是我需要一个简单的算法来解决这个问题(伪代码)。
我希望我说清楚了。
对于表聚合,我发现 LOOP 中的 AT 函数非常方便。
根据您需要的维度对字段进行排序,并按升序或降序对值进行排序。
此处字段的顺序非常重要,因为 AT 会查找指定字段及其左侧同一行中的所有字段中的更改。因此,您可以逐个处理组并将组聚合的结果附加到结果表中。
LOOP AT lt_itab ASSIGNING <ls_itab>.
AT NEW bukrs. "at first entry of combination matnr, bukrs
ls_agg-matnr = <ls_itab>-matnr.
ls_agg-bukrs = <ls_itab>-bukrs.
ENDAT.
TRY.
ADD <ls_itab>-amount TO lf_sum.
CATCH cx_sy_arithmetic_overflow.
lf_sum = 9999.
ENDTRY.
lf_count = lf_count + 1.
IF <ls_itab>-amount > lf_max.
lf_max = <ls_itab>-amount.
ENDIF.
AT END OF bukrs. "after last entry of combination matnr,bukrs
ls_agg-avg = lf_sum / lf_count.
ls_agg-max = lf_max.
APPEND ls_agg TO lt_agged.
CLEAR: ls_agg, lf_sum, lf_count, lf_max.
ENDAT.
ENDLOOP.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)