最近这个项目,由于业务需要我们给他们做了一个采购订单的批导程序,但他们在做的时候总有一条数据会报下面的错误:
然后通过调式程序发现在调用BAPI创建采购单的时候会报下面的错误:
调式的时候发现这条数据每次传来的时候,采购订单的数量总是0,这就导致在传参创建PO的时候通过不了。然后就让客户把要导入的数据发来看了一下,发现这条数据的订单数量是0.070,单位是:EA;如下图:
然后就开始找对应的问题:
1) 从商品主数据的维护去找相关问题,通过该商品的采购视图看是否维护的最小订单数量是不是1,导致没有取到,但通过采购视图查看维护的数量是0,不是这个原因导致的
2) 去找该供应商下该商品的采购信息记录里维护的最小订单数量是不是维护的1,导致的这个问题;也不是这个问题导致的,如下图:
3) 查看该供应商看是否因为供应商维护了最小订单值导致的;也不是这个问题导致的,如下图:
4) 最后只有查看SAP给的标准单位,看是不是EA这个单位不能给小数;查看事务代码CUNI—> 找到EA 然后看其配置如下:
然后在测试系统试了一下,确实如果这个给的小数位数为:0 则在创建采购订单的时候输入零点几的时候就会默认变成了0;就会提示输入输入数量,如图:
确实是这个问题导致的出错,给出的解决方案是:
1)更改该商品的主数据,给该商品一个EA和其他单位的转换关系,比如可以把EA转换为M,TON等能用小数的单位,如图:
这样在做采购的时候就能输入小数,但是单位要用转换后的单位来进行;
2) 在不改变原单位的情况下,参照原单位EA新配置一个单位,配置路劲如下:SPRO --> SAP NetWeaver --> General Settings(常规设置) --> 检查计量单位;然后参照EA创建一个新的计量单位EB;给它维护的小数位数为3位;这样可以解决这个问题但以前创建的商品主数据也要更改,且期初导入的库存也要进行出库才能变更;如下图:
在此感谢和我一起排雷的开发大佬和领导
通过这个感觉SAP还是博大精深,一个小小的单位就能牵扯到这么多东西,学习SAP任重道远!!!