S/4 HANA中的MATDOC和MATDOC_EXTRACT

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

本文将介绍2点内容,

传统的物料凭证表MKPF,MSEG和新表MATDOC间的关系

传统的库存表如MARD, MCHB, MSKU, MSLB, MARDH, MCHBH, MSKUH, MSLBH等和新表MATDOC以及MATDOC_EXTRACT的关系

此外,一些广为流传的文章(比如SAP S/4 Hana On-premise Edition 1511做了哪些简化、SAP S/4HANA 1610后勤之变)中提出S4中的库存数据会从MATDOC表中实时计算,本文将证明这种说法是不准确的:至少对于MARD等标准表而言,其中的数据来自于对MATDOC_EXTRACT的汇总,而非MATDOC。

replacement object

网络上的个别文章提到S4中不再存在MKPF和MARD等表,数据都来自于CDS。这种说法不是很准确,事实上MKPF等表依然是存在的,只不过其中的数据被CDS entity替换掉了,这种CDS entity就是所谓replacement object。而类似于FAGLFLEXT这种视图,它们的表则是真的不存在了。SE11中查看的话可以看出区别:

S/4 HANA中的MATDOC和MATDOC_EXTRACT

S/4 HANA中的MATDOC和MATDOC_EXTRACT

 

这种区别看似无所谓,实际上对开发人员而言是有区别。使用Open SQL对包含replacement object的表的访问通常会被重定向到replacement object,但在某些情况下存在例外(具体参看文档)。这种名实不符的情况有时会导致意外的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_MKPF' @EndUserText.label: 'MKPF Compatibility View' @DataAging.noAgingRestriction: 'false' @ObjectModel.usageType.sizeCategory: 'L' @ObjectModel.usageType.serviceQuality: #C @ObjectModel.usageType.dataClass: #TRANSACTIONAL @ClientHandling.algorithm: #AUTOMATED @AccessControl.authorizationCheck: #NOT_ALLOWED @AbapCatalog.viewEnhancementCategory: #PROJECTION_LIST define view nsdm_e_MKPF as select 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 /* Fields 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 to be the same as the APPEND. Rules are: ABAP Catalog Objekt: <Append>_V DDL Source <Append>_DDL CDS View = <Append>_E The alphabetical order of the EXTEND VIEW in the final proxy view is according to the name of sqlViewAppendName and not accroding to DDL source name or the EXTEND VIEW name! Hence there is still a restriction on 16 chars! */ /* DDL sources of known extensions so far: JVMKPF_DDL MILL_MKPF_DDL */ from matdoc where record_type = 'MDOC' and header_counter = 1

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwxds.html