为 IDOC 解析器构建消息模型

使用 IBM MQ Link for R3 发送到 SAP 应用程序或从中接收的 ALE IDoc 消息可由 IDOC 解析器处理,该解析器需要消息模型以正确解释数据。 本主题说明如何构建消息模型。

准备工作

不推荐使用 IDOC 域。 要开发新消息流,在要处理由 SAP R3 客户机通过 IBM MQ link for R3 发送到集成节点的 SAP ALE IDoc 时,请使用具有 TDS 物理格式的 MRM 域。

获取 IDoc

关于此任务

IBM® App Connect Enterprise 工具包创建所需IDoc数据的导入文件。

过程

  1. 登录到 SAP 系统。
  2. 运行提供的事务 we60,这会将 IDoc 数据抽取为 C 头文件。
    1. 基本类型中,选择所关注的 IDoc 类型; 例如, MATMAS02
    2. 保留 控件数据状态 复选框处于未选中状态。
    3. 选择 记录类型 版本。 版本 4 IDoc 类型为 3
    4. F7 以显示 IDoc 的 C 表示。
    5. 选择 系统 > 列表 > 保存 > 本地文件
    6. 单击 未转换
    7. 提示显示后,输入事务的输出文件名和目录。
      IDoc 的 C 表示将保存到此 C 头文件。

后续操作

提示: 导出的C头文件可直接导入 IBM App Connect Enterprise 工具包, 无需任何额外的手动处理。

对 IDoc 建模

关于此任务

创建消息模型。

过程

  1. 切换到 "集成开发" 透视图
  2. 使用 " 新建消息集 " 向导为 IDoc 创建消息集。 选择二进制数据作为要使用的数据。 此选项将创建具有定制连线格式 (CWF) 物理格式的消息集,并将缺省消息域属性预设为 MRM
  3. 使用 "消息集" 编辑器将 缺省消息域 属性更改为 IDOC
  4. 使用 " 新建消息定义文件 " 向导来导入 ALE IDoc 消息结构的预构建模型。
    要启动该向导,请单击 文件 > 新建 > 来自的消息定义文件。 当向导打开时,选择 IBM 提供的消息,然后选择 SAP ALE IDoc。 此 SAP ALE IDoc 预构建模型包含 DC 和 DD 段的定义。 产生的消息定义文件称为 ale_idoc.mxsd。 有关使用 " 新建消息定义文件 " 向导的信息,请参阅 消息集: 从 IBM 提供的消息导入
  5. 使用 " 新建消息定义文件 " 向导或 mqsicreatemsgdefs 命令将 IDoc 的 C 表示导入到新的消息集中。
    要启动该向导,请单击 文件 > 新建 > 来自的消息定义文件。
    指定以下设置:
    • 选择 C 头文件
    • 选择要应用的预处理选项设置为 SAP ALE IDoc。 如果未指定此选项,那么导入 C 头将失败。 如果已指定此选项,那么将忽略消息前缀首选项。
    • 为 IDoc 中显示的段创建消息。
    • 使用字符串编码选项将字符数组作为固定长度的字符串导入。
    • 使用字符串的填充字符选项可使空格 () 成为所使用的填充字符。
    有关使用 " 从 C 头文件新建消息定义文件 " 向导的信息,请参阅 消息集: 从 C 导入

使用 IDoc 消息模型

关于此任务

现在您可以使用消息模型帮助您构建处理 IDoc 消息实例的消息流。 您可以使用 ESQL 或 Java™ 来访问 IDoc 的字段。 由于映射编辑器不 支持 IDOC 域,您无法使用图形映射访问 IDoc 字段。

设置要从 WebSphere® MQ Link for R3接收 IDoc 的 MQInput 节点的属性时, 消息域 属性必须是 IDOC消息模型 属性必须是消息集的名称,而 消息格式 属性必须是定制有线格式的名称。 您不需要在 MQInput 节点上设置 消息类型 属性,因为 IDOC 解析器不需要此属性。

消息流完成后,将消息集和消息流添加到 BAR 文件,并将 BAR 文件部署到集成节点集成服务器。

MQInput 节点接收到 IDoc 时, IDOC 解析器将在 DC 中处理 SAP定义的元素,然后针对每个 DD 处理 SAP定义的元素,并调用 MRM 解析器以使用 CWF 物理格式处理用户定义的段数据,如导出的 IDoc 所述。 MRM 解析器可识别用于用户定义的段的消息类型属性,因为它由 IDOC 解析器从 SAP 定义的 DD 字段 segnam 获取。

提示: SupportPac IA0F 包含有关构建 IDoc 消息模型所涉及的步骤的更详细描述。 您可以忽略实用程序 IDocHeaderTweak 和 IDocMsgSetTweak,因为该处理已合并到使用 C 头文件新建消息定义文件 向导中。