SAP MM MIGO过账报错 - 用本币计算的余额 - 之对策
SAP MM MIGO过账报错 - 用本币计算的余额 - 之对策
使用MIGO事务代码对采购订单4500000191,执行收货,系统报错:
详细错误信息如下:
用本币计算的余额
消息号 F5703
诊断
含下列明细的本币"VND"存在余额。
汇率类型"10",金额" 1"和货币代码"VND"。
已从调用应用程序中传输本币中的数据。
业务背景是,业务创建了一个退货采购订单,退货给国外供应商。退货之前,业务人员做了批次分割,根据业务实际,退货数量是由8个批次组成。由于单位换算的缘故,每个退货批次的数量都到小数点后三位,同时这笔退货业务里还涉及到汇率换算。
1), 第一次在MIGO事务里遇到这种报错,所以笔者首先想到以这个报错信息上网查资料,有人建议如下:
The error is in GL code
GO to FS00 GL Master, for your GL
Go to Control Tab and remove the check box which reads "Only Balance Local currecy"
Consult you FI teams once
根据这个查询结果,笔者去找财务顾问,让其帮忙联系财务业务,修改总账科目。财务顾问表示不同意,说"Only Balance Local currecy"这个标记不能随便改,软磨硬泡的说服了财务顾问,对方答应帮忙修改这个编辑,说是等这笔过账成功后要赶紧再改回来。不巧的是,这个改动并不成功,SAP系统报错说该总账科目余额不为0!
2),没有办法了,只好出大招,找ABAP顾问帮忙看看到底哪里出问题了。经过Debug程序,发现如下内表数据,
其J列(WRBTR)总和不是0,而是0.01,
问题在于黄色标记的三行里,因小数点四舍五入导致三行J列之和是0.01。
在DEBUG模式下,修改了这三行J列里的数据里的小数点最后一位,确保三行J列之和是0,最后MIGO 过账成功!
这个问题,通过这种野蛮办法算是解决了。不过笔者还是希望能找到一个更为合适的方式来解决类似问题,是故整理成这篇文字,算是抛砖引玉吧。
2019-05-05 写于苏州市。