问题解决之 期初库存强制0金额记账

2021-10-30 19:12发布


          点击此处--->   EasySAP.com 群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)

点击蓝字 关注我们

问题描述

期初库存导入的商品凭证,如果输入的外部金额为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 = .  来自 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


公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群

赞赏支持