用户/客户有几百种“历史库存报表需求”的理由,而且是可以查任意时间的。
可惜的是,SAP系统并没有现成的所谓的History Stock,其实也没有必要,这违背了数据库设计的冗余规则。
我看到过的SAP系统中关于“历史库存报表”或“时点库存报表”的方案无外乎有两种:
一、使用作业的办法,定期(一般是每天)抓取作业执行时刻的库存信息,存储在自定义表格中;
二,查询业务单据或物料凭证的明细,再累计出待查时刻的余额。
方法一的好处在于,查询历史数据速度较快。但是,这相当的占用存储资源;
其二,我们不能保证这定期的作业的确定性,硬件维护、系统性能都可能使这预定的“时刻”出现偏差,如果某一次没能抓取该时刻的库存,对整个报表来说,是数据的缺失;
其三,最初设计的抓取数据的方式、方法,极有可能在新需求的压力下被修改,或者被推翻,这仍然不能满足需要。
方法二的好处在于,它解决了上一个方案的第二和第三个问题。不过,这个报表运行起来就像回到了石器时代。这对于业务数据量大的SAP系统的影响是致命的,因为它不但失去了
用户的信任,更可怕的是它会动摇管理层的信心。
或许有第三个方案,有人会想到信息记录(LIS),SAP有一大堆积于LIS的库存分析报表,不过,用过的人都知道,它极不可信。这种报表成就了日常对数的用户与支持者或实施者
之间旷日持久的拉锯战,虽然OSS里面有若干针对LIS报表的修正方案。
我在一次对数的过程中尝试了第四种方案,那就是带H的月累表:MARCH、MARDH、MBEWH等。分析了一下这些表格的更新逻辑,它不是将每一种物料没一个期间都更新到表中的。
然后,摸索出一条使用标准程序来获得历史库存的途径。相关TCODE是,MB5B、MB51,不使用MB5T。
| 状态 | 库存级别 | 查询方式 |
有价库存 | 在库 | S.Loc | MB5B(Valued Option) |
在途(采购、两步移库) | Plant | MB5B(Valued Option) | |
质检 | S.Loc | MB5B(Valued Option) | |
冻结 | S.Loc | MB5B(Valued Option) | |
其他特殊库存 | Plant | MB5B(Valued Option) | |
零价库存 | 在库 | S.Loc | MB5B(S.Loc Option) |
在途(采购、两步移库) | Plant | MB51累计 | |
质检 | S.Loc | MB5B(S.Loc Option) | |
冻结 | S.Loc | MB5B(S.Loc Option) | |
其他特殊库存 | Plant | MB5B(S.Loc Option) |