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

本チュートリアルでは、DataSpider ServistaのスクリプトからSAPシステムのBAPIを実行します。RFC、IDocの実行についても同じような流れで実行することができます。
具体的な処理としては、SAPシステムに登録された銀行情報を取得するBAPI「Bank.GetList」を実行し、取得したデータをXMLファイルに出力します。

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

本チュートリアルは、以下の構成を前提として設定を行います。環境に合わせて適宜変更してください。

項目名
R/3サーバ DEVECC2
システム番号 00
クライアント番号 300

事前準備

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

    RFCユーザの準備画面

SAP Business Connectorの設定

インバウンド処理を行うためには、SAP Business Connector(以下、SAP BC)の設定が必要です。
SAP BCの設定の詳細については、SAP BCのマニュアルを参照してください。
  1. SAP BC起動の確認
    SAP BCにはWebブラウザで以下のURLにアクセスします。
    「http://<hostname>:<port>/」

    項目名 説明
    hostname SAP BCの稼働OSのホスト名またはIPアドレスです。
    port SAP BCが起動しているポート番号です。

    デフォルトでは、以下の設定になっています。

    項目名
    ポート番号 5555
    ユーザ名 Administrator
    パスワード manage

  2. SAP BCユーザの作成
    DataSpider Servista用のユーザをSAP BCに作成します。すでに作成済みの場合は必要ありません。

    SAP BCの「Security」-「Users and Groups」を押下し、ユーザとグループの定義画面を開きます。

    ユーザ・グループメニュー

    「Add and Remove Users」を押下し、新規ユーザ作成画面を開きます。

    ユーザ作成

    ユーザ名およびパスワードを入力し、「Create Users」ボタンを押下します。

    ユーザ作成成功

  3. SAPシステムへの接続設定
    SAP BCにSAPシステムへの接続設定を行います。すでに設定済みの場合は必要ありません。

    「Adapters」-「SAP」を押下し、SAPサーバ設定画面を開きます。

    SAPメニュー

    SAPサーバ

    「Add SAP Server」を押下し、接続するSAPシステムの情報を入力します。設定項目は以下の通りです。

    項目名 説明
    Name 表示上の名称
    User SAPシステムへログインするユーザ名
    ここでは「RFC」を入力しています。
    Password SAPシステムへログインするユーザのパスワード
    Client クライアント番号
    ここでは「300」を入力しています。
    Application Server SAPシステムのホスト名またはIPアドレス
    ここでは「DEVECC2」を入力しています。
    System Number システム番号
    ここでは「00」を入力しています。

    SAPサーバ追加

    必要な情報を入力し、「Save」ボタンを押下します。

    追加したSAPシステム名を押下し、SAPシステム設定画面を開きます。

    SAPサーバリスト

    SAPシステム設定画面の「Test Connection」ボタンを押下し、接続テストを行います。

    接続テスト

  4. XMLテンプレートの取得
    SAP BCアダプタの入力スキーマとするXMLテンプレートを取得します。

    「Adapters」-「SAP」を押下し、SAPサーバ設定画面を開きます。

    SAPメニュー

    「Lookup」を押下し、モジュール検索画面を開きます。

    Lookupメニュー

    モジュール検索画面で以下の情報を入力し、「bXML」ボタンを押下します。

    項目名
    Business Object Bank
    BAPI GetList

    Bank.GetListのLookup

    Bank.GetListのbXML

    RFC汎用モジュールのXMLテンプレートを取得する場合は、「Function Name」に実行するRFC汎用モジュール名を入力し、「RFC-XML」ボタンを押下します。
    IDocのXMLテンプレートを取得する方法については、SAP社に問い合わせてください。

  5. SAP BC上での動作確認
    SAP BC上で動作確認を行います。

    表示されたXMLテンプレートに以下のテスト値を入力します。

    要素名
    BankCtry JP
    MaxRows 10

    使用するモジュールやSAPシステムのカスタマイズにより、テスト値は変わります。詳細については、SAPのアプリケーションコンサルタントにご相談ください。

    Bank.GetListのテスト実行

    「Invoke」ボタンを押下し、テスト実行をします。

    Invokeボタン

    Bank.GetListのテスト実行成功


  6. 入力データ用XMLテンプレートの保存
    XMLテンプレートのデータから、SAP BCアダプタの入力データを作成します。

    XMLテンプレートの<doc>要素から</doc>要素までをコピーし、以下のディレクトリ下にファイルとして保存します。必要に応じてディレクトリを作成してください。

    項目名
    パス /data/sapbc/bapi_inbound/bank_getlist_input.xml

    Bank.GetListの入力スキーマ

    RFC汎用モジュール用の入力データを作成する場合は、<rfc>要素から</rfc>要素までを使用します。
    IDoc用の入力データはIDocタイプ要素すべてとなります。ALEREQ01を実行する場合は、コントロールレコード・データレコードを含むALEREQ01要素すべてを使用します。

