前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAP 历史库存的详解

SAP 历史库存的详解

作者头像
用户5495712
发布2019-08-20 15:08:27
3.3K1
发布2019-08-20 15:08:27
举报
文章被收录于专栏:SAP ERP管理实践SAP ERP管理实践

项目实施中,经常报表需要读取当前月份库存和历史库存,本文简要描述

1.1 库存数据的保存

根据库存类型的不同,库存信息保存在不同的表中,具体而言见下表

库存类型

当前库存

历史库存

库存金额

历史库存金额

工厂级别库存

MARCMBEW

MARCH

MBEW

MBEWH

库存地点库存

MARC

MARDH

MBEW

MBEWH

供应商寄售库存

MKOL

MKOLH

MBEW

MBEWH

客户寄售库存

MSKU

MSKUH

MBEW

MBEWH

供应商外包库存

MSLB

MSLBH

MBEW

MBEWH

销售订单库存

MSKA

MSKAH

EBEW

EBEWH

批次库存

MCHB

MCHB

MBEW

MBEWH

以表MBEW和MBWEH为例

在表MBEW中,按照物料+工厂记录物料在工厂下的数量和金额;

在表MBWEH中,记录历史库存,按照物料+工厂+月份记录物料特定月份在工厂下的数量和金额;

1.2 表MBEW和MBEWH记录的逻辑说明

物料MBEW为当前库存信息,因此每次库存变动时,都会更新表MBEW。

表MBEWH记录历史库存,当物料第一次发生移动时,在表MBEWH中记录上个月的库存和去年底的库存、前年底的库存,当然这条记录均为零。

当物料在每个月发生第一次货物移动时,则在表MBEWH中记录该物料上个月的库存信息,当物料未发生货物移动,但发生金额变动时,也会在表MBEWH记录该物料上个月的库存信息。

下文通过一个案例解释表MBEWH的逻辑说明:

某公司2011.12.1 SAP 项目上线,

物料A在某工厂期初库存为500个,金额为5000

物料B在某工厂期初库存为600个,金额为6000

因此期初库存初始化时

通过移动类型561的形式将物料A、B的库存导入到系统中,过账日期为2011.11.31,

导入后,库存信息将会记录到表MBEW中,具体如下

物料A 数量500个, 金额5000元,

物料B 数量600个,金额6000元

此时表MBEWH的数据如下

物料A 2008 12 数量0 金额0

物料A 2009 12 数量0 金额0

物料A 2010 11 数量0 金额0

物料B 2008 12 数量0 金额0

物料B 2009 12 数量0 金额0

物料B 2010 11 数量0 金额0

2011年1月份,物料A发生二次库存移动,每次数量减少100个,物料B未发生库存移动。

当物料A在1月份发生第一次库存移动时,此时系统更新表MBEWH,更新结果为上个月的库存数量和金额,具体而言,在本例中,表MBEWH的信息增加记录如下

物料A 月份201012 数量500个 金额5000元

当物料A在1月份再次发生货物移动时,由于已经在表MBEWH记录了上个月的库存信息,因此不再更新表MBEWH

而物料B在1月份未发生任何货物,因此不会更新表MBEWH。

1.3 示例说明

1.3.1 物料的移动情况和金额变动情况

如下图所示,通过事务代码MB51查看物料的移动情况

三个物料1000000002020、1000000005006、1000000021025在工厂1014下分别发生以下货物移动

在2011年11月期初库存入库产生三行物料凭证(移动类型561),物料1000000021025发生一笔采购入库(移动类型101)

如下图所示,事务代码MR21查看物料发生的金额变动

物料1000000005006在2011.12月发生价格重新评估, 11月份入库时成本为零,重新评估后成本为每1000个9069.05

1.3.2 查看表MBEWH

三个物料在期初库存导入时,在表MBEWH形成三条记录,分别记录上月、去年底、前年底

物料1000000021025在12月份未发生库存移动,因此无新记录。

物料1000000021025在12月份新入库一笔,数量15,000,因此在表中记录上个月(2011.11)的库存数量和金额,具体而言,在表中新增一条2011.11的记录,数量18,000.000金额3,230.77。

物料1000000005006在12月份被重新发生评估,因此在表中新增一条2011.11的记录,数量192,金额为零

用户/客户有几百种“历史库存报表需求”的理由,而且是可以查任意时间的。

可惜的是, SAP 系统并没有现成的所谓的History Stock,其实也没有必要,这违背了数据库设计的冗余规则。

我看到过的 SAP系统 中关于“历史库存报表”或“时点库存报表”的方案无外乎有两种:

一、使用作业的办法,定期(一般是每天)抓取作业执行时刻的库存信息,存储在自定义表格中;

二、查询业务单据或物料凭证的明细,再累计出待查时刻的余额。

方法一的好处在于,查询历史数据速度较快。但是,这相当的占用存储资源;其二,我们不能保证这定期的作业的确定性,硬件维护、系统性能都可能使这预定的 “时刻”出现偏差,如果某一次没能抓取该时刻的库存,对整个报表来说,是数据的缺失;其三,最初设计的抓取数据的方式、方法,极有可能在新需求的压力下被 修改,或者被推翻,这仍然不能满足需要。

方法二的好处在于,它解决了上一个方案的第二和第三个问题。不过,这个报表运行起来就像回到了石器时代。这对于业务数据量大的SAP系统的影响是致命的,因为它不但失去了用户的信任,更可怕的是它会动摇管理层的信心。

或许有第三个方案,有人会想到信息记录(LIS),SAP有一大堆积于LIS的库存分析报表,不过,用过的人都知道,它极不可信。这种报表成就了日常对数的用户与支持者或实施者之间旷日持久的拉锯战,虽然OSS里面有若干针对LIS报表的修正方案。

我在一次对数的过程中尝试了第四种方案,那就是带H的月累表:MARCH、MARDH、MBEWH等。分析了一下这些表格的更新逻辑,它不是将每一种物料没一个期间都更新到表中的。

然后,摸索出一条使用标准程序来获得历史库存的途径。相关TCODE是,MB5B、MB51,不使用MB5T。

状态

库存级别

查询方式

有价库存

在库

Storage loc.

MB5B(Valued Option)

在途(采购、两步移库)

Plant

MB5B(Valued Option)

质检

Storage loc.

MB5B(Valued Option)

冻结

Storage loc.

MB5B(Valued Option)

其他特殊库存

Plant

MB5B(Valued Option)

零价库存

在库

Storage loc.

MB5B(Storage loc. Option)

在途(采购、两步移库)

Plant

MB51累计

质检

Storage loc.

MB5B(Storage loc. Option)

冻结

Storage loc.

MB5B(Storage loc. Option)

其他特殊库存

Plant

MB5B(Valued Option)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ERP管理实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 库存数据的保存
  • 1.2 表MBEW和MBEWH记录的逻辑说明
  • 1.3 示例说明
    • 1.3.1 物料的移动情况和金额变动情况
      • 1.3.2 查看表MBEWH
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档