MATDOC 数据库表现在包含了 Material 物料数据的抬头信息和行项目数据。混合表(例如MARC、MARD等)仍然存在,但它们只保存主数据信息(Master Data)。在选择这些表期间显示的所有库存信息都是动态计算的。在动态计算库存数据时,使用 MATDOC_EXTRACT表的目的是为了加速 对 MATDOC 表的汇总。
注意,在 S/4HANA 里,MARD 这些表里包含的库存值,已经是动态计算后的结果,即来自主数据信息表 MARC 和其他库存相关表比如 NSDM_V_MARC 的动态计算结果。
像MARD这样的混合表仍然存在,并且仍然返回库存数据。然而,这些数字是使用新数据模型创建的 CDS view 视图动态计算的。这可以从SE16事务中MARD中select的SQL跟踪中看到:
CDS视图是一个用DDL(数据定义语言)SQL脚本编写的ABAP实体。在此范围内,它们用于将来自不同来源的数据聚合到单个根视图中。
使用 MB80 事务(由SAP Note 2542130提供)或 SAP ABAP Development Tool,可以检查指向ABAP Catalog 中 SE11 事物码创建的视图的DDL文件。例如,MARD 的 CDS 视图由以下元素组成:
-
数据定义文件:NSDM_DDL_MARD
-
字典视图:NSDM_V_MARD
-
一个数据库实体(存在于数据库级别,仅由DDL引用):NSDM_E_MARD
我们用 ABAP Development Tool 在 S/4HANA 系统,打开 MARD,能看到一个 @AbapCatalog.replacementObject : 'nsdm_e_mard'
注解:
CDS 视图可以定义为数据库表的替代对象(replacement,有时也称代理对象),也可以定义为ABAP Dictionary中的经典数据库视图。在这种情况下,ABAP SQL 在读取一张数据库表时,读取操作会自动转而访问其通过注解定义的替换对象。
nsdm_e_mard 的源代码: