287.6. IDoc 的消息正文
IDoc 消息类型
当使用 IDoc Camel SAP 端点时,消息正文类型取决于您使用的特定端点。
					对于 sap-idoc-destination 端点或 sap-qidoc-destination 端点,消息正文为 Document 类型:
				
org.fusesource.camel.component.sap.model.idoc.Document
org.fusesource.camel.component.sap.model.idoc.Document
					对于 sap-idoclist-destination 端点、sap-qidoclist-destination 端点或 sap-idoclist-server 端点,消息正文为 DocumentList 类型:
				
org.fusesource.camel.component.sap.model.idoc.DocumentList
org.fusesource.camel.component.sap.model.idoc.DocumentListIDoc 文档模型
对于 Camel SAP 组件,使用 Eclipse 建模框架(EMF)对 IDoc 文档进行建模,该文档围绕底层 SAP IDoc API 提供打包程序 API。这个模型中最重要的类型有:
org.fusesource.camel.component.sap.model.idoc.Document org.fusesource.camel.component.sap.model.idoc.Segment
org.fusesource.camel.component.sap.model.idoc.Document
org.fusesource.camel.component.sap.model.idoc.Segment
					文档 类型表示 IDoc 文档实例。总之,Document 接口公开以下方法:
				
					以下一种方法是 Document 接口公开:
				
- 访问控制记录的方法
- 大多数方法是访问或修改 IDoc 控制记录的字段值。这些方法的格式为 AttributeName,AttributeName,其中 AttributeName 是字段值的名称(请参阅 表 287.2 “IDoc 文档属性”)。
- 访问文档内容的方法
- getRoot方法提供对文档内容(IDoc 数据记录)的访问,以分段对象返回内容。每个分段对象可以包含任意数量的子片段,片段可以嵌套在任意程度上。- Segment- 但请注意,片段层次结构的精确布局由文档的特定 IDoc 类型定义。在创建(或读取)片段层次结构时,您必须确保遵循 IDoc 类型定义的确切结构。 
					分段类型用于访问 IDoc 文档的数据记录,其中片段根据文档的 IDoc 类型定义的结构而出。在提纲中,Segment 接口公开以下方法:
				
					getChildren (String segmentType) 方法对于向网段添加新(嵌套)子项特别有用。它返回一个类型为 SegmentList 的对象,它的定义如下:
				
					因此,要创建 E1SCU_CRE 类型的数据记录,您可以使用类似如下的 Java 代码:
				
Segment rootSegment = document.getRootSegment();
Segment E1SCU_CRE_Segment = rootSegment.getChildren("E1SCU_CRE").add();
Segment rootSegment = document.getRootSegment();
Segment E1SCU_CRE_Segment = rootSegment.getChildren("E1SCU_CRE").add();创建文档实例示例
					例如: 例 287.1 “在 Java 中创建 IDoc 文档” 演示了如何使用 IDoc 类型 FLCUSTOMER_CREATEFROMDATA01 在 Java 中创建 IDoc 模型 API。
				
例 287.1. 在 Java 中创建 IDoc 文档
文档属性
					表 287.2 “IDoc 文档属性” 显示您可以在 Document 对象上设置的控制记录属性。
				
| 属性 | 长度 | SAP 字段 | 描述 | 
|---|---|---|---|
| 
									 | 70 | 
									 | EDI 归档密钥 | 
| 
									 | 3 | 
									 | 客户端 | 
| 
									 | 8 | 
									 | 创建日期 IDoc | 
| 
									 | 6 | 
									 | 创建时间 IDoc | 
| 
									 | 1 | 
									 | 方向 | 
| 
									 | 14 | 
									 | 引用消息 | 
| 
									 | 14 | 
									 | 引用消息组 | 
| 
									 | 6 | 
									 | EDI 消息类型 | 
| 
									 | 1 | 
									 | EDI 标准 | 
| 
									 | 6 | 
									 | EDI 标准的版本 | 
| 
									 | 14 | 
									 | 引用交换文件 | 
| 
									 | 8 | 
									 | IDoc 类型 | 
| 
									 | 16 | 
									 | IDoc number | 
| 
									 | 4 | 
									 | SAP Release of IDoc | 
| 
									 | 30 | 
									 | 基本 IDoc类型的名称 | 
| 
									 | 30 | 
									 | 扩展类型的名称 | 
| 
									 | 3 | 
									 | 逻辑消息代码 | 
| 
									 | 3 | 
									 | 逻辑消息功能 | 
| 
									 | 30 | 
									 | 逻辑消息类型 | 
| 
									 | 1 | 
									 | 输出模式 | 
| 
									 | 10 | 
									 | 接收器地址(SADR) | 
| 
									 | 70 | 
									 | 接收器的逻辑地址 | 
| 
									 | 2 | 
									 | 接收器的合作伙伴功能 | 
| 
									 | 10 | 
									 | 合作伙伴接收器数量 | 
| 
									 | 2 | 
									 | 合作伙伴类型的接收器 | 
| 
									 | 10 | 
									 | 接收器端口(SAP 系统、EDI 子系统) | 
| 
									 | 
									 | 发件人地址(SADR) | |
| 
									 | 70 | 
									 | 发件人的逻辑地址 | 
| 
									 | 2 | 
									 | sender 的合作伙伴功能 | 
| 
									 | 10 | 
									 | 合作伙伴发件人数量 | 
| 
									 | 2 | 
									 | 合作伙伴的发件人类型 | 
| 
									 | 10 | 
									 | 发件人端口(SAP 系统、EDI 子系统) | 
| 
									 | 20 | 
									 | EDI/ALE: Serialization 字段 | 
| 
									 | 2 | 
									 | IDoc 的状态 | 
| 
									 | 1 | 
									 | test 标记 | 
在 Java 中设置文档属性
					在 Java 中设置控制记录属性时(来自 表 287.2 “IDoc 文档属性”)时,会遵循 Java bean 属性的常规约定。也就是说,可以通过 getName 和 setName 方法来访问 name 属性,以获取和设置属性值。例如,iDocType、iDocTypeExtension 和 messageType 属性可按照 文档 对象设置如下:
				
// Java
document.setIDocType("FLCUSTOMER_CREATEFROMDATA01");
document.setIDocTypeExtension("");
document.setMessageType("FLCUSTOMER_CREATEFROMDATA");
// Java
document.setIDocType("FLCUSTOMER_CREATEFROMDATA01");
document.setIDocTypeExtension("");
document.setMessageType("FLCUSTOMER_CREATEFROMDATA");在 XML 中设置文档属性
					在 XML 中设置控制记录属性时,必须在 idoc:Document 元素上设置属性。例如,iDocType、iDocTypeExtension 和 messageType 属性可以设置如下: