SAPコネクタ > IDocを使用したデータ統合 > IDocマップレット
  

IDocマップレット

[マップレット - SAP IDoc]アセットを使用して、IDocをマップレットとしてインポートできます。IDocには、セグメントで構成される階層構造が含まれています。各セグメントは、SAPシステムで定義されるSAP構造体です。
IDocには、ヘッダおよびデータレコードコンポーネントがあります。ヘッダには作成日付やステータスなどの管理情報が含まれます。管理情報は、EDIDCと呼ばれるSAP構造体内にあります。データレコードはEDIDDというSAP構造体内にあります。

セグメントおよびグループ

IDocは、複数のセグメントを含む階層構造体です。セグメントは、親セグメントまたは子セグメントになることができます。子セグメントは、別のセグメントに依存しています。親セグメントには、子セグメントが含まれています。親セグメントは、別のセグメントの子になることができます。
IDocセグメントはグループに分類されます。次の規則により、セグメントが属するグループが決まります。

IDocプロパティ

[マップレット - SAP IDoc]でIDocを取得するときに、すべてのIDocセグメントを表示できます。セグメントを選択するとセグメント内のフィールドが表示されます。

IDocプロパティ

以下の表に、[マップレット - SAP IDoc]アセットで表示および指定できるIDocプロパティを示します。
プロパティ
説明
トランスフォーメーションのタイプ
IDocマップレットの生成に使用するトランスフォーメーションのタイプを指定します。
次のいずれかのオプションを選択します。
  • - IDoc Prepare。ソースデータをIDocメッセージとして書き込むマップレットを生成する場合に選択します。
  • - IDoc Interpreter。IDocメッセージを読み取るマップレットを生成する場合に選択します。
ソース
IDocを取得するソース。
次のいずれかのオプションを選択します。
  • - 接続。[Saprfc.iniのパス][接続先]の詳細プロパティを使用して、SAPテーブルコネクタ接続でIDocを取得する場合に選択します。
  • SAPテーブル接続の作成方法の詳細については、「SAPテーブルコネクタ」のドキュメントを参照してください。
  • - ローカルファイル。ローカルドライブからファイルを使用してIDocを取得する場合に選択します。
  • SAP/ALE IDocトランスフォーメーションのIDocメタデータをファイルからインポートする方法の詳細については、ローカルファイルへのIDocメタデータの生成を参照してください。
トランスフォーメーション範囲
Secure Agentが入力データにトランスフォーメーションロジックを適用する方法を指定します。
次のいずれかのオプションを選択します。
  • - トランザクション。トランスフォーメーションロジックをトランザクションのすべての行に適用するには[トランザクション]を選択します。トランスフォーメーションの結果が同一トランザクションのすべての行に依存し、他のトランザクションの行には依存していない場合には、[トランザクション]を選択します。[トランザクション]を選択すると、関連付けられたマッピングをリアルタイムで実行できます。
  • - すべての入力。トランスフォーメーションロジックをすべての入力データに適用し、入力トランザクションの境界を削除するには、[すべての入力]を選択します。[すべての入力]は、トランスフォーメーションの結果がソース内のデータのすべての行に依存する場合に選択します。
デフォルトは[すべての入力]です。
メッセージタイプ
データのカテゴリを分類するアプリケーションメッセージのタイプ。
例えば、ORDERSおよびMATMAS(品目マスタ)などです。
基本IDOCタイプ
メッセージタイプに関連付けられたデータ構造のタイプ。
例えば、MATMASに対してMATMAS01、MATMAS02となります。メッセージタイプに関連付けられたデータを含むIDoc。
拡張タイプ
拡張IDocタイプ名。
IDoc拡張は基本タイプの拡張であり、標準の基本タイプでは使用できない追加カスタムIDocセグメントおよびフィールドが含まれています。
IDocドキュメント
メッセージタイプとIDocタイプに関連付けられたIDocセグメントを表示します。
セグメント名
IDocタイプのセグメント名
説明
セグメントの説明。
最小出現数
IDoc内でのセグメントの最低発生数。
最大発生数
IDoc内でのセグメントの最大発生数。
選択
トランスフォーメーションに組み込むデータセグメントを選択します。
セグメントを選択すると、その親セグメントおよび必要なすべての子セグメントも選択されます。セグメントをクリアすると、すべての子セグメントもクリアされます。
制御レコード
IDocの制御レコードセグメントと、その値および精度を表示します。
IDoc Prepareトランスフォーメーションを使用したマップレットを作成するとき、Designerによって、一部のセグメントに値が設定されます。ほかのセグメントの値も指定できます。

