ABAP固定点运算(Fixed point arithmetic)惹的祸

昨天做了个销售订单的增强优化,逻辑写在MV45AFZZ里边,增强代码里有几处小学数学运算,测试的时候发现运算结果怎么都不对。如下图所示,869除以1的结果正常应该是869,但是程序运算的结果是0.87。

ABAP固定点运算(Fixed point arithmetic)惹的祸

请教了下ABAP大师,大师说看看是不是固定点运算没有勾选,默认我们自建的程序时勾选的。

检查后发现,include文件本身是没有这个参数的,但VA01的主程序SAPMV45A属性里有这个参数,确实没有勾选固定点运算。

ABAP固定点运算(Fixed point arithmetic)惹的祸

测试后发现,在未勾选固定点运算的程序里,数学运算、数值的赋值都是不正常的,需要传参到外部函数算好再直接取结果,否则无法得到正常结果。

写个DEMO来验证一下。

ABAP固定点运算(Fixed point arithmetic)惹的祸

ABAP固定点运算(Fixed point arithmetic)惹的祸

由此可见,在未勾选“固定点运算”时,涉及负数的赋值以及运算都可能会出问题,即使用include也不行,因为include受制于主程序的规则。如果主程序未勾选“固定点运算”的情况下一定要做数学运算,需要自建一个函数(ABAP函数、CDS、外部WS、RPC都可以)传值进去,计算完直接返回结果。

SAP的很多标准程序,例如VA01、F-02、定价等都是未勾选这个选项的,对这些程序做增强时,如果有数学运算要注意这个细节的处理。

本文作者: GavinDong

版权属于: GavinDong博客

文章链接: https://gavindong.com/9216.html

如果使用过程中遇到问题,可 **点击此处** 交流沟通。

版权所有,转载时必须以链接形式注明作者和原始出处及本声明。

(1)

相关文章