我正在尝试使用FOR和REDUCE合计金额…我们如何停止四舍五入时使用FOR与减少…示例40420.71四舍五入为404121.000
data(lv_total_sum) = reduce tslxx9(
init x = 0
for wa in lt_table
next x = x + wa-zzamount ).
INIT
"block"显式或隐式键入。
在你的例子中,你赋值了0
,所以它隐式地赋值了整数类型(这就是为什么你没有得到小数):
data(lv_total_sum) = reduce tslxx9( init x = 0 for wa in lt_table next x = x + wa-zzamount ).
如果你想显式地赋值一个类型,你可以这样做:
data(lv_total_sum) = reduce tslxx9( init x TYPE tslxx9 for wa in lt_table next x = x + wa-zzamount ).
对于TYPE
,该变量默认为初始值。
有关REDUCE
的更多信息,请参阅ABAP文档。
编辑:互补解:
- 在某些情况下,你可能想要分配一个非初始值,就像下面的
10
,你可以使用CONV
来分配一个类型:data(lv_total_sum) = reduce tslxx9( init x = CONV tslxx9( 10 ) for wa in lt_table next x = x + wa-zzamount ).
- 在处理小数时,您可以简单地选择最大的数字十进制类型,即
decfloat34
(您也可以选择较小的decfloat16
):data(lv_total_sum) = reduce tslxx9( init x TYPE decfloat34 for wa in lt_table next x = x + wa-zzamount ).