点击蓝字 关注我们
一
问题描述
期初库存导入的商品凭证,如果输入的外部金额为0(EXBWR=0), 如果移动商品/地点的移动平均价不等于0,系统会自动使用移动平均价乘数量作为凭证的金额. 而不是使用外部金额EXBWR=0的值.这样期初导入的价值就不是我们期望的成本价值.
二
问题分析
SAP ERP软件的标准逻辑 允许输入外部金额, 但是如果外部金额为0, 系统视同为未输入外部金额, 此时系统会自动获取有效的成本单价*数量作为凭证的金额.
三
简单解决办法
一个最简单的解决办法是, 外部金额输入一个很小的金额. 比如0.01 ,系统认为外部金额<>0, 就不会执行获取成本价*数量的逻辑.
但是总会有人挑战这个方案,认为系统不能有任何差异, 哪怕1分钱也不行.
四
问题分析(代码追踪)
代码追踪过程比较枯燥.建议直接跳过到后面一章
系统在
MM07MFM0_M_SEGMENTE_ERGAENZEN 139行左右执行了XMSEG-DMBTR的赋值 FORM M-SEGMENTE_ERGAENZEN
xmseg-dmbtr = yfbuz-dmbtr.
系统在 MM07MFF9_F_SEGMENTE_ERSTELLEN657行左右 添加内表YFBUZ.
MM07MFF9_F_SEGMENTE_ERZEUGEN208行左右 YFBUZ-DMBTR = XACCCR-WRBTR.
来自YACCCR[]
来自
XZCXCM[] MM07MFF9_F_SEGMENTE_BEWERTEN 51行左右.
LMBGBFSU 51行左右 xzcxcm-dmbtr = <betrag>. 来自 YCURTP[]
LMBGBFWR1529行左右 LOOP AT ycurtp.
LMBGBFWR 1324行左右 PERFORM wertesperrtab_fuellen USING mseg-matbf
LMBGBFWR 1664 行左右
/**/SPAN PERFORM (mseg-bustw) IN PROGRAM saplmbgb. 字段 BESTD VERBR
LMBGBFAS 510 行左右
五
问题解决
在 LMBGBFAS FORM wert_bestand 结尾的位置修正 w-bestd 金额 w-verbr 成本 两者如果不一致,计入差异
在 FORM WERT_BESTAND 开头的位置,把w-exwob调整为X. 这样后续处理的时候, 系统允许外部0价值处理商品凭证.字段W-EXWOB的系统描述是,在货币转换后,有可能会把金额转换为0, 此时还是需要用0金额记账,而不是获取移动平均价. 符合561 期初0金额入账的需求.
一个好的办法是,设置一个配置表, 允许通过配置表打开或者关闭这个增强功能,如图的ZTBC009(可以通过移动类型配置这个开关)
THE
END
约定
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
(如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)
公众号 : syjf1976_abap
ABAP开发技巧
微信号 : 392077
公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群