SAP BCアダプタからの呼び出し

BAPI「Bank.GetList」をSAP BCアダプタから呼び出します。
  1. スクリプトの完成イメージ
    XMLアダプタで取得した入力データを、SAP BCアダプタを経由してBAPI「Bank.GetList」に渡し、SAPシステムから返された結果データをXMLアダプタで出力します。

    スクリプト完成画面

  2. グローバルリソースの作成
    「コントロールパネル」の[グローバルリソースの設定]で、SAP BCアダプタのグローバルリソースを作成します。

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

    項目名
    名前 SAP BC 4.8接続設定
    ホスト名 ここでは「sapbc」を入力しています。
    ポート番号 ここでは「5555」を入力します。
    ユーザ名 ここでは「user」を入力します。
    パスワード SAP BCに接続するユーザのパスワードを入力します。
    SAPシステム名 ここでは「SAPSYSTEM」を入力します。

    SAP BCグローバルリソース作成画面

  3. プロジェクトおよびスクリプトの作成
    以下の内容でプロジェクトおよびスクリプトを作成します。

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

  4. 入力データ用XMLテンプレートの編集
    「/data/sapbc/bapi_inbound/bank_getlist_input.xml」に保存した入力データ用XMLテンプレートを編集し、以下のデータを入力します。

    要素名
    BankCtry JP
    MaxRows 3

    <?xml version="1.0" encoding="Shift_JIS"?>
    <doc:Bank.GetList xmlns:doc="urn:sap-com:document:sap:business" xmlns="">
      <BankCtry>JP</BankCtry>
      <MaxRows>3</MaxRows>
    </doc:Bank.GetList>
    

  5. 使用するモジュールやSAPシステムのカスタマイズにより、テスト値は変わります。詳細については、SAPのアプリケーションコンサルタントにご相談ください。

  6. XMLファイル読み取り処理の作成
    ツールパレットの「ファイル」-「XML」-「XMLファイル読み取り」をスクリプトキャンバスに配置します。
    XMLファイル読み取り処理のプロパティ設定ダイアログで以下の値を設定します。

    カテゴリ 項目名
    基本設定 名前 XMLファイルの読み取り
    必須設定 ファイル /data/sapbc/bapi_inbound/bank_getlist_input.xml

  7. インバウンド実行処理の作成
    ツールパレットの「アプリケーション」-「SAP BC」-「インバウンド実行」をスクリプトキャンバスに配置します。
    インバウンド実行処理のプロパティ設定ダイアログで以下の値を設定します。
    各プロパティ項目の詳細については、「インバウンド実行処理」を参照してください。

    カテゴリ 項目名
    基本設定 名前 Bank.GetListインバウンド実行
    入力データ XMLファイルの読み取り
    必須設定 接続先 SAP BC 4.8接続設定
    インタフェース BAPI
    送信者 ここでは「External」を入力します。
    受信者 ここでは「SAP」を入力します。

    インバウンド実行処理必須設定画面

  8. XMLファイル書き込み処理の作成
    ツールパレットの「ファイル」-「XML」-「XMLファイル書き込み」をスクリプトキャンバスに配置します。
    XMLファイル書き込み処理のプロパティ設定ダイアログで以下の値を設定します。

    カテゴリ 項目名
    基本設定 名前 XMLファイルの書き込み
    入力データ Bank.GetListインバウンド実行
    必須設定 ファイル /data/sap/bapi_inbound/bank_getlist_output.xml

  9. プロセスフローの設定
    作成した各処理を、以下の順にプロセスフローでつなぎます。

    順序 名前
    1 XMLファイルの読み取り
    2 Bank.GetListインバウンド実行
    3 XMLファイルの書き込み

    スクリプト完成画面

    これでスクリプトの設定は完了です。

  10. ルーティングルールの設定
    SAP BCからSAPシステムの処理を呼び出すために、SAP BCでルーティングルールの設定を行う必要があります。作成したスクリプトを実行することで、ルーティングルールの設定を簡単に行うことができます。

    作成したスクリプト「BAPIインバウンド」を実行すると、SAP BCにルーティングルールが登録されます。
    「Routing...」-「Routing Rules」を押下し、ルーティングルール一覧画面を開きます。

    ルーティングメニュー

    Bank.GetListルーティング

    登録されたルーティングルールの「Edit」ボタンを押下し、ルーティングルール編集画面を開きます。以下の値を入力し、「Save」ボタンを押下します。

    ルーティング編集ボタン

    項目名
    Transport BAPI

    Bank.GetListルーティングトランスポート編集

    RFC汎用モジュールを実行する場合は、「Transport」に「RFC」を設定します。
    IDocを実行する場合は、「Transport」に「ALE (R/3 IDOC)」を設定します。

    Bank.GetListルーティング編集完了

    「Enabled?」カラムの「No」を押下し、「Yes」にします。

    ルーティング有効化

    Bank.GetListルーティング有効化完了

  11. スクリプト実行
    スクリプト「BAPIインバウンド」を実行します。

    「/data/sapbc/bapi_inbound/bank_getlist_output.xml」ファイルにBAPI「Bank.GetList」を実行した結果が出力されます。

    <?xml version="1.0" encoding="Shift_JIS"?>
    <biztalk_1 xmlns="urn:biztalk-org:biztalk:biztalk_1">
      <header>
        <delivery>
          <message>
            <messageID>A9FE3725F70D8DB5000021F9</messageID>
            <sent>2010-06-02T22:30:42</sent>
          </message>
          <to>
            <address>urn:sap-com:logical-system:SAP</address>
          </to>
          <from>
            <address>urn:sap-com:logical-system:External</address>
          </from>
        </delivery>
      </header>
      <body>
        <doc:Bank.GetList.Response xmlns:doc="urn:sap-com:document:sap:business" xmlns="">
          <BankList>
            <item>
              <BANK_CTRY>JP</BANK_CTRY>
              <BANK_KEY>0000001</BANK_KEY>
              <BANK_NAME>Test Bank 1</BANK_NAME>
              <CITY>TOKYO</CITY>
            </item>
            <item>
              <BANK_CTRY>JP</BANK_CTRY>
              <BANK_KEY>0000002</BANK_KEY>
              <BANK_NAME>Test Bank 2</BANK_NAME>
              <CITY>TOKYO</CITY>
            </item>
            <item>
              <BANK_CTRY>JP</BANK_CTRY>
              <BANK_KEY>0000003</BANK_KEY>
              <BANK_NAME>Test Bank 3</BANK_NAME>
              <CITY>TOKYO</CITY>
            </item>
          </BankList>
          <Return>
            <TYPE/>
            <ID/>
            <NUMBER>000</NUMBER>
            <MESSAGE/>
            <LOG_NO/>
            <LOG_MSG_NO>000000</LOG_MSG_NO>
            <MESSAGE_V1/>
            <MESSAGE_V2/>
            <MESSAGE_V3/>
            <MESSAGE_V4/>
            <PARAMETER/>
            <ROW>0</ROW>
            <FIELD/>
            <SYSTEM/>
          </Return>
        </doc:Bank.GetList.Response>
      </body>
    </biztalk_1>