ESQL を Compute ノードから使用して、着信 IDoc を発信 IDoc にコピーし、メッセージを操作します。
有効な IDoc メッセージ・フローは SAP から発信されて、R/3 用の MQSeries® リンクに送られます。
この IDoc が正常にアウトバウンド WebSphere® MQ・キューにコミットされると、メッセージ・フローの入力ノードはそのメッセージをキューから読み取って、構文エレメント・ツリーを生成します。
Compute ノードがこの構文エレメント・ツリーを処理し、それが完了すると、出力メッセージをメッセージ・フロー内の後続のノードに渡します。 メッセージが出力ノードに到達すると、 ツリーからビット・ストリームを再作成するために IDOC パーサーが起動されます。
メッセージ・フローでは、 入力メッセージと同様のフォーマットで出力メッセージを作成する必要があります。
DC (制御構造) および DD (データ構造) で IDOC パーサーが認識するフィールド名については、IDOC パーサー構造のフィールド名を参照してください。
SET OutputRoot = InputRoot; SET OutputRoot.IDOC.DC[1].tabnam = 'EDI_DC40 '; SET OutputRoot.IDOC.DD[2].sdatatag.MRM.maktx = 'Buzzing all day';
コードの最初の行は受信 IDoc を 送信 IDoc にコピーします。
第 2 行は、最初の DC の tabname を設定します。
第 3 行は、2 番目の DD セグメント (この例では タイプ E2MAKTM001) を使用し、maktx フィールドを設定します。
ESQL ステートメントの sdatatag タグの後、次のタグは手作業で入力する必要のある MRM であり、その次は操作対象となるフィールド名です。ここには、メッセージ・セグメントの名前ではなく、メッセージ・セグメント内のフィールド名を指定します。
たとえば、以下のコードは IDoc のセグメント名を設定します。
SET OutputRoot.IDOC.DD[I].segnam = 'E2MAKTM001';以下の例は、E2MAKTM001 セグメント内の msgfn フィールドを設定します。
SET OutputRoot.IDOC.DD[I].sdatatag.MRM.msgfn = '006';