IDoc パーサー用のメッセージ・モデルの作成

SAP IDoc データを変換する WebSphere Message Broker の機能を使用するには、WebSphere Message Broker 内にある IDoc のセグメント・データをモデル化する必要があります。

SAP アプリケーションへ発信する、そしてそこから受信するメッセージは、IDoc パーサーによって処理されます。データを正しく解釈するためには、メッセージ・モデルを必要とします。 このトピックでは、メッセージ・モデルの作成方法について説明します。 あらかじめ作成されたサンプル版のメッセージ・モデルは、SupportPac IA0F です。

IDoc の取得

Message Brokers Toolkit が使用する、 必要な IDoc データのインポート・ファイルを作成するには、以下の手順に従います。
  1. SAP システムにログオンします。
  2. 提供されているトランザクション we60 を以下のように実行します。 これにより、IDoc データが C ヘッダー・ファイルとして抽出されます。
    1. ObjectName には、 適切な IDoc タイプ (例えば MATMAS02) を選択します。
    2. レコード・タイプのバージョンを選択します。 バージョン 4 の IDoc はタイプ 3 です。
    3. 「ドキュメンテーション」メニューから C-header を選択します。
    4. プロンプトが表示されたら、トランザクションからの出力のファイル名を入力します。 C 表記による IDoc がこのファイルに保管されます。
  3. 作成済みの出力ファイル・フォームが、Message Brokers Toolkit へのインポート用の形式であるようにするには、 Perl スクリプト hdrfiddle.pl (SupportPac IA0F で提供されている) を使用します。

IDoc のモデル化

メッセージ・モデルを作成するには、以下の手順に従います。

  1. 「新規メッセージ・セット・プロジェクト」ウィザードを使用して、 IDoc のメッセージ・セット (matmas02 など)、 およびカスタム・ワイヤー形式 (CWF) の物理形式を作成します。
  2. メッセージ・セット・エディターを使用して、メッセージ・セットの「ランタイム・パーサー」プロパティーを「IDOC」に変更します。
  3. 「新規メッセージ定義ファイル」ウィザードまたは mqsicreatemsgdefs コマンドを使用して、C 表記による IDoc を新規メッセージ・セットにインポートします。 ウィザードまたはコマンドを使用するとき、以下の設定値を指定してください。
    • IDoc 内にあるセグメントのメッセージを作成します。
    • 「ストリングのエンコード」オプションを使用して、char 配列を固定長ストリングとしてインポートします。
    • 「ストリングの埋め込み文字」オプションを使用して、スペース (" ") を、使用される埋め込み文字に指定します。
    C からのインポート には、「新規メッセージ定義ファイル」ウィザードを使用するための情報が示されています。
  4. 各メッセージを名前変更して、対応するセグメントの名前 (大文字) にします。 例えば、E2MARAMM というセグメントに対応するメッセージは、E2MARAMM という名前にする必要があります。

IDoc パーサーは MRM パーサーを使用して、定義した IDoc セグメントを構文解析するので、 メッセージ・セットをブローカー・アーカイブ・ファイルに追加して、ブローカー実行グループにデプロイする必要があります。

IDoc を処理するメッセージ・フローを作成するとき、「ランタイム・パーサー」プロパティー、 メッセージ・セット名、およびカスタム・ワイヤー形式名が使用されます。 それらはそれぞれ、MQinput ノードの「メッセージ・ドメイン」「メッセージ・セット」、および「メッセージ形式」プロパティーの値となります。 IDoc パーサーは SAP 定義の IDoc DD フィールド segnam の内容を使用してメッセージの名前を指定するので、MQInput ノードでは「メッセージ・タイプ」プロパティーを提供しないでください。

ESQL を使用する IDoc のフィールドへのアクセス

ESQL エディター「内容アシスト」を使用して、IDoc の SAP 定義のフィールドに入力します。編集メニューから、またはいくつかのシステム上で、Ctrl + スペース (他の機能が割り当てられていない場合) を押して「内容アシスト」を起動します。

ESQL ステートメントの sdatatag タグまで進んだとき、 次のタグは手作業で入力する必要のある MRM であり、その次は操作対象となるフィールド名です。 ここには、メッセージ・セグメントの名前ではなく、メッセージ・セグメント内のフィールド名を指定します。

例えば、以下のコードは IDoc のセグメント名を設定します。

SET OutputRoot.IDOC.DD[I].segnam  = 'E2MAKTM001';
以下の例は、E2MAKTM001 セグメント内の msgfn フィールドを設定します。
SET OutputRoot.IDOC.DD[I].sdatatag.MRM.msgfn = '006';     
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ac20030_