セグメント定義

セグメントフィールドの詳細は、[セグメント定義]セクションで確認できます。セグメントのフィールド名を表示するには、セグメント名を選択します。
以下の表に、セグメントフィールドの詳細情報を示します。
フィールド
説明
名前
セグメントのフィールド名。
SAPデータタイプ
フィールドのSAPデータ型。
精度
フィールドの精度。
スケール
フィールドのスケール。
説明
ソースフィールドの説明。

ローカルファイルへのIDocメタデータの生成

SAP/ALE IDocトランスフォーメーションのIDocメタデータをローカルファイルからインポートできます。
IDocメタデータをローカルファイルからインポートするには、SAPクライアントからRSEIDoc3プログラムを実行してメタデータを生成します。このプログラムを実行する際に、生成するIDocメタデータのIDocタイプと範囲を選択してください。プログラムは作成したメタデータをメタデータファイルにエクスポートします。例えば、.idcという拡張子を付けたファイルにメタデータをエクスポートできます。次に、このメタデータファイルを使用してメタデータをDesignerにインポートし、SAP/ALE IDocトランスフォーメーションに使用できます。
RSEIDoc3プログラムを使用してIDocメタデータを作成するには:
    1SAPクライアントからトランザクションse38を入力します。
    2RSEIDoc3プログラムを実行します。
    3基本IDocタイプと範囲を選択します。
    4SAPバージョン5.0以降を使用している場合には、[制御レコード]をクリックします。
    5該当する場合は必要に応じて、拡張IDocタイプと範囲を選択します。
    6該当する場合は必要に応じて、拡張グラマを選択します。
    7[パーサー]をクリックします。
    8[システム] > [一覧] > [保存] > [ローカルファイル]の順にクリックします。
    9[ファイル]ダイアログボックスの[保存]リストで[変換なし]を選択します。
    10メタデータファイルを保存するパスとファイル名を入力し、.idcという拡張子を付けてファイルを保存します。

送信マップレット

SAPアプリケーションデータベース内のマスタデータまたはトランザクションデータへの変更は、リアルタイムに取得できます。
アプリケーションデータベース内のデータが変更されると、SAPシステムはIDocを作成して変更を取得し、そのIDocをデータ統合に送信します。IDoc Reader接続を使用して、IDocメッセージがSAPシステムで生成されるときにそのメッセージをリアルタイムで読み取ることができます。
SAPシステムによって送信IDocが送信されたときにSecure Agentが実行されていない場合、Secure AgentはIDocを受け取りません。ただし、SAPシステムは、送信IDocをEDIテーブルに格納します。EDIテーブルは、保証されたメッセージ配信のステージング領域です。Secure Agentとの通信に使用するtRFCポートを設定すれば、IDocを再送するようにSAPシステムを設定できます。このポートを設定すると、設定した回数だけIDocをSecure Agentに再送するバックグラウンド処理をSAPで有効にできます。
SAPシステムからIDocメッセージを読み取る送信マップレットを生成するには、IDocメタデータをインポートするときにIDocインタプリタを使用します。送信マップレットをデータ統合にインポートし、送信マッピングを設定します。

送信マップレットポート

送信IDocマップレットには、定義済みポートが含まれています。これらのポートを編集することはできません。
以下の表に、マップレットポートを示します。
ポート名
説明
基本IDocタイプ
基本IDocタイプ名。
基本IDocタイプは、IDocの構造を定義します。各基本タイプは、標準IDocセグメント、データフィールドの形式、およびサイズを示します。基本タイプには、業務トランザクションを実行するために必要なすべての標準フィールドが含まれています。
拡張IDocタイプ
拡張IDocタイプ名。
IDoc拡張は基本タイプの拡張であり、標準の基本タイプでは使用できない追加カスタムIDocセグメントおよびフィールドが含まれています。
IDocRecord
IDocメッセージデータ。
DocumentNumber
IDocの一意のメッセージ番号。

送信マップレット出力エラー用のターゲットオブジェクト

無効なIDocをリレーショナルターゲットまたはフラットファイルターゲットに書き込むように、送信IDocマッピングを設定できます。無効なIDocをリレーションターゲットまたはフラットファイルターゲットに書き込むには、送信マップレットのIDoc_Interpreter_Error_Output_Groupポートをリレーショナルターゲットオブジェクトまたはフラットファイルターゲットオブジェクトに接続します。[スケジュール]ページで、エラーログタイプのセッションプロパティを設定する必要もあります。必要に応じて、IDocの各セグメントとIDoc_Interpreter_Error_Output_Groupに複数のターゲットオブジェクトを設定できます。

受信マップレット

レガシーアプリケーションのトランザクションデータをSAPアプリケーションデータベースのデータと同期させることができます。
受信SAP IDocマッピングを使用して、トランザクションデータをレガシーアプリケーションデータベースからSAPシステムに送信します。データ統合は、レガシーアプリケーションデータソースからデータを抽出して、SAP IDocフォーマットでデータを作成してから、ALEを使用してそのデータを受信IDocとしてSAPシステムに送信します。IDoc Writer接続を使用して、受信SAP IDocメッセージをSAPシステムに書き込むことができます。
SAPシステムにIDocを書き込む受信マップレットを生成するには、IDocメタデータをインポートするときに準備トランスフォーメーションを使用します。受信マップレットをデータ統合にインポートし、受信マッピングを設定します。

キーフィールドおよび制御レコードフィールド

IDocマップレットの各セグメントには、プライマリキー(GPK)と外部キー(GFK)が含まれています。マッピング、統合テンプレート、またはマッピングタスクを設定するときに、プライマリキーフィールド、外部キーフィールド、および制御レコードフィールドをマッピングします。
注: IDocメタデータをインポートするときに、制御レコードフィールドを有効にできます。
SAP IDoc Writerマップレットの準備トランスフォーメーションには、プライマリキーフィールドと外部キーフィールド、および制御レコードフィールドを含むその他の入力フィールドを使用できます。
準備トランスフォーメーションには、以下の出力フィールドがあります。
IDocメタデータをインポートするときに、フィールドを[IDoc Prepare]トランスフォーメーションに追加できます。[制御レコード]タブの[マップレット - SAP IDoc]で、制御レコードキーをキーと値のペアとして追加できます。例えば、センダパートナタイプとセンダパートナ番号に次のキーと値のペアを追加できます。
受信マッピングで、センダパートナ番号をSAPに渡すことができます。準備トランスフォーメーションの制御入力グループに含まれるCONTROL_SNDPRNポートに値を渡すことができます。このポートをアップストリームトランスフォーメーションに接続しない場合、Secure Agentは[マップレット - SAP IDoc]アセットで指定したSNDPRNキーのパートナ番号値を使用します。

IDocプライマリキーおよび外部キー

IDocメッセージは、第1レベルの親セグメントを1つ、第2レベルの子セグメントを1つ以上使用して階層的に整理されています。第2レベルの子セグメントには、第3レベルの子セグメントを1つ以上指定することもできます。
IDocデータの構造を維持するには、SAP IDoc Writerマップレットの準備トランスフォーメーションでプライマリキーと外部キーを使用します。第1レベルの親セグメントにはプライマリキーがあります。それぞれの子セグメントには、プライマリキーと外部キーがあります。それぞれの子セグメントの外部キーは、その親セグメントのプライマリキーを参照します。たとえば、第2レベルの子セグメントの外部キーは、第1レベルの親セグメントのプライマリキーを参照します。同様に、第3レベルの子セグメントの外部キーは、第2レベルの子セグメントのプライマリキーを参照します。
準備トランスフォーメーションは、プライマリキーと外部キーの各フィールド内の値に基づいて、入力IDocデータをグループ化します。準備トランスフォーメーションの制御入力グループは、親セグメントを表します。ErrorIDocDataグループを除き、準備トランスフォーメーションの他のグループはすべて、第2レベルまたは第3レベルの子セグメントを表します。ErrorIDocDataグループは、無効なIDocの処理に使用されます。
以下の表に、準備トランスフォーメーションのグループと、プライマリキーおよび外部キーに使用するフィールドを示します。
グループ
フィールド
説明
制御入力グループ
GPK_DOCNUM
親セグメントのプライマリキー。
子セグメント1
GPK_<Child1_name>
子セグメント1のプライマリキー。
子セグメント1
GFK_DOCNUM_<Child1_name>
子セグメント1の外部キーは、その親セグメントのプライマリキーを参照します。
子セグメント1の子セグメントA
GPK_<Child1A_name>
子セグメント1の子セグメントAのプライマリキー。
子セグメント1の子セグメントA
GFK_<Child1_name>_<Child1A_name>
子セグメント1の子セグメントAの外部キーは、子セグメント1のプライマリキーを参照します。
子セグメント2
GPK_<Child2_name>
IDoc子セグメントのプライマリキー。
子セグメント2
GFK_DOCNUM_<Child2_name>
子セグメント2の外部キーは、その親セグメントのプライマリキーを参照します。
子セグメント2の子セグメントB
GPK_<Child2B_name>
子セグメント2の子セグメントBのプライマリキー。
子セグメント2の子セグメントB
GFK_<Child2_name>_<Child2B_name>
子セグメント2の子セグメントBの外部キーは、子セグメント2のプライマリキーを参照します。
GPK_<name>フィールドの各値は一意になっている必要があります。各GFK_<parent_name>_<group_name>フィールドは、その親セグメントのプライマリキーを参照する必要があります。
たとえば、以下の表に、4つの子セグメントを持ち、ABSEN1という名前が付けられたIDocメッセージ内のプライマリキーと外部キーの関連を示します。
グループ
フィールド
プライマリ/外部キー
CONTROL_INPUT_ABSEN1
GPK_DOCNUM
P1
E2ABSE1
GPK_E2ABSE1
C1
-
GFK_DOCNUM_E2ABSE1
P1
E2ABSE2
GPK_E2ABSE2
C2
-
GFK_DOCNUM_E2ABSE2
P1
E2ABSE2A
GPK_E2ABSE2A
C2A
-
GFK_E2ABSE2_E2ABSE2A
C2
E2ABSE3
GPK_E2ABSE3
C3
-
GFK_DOCNUM_E2ABSE3
P1
E2ABSE3B
GPK_E2ABSE3B
C3B
-
GFK_E2ABSE2_E2ABSE2A
C3
E2ABSE4
GPK_E2ABSE4
C4
-
GFK_DOCNUM_E2ABSE4
P1
準備トランスフォーメーションでは、これらのプライマリキーと外部キーの関連を使用して、IDocデータの構造を維持します。親セグメントのプライマリキーと一致しない外部キーフィールドは、孤立した行として扱われます。プライマリキーフィールドが一意でない場合は、重複する行として扱われます。
各IDocメッセージに、第1レベルの親セグメントおよび各子セグメントに一意のプライマリキーが指定されていること、および各外部キーがその親のプライマリキーと一致していることを確認します。

IDocマップレットの設定

データ統合[マップレット - SAP IDoc]アセットを使用してIDocマップレットを設定できます。IDocマップレットを受信マッピングまたは送信マッピングに使用できます。
    1データ統合で、[新規] > [マップレット] > [マップレット - SAP IDoc]をクリックしてから、[作成]をクリックします。
    2マップレットの一意の名前を入力します。
    3マップレットを保存する場所を指定します。
    4必要に応じて、マップレットの説明を入力します。
    5トランスフォーメーションタイプを選択します。以下のいずれかのオプションを選択することができます。
    6IDocを取得するソースを選択します。以下のいずれかのオプションを選択することができます。
    7トランスフォーメーションの範囲を選択します。以下のいずれかのオプションを選択することができます。
    8メッセージタイプと基本IDocタイプを入力し、[IDocの取得]をクリックします。
    IDocセグメントの詳細が表示されます。
    9[IDocドキュメント]タブの[IDocセグメントの選択]セクションで、マップレットに含めるセグメントを選択します。
    10必要に応じて、受信マッピングでマップレットに制御レコードフィールドを追加するには、[制御レコード]タブで、追加するフィールドのチェックボックスを選択します。これにより、マッピング、統合テンプレート、またはマッピングタスクを設定するときに、選択した制御レコードフィールドをマッピングできます。
    11[保存]をクリックします。