你知道为什么S4HANA中物料凭证要全部放在MATDOC中吗

摘要:S/4HANA相对于ECC来说,其中一个显著变化是物料凭证存放的表结构有了很大的变化。但大家有没有过这样的疑问,SAP怎么会对表结构也下狠手来变革呢?

正文:

***坚持不搬砖,需要官方资料请自行度娘。以下内容全是个人的理解,不当之处,欢迎交流探讨。

在ECC中,物料凭证主要分为抬头表MKPF和行项目表MSEG来存储。另外,还有一套当前库存表(包括MARD、MSLB、MCHB等)和历史库存表(包括MARDH、MSLBH、MCHBH等)。而在S/4HANA中,所有这些物料凭证及库存、历史库存表,全部被一张MATDOC表取代了。这背后的原因以及影响会是什么呢?

原因分析

我们都知道,S/4HANA不同于ECC,在ECC时代,SAP支持了所有的主流数据库,包括Oracle、DB2、SYBASE等。而到了S/4HANA,则仅支持SAP自家的HANA数据库。HANA数据库有两个重要特点,一是内存计算,二是同时支持列式存储。这两者最大的优势都是读取速度的极大提升,而对于写入速度,个人认为,在同等的硬件条件下,不严谨地推测,写入性能是有比较大的下降的。记得曾经有一个项目要导入20W条左右的检验计划数据,使用的数据库正是HANA。按往常在非HANA数据库下的导入经验,20W可能也就是5小时以内就能完成导入,而这个项目在HANA数据库环境+更好的硬件条件下,总共花了2天多超过50小时才完成。下图为行式存储与列式存储的一张示意图:

***上图来自网络,侵删***

可以看到,对于列式存储,读取某张表的几个字段是相对校快的,毕竟这些数据是连续存放的,不需要像行式存储那样不断地移动位置。但是,写入性能会比较糟糕,因为数据写入的过程反而有点像行式存储的读取过程,列式存储的写入过程需要不断地移动数据保存的位置。这个技术渊源,我猜是来自SYBASE原来的产品SYBASE IQ。IQ是专门用于在线查询分析的数据库,采用的正是列式存储的技术。

从以上的技术分析可以推断,S/4HANA所采用的HANA数据库,虽然是内存计算,但为优化查询而主要采用了列式存储,其写入性能是堪忧的。SAP为解决这个问题,需要尽一切可能减少写操作。因此,作为占写操作大头的物料凭证、会计凭证,都被精减了。

带来的影响

精减的数据表结构,除缓解了数据写入性能低的问题外,对于我们实施和使用SAP,有以下几点或好或不好的影响。

1、解决了过往需要在各种库存表取数的问题

虽然说SAP通过CDS(CORE DATA Service,类似于数据库视图),旧的表仍然能取到数。但既然都换了新的表了,我们当然可以直接从MATDOC取得库存数据。以下是一个简单的示例:

上述示例程序的输出结果是:

是不是极其简单。而且这种库存查询正好利用了HANA数据库的特点,只抓取特定字段时,HANA数据库的查询读取速度可以很快。

2、解决了历史库存计算的难题。

在ECC时代,历史库存的计算是极其折腾的,且计算的过程需要消耗很大的资源,比如SAP自家开发的俄罗斯报表(J3RFLVMOBVED),我就没在哪个项目的生产系统上跑出来过。而有了MATDOC+HANA数据库,这一切变得这么简单:

以上代码运行的结果如下:

 

***更多的内容等你来发现与分享,请关注我们的公众号,获得每天推送的分享文章!

全文完,谢谢观看

SAP原创知识分享平台,所有文章由资深专家顾问亲自验证与编写,拒绝一切搬砖行为。

欢迎投稿,合作事宜请发邮件到:[email protected]

扫描下方二维码或长按识别二维码关注微信公众号【SAP天天问】参与互动。

猜你喜欢

转载自blog.csdn.net/freeguigui/article/details/81140469