SAP MDG —— 使用DIF导入物料主数据 Part3 进阶篇

文章目录

  • 关于使用DIF处理物料主数据的相关信息
    • IDOC 缩减
    • IDOC 扩展
    • 物料编码的主键映射 Key Mapping
      • 主键映射和内部给号
    • 其他主键的主键映射
    • 值映射 Value Mapping
    • 将物料主数据导出为IDoc文件 - MATMAS / CLFMAS
    • 错误处理
    • 本章小结

关于使用DIF处理物料主数据的相关信息

IDOC 缩减

场景:
你已经创建了一个缩减后的消息类型,并希望用它来执行物料导入。
步骤
可以通过事务码 BD53 通过IDoc创建一个缩减后的消息类型。关于如何缩减标准消息类型,可以参考 Reduced Message Types 。

IDoc缩减将创建一个新的消息类型,并将该消息类型分配到IDoc上。这项技术可以允许我们向目标系统发送标准数据的一个子集。

DIF物料导入会检查是否有任何IDoc字段不存在于当前导入的IDoc文件。针对这些缺失字段,DIF将会自动分配NODATA标识符(‘/’)。

注意:
NODATA标识(‘/’)只会在直接导入Active area的场景中被考虑。如果你选择将数据导入Staging area,则NODATA标识并不会起任何作用。因此针对直接导入Staging area的场景,必须填充所有字段内容,否则数据将被覆盖为空值。

IDOC 扩展

场景:
你已经扩展了标准IDoc MATMAS05,以包括一些自定义字段用于物料管控。你想在物料导入时也使用扩展后的IDoc。
步骤

  • 创建自定义段 Segment(WE31)
  • 创建IDoc扩展并将新的自定义段加入IDoc(WE30)
  • 发布段和IDoc扩展(WE31)
  • 将扩展分配到MATMAS下(WE82)
  • 检查并传输IDoc扩展(WE30)
  • 执行事务码 CMOD,并激活增强。提供一个项目名称,并选择增强分配。提供增强 MGV00001。提供用户出口实施:EXIT_SAPLMV01_002 内向和外向实施。
  • 为函数IDOC_INPUT_MATMAS01提供新的配置(WE57)
  • 调整合作伙伴参数文件(WE20)
    SAP MDG —— 使用DIF导入物料主数据 Part3 进阶篇_第1张图片

小结:
如果可以通过IDoc直接导入数据到Active area,所有自定义字段都在数据模型MM中确定定义,Active 和 Staging area之间的SMT mapping成功设置,那么IDoc也可以用于将数据加载到Staging area。

通常来说,系统使用函数IDOC_INPUT_MATMAS01实现使用IDoc向Active area写书的操作。特殊情况下也可以替换使用自定义函数,实现自定义字段的复杂处理逻辑。

处理代码 决定了数据导入Active area的数据处理类型。SAP默认使用MATM作为处理MATMAS消息类型数据导入的处理代码,并执行函数IDOC_INPUT_MATMAS01。

如果有需要,你也可以定义一个新的内向处理代码,并使用自定义函数处理入站逻辑(WE42)。

物料编码的主键映射 Key Mapping

对于导入的物料主数据来说,导入文件中必须提供每条物料的物料编码。导入过程将决定保持相同物料号(即物料号等于源系统的物料号),或启用主键映射(新物料号与源系统物料号不同)。

场景:
如果你的工作环境存在多套相关系统,当数据从其他系统导入MDG时,主键映射可以协调和处理MDG和其他子系统间的物料编码不一致问题。

解决方案:
通过以下步骤配置MDG系统的主键映射功能:

  1. 路径:MDGIMG->常规设置->数据复制->为数据复制定义自定义设置->定义技术设置->定义业务系统的技术设置
  2. 选中一个相关的业务系统,并选择 定义业务系统,BO
  3. 选中业务对象类 194(物料)
  4. 对于通讯渠道 “通过IDOC复制”,在 “主键协调 Key Harm.” 字段,按需选择 “主键映射 Key Mapping” 或 “协调标识 Harmonized IDs” ,这地方中文翻译太差了,推荐在英文环境进行相关配置。SAP MDG —— 使用DIF导入物料主数据 Part3 进阶篇_第2张图片
    如果有需要,特定的主键映射信息也可以在物料治理工作中心内手工维护,如下图:
    SAP MDG —— 使用DIF导入物料主数据 Part3 进阶篇_第3张图片

主键映射和内部给号

场景:
在通过DIF初始化导入物料主数据时,如果系统无法根据文件中提供的物料号通过主键映射找到MDG系统对应的物料号,并且该物料类型配置了内部给号规则,则数据导入逻辑将会生成新的料号,并自动维护好新料号和数据源料号之间的映射关系。

SAP MDG —— 使用DIF导入物料主数据 Part3 进阶篇_第4张图片

解决方案:

针对外部系统 S4H_100,已启用主键映射:

SAP MDG —— 使用DIF导入物料主数据 Part3 进阶篇_第5张图片

物料类型 HIBE 在系统中定义为内部给号:
SAP MDG —— 使用DIF导入物料主数据 Part3 进阶篇_第6张图片
DIF中接收到的来自系统 QM8CLNT421的IDoc XML文件内容(SNDPRN 发送方逻辑系统标识,MATNR 发送方物料号,MTART 发送方物料类型):
SAP MDG —— 使用DIF导入物料主数据 Part3 进阶篇_第7张图片
通过DIF数据导入生成的MDG变更请求,使用内部给号(该单据已经审批通过,可以看到内部编号已生成):

SAP MDG —— 使用DIF导入物料主数据 Part3 进阶篇_第8张图片
DIF自动生成的主键映射信息:
SAP MDG —— 使用DIF导入物料主数据 Part3 进阶篇_第9张图片

其他主键的主键映射

主键映射可以用于映射MDG系统和其他外部系统数据对象的主主键。SAP提供了一组标准的IDoc主键映射字段清单。如果有需要,你也可以在该清单中加入更多主键字段,配置路径:MDGIMG->物料主数据监管->维护IDoc键值映射的字段
SAP MDG —— 使用DIF导入物料主数据 Part3 进阶篇_第10张图片

值映射 Value Mapping

值映射用于将内部代码值转换外外部代码值。SAP预置了一组IDoc相关的值映射字段,如果有需要,你也可以向清单中增加更多的字段,配置路径:MDGIMG->物料主数据监管->IDoc值映射的维护字段

SAP MDG —— 使用DIF导入物料主数据 Part3 进阶篇_第11张图片
注意:
即便IDoc包含了一些ISO格式的字段,如基本计量单位,语言代码,国家代码,MDG值映射依然只会使用他们的内部格式。例如,单位 “立方厘米”,内部代码为 CCM,对应的ISO代码为 CMQ,IDoc将使用CMQ作为发送数据的内容,然而值映射则会使用CCM进行映射维护。

要启用值映射,需要首先将代码清单分配到MDG 数据元素配置上(例如下述物料类型的代码),配置路径:MDGIMG->常规设置->值映射->分配代码清单到元素和系统
在这里插入图片描述
举例来说,字段MARA-MTART(物料类型)对应的数据类型为 MDG_BS_MATERIAL_TYPE_CODE;字段MARC-MMSTA(工厂特定的物料状态)对应的数据类型为MDGCO_PROD_LOG_PROCUSABPR_CODE。

下一步,执行配置:MDGIMG->常规设置->值映射->维护值映射
在这里插入图片描述
点击“导航”按钮,可以维护值映射的具体内容,如下图:
SAP MDG —— 使用DIF导入物料主数据 Part3 进阶篇_第12张图片
SAP MDG —— 使用DIF导入物料主数据 Part3 进阶篇_第13张图片
按照该配置,当使用DIF从外部系统QMB_421向MDG导入物料主数据时,如果外部导入文件中的MTART(物料类型)字段值为 HERS,在数据导入的处理过程中将被自动根据值映射转换为 FERT(成品)。

将物料主数据导出为IDoc文件 - MATMAS / CLFMAS

为了从源系统导出物料主数据,你需要在每个源系统中配置XML-IDoc数据抽取相关的逻辑系统,用于将文件导出到每个应用服务器的文件系统中。该配置步骤和标准配置IDoc分发类似,有过经验的同学应该都很熟悉。

步骤

  • 创建一个逻辑系统(SALE)
  • 将IDoc类型 “MATMAS” 和 “CLFMAS” 配置到分发模型中(BD64)
  • 创建一个外向合作伙伴参数文件(WE20)
  • 创建一个用户IDoc处理XML导出文件的端口(WE21)
  • 通过事务码 BD10 分发物料主数据 —— 包括物料分类数据

关于此处的详细配置,可参考 从源系统中导出数据。

错误处理

DIF标准程序允许同时导入一个或多个MATMAS IDoc XML文件,每个XML文件包含一条或多条IDoc,每个IDoc包含一个或多个物料主数据。因此针对每种情况都有不同的错误处理逻辑,详细见下表。

场景 XML文件个数 直接导入Active Area 直接导入Active Area,其中有错误的数据发送到Staging Area 直接导入Staging Area
1条IDoc
1个物料
1 XML 如果物料存在非法数据,IDoc将导入失败,并提供具体的报错信息。 如果物料存在非法数据,直接写入Active Area将失败,该物料数据转而写入Staging Area。DIF将展示具体的报错信息,并提供生成的MDG变更请求编号。
如果物料写入Staging Area的时候也失败了,那么DIF将展现具体的报错信息。
如果一条物料主数据在写入时失败,那么所有IDoc XML中的物料都会失败。同时DIF会展现具体的报错信息。
1条IDoc
N个物料
1 XML 如果IDoc中的一条物料存在非法数据(如错误的基本计量单位),那么这条IDoc中的所有物料都会导入失败。
其他情况下,如用户在前台锁定了某条物料,或某条物料存在未决变更请求,导致了写入数据报错,那么这些情况仅会阻止相关物料写入,其他正常物料不受影响可以正常写入Active Area。
如果IDoc中的一条物料存在非法数据(如错误的基本计量单位),那么这条IDoc中的所有物料都会转而写入Staging Area。
如果物料写入Staging Area的时候也失败了,那么该XML文件中所有应该写入Staging Area的物料都将写入失败,DIF将会展现具体的报错信息。
N条IDoc
每条IDoc1个物料
1 XML/1 Idoc 同上述“1条IDoc1个物料” 同上述“1条IDoc1个物料”
N条IDoc
每条IDoc1个物料
1 XML 包含所有Idoc 存在报错的IDoc导入将失败,其他IDoc继续正常执行。 如果IDoc中的一条物料存在非法数据(如错误的基本计量单位),那么这条IDoc中的所有物料都会转而写入Staging Area。
如果物料写入Staging Area的时候也失败了,那么该XML文件中所有应该写入Staging Area的物料都将写入失败,DIF将会展现具体的报错信息。
N条IDoc
M个物料
1 XML 包含所有Idoc 如果IDoc中的一条物料存在非法数据(如错误的基本计量单位),那么这条IDoc中的所有物料都会导入失败(其他没有错误的IDoc不受影响,继续执行)。
其他情况下,如用户在前台锁定了某条物料,或某条物料存在未决变更请求,导致了写入数据报错,那么这些情况仅会阻止相关物料写入,该IDoc中其他正常物料不受影响可以正常写入Active Area。
N条IDoc
M个物料
1 XML/1 Idoc 同上述“1条IDocN个物料”

本章小结

本章针对DIF工具展开了很多高阶使用方式和技巧,特别是围绕着SAP IDoc的处理。如果小伙伴以前接触或掌握SAP ALE分发技术的话,这些内容应该得心应手。此外针对Key Mapping和Value Mapping,他们不仅在DIF数据导入过程中起作用,在整个MDG产品凡是涉及到数据加载或数据分发的地方都会起到相当大的作用,因此作为MDG顾问也需要熟练掌握。下一篇章将会是MDG DIF系列的最后一章,我们将深入相关代码的开发,以最大程度满足用户的灵活需求。

你可能感兴趣的:(SAP-MDG-HOWTO,MDG,SAP,DIF)