S4 HANA中的MATDOC和MATDOC_EXTRACT

上传人:慢*** 文档编号:233089669 上传时间:2022-01-01 格式:DOC 页数:13 大小:102.96KB
返回 下载 相关 举报
S4 HANA中的MATDOC和MATDOC_EXTRACT_第1页
第1页 / 共13页
S4 HANA中的MATDOC和MATDOC_EXTRACT_第2页
第2页 / 共13页
S4 HANA中的MATDOC和MATDOC_EXTRACT_第3页
第3页 / 共13页
S4 HANA中的MATDOC和MATDOC_EXTRACT_第4页
第4页 / 共13页
S4 HANA中的MATDOC和MATDOC_EXTRACT_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《S4 HANA中的MATDOC和MATDOC_EXTRACT》由会员分享,可在线阅读,更多相关《S4 HANA中的MATDOC和MATDOC_EXTRACT(13页珍藏版)》请在金锄头文库上搜索。

1、S/4 HANA中的MATDOC和MATDOC_EXTRACT目录 replacement object 物料凭证 库存正文最近做了销售和物料管理方面的一些需求,因此对S/4中的MM的数据模型有了一定的了解。目前网络已经有一些介绍物料凭证表MATDOC的文章,内容好像不是很详细,另外也没发现介绍库存变更数据表MATDOC_EXTRACT的文章。我打算把自己知道的一点东西写下来分享。水平所限,如有不正确的地方,请务必评论指正。本文将介绍2点内容, 传统的物料凭证表MKPF,MSEG和新表MATDOC间的关系 传统的库存表如MARD, MCHB, MSKU, MSLB, MARDH, MCHBH,

2、 MSKUH, MSLBH等和新表MATDOC以及MATDOC_EXTRACT的关系此外,一些广为流传的文章(比如SAP S/4 Hana On-premise Edition 1511做了哪些简化、SAP S/4HANA 1610后勤之变)中提出S4的SAP中的库存数据会从MATDOC表中实时计算,本文将证明这种说法是不准确的:至少对于MARD等标准表而言,其中的数据来自于对MATDOC_EXTRACT的汇总,而非MATDOC。本文链接:原创内容,转载请注明回到顶部replacement object网络上的个别文章提到S4中不再存在MKPF和MARD等表,数据都来自于CDS。这种说法不是很

3、准确,事实上MKPF等表依然是存在的,只不过其中的数据被CDS entity替换掉了,这种CDS entity就是所谓replacement object.。MKPF和MSEG中的数据全部来自MATDOC,MARD中的全部数据来自于MATDOC_EXTRACT。而类似于FAGLFLEXT这种视图,它们的表则是真的不存在了。SE11中查看的话可以看出区别:这种区别看似无所谓,实际上对开发人员而言是有区别。使用Open SQL对包含replacement object的表的访问通常会被重定向到replacement object,但在某些情况下存在例外(具体参看文档)。这种名实不符的情况有时会导致

4、意外的bug,可以参见笔者之前的踩坑经历。回到顶部物料凭证MKPF, MSEG和MATDOC之间的关系相对简单,目前我试着把接到的需求里的MKPF和MSEG都转换成MATDOC,开发效率有一些提升,程序的工作情况良好。MKPF表的replacement object是NSDM_E_MKPF,这个CDS entity是直接从MATDOC中取数的,条件为record_type = MDOC和header_counter = 1,代码如下,可以重点看where语句部分,AbapCatalog.sqlViewName: NSDM_V_MKPFEndUserText.label: MKPF Compat

5、ibility ViewDataAging.noAgingRestriction: falseObjectModel.usageType.sizeCategory: LObjectModel.usageType.serviceQuality: #CObjectModel.usageType.dataClass: #TRANSACTIONALClientHandling.algorithm: #AUTOMATEDAccessControl.authorizationCheck: #NOT_ALLOWEDAbapCatalog.viewEnhancementCategory: #PROJECTIO

6、N_LISTdefine view nsdm_e_MKPF asselect key mandt, key mblnr, key mjahr,vgart,blart,blaum,bldat,budat,cpudt,cputm,aedat,usnam,tcode,xblnr,bktxt,frath,frbnr,wever,xabln,awsys,bla2d,tcode2,bfwms,exnum,spe_budat_uhr,spe_budat_zone,le_vbeln,spe_logsys,spe_mdnum_ewm,gts_cusref_no,fls_rsto,msr_active/*Fiel

7、ds which do belong to APPENDs on MSEG will be provided via EXTEND VIEW to this view.Hence, Industries having also APPENDs can use the same technique and just because the alphabetical sequence of APPENDs is also valid for EXTEND VIEW the compability will be ensured.The name of the IS EXTEND VIEW has

8、to be the same as the APPEND. Rules are:ABAP Catalog Objekt: _VDDL Source _DDLCDS View = _EThe alphabetical order of the EXTEND VIEW in the final proxy view is according to the name of sqlViewAppendNameand not accroding to DDL source name or the EXTEND VIEW name! Hence there is still a restriction o

9、n 16 chars!*/*DDL sources of known extensions so far:JVMKPF_DDLMILL_MKPF_DDL*/from matdocwhere record_type = MDOC and header_counter = 1 MSEG和它差不多,replacement object是NSDM_E_MSEG,同样从MATDOC中获取数据,条件则只有record_type = MDOC,代码略过不贴。使用MATDOC代替MKPF和MSEG,可以减少不必要的关联次数。另外,也有stock_qty和consumption_qty等方便计算的字段,利用它们

10、可以减少相关逻辑处理代码,提高开发速度。回到顶部库存一些文章提到S4中的库存数据是从MATDOC中实时汇总得出的,的确,MATDOC中包含计算库存所需的全部数据。但是这个表的数据在物料凭证级别的,随着时间的进行,SAP系统内会积累大量的物料凭证,从这样海量的数据中汇总库存,似乎有些奢侈。例如FICO模块中的ACDOCA表,就是从年初余额开始汇总,来获取余额的(见前文:S/4 HANA中的ACDOCT和FAGLFLEXT),而不是汇总历史上的每一笔凭证。通过对各个库存表的replacement object的阅读追踪,我发现实际上库存数据来自于另一个表:MATDOC_EXTRACT。这是一个实在

11、的透明表,并不存在replacement object:NOTE 2246602 中提到了这个表:为了减轻(从MATDOC中进行聚合运算时因数据量大导致的性能下降的)影响,SAP引入了第二个表MATDOC_EXTRACT,从中计算实际库存数据。MATDOC_EXTRACT有一小部分来自MATDOC的字段,在物料凭证过账时,每当有数据被插入到MATDOC中,也会有数据被插入MATDOC_EXTRACT中。MATDOC_EXTRACT里的数据会被定期压缩,比如,假设有以下两条数据: Date:20.11.2015; Material:4711; Plant:0001; StorageLocatio

12、n:0001; StockIdentifier:01; SpecialStock:blank; Quantity: 10,0; Unit: PC Date:23.11.2015; Material:4711; Plant:0001; StorageLocation:0001; StockIdentifier:01; SpecialStock:blank; Quantity: -3,0; Unit: PC会被压缩为: Date:PrecompactingDate; Material:4711; Plant:0001; StorageLocation:0001; StockIdentifier:0

13、1; SpecialStock:blank; Quantity: 7,0; Unit: PC新的压缩后的数据会被插入MATDOC_EXTRACT,两条被压缩的数据会被从中删除。通过这种做法,表MATDOC_EXTRACT中的总记录数和用于聚合的记录数都会定期减少,因此,对库存的查询(相比从MATDOC中进行)会有更好的性能。该过程被称为“预压缩”(precompacting),默认作为期末结算(period end closing)的一部分运行。如果因此导致期末结算性能下降,也可以自行安排定期后台作业。以下通过MARD的replacement object,NSDM_E_MARD为例,我们来观

14、察下它是如何从MATDOC_EXTRACT中获取数据的。源代码:AbapCatalog.sqlViewName: NSDM_V_MARDEndUserText.label: MARD Compatibility ViewDataAging.noAgingRestriction: falseObjectModel.usageType.sizeCategory: LObjectModel.usageType.serviceQuality: #CObjectModel.usageType.dataClass: #TRANSACTIONALClientHandling.algorithm: #AUTOMATEDAccessControl.authorizationCheck: #NOT_ALLOWEDAbapCatalog.viewEnhancementCategory: #PROJECTION_LISTdefine view nsdm_e_mard as select from mard as t left outer join nsdm_e_mard_diff as m on t.mandt = m.mandt and t.matnr = m.matnr and t.werks = m.werks

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号