2020-09-29 20:05发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我有一个产品的价格行中有6个小数位。 一旦我评估了晋升,就算术例外。 请确认是否还有其他方法可以计算小数点后6位的促销。 促销活动已正确应用,价格小数点后两位。
请告诉我们它是否有错误或存在任何解决方法。
亲爱的查尔斯,
我检查并比较了6.1和6.2之间的代码库,发现以下分析。
在AbstractCommerceRAOAction类第226行中创建createOrderEntryConsumedRAO()时获取了异常
**受保护的OrderEntryConsumedRAO createOrderEntryConsumedRAO(OrderEntryRAO orderEntryRAO,整数数量,BigDecimal折扣值) { OrderEntryConsumedRAO orderEntryConsumed = new OrderEntryConsumedRAO();//221 orderEntryConsumed.setOrderEntry(orderEntryRAO);//222 orderEntryConsumed.setQuantity(quantity);//223 BigDecimal basePrice = orderEntryRAO.getBasePrice();//225 BigDecimal调整后的UnitPrice = basePrice.subtract(discountValue).setScale(2);//226 orderEntryConsumed.setAdjustedUnitPrice(adjustedUnitPrice);//228 return orderEntryConsumed;//230 } **
类似地,在6.2代码库中,不赞成使用该方法,而是从AbstractRuleExecutableSupport类使用createOrderEntryConsumedRAO()方法。 在这里,如果我们看到方法createOrderEntryConsumedRAO()依次调用getOrderUtils()。applyRounding(),则舍入处理如下。
受保护的OrderEntryConsumedRAO createOrderEntryConsumedRAO(OrderEntryRAO orderEntryRAO,整数数量,BigDecimal折扣值){OrderEntryConsumedRAO orderEntryConsumed = new OrderEntryConsumedRAO(); orderEntryConsumed.setOrderEntry(orderEntryRAO); orderEntryConsumed.setQuantity(quantity); BigDecimal basePrice = orderEntryRAO.getBasePrice(); BigDecimal AdjustedUnitPrice = basePrice.subtract(discountValue); BigDecimal roundedAdjustedUnitPrice = this.getOrderUtils().applyRounding(adjustedUnitPrice,orderEntryRAO.getCurrencyIsoCode()); orderEntryConsumed.setAdjustedUnitPrice(roundedAdjustedUnitPrice); 返回orderEntryConsumed; }
OrderUtils
public BigDecimal applyRounding(BigDecimal price,String currencyIsoCode){ BigDecimal roundedPrice = null; 如果(Objects.nonNull(price)){ 可选比例= this.getDigitsOfCurrency(currencyIsoCode); roundedPrice =(BigDecimal)scale.map((d)-> { 返回price.setScale(d.intValue(),RoundingMode.HALF_EVEN); })。orElse(price); } 返回roundedPrice; }
请确认分析是否正确,并且6.1中的提升将对舍入产生影响。
嗨,索普潘,
您是对的。 我之前已经用6.2进行过测试,但是没有发生此问题。 对于6.1,存在算术异常。
您仍然需要提出产品支持票证才能通过官方补丁进行修复。
如果您可以访问Wiki页面,则这里是常规信息: https ://wiki.hybris.com/display/SUP/SAP+Hybris+Product+Support+General+Information
链接到SAP支持门户: https://support.sap.com/contactus
您可以通过设置所用货币的Currency.digits属性来配置小数位数。 这也将适用于价格计算和促销,即基本价格,订单项价格和促销折扣将包含配置的小数位数,具体取决于产品价格中的小数位数。
在这种情况下,您不应获得晋升的例外。 发布更多有关该异常的详细信息,以防万一您仍然可以得到它。
我在我们这方面进行了验证,但没有算术异常发生。 您将必须报告产品支持问题以及详细信息,以便进一步调查。
最多设置5个标签!
亲爱的查尔斯,
我检查并比较了6.1和6.2之间的代码库,发现以下分析。
在AbstractCommerceRAOAction类第226行中创建createOrderEntryConsumedRAO()时获取了异常
类似地,在6.2代码库中,不赞成使用该方法,而是从AbstractRuleExecutableSupport类使用createOrderEntryConsumedRAO()方法。 在这里,如果我们看到方法createOrderEntryConsumedRAO()依次调用getOrderUtils()。applyRounding(),则舍入处理如下。
受保护的OrderEntryConsumedRAO createOrderEntryConsumedRAO(OrderEntryRAO orderEntryRAO,整数数量,BigDecimal折扣值){OrderEntryConsumedRAO orderEntryConsumed = new OrderEntryConsumedRAO(); orderEntryConsumed.setOrderEntry(orderEntryRAO); orderEntryConsumed.setQuantity(quantity); BigDecimal basePrice = orderEntryRAO.getBasePrice(); BigDecimal AdjustedUnitPrice = basePrice.subtract(discountValue); BigDecimal roundedAdjustedUnitPrice = this.getOrderUtils().applyRounding(adjustedUnitPrice,orderEntryRAO.getCurrencyIsoCode()); orderEntryConsumed.setAdjustedUnitPrice(roundedAdjustedUnitPrice); 返回orderEntryConsumed; }
OrderUtils
请确认分析是否正确,并且6.1中的提升将对舍入产生影响。
嗨,索普潘,
您是对的。 我之前已经用6.2进行过测试,但是没有发生此问题。 对于6.1,存在算术异常。
您仍然需要提出产品支持票证才能通过官方补丁进行修复。
如果您可以访问Wiki页面,则这里是常规信息: https ://wiki.hybris.com/display/SUP/SAP+Hybris+Product+Support+General+Information
链接到SAP支持门户: https://support.sap.com/contactus
您可以通过设置所用货币的Currency.digits属性来配置小数位数。 这也将适用于价格计算和促销,即基本价格,订单项价格和促销折扣将包含配置的小数位数,具体取决于产品价格中的小数位数。
在这种情况下,您不应获得晋升的例外。 发布更多有关该异常的详细信息,以防万一您仍然可以得到它。
嗨,索普潘,
我在我们这方面进行了验证,但没有算术异常发生。 您将必须报告产品支持问题以及详细信息,以便进一步调查。
一周热门 更多>