业务对象至平面结构的转换

作为业务对象处理的第一步,连接器将业务对象转换为可以在 SAP 应用程序中处理的平面结构。平面结构的格式对于所有类型的业务对象(如基于事务调用的业务对象或基于 IDoc 的业务对象)都是相同的。平面结构是来自特定于应用程序的业务对象的重新格式化的数据。两种格式的数据之间的唯一差别是平面结构不保持父子业务对象关系。因此,连接器依靠一组规则来创建平面结构。

当将业务对象转换为平面结构时,连接器在内存中创建一个结构,然后用来自业务对象的数据填充该结构。在此过程中,连接器将以下数据从业务对象传递至 SAP 应用程序:

表 39 显示业务对象的通用平面结构。连接器在添加来自 WebSphere 业务对象的业务对象数据时使用此平面结构。

表 39. SAP 的 WebSphere 业务对象的通用平面结构表示
字段名 数据类型 长度 描述
ATTR_NAME CHAR 32 属性名(例如 CustomerId)
BLANK1 CHAR 1 定界符
ATTR_VALUE CHAR 200 属性值(例如 00000103)
BLANK2 CHAR 1 定界符
ISKEY CHAR 1 1 = true,0 = false;仅限于属性
BLANK3 CHAR 1 定界符
ISNEW CHAR 1 1 = 业务对象;0 = 查询描述或属性
BLANK4 CHAR 1 定界符
PEERS CHAR 6 指示一组业务对象中同级的数目
BLANK5 CHAR 1 定界符
OBJ_NUMBER CHAR 6 未使用
BLANK6 CHAR 1 定界符
APPTEXT CHAR 120 对象、查询描述或属性的特定于应用程序的信息
BLANK7 CHAR 1 定界符

注:
BLANKn 字段名始终包含单个字符(CHAR)空格,且永远都不应填充。

要使数据转换能够正确进行,平面结构中的业务对象数据必须严格遵守一组规则。这些规则在以下初始数据转换步骤中进行定义:

当连接器用业务对象数据填充平面结构时,连接器从顶级业务对象开始,对每个业务对象循环两次。

  1. 在第一遍循环中,连接器设置所有简单属性。每个属性等同于平面结构中的一行。
  2. 在第二遍循环中,连接器对每个子业务对象递归地执行步骤 1 中的相同处理。

表示子业务对象的属性不包括在它们的父代中。实际上,将作为完整的业务对象创建每个包含数据的子代。结果是按先深度后宽度来排序属性的单一列表。

图 70 举例说明了 SAP 的 WebSphere 业务对象的数据至平面数据结构的转换。数据转换始终遵循先深度后宽度的规则。在该示例中,顶级父业务对象 SAP_Order 具有两个子代 SAP_LineItem (1)SAP_LineItem (2),这两个子代被认为是同级的。SAP_LineItem (1) 具有一个子业务对象 SAP_ScheduleLines

图 70. 从业务对象至平面结构的转换


当设计业务对象定义时,了解业务对象及其属性的排序很重要。下表举例说明了 WebSphere 业务对象至平面结构的转换结果。表 40 表示平面业务对象 SAP_Material 的平面结构,该对象的键值为 ItemID。在此示例中,该业务对象或任何属性没有特定于应用程序的信息。表 41 表示基于 IDoc 销售订单的分层业务对象的平面结构。

表 40. 平面业务对象 SAP_Material
ATTR_NAME ATTR_VALUE ISKEY ISNEW PEERS OBJ_ NUMBER APPTEXT
BoName SAP_Material 0 1 1 (空白) (空白)
BoVerb Retrieve 0 0 1 (空格) :Y_XR_
DYNAMIC_RETRIEVE
ItemID 000000000000001179 1 0 1 (空白) (空白)
ShortDesc CxIgnore 0 0 1 (空白) (空白)
ObjectEventID SAP_124 0 0 1 (空白) (空白)

在此示例中,该业务对象或任何属性没有特定于应用程序的信息。

表 41. 基于 IDoc 销售订单的分层业务对象
ATTR_NAME ATTR_VALUE ISKEY ISNEW PEERS OBJ_ NUMBER APPTEXT
BoName SAP_Order 0 1 1 (空白) YXRV4B01
BoVerb Create 0 0 1 (空白) [archive:methods]
Currency USD 0 0 1 (空白) E1EDK01:CURCY
OrderId CxIgnore 1 0 1 (空白) E1EDK01:BELNR
ObjectEventId SAP_124 0 0 1 (空白) E1EDK01: ObjectEventId
BoName SAP_LineItem 0 1 2 (空白) Z1XRV40
BoVerb Create 0 0 2 (空白) (空白)
Createdby User1 1
2 (空白) Z1XRV40:ERNAM
ObjectEventId SAP_125 0 0 2 (空白) Z1XRV40: ObjectEventId
BoName SAP_ ScheduleLines 0 1 1 (空白) E1EDK14
BoVerb Create 0 0 1 (空白) (空白)
Qualifier 001 1 0 1 (空白) Z1XRV40:QUALF
OrganizationId 1000 0 0 1 (空白) E1EDK14:ORGID
ObjectEventId SAP_126 0 0 1 (空白) E1EDK14: ObjectEventId
BoName SAP_LineItem 0 1 2 (空白) Z1XRV40
BoVerb Create 0 0 2 (空白) (空白)
Createdby User1 1 0 2 (空白) Z1XRV40:ERNAM
ObjectEventId SAP_127 0 0 2 (空白) Z1XRV40: ObjectEventId

连接器将为每个业务对象添加前两行 BoNameBoVerbBoNameBoVerb 是不能用作业务对象属性的关键字。

Copyright IBM Corp. 1997, 2004