ビジネス・オブジェクト構造

ALE Module 用の SAP の WebSphere ビジネス・オブジェクトは、トップレベルの親ラッパー・オブジェクトと、制御レコード・オブジェクトとデータ・レコード・オブジェクトという 2 つの子オブジェクトから構成されます。このセクションでは、以下について説明します。

ビジネス・オブジェクトの構造図

図 52 では、ALE Module 用の WebSphere ビジネス・オブジェクトの構造を 説明しています。

図 52. SAP の WebSphere ビジネス・オブジェクトと IDoc の関係

ビジネス・オブジェクトの命名規則

このセクションでは、以下について説明します。

標準命名規則

ALE Module では、ビジネス・オブジェクトは、表 23 に示す命名規則に従っ ている必要があります。制御レコード・ビジネス・オブジェクト以外のすべてを生成する SAPODA は、これらの規則に従って、IDoc 定義からビジネス・オブジェクト名と属性名を導出します。

表 23. IBM WebSphere SAP ビジネス・オブジェクトの命名規則
IBM WebSphere のビジネス・オブジェクトまたは属性 名前 タイプ
親ラッパー・ビジネス・オブジェクト BOprefix_BasicIDocType
注:
この章の図では、ビジネス・オブジェクトのプレフィックスとして SAP_ または sap_ を使用します。実際にビジネス・オブジェクト定義を作成する場合は、分かりやすい独自のプレフィックスを指定できます。
なし
制御レコード・ビジネス・オブジェクト Control_record sap_idoccontrol
データ・レコード・ビジネス・オブジェクト Data_record BOprefix_BasicIDocType_cwdata
データ・レコード子ビジネス・オブジェクト BOprefix_BasicIDocType_ IDocSegmentName BOprefix_BasicIDocType_ IDocSegmentName
データ・レコード属性 IDocFieldName または IDoc Field Description

ビジネス・オブジェクトを生成する際、ユーザーはビジネス・オブジェクト属性名として IDoc セグメントのフィールド名またはフィールド記述を選択できます。

WebSphere Business Integration システムのコンポーネント名では、英数字とアンダースコアー文字 (_) のみをサポートします。したがって、生成されたビジネス・オブジェクト定義で コンポーネントを命名する際、SAPODA によって、IDoc セグメントのフィ ールド記述またはフィールド名内の特殊文字は、アンダースコアー文字に置き 換えられます。例えば、SAPODA は次に示す SAP 記述内のスペース、括弧、およびピリオドを、対応する属性名ではアンダースコアーに変更します。

Partner function (e.g. sold-to party, ship-to party)

SAPODA は生成されたビジネス・オブジェクト定義内で上記の記述を以下のように表します。

Partner_function__e_g__sold_to_party__ship_to_party__ 

SAPODA は、ビジネス・オブジェクト定義内のすべての属性名が固有であることを保証します。1 つの IDoc に同じフ ィールド記述を持つ複数のフィールドが存在する場合、SAPODA は生成した属 性名にカウンター・サフィックスを追加します。

属性を命名する際に、変更された属性名が次の条件に該当すると、SAPODA はストリングを属性名の前に付加します。

重要:
属性名は、ビジネス・オブジェクトを生成した後でいつでも変更できます。しかし、属性名を変更する場合は、そのアプリケーション固有情報を変更しません。コネクターはこのテキストを使用して、ビジネス・オブジェクト属性に対応する IDoc フィールドを識別します。 詳細については、アプリケーション固有情報: データ・レコード・ビジネス・オブジェクトを参照してください。

IDoc 拡張に対応した命名規則

SAPODA が IDoc 拡張に基づいてビジネス・オブジェクト定義を生成する場合 は、ビジネス・オブジェクトの命名規則に示した命 名規則とはやや異なる命名規則が使用されます。この場合、表 24 に示すように 、拡張名が含まれます。

表 24. IDoc 拡張に対応した命名規則
IBM WebSphere のビジネス・オブジェクトまたは属性 名前 タイプ
親ラッパー・ビジネス・オブジェクト BOprefix_BasicIDocType_ExtensionName なし
制御レコード・ビジネス・オブジェクト Control_record sap_idoccontrol
データ・レコード・ビジネス・オブジェクト Data_record BOprefix_BasicIDocType_cwdata
データ・レコード子ビジネス・オブジェクト BOprefix_BasicIDocType_ ExtensionName_IDocSegmentName BOprefix_BasicIDocType_ ExtensionName_IDocSegmentName
データ・レコード属性 IDocFieldText または IDocFieldName String

拡張を指定する AppSpecificInfo プロパティーの構文については、親ラッパー・ビジネス・オブジェクトを参照してください。

重要:
統合ブローカーが InterChange Server Express である場合、IDoc 拡張子に対応するビジネス・オブジェクト定義をリポジトリーにロードする際には注意が必要です。基本 IDoc Type に対応するビジネス・オブジェクト定義がリポジトリー内に既に存在し、その名前が基本 IDoc Type に拡張を追加した名前と一致する場合、競合が発生することがあります。この競合は、手動で解決する必要があります。

親ラッパー・ビジネス・オブジェクト

親ラッパー・ビジネス・オブジェクトの名前は、基本 IDoc タイプの前に、ユーザー定義のプレフィックスとアンダースコアー (_)、例えば sap_ を付けたものです。親ラッパー・ビジネス・オブジェクトには、Dummy_keyControl_recordData_record、および TransactionId の 4 つの属性が含まれます。

IDoc のトップレベル・オブジェクトの Dummy_key 属性は、制御レコードおよびデータ・レコードのキー・フィールドをトップレベルのオブジェクトの Dummy_key にマップする目的で使用します。コネクターは、Dummy_key のマッピングを次のように処理します。

  1. Dummy_key 属性の属性レベルの ASI は、値の設定に使用される属性のパスとして構成されます。つまり、属性レベルの ASI は、トップレベルのオブジェクトにマップされる属性のビジネス・オブジェクト・ツリー内でのパスに設定されます。値のペアの区切り文字は ; (セミコロン) です。子からのキー属性のパスの区切り文字は : (コロン) です。外部キー (FK) には、絶対パスを指定する必要があります。

    例えば、DummyKey;FK=Data_record:sap_orders05_e2edk01005:IDOC_document_number" となります。

  2. コネクターは、このパスの中で複数カーディナリティーのオブジェクトを検出した場合、このコンテナーから最初の子インスタンスを使用します。これは、(ビジネス・オブジェクト・ツリーのどこに存在する複数カーディナリティーのオブジェクトであろうと) すべての複数カーディナリティーのオブジェクトに当てはまります。
  3. ASI が正しくない場合、またはマップされた属性値が空の場合、コネクターはイベントに失敗し、イベントを SAPALE_Error_Queue の状態にします。これは、ASI がオブジェクト・タイプ値を Dummy_key として設定するように構成されている場合にも当てはまります。Dummy_key 属性は単純タイプの属性の値のみを格納することができます。

Control_record 属性および Data_record 属性は、単一カーディナリティーの子ビジネス・オブジェクトを表します。

Control_record 属性のタイプは sap_idoccontrol です。このビジネス・オブジェクト定義は ALE Module とともに提供されます。

Data_record 属性のタイプは BOprefix_BasicIDocType_cwdata です。このビジネス・オブジェクト定義には、SAP アプリケーションの基本 IDoc タイプの IDoc セグメント定義に応じて、1 つ以上の子ビジネス・オブジェクトが含まれます。

TransactionId 属性の値に応じて、サービス呼び出し要求を処理する際にコネクターが TID を管理するかどうかが決まります。要求処理の際に TID 管理を行いたくない場合は、TransactionID 属性の値を設定しないでください。

親ラッパー・ビジネス・オブジェクトのアプリケーション固有情報は、以下の項目を表します。

構文

親ラッパー・オブジェクトの AppSpecificInfo プロパティーの構文は次のとおりです。

BasicIDocType [,Ext=ExtensionName
 [,Pn=PartnerNumberOfRecipient [,Pt=
 PartnerTypeOfRecipient[,Pf=PartnerFunctionOfRecipient
 ]]

構文の説明

BasicIDocType
基本 IDoc タイプを指定
Ext
拡張タイプを指定
Pn
受信側のパートナーの数を指定
Pt
受信側のパートナーのタイプを指定
Pf
受信側のパートナーの機能を指定

AppSpecificInfo = ALEREQ01,Pn=ALESYS2,Pt=LS,Pf=EL

制御レコード・ビジネス・オブジェクト

ALE Module では、すべての IDoc に対して汎用の制御レコード・ビジネス・オブジェクト定義が使用されます。これには、制御レコードの 3.x バージョン (SAP 構造体 EDI_DC) および 4.x バージョン (SAP 構造体 EDI_DC40) で使用される属性のスーパーセットが含まれています。制御レコード・ビジネス・オブジェクト定義は、ALE Module とともに提供されます。また、ビジネス・オブジェクト・リポジトリーにロードする必要があります。Business Object Designer Express を使用して、ビジネス・オブジェクトをリポジトリーにロードします。

注:
repos_copy コマンドも使用できます。

表 25 に、制御レコード・ビジネス・オブジェクトの単純属性 プロパティーのリストを示します。

表 25. 制御レコード・ビジネス・オブジェクトの単純属性のプロパティー
プロパティー名 説明
Name Name プロパティーの値は、IDoc 定義の TEXT フィールドの値を変更したものです。 SAPODA は、ビジネス・オブジェクトの命名規則で 説明したとおり、名前に英数字とアンダースコアー文字 (_) のみが含ま れるようにするために、特殊文字 (ピリオド、スラッシュ、スペースなど) を アンダースコアーに置き換えます。
Type データのタイプを指定します。SAPODA はこの値を String に設定します。
MaxLength SAPODA は MaxLength の値を IDoc 定義内の LENGTH フィールドから導出します。
IsKey SAPODA は、ビジネス・オブジェクトの最初の属性について、このプロパティーを true に設定します。
IsForeignKey SAPODA はこの値を false に設定します。
IsRequired IsRequired プロパティーは、属性が値を含んでいる必要があるかどうかを指定します。SAPODA は、制御レコード・オブジェクト内の Name_of_table_structure 属性の場合のみ、このプロパティーを true に設定します。
AppSpecificInfo SAPODA は、この値を IDoc 定義の NAME フィールドから導出します。
DefaultValue 実行時値がない場合にこの属性に割り当てる値を指定します。SAPODA は、このプロパティーの値を設定しません。

重要:
属性の値が制御レコード・ビジネス・オブジェクト内で CxIgnore または CxBlank のいずれかに設定されている場合、その値はコネクターによって IDoc 制御レコードでのブランク・スペースとして設定されます。

データ・レコード・ビジネス・オブジェクト

IDoc 定義ファイルには、IDoc の構造、IDoc セグメント階層、およびセグメントを構成するフィールドに関する情報が含まれています。SAPODA は、データ・レコード・ビジネス・オブジェクトとその子ビジネス・オブジェクトを生成するための入力として IDoc を使用します。子の数は、SAP アプリケーションの基本 IDoc タイプの IDoc セグメント定義に依存します。

データ・レコード・ビジネス・オブジェクトのトップレベルは、基本 IDoc タイプに対応します。このトップレベル・ビジネス・オブジェクトには、子ビジネス・オブジェクトまたは子ビジネス・オブジェクトの配列 (各要素が各 IDoc セグメントに対応) を表す属性が含まれています。子ビジネス・オブジェクトの構造と階層は、基本 IDoc タイプの IDoc セグメントの構造と階層に一致します。

SAPODA を用いてシステムから IDoc を生成すると、SAP システム自体に呼び出しを行なうことによって、データ・レコード・オブジェクトおよびその子ビジネス・オブジェクトが作成されます。ビジネス・オブジェクトのさまざまなプロパティーの設定方法を示す上で役立つように、IDoc 定義ファイルからのフィールドがこのセクションで使用されます。システムからの IDoc の生成には、SAP システムに対して行なわれた呼び出しからの該当フィールドが使用されます。

このセクションで説明する内容は次のとおりです。

属性: データ・レコード・ビジネス・オブジェクト

表 26 は、データ・レコード・ビジネス・オブジェクトの各単純属性のプロパティーを説明したものです。SAPODA は、以下のプロパティーを生成します。

表 26. 単純属性: データ・レコード・ビジネス・オブジェクト
プロパティー名 説明
Name Name プロパティーの値は IDoc 定義の中の NAME または TEXT フィールドの修正された値です。 SAPODA は、ビジネス・オブジェクトの命名規則で説 明したとおり、名前に英数字とアンダースコアー文字 (_) のみが含ま れるようにするために、特殊文字 (ピリオド、スラッシュ、スペースなど) を アンダースコアーに置き換えます。
Type データのタイプを指定します。SAPODA はこの値を String に設定します。
MaxLength SAPODA は MaxLength の値を IDoc 定義内の LENGTH フィールドから導出します。
IsKey SAPODA は、各ビジネス・オブジェクトの最初の属性について、このプロパティーを true に設定します。その他すべての属性については、SAPODA はこの値を false に設定します。
IsForeignKey SAPODA はこの値を false に設定します。
IsRequired 属性が値を含んでいる必要があるかどうかを指定します。SAPODA はこの値を false に設定します。
AppSpecificInfo SAPODA は AppSpecificInfo プロパティー の値を、IDoc 定義内の Name フィールドの値の前にオフセット 値と + 文字を付加して設定します。例えば、40 の オフセットを持つ SIGN という名前のセグメント・フィールドの 場合、AppSpecificInfo に対して 40+SIGN という 値を設定します。詳細については、単純属性のアプリケーション固有情報を参照してください。
DefaultValue 実行時値がない場合にこの属性に割り当てる値を指定します。SAPODA は、このプロパティーの値を設定しません。

重要:
データ・レコード・ビジネス・オブジェクトの単純属性は、CxIgnore および CxBlank という 2 つの特殊値を持つ場合があります。CxIgnore または CxBlank に対応する単純属性セットはセグメント・データ・ストリング内のブランク・スペースで表されます。SAP はこれらの属性を、アプリケーション・フィールドにスペース文字を 1 つ置くことで処理します。

表 27 は、子ビジネス・オブジェクトまたは子ビジネス・オブ ジェクトの配列を表す、データ・レコード・ビジネス・オブジェクトの各属性のプロ パティーを説明したものです。SAPODA は、以下のプロパティーを生成します。

表 27. 子ビジネス・オブジェクトを表す属性
プロパティー名 説明
Name SAPODA はこの値を BOprefix_BasicIDocTypeIdocSegmentName に設定します。例えば、SAP_E2ALER1001 のようになります。
Type SAPODA はこの値を以下のように設定します。BOprefix_BasicIDocTypeIdocSegmentName
ContainedObjectVersion SAPODA はこの値を 1.0.0 に設定します。
Relationship SAPODA はこの値を containment に設定します。
IsKey SAPODA はこの値を false に設定します。
IsForeignKey SAPODA はこの値を false に設定します。
IsRequired IsRequired プロパティーでは、子ビジネス・オブジェクトが必ず存在しなければならないかどうかを指定します。SAPODA は、IDoc 定義の対応するセグメントの STATUS フィールドの値が OPTIONAL である場合には、この値を false に設定します。SAPODA は、IDoc 定義の STATUS フィールドの値が MANDATORY である場合には、このプロパティーを true に設定します。
AppSpecificInfo AppSpecificInfo プロパティーには、階層レベルや、許容されるセグメントの最小数および最大数についての情報が格納されます。 詳細については、子を表す属性のアプリケーション固有情報を参照してください。
Cardinality IDoc 定義内の LOOPMAX フィールドの値が 1 である場合、SAPODA はこの値を 1 に設定します。LOOPMAX の値が 1 より大きい場合、SAPODA はこの値を n に設定します。

アプリケーション固有情報: データ・レコード・ビジネス・オブジェクト

このセクションでは、コネクターが AppSpecificInfo プロパティーの値を使用する方法を、次の 3 つの場合について説明します。

ビジネス・オブジェクト・レベルでのアプリケーション固有情報

コネクターは、AppSpecificInfo プロパティーの値をデータ・レコードおよびそのそれぞれの子のビジネス・オブジェクト・レベルで使用し、関係付けられている IDoc およびそのセグメントの名前を取得します。

単純属性のアプリケーション固有情報

コネクターは、単純属性の AppSpecificInfo プロパティーの値を使用して、SAP でのフィールド名と、データ・ストリングでのその位置 (オフセット) を取得します。

オフセット値は、データ・ストリングにおける、属性値の先頭の文字の位置です。オフセット値は、IDoc 定義の最初のフィールドの BYTE_FIRST 値の値を、特定の属性の BYTE_FIRST 値から差し引くことで算出されます。この値は、MaxLength プロパティーとともに、IDoc セグメントのデータ・ストリングを作成するために使用されます。

単純属性の AppSpecificInfo プロパティーの構文は以下のようになります。

OffsetNumber+IDocFieldName

例えば、40 のオフセットを持つ SIGN という名前のセグメント・フィールドは AppSpecificInfo に対して以下の値を持ちます。

40+SIGN
子を表す属性のアプリケーション固有情報

コネクターは、子ビジネス・オブジェクトまたは子ビジネス・オブジェクトの配列を表す属性の AppSpecificInfo プロパティーの値を使用して、階層レベルや、許容されるセグメントの最小数および最大数についての情報を取得します。SAPODA は、IDoc 定義内の LEVELLOOPMIN および LOOPMAX フィールドから情報を取得することによって、これらの属性に対して AppSpecificInfo プロパティーを設定します。

ビジネス・オブジェクトと IDoc との関係図

図 53 に、WebSphere データ・レコード・ビジネス・オブジェクトと、SAP アプリケーションの IDoc 定義との関係を示します。

図 53. データ・レコード・ビジネス・オブジェクトと IDoc 定義フィールドとの関係

Copyright IBM Corp. 2004, 2005