IDocアウトバウンド処理チュートリアル

本チュートリアルでは、SAPシステムのIDoc送信をトリガーとして、DataSpider Servistaのスクリプトを実行します。
本チュートリアルでは、SAPシステムに登録された品目マスタ情報のIDocデータをSAPシステムから送信し、それをDataSpiderで受信しCSVファイルに書き出します。

品目マスタ情報取得のIDoc基本タイプとして「MATCOR01」を使用します。

チュートリアルにおける構成

本チュートリアルでは、以下の構成を想定しております。環境に合わせて変更してください。

項目名
R/3サーバ r3server00
システム番号 01
クライアント番号 800
論理システム SNDCLNT800

事前準備

  1. RFCユーザの準備
    DataSpider Servista用のRFCユーザを接続先のクライアントに登録します。すでに登録済みの場合は不要です。一般的に、ユーザタイプが通信、もしくはシステムのユーザを作成します。

    RFCユーザの準備画面

  2. SAPシステムゲートウェイポートの設定
    アウトバウンド処理を行うためにはSAPシステムゲートウェイポートの設定が必要となります。SAPシステムゲートウェイポートの設定についてはPDFドキュメントの「DataSpider Servistaインストールガイド」を参照してください。


アウトバウンド処理用スクリプトの作成

SAPシステムからのアウトバウンド処理をSAPトリガーで受信し、スクリプトを起動します。スクリプトの中でSAPシステムから渡されたIDocデータをCSVファイルに保存します。

  1. テストスクリプトの完成イメージ

    スクリプト完成画面

  2. グローバルリソースの作成
    「コントロールパネル」の[グローバルリソースの設定]で、SAPアダプタのグローバルリソースを作成します。
    SAPアダプタのグローバルリソース設定画面で、以下の値を設定します。そのほかのプロパティ項目についてはデフォルト値を使用します。
    各プロパティ項目の詳細については、「グローバルリソースのプロパティ」を参照してください。

    カテゴリ 項目名
    基本設定 接続名 SAP接続設定
    必須設定 サーバ r3server00
      システム番号 01
      クライアント番号 800
      ユーザ名 EICS
      パスワード SAPに接続するユーザのパスワードを入力します。
      言語 日本語(JA)
    ゲートウェイの設定 ゲートウェイホスト名 r3server00
      ゲートウェイサービス名 sapgw01

    SAP グローバルリソース作成画面 必須設定

    SAP グローバルリソース作成画面 ゲートウェイの設定

  3. CSVファイルを保存するディレクトリの作成
    SAPシステムから渡されたIDocデータ受け取るCSVファイルを保存するディレクトリを作成します。「/data/sap/idoc_outbound」に保存します。

    項目名
    パス /data/sap/idoc_outbound

    ディレクトリの作成はエクスプローラで[ファイル]-[新規作成]-[ディレクトリ]を選択、または、右クリックメニューから作成することができます。

    出力データ保存用ディレクトリ画面

  4. スクリプトの作成
    以下の内容でスクリプトを作成します。

    項目名
    プロジェクト名 SAPアダプタチュートリアル
    スクリプト名 IDocアウトバウンド

    スクリプトの右クリックメニュー[新規作成]-[スクリプト変数]からスクリプト入力変数を作成します。

    項目名
    変数名 in_xml
    変数型 XML型
    スクリプト入力変数として使用する チェックします

    スクリプト入力変数作成画面

  5. アウトバウンド入力処理の作成
    [アプリケーション]-[SAP]-[アウトバウンド入力]をスクリプトキャンバスにドラッグ&ドロップします。
    アウトバウンド入力処理の設定画面で以下の値を入力し[スキーマの取得]を押下します。 スキーマの取得に成功したことを確認し[完了]を押下します。

    カテゴリ 項目名
    基本設定 名前 入力スキーマの読み取り
      入力データ in_xml
    必須設定 接続先 SAP接続設定
      インターフェース IDoc
      ビジネスメソッド MATCOR01

    入力スキーマ読み取り処理作成画面

    アウトバウンド入力処理の[完了]を押下すると、[マッピングの追加]ダイアログが表示されます。

    マッピングの追加画面

    ここではスクリプト入力変数「in_xml」のデータをそのままアウトバウンド入力処理「入力スキーマの読み取り」に渡すため、マッピングの必要はありません。そのため[いいえ]を押下します。

    入力スキーマ読み取り処理完了画面

  6. CSVファイル書き込み処理の作成
    CSVアダプタを使用し、アウトバウンド処理で渡されるデータをCSVファイルに書き込みます。
    [ファイル]-[CSV]-[CSVファイル書き込み]をスクリプトキャンバスにドラッグ&ドロップします。 CSVファイル書き込み処理の設定画面で以下の値を入力し[完了]を押下します。

    カテゴリ 項目名
    基本設定 名前 CSVファイルの書き込み
      入力データ 入力スキーマの読み取り
    必須設定 ファイル /data/sap/idoc_outbound/master.csv
      列一覧/列名 変更タイプ
    品目コード
    品目タイプ
    品目グループ
    製品部門
    品目テキスト
    [列一覧][追加]を押下し[列名]を追加します。
    書き込み設定 追加書き込み チェックします

    CSVファイル書き込み処理必須設定画面

    CSVファイル書き込み処理書き込み設定画面

  7. アウトバウンド入力処理からCSVファイル書き込み処理へのマッピングの作成
    CSVファイル書き込み処理の[完了]を押下すると、[マッピングの追加]ダイアログが表示されます。

    SAPアダプタはXML型、CSVアダプタはテーブルモデル型のため、Mapperを使用しデータをマッピングする必要があります。Mapperを使用しデータのマッピングを行うため[はい]を押下します。

    アウトバウンド入力処理「入力スキーマの読み取り」とCSVファイル書き込み処理「CSVファイルの書き込み」の間に「mapping」が追加されます。

    CSVファイル書き込み処理完了画面

    追加したマッピングの名前を「mapping」から「SAP→CSV」に変更します。マッピングアイコンを選択し、プロパティインスペクタから以下のように変更します。

    カテゴリ 項目名 変更前の値 変更後の値
    基本設定 名前 mapping SAP→CSV

    「SAP→CSV」を開き、以下のようにマッピングします。「言語キー(SPRAS)」が「J」となる品目マスタ情報のみCSVファイルに出力するようにマッピングしています。

    入力元項目名 ロジックアイコン名 出力先項目名
    /REQUEST/IDOC_INBOUND_ASYNCHRONOUS/TABLES/IDOC_DATA_REC_40/E1MARAC/SDATA/MSGFN   変更タイプ
    /REQUEST/IDOC_INBOUND_ASYNCHRONOUS/TABLES/IDOC_DATA_REC_40/E1MARAC/SDATA/MATNR   品目コード
    /REQUEST/IDOC_INBOUND_ASYNCHRONOUS/TABLES/IDOC_DATA_REC_40/E1MARAC/SDATA/MEINS   品目タイプ
    /REQUEST/IDOC_INBOUND_ASYNCHRONOUS/TABLES/IDOC_DATA_REC_40/E1MARAC/SDATA/MATKL   品目グループ
    /REQUEST/IDOC_INBOUND_ASYNCHRONOUS/TABLES/IDOC_DATA_REC_40/E1MARAC/SDATA/SPART   製造部門
    /REQUEST/IDOC_INBOUND_ASYNCHRONOUS/TABLES/IDOC_DATA_REC_40/E1MARAC/E1MAKTC [繰り返し]-[条件指定]-[条件による抽出]
    • 条件:
      [条件]-[文字列]-[同じ]
      • ハンドラ1:
        /REQUEST/IDOC_INBOUND_ASYNCHRONOUS/TABLES/IDOC_DATA_REC_40/E1MARAC/E1MAKTC/SDATA/SPRAS
      • ハンドラ2:
        [文字列]-[基本]-[単一行文字列定数]
    row
    /REQUEST/IDOC_INBOUND_ASYNCHRONOUS/TABLES/IDOC_DATA_REC_40/E1MARAC/E1MAKTC/SDATA/MAKTX   品目テキスト

    SAPからCSVへのマッピング

    [条件による抽出]ロジックアイコンをダブルクリックし、プロパティ設定ダイアログで以下の値を入力し[完了]を押下します。

    項目名
    コメント 「J」にマッチした品目マスタ情報のみ抽出

    条件による抽出ロジックアイコン作成画面

    [同じ]ロジックアイコンをダブルクリックし、プロパティ設定ダイアログで以下の値を入力し[完了]を押下します。

    項目名
    コメント 「J」と一致するか?

    同じロジックアイコン作成画面

    [単一行文字列定数]ロジックアイコンをダブルクリックし、プロパティ設定ダイアログで以下の値を入力し[完了]を押下します。

    項目名
    一行文字列 J
    コメント J

    単一行文字列定数ロジックアイコン作成画面

  8. スクリプトの完成
    作成した各アダプタをプロセスフローで結び、スクリプトが完成します。以下の順にプロセスフローを結びます。

    順序 名前
    1 入力スキーマの読み取り
    2 SAP→CSV
    3 CSVファイルの書き込み

    スクリプト完成画面

  9. サーバへの登録
    SAPトリガーから作成したスクリプトを起動できるようにするために、サーバに登録する必要があります。デザイナの[ファイル]-[プロジェクトをサービスとして登録]を選択し、サーバに登録します。

SAPトリガーの作成

SAPシステムからのアウトバウンド処理を受信し、作成したスクリプトを実行するSAPトリガー作成します。

  1. トリガーの作成
    マイトリガーを開きます。

    マイトリガー画面

    マイトリガーのタスクから[新しいSAPトリガーを作成する]を選択し、SAPトリガーの設定画面を表示します。
    SAPトリガーの設定画面で以下の値を入力し、[次へ]を押下します。

    項目名
    トリガー名 MATCOR01受信
    接続先 SAP接続設定
    プログラムID MATCOR
    インターフェース IDoc
    ビジネスメソッド MATCOR01

    MATCOR01受信トリガー基本設定作成画面

    実行内容の設定画面で以下の値を入力します。

    項目名
    実行ユーザ名 <実行するユーザ名>
    ここでは「root」を入力しています。
    パスワード <実行するユーザのパスワード>
    プロジェクト <スクリプトを作成したユーザ名>@SAPアダプタチュートリアル
    ここでは「root@SAPアダプタチュートリアル」を入力しています。
    スクリプト IDocアウトバウンド

    MATCOR01受信トリガー実行設定作成画面

    以下のように[スクリプト引数]の設定を行ったあと、[完了]を押下し、トリガーを作成します。

    項目名 変数名
    スクリプト引数 in_xml ${trigger.standardInput}
    トリガー固定の変数です。

    MATCOR01受信トリガー引数設定作成画面

    スクリプト引数の値をフォーカスし、三角ボタンを選択すると、高度な操作画面が表示されます。 高度な操作画面からSAPトリガーの入力変数を選択し、[スクリプト引数][値]を設定することができます。

    高度な操作メニュー画面

    トリガー有効の確認画面で[はい]を押下し、トリガーを有効にします。トリガーを有効にすることでSAPシステムからのアウトバウンド処理を受信できる状態になります。

    トリガー有効確認ダイアログ

    MARCOR01受信トリガー

  2. 登録プログラム確認
    SAPシステムにログインし、ゲートウェイサービスにプログラムが正常に登録されているか確認します。

    SAP GUIにて、トランザクションコード「SMGW」を実行します。SAPアダプタからの接続である以下のエントリがあることを確認します。

    項目名 内容
    ローカルLU名 <DataSpiderServerが稼働するOSのホスト名またはIPアドレス>
    ローカルTP名 java
    ユーザ名 <DataSpiderServerが稼働するOSのホスト名またはIPアドレス>

    ゲートウェイモニタ画面

    メニューから[ジャンプ]-[クライアントにログオン済]を選択します。

    ゲートウェイモニタメニュー画面

    以下のエントリの存在を確認することにより、プログラムIDが正常に登録されていることを確認します。

    項目名
    LU名 <DataSpiderServerが稼働するOSのホスト名またはIPアドレス>
    TP名 MATCOR
    Syst. Type 登録済サーバ
    ユーザ名 <DataSpiderServerが稼働するOSのホスト名またはIPアドレス>

    プログラムID確認画面

RFC宛先の設定

アウトバウンド処理を行うためには、SAPシステムでRFC宛先の設定を行います。
  1. RFC宛先の設定
    SAPトリガー作成時に指定したプログラムを参照するRFC宛先を定義します。SAP GUIにて、トランザクションコード「SM59」を実行します。

    RFC宛先の表示画面

    「TCP/IP接続」を選択し、[登録]を押下します。

    新規RFC宛先登録画面

    RFC宛先登録画面で、以下の値を入力します。

    タブ 項目名
    基本画面 RFC宛先 EICS_MATCOR
      接続タイプ T(TCP/IP接続)
      テキスト1 EICS MATCORイベント用宛先
    技術設定 有効化タイプ 登録済サーバプログラム
      プログラムID MATCOR
      Gatewayホスト <SAPシステムが稼働しているサーバのホスト名またはIPアドレス>
    ここでは「r3server00」を入力しています。
      TCPサービス <SAPシステムで稼働しているゲートウェイサービス>
    ここでは「sapgw01」を入力しています。

    MATCOR RFC宛先基本設定画面

    MATCOR宛先技術設定画面

    RFC宛先接続設定画面

    Unicodeシステムを使用する場合には、[MDMP/Unicode]タブの[対象システムとの通信タイプ]から[Unicode]を選択します。

    Unicodeシステムの場合

    入力が終われば、保存します。

  2. 接続テスト
    [接続テスト]を押下し、接続テストを行います。
    接続テストに成功した場合には以下のような画面が表示されます。

    接続テスト成功画面

    接続テストに失敗した場合には、以下を確認してください。

SAPシステムでのIDocに関連する設定

ここでは、「MATCOR01」IDocを実行するために、IDocポート、論理システム、パートナプロファイル、分散モデルの登録を行います。
  1. IDocポートの登録
    IDocデータを登録したRFC定義に渡すためのIDocポートの登録を行います。SAP GUIにて、トランザクションコード「WE21」を実行します。

    IDocポート画面

    「トランザクションRFC」を選択し、登録ボタンを押下します。

    IDocポート登録画面

    IDOCの処理ポートで、以下のように入力します。

    項目名
    独自ポート名 選択
    名称 EICSMATCOR

    IDocポート登録詳細画面

    登録したRFC宛先を割り当て、保存します。

    項目名
    内容説明 EICS MATCOR用RFCポート
    バージョン IDOC レコードタイプ SAP Release 4.x
    RFC宛先 EICS_MATCOR

    IDocポートRFCポート登録詳細画面

  2. 論理システム登録
    対象システムもしくは、DataSpiderに該当する論理システムの登録を行います。すでに登録済みの場合は、実施の必要はありません。

    SAP GUIにて、トランザクションコード「BD54」を実行します。以下のような警告が表示されますが、続行してください。
    論理システムは、クライアント非依存情報です。クライアント非依存カスタマイジングが可能なクライアントで実施してください。

    クライアント非依存警告ダイアログ

    [新規エントリ]を押下します。

    ロジカルシステムビュー画面

    新規エントリ追加画面で、以下の値を入力します。

    項目名
    論理 Sys. EICS
    名称 EICS

    新規論理システム作成画面

  3. 自クライアント論理システム確認
    自クライアントに割り当てられている論理システムを確認します。ここで確認した論理システム名は、のちほどの設定で使用します。SAP GUIにて、トランザクションコード「SCC4」を実行します。一覧より、自クライアントのエントリをダブルクリックします。

    クライアント照会概要画面

    項目「論理システム」の名称が、そのクライアントに割り当てられている論理システム名です。通常、<システムID>CLNT<クライアント番号>が論理システムとして割り当てられます。IDocインターフェースを使用する場合、論理システムの割り当ては必須です。論理システムが割り当てられていない場合は、論理システムを新たに作成し、割り当てを行ってください。論理システムの作成および割り当ては、システム管理者のもとで実施してください。

    クライアント照会詳細画面


  4. パートナプロファイル登録
    パートナプロファイルではパートナに対して、メッセージの割り当て、設定を行います。ここでは、パートナである論理システム「EICS」にメッセージ「MATCOR」の割り当て、設定を行います。SAP GUIにて、トランザクションコード「WE20」を実行します。

    パートナプロファイル表示画面

    [登録]を押下します。

    パートナプロファイル登録ボタン画面

    以下のように入力し、保存します。

    項目名
    パートナ番号 EICS
    Partn. Type LS

    パートナプロファイル登録画面

    送信パラメータの下の[送信パラメータ登録]を押下します。

    送信パラメータ画面

    送信パラメータ設定画面で以下を入力します。

    項目名
    Message Type MATCOR
    受信側ポート EICSMATCOR
    出力モード IDocの即時転送
    基本タイプ MATCOR01

    送信パラメータ基本設定画面
    IDoc送信時に「com.sap.conn.jco.JCoRuntimeException: (101) dataspider_handle_request: null」が発生した場合、 「IDOCタイプのSeg.リリース」に適切な値を設定することでエラーが解消する可能性があります。適切な値の確認手順は以下の通りです。
    1. トランザクションコード「WE63」を実行します。
    2. 「Segm.リリース」に表示される値を確認します。
    なお、IDoc送信時のエラーはトランザクションコード「SM58」を入力して表示される画面またはサーバログで確認することができます。

    入力が完了後、エンターを押下します。

    送信パラメータ個別設定画面

    設定を保存します。

  5. 分散モデル登録
    分散モデルでは、メッセージの分散先を一定の条件で決定したり、フィルタをかけたりすることが可能です。SAP GUIにて、トランザクションコード「BD64」を実行します。

    分散モデル照会画面

    「照会/編集モードの切り替え」ボタンを押下し、編集モードに変更します。

    分散モデル編集切り替えアクション画面

    「モデルビューの生成」ボタンを押下します。

    分散モデル登録ボタン画面

    モデルビュー登録画面で以下の値を入力し、登録します。

    項目名
    テキスト EICS IDOCモデルビュー
    技術名称 EICS

    分散モデル登録画面

    登録した「EICS IDOCモデルビュー」のエントリを選択し、[メッセージタイプの追加]を押下します。

    DATASPIDER分散モデル

    メッセージタイプ追加画面で以下の値を入力し、保存します。

    項目名
    モデルビュー EICS
    送信側 <自クライアントの論理システム名>
    ここでは「SNDCLNT800」を入力してます。
    レシーバ EICS
    メッセージタイプ MATCOR

    メッセージタイプ追加画面

    分散モデル設定完了画面

  6. テスト実行
    今回のテスト実行では、「EICS」論理システムに対して、「MATCOR01」IDocを送信します。SAP GUIにて、トランザクションコード「BD10」を実行します。

    品目マスタ送信画面

    品目マスタ送信画面で以下の値を入力し、実行します。
    項目名
    品目 <送信する品目の品目ID>
    ここでは「1500*」と入力しています。
    クラス <送信する品目の品目クラス>
    ここでは入力しません。
    メッセージタイプ(標準) MATCOR
    論理システム EICS
    全品目データ送信 チェックします

    品目マスタ送信実行画面

    品目マスタIDOCメッセージ設定画面

    品目マスタIDOCメッセージ生成画面

    また、マイトリガーで「MATCOR01受信」トリガーの状態を見ると、[最終実行結果]に「正常終了」と表示されます。

    MATCOR01トリガー実行成功画面

    トリガーからスクリプトの実行に成功すると、/data/sap/idoc_outbound/master.csvに以下のデータが出力されます。

    項目名
    ファイルパス /data/sap/idoc_outbound/master.csv
    内容
    005,1500-100,LTR,004,,塗料 (青)
    005,1500-300,PCE,009,02,標準尾灯組立品
    005,1500-500,QT,010,,10W30 モーターオイル QT.
    005,1500-510,GAL,010,,10W30 モーターオイル GAL
    005,1500-520,CSE,010,,10W30 モーターオイルケース
    005,1500-520-01,CSE,010,,10W30 モーターオイルケース
    005,1500-600,QT,010,,10W40 モーターオイル QT.
    005,1500-610,GAL,010,,10W40 モーターオイル GAL
    005,1500-620,CSE,010,,10W40 モーターオイルケース
    005,1500-700,QT,010,,10W50 モーターオイル QT.
    005,1500-710,GAL,010,,10W50 モーターオイル GAL
    005,1500-720,CSE,010,,10W50 モーターオイルケース
    

    品目マスタCSVデータ