求和有至少有2种方法。
一种是语法支持的Sum语句,配合AT END OF ... 和 AT LAST语句使用。不过对内表格式有要求。内表必须按照求和的规则去排序,而且求和规则必须在内表结构的最前列。
代码例子如下:
SORT P_TAB_OUTPUT1 BY STR_BM ASCENDING AS TEXT PERNR ASCENDING.
LOOP AT P_TAB_OUTPUT1 INTO L_REC_OUTPUT1.
APPEND L_REC_OUTPUT1 TO L_TAB_OUTPUT1.
* 计算小计行
AT END OF STR_BM.
SUM.
L_REC_OUTPUT1-STR_BM = '小计'.
CLEAR L_REC_OUTPUT1-PERNR.
CLEAR L_REC_OUTPUT1-NACHN_NORNV.
APPEND L_REC_OUTPUT1 TO L_TAB_OUTPUT1.
ENDAT.
* 计算总计行
AT LAST.
SUM.
L_REC_OUTPUT1-STR_BM = '总计'.
CLEAR L_REC_OUTPUT1-PERNR.
CLEAR L_REC_OUTPUT1-NACHN_NORNV.
APPEND L_REC_OUTPUT1 TO L_TAB_OUTPUT1.
ENDAT.
ENDLOOP.
另一种方法就是自己定义临时变量。在循环输出的时候,手工累加求和字段然后输出即可。
以上是针对普通LIST的求和方法。