ABAP在使用FOR和REDUCE时停止舍入

  • 本文关键字:舍入 REDUCE FOR ABAP abap
  • 更新时间 :
  • 英文 :


我正在尝试使用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 ).