SAP MM 进销存报表优化小记

简介: SAP MM 进销存报表优化小记

笔者刚刚加入SY项目,就接到了SY集团上海总部SAP运维部门负责人的工作分配,说是有一只进销存报表,需要做一个优化,可能是需要重新设计重新开发。



笔者研究了他们现行进销存报表,也与内部顾问了解了一下这个报表的一些情况,得知该报表有2个硬伤,第一个是性能超级慢,基本不堪使用,查询日期范围,即使是昨天到今天2天,报表依旧会跑死,报ABAP Runtime Error;第二个是期末库存金额与财务科目余额表里的库存金额对不上。性能慢是因为报表功能过于复杂,从报表第一版程序到现在,被改了无数次,增加了很多逻辑;既要能按批次来查询进销存,还要能按照storage location来查询;既要查询库存数量,还要计算金额,面积;而其面积的计算,又涉及到物料主数据和批次主数据里的classification视图数据;加上客户系统里的工厂代码超过40个,日积月累,货物移动方面的数据量巨大。诸多原因导致该报表处于被弃用的状态,而交给我的任务是救活这张报表!



为了实现这个优化,找到性能慢的原因以及库存余额与科目余额表不一致的问题,笔者找了开发同事帮忙分析代码,发现其性能慢在查询批次进销存数据的时候,耗时太多;同时,抓取期初库存余额的时候,仅仅考虑到了货物移动带来的库存价值的变化,却未能考虑到非货物移动比如修改物料成本价,比如发票校验导致的库存价值的变化。这是导致库存余额跟科目表余额差异的原因。



找到了原因,笔者开始了报表优化的设计。把报表功能缩小,不再支持按批次进销存查询,只在工厂级别(不考虑storage location级别)的进销存;同时采用顺推方式得到期末余额,现根据MBEWH/MSEG/MKPF/BSIM表里抓取到期初余额,然后抓取查询日期范围内货物移动以及其它事务代码导致的库存变化数据,计算出期末余额。特别去BSIM表里抓取到非货物移动导致的库存价值变化的数据,笔者总结了,需要去BSIM表里抓取凭证类型为ML/PR/RE等的财务凭证里的金额,按借方和贷方汇总,计入指定查询日期范围内货物移动的库存差异金额栏位,这个栏位参与计算期末余额。


image.png



Document type=ML (ML结算)

Document number: 2100000186



Document type: PR (价格更改), 财务凭证号:2200000087



image.png


看BKPF表数据,


image.png



也是没有物料凭证号的。



3,Document type: RE(发票总额),2500000049


image.png



看财务凭证,是一张发票校验对应的财务凭证,有一笔库存差异计入了库存科目里,如下图:


image.png



看物料分类帐数据,凭证号:1005446306


image.png



就一个物料有库存价值修改的。而物料分类帐凭证,是不在BSIM里出现的。


image.png



也就是说,如果一张发票校验,因为价格差异导致库存变动的话,它对应的财务凭证会出现在BSIM表里。



同时笔者上网查询资料得知,很多项目里,都因为没有考虑到这BSIM表里这三种财务凭证里的金额,导致进销存报表余额与科目余额表数据不一致。看这样子这是项目实践中常见问题之一。



相信这次对症下药的报表优化,能取得成功。



2018-6-18 写于无锡市新吴区


相关文章
|
8月前
|
BI
SAP ABAP 报表几个事件的先后执行顺序和作用
SAP ABAP 报表几个事件的先后执行顺序和作用
|
9月前
|
BI
如何给 SAP ABAP ALV 报表的修改功能添加自定义校验逻辑试读版
如何给 SAP ABAP ALV 报表的修改功能添加自定义校验逻辑试读版
|
8月前
|
存储 JSON 搜索推荐
如何在 SAP ABAP ALV 报表里以交通灯的方式显示某一列的值试读版
如何在 SAP ABAP ALV 报表里以交通灯的方式显示某一列的值试读版
|
1月前
|
BI 数据库
SAP ABAP ALV 报表单击某列后执行某段 ABAP 逻辑的实现方式 - hotspot 行为实现试读版
SAP ABAP ALV 报表单击某列后执行某段 ABAP 逻辑的实现方式 - hotspot 行为实现试读版
|
1月前
|
供应链 BI
SAP SCM 标准报表 /SAPAPO/SPPFIXREQ 的作用介绍
SAP SCM 标准报表 /SAPAPO/SPPFIXREQ 的作用介绍
|
7月前
|
BI
利用 ALV 实现增删改查系列之四:如何捕捉 SAP ABAP ALV 报表行项目删除时抛出的事件试读版
利用 ALV 实现增删改查系列之四:如何捕捉 SAP ABAP ALV 报表行项目删除时抛出的事件试读版
|
8月前
|
BI 数据库
27 行代码开发一个最简单的 SAP ALV 报表试读版
27 行代码开发一个最简单的 SAP ALV 报表试读版
优化 recipe 达到快速启动 SAP Hybris Accelerator Storefront 的方法
优化 recipe 达到快速启动 SAP Hybris Accelerator Storefront 的方法
|
9月前
|
存储 JSON 搜索推荐
授人以渔-在 SAP MM 物料显示界面上看到一个字段,如何查找哪张数据库表的哪个字段进行的存储的试读版
授人以渔-在 SAP MM 物料显示界面上看到一个字段,如何查找哪张数据库表的哪个字段进行的存储的试读版
|
8月前
|
SQL BI 应用服务中间件
SAP ABAP 报表进度显示控件的使用详解试读版
SAP ABAP 报表进度显示控件的使用详解试读版