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

本チュートリアルでは、SAPシステムのBAPIの実行をトリガーとして、DataSpider Servistaのスクリプトを実行します。RFC、IDocの実行についても同じような流れで実行することができます。
具体的な処理としては、BAPI「STFC_CONNECTION」を実行し、SAPシステムから渡されたデータをXMLファイルに書き出し、DataSpiderからは実行された時刻を戻り値に付与してSAPシステムに返します。

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

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

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

事前準備

  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システムの稼働OSのホスト名またはIPアドレス
    ここでは「DEVECC2」を入力しています。
    System Number システム番号
    ここでは「00」を入力しています。

    SAPサーバ追加

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

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

    SAPサーバリスト

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

    接続テスト

  4. リスナーの登録
    SAP BCからSAPシステムへのリスナーを登録します。

    追加したSAPシステムの「Listeners」カラムを押下し、リスナーリスト画面を開きます。

    リスナー選択

    リスナーリスト

    「Add Listener」ボタンを押下し、リスナー作成画面を開きます。リスナー作成画面で以下の値を入力します。

    項目名
    Program ID STFC_CON
    Gateway Host SAPシステムの稼働OSのホスト名またはIPアドレス
    ここでは「DEVECC2」を入力しています。
    Gateway Service SAPシステムで稼働しているゲートウェイサービス
    ここでは「sapgw00」を入力しています。

    STFC_CONリスナー作成

    「Save」ボタンを押下し、リスナーを作成します。

    作成したリスナーの「Started?」カラムを押下し、リスナーを起動します。

    STFC_CONリスナー起動

    STFC_CONリスナー起動成功

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

    SAP GUIにて、トランザクションコード「SMGW」を実行し、ゲートウェイモニタを開きます。ゲートウェイモニタの「ジャンプ」-「クライアントにログオン済」メニューを選択し、作成したリスナーからの接続である以下のエントリがあることを確認します。

    項目名 内容
    LU名 SAP BC稼働OSホスト名またはIPアドレス
    TP名 STFC_CON
    Syst. Type 登録済みサーバ

    ゲートウェイモニタ画面

RFC宛先の設定

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

    RFC宛先の表示画面

    「TCP/IP接続」を選択し、「登録」ボタンを押下します。

    新規RFC宛先登録画面

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

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

    STFC_CON RFC宛先基本設定画面

    STFC_CON RFC宛先技術設定画面

    RFC宛先接続設定画面

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

    Unicodeシステムの場合 「保存」ボタンを押下し、RFC宛先を登録します。

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

    接続テスト成功画面

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

入出力データ用スキーマの取得

アウトバウンド処理で起動するスクリプトの入出力データ用のスキーマを取得します。
  1. 入力データ用XMLテンプレートの取得
    「Adapters」-「SAP」を押下し、SAPサーバ設定画面を開きます。

    SAPメニュー

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

    Lookupメニュー

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

    項目名
    Function Name STFC_CONNECTION

    STFC_CONNECTIONのLookup

    STFC_CONNECTIONのbXML

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

    表示されたXMLテンプレートがアウトバウンド処理で起動するスクリプトの入力データのスキーマとなります。表示されたXMLテンプレートを以下のディレクトリ下にファイルとして保存します。必要に応じてディレクトリを作成してください。
    項目名
    パス /data/sapbc/bapi_outbound/stfc_connection_input.xml

  2. 出力データ用XMLテンプレートの取得
    「Invoke」ボタンを押下し、テスト実行をします。

    STFC_CONNECTIONのbXMLテスト実行ボタン

    STFC_CONNECTIONのbXMLレスポンス

    表示されたXMLテンプレートがアウトバウンド処理で起動するスクリプトの出力データのスキーマとなります。表示されたXMLテンプレートを以下のディレクトリ下にファイルとして保存します。必要に応じてディレクトリを作成してください。

    項目名
    パス /data/sapbc/bapi_outbound/stfc_connection_output.xml

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

SAPシステムからのアウトバウンド処理をSAP BCトリガーで受信し、スクリプトを起動します。スクリプトの中でSAPシステムから渡されたリクエストデータをXMLファイルに保存し、現在の時刻をレスポンスデータに付与してSAPシステムに戻します。
  1. スクリプトの完成イメージ

    スクリプト完成画面

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

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

  3. 入出力用XML型スクリプト変数の作成
    以下の内容でXML型スクリプト変数を作成します。

    変数名 入出力
    in_xml XML型 スクリプト入力変数として使用します
    out_xml XML型 スクリプト出力変数として使用します

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

    カテゴリ 項目名
    基本設定 名前 XMLファイルの書き込み
    入力データ in_xml
    必須設定 ファイル /data/sapbc/bapi_outbound/stfc_connection_output.xml

  5. レスポンスデータの作成
    ツールパレットの「変換」-「基本」-「マッピング」をスクリプトキャンバスに配置します。 マッピングには以下の値を設定します。

    カテゴリ 項目名
    基本設定 名前 レスポンスデータの作成
    入力データフロー in_xml
    出力データフロー out_xml

    「レスポンスデータの作成」マッピングを開き、以下のようにマッピングします。

    項目名
    入力スキーマ /data/sapbc/bapi_outbound/stfc_connection_input.xmlファイルから読み取り
    出力スキーマ /data/sapbc/bapi_outbound/stfc_connection_output.xmlファイルから読み取り

    入力元項目名 ロジックアイコン名 出力先項目名
    REQTEXT   ECHOTEXT
     
    • [日付]-[基本]-[現在日時]
    • [文字]-[日付]-[日付フォーマッティング]
    RESPTEXT

    マッピング

    日付フォーマットの変換では以下の値を設定します。

    項目名
    フォーマット yyyy/MM/dd hh:mm:ss

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

    順序 名前
    1 XMLファイルの書き込み
    2 レスポンスデータの作成

    スクリプト完成画面

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

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

SAP BCトリガーの作成

SAPシステムからのアウトバウンド処理を受信し、作成したスクリプトを実行するSAP BCトリガー作成します。
  1. トリガーの作成
    マイトリガーのタスクから[新しいSAP BCトリガーを作成する]を選択し、SAP BCトリガーの設定画面を表示します。SAP BCトリガー設定画面で以下の値を設定します。
    各プロパティ項目の詳細については、「SAP BCトリガー」を参照してください。

    項目名
    トリガー名 SAP BCアウトバウンド用トリガー
    実行パス /tutorial

    トリガー設定基本

    [次へ]を押下し、SAP BCトリガー実行内容設定画面を表示します。SAP BC実行内容設定画面で以下の値を設定します。そのほかのプロパティ項目については適宜変更してください。
    スクリプト引数の変数、スクリプト出力の変数の設定方法については、「トリガー変数の設定方法」を参照してください。

    項目名
    サービス ここでは「root@SAP BCアダプタチュートリアル」を選択しています。
    スクリプト ここでは「BAPIアウトバウンド」を選択しています。
    スクリプト引数/in_xml ${trigger.standardInput}
    スクリプト出力/out_xml ${trigger.standardOutput}

    トリガー設定実行内容

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

  2. ルーティングルールの登録
    ルーティングルールの登録を行うために、RFC宛先「BC_STFC_CON」に対して、ファンクション「STFC_CONNECTION」を呼び出すABAPプログラム「SRFCCONN」を実行します。SAP GUIにて、トランザクションコード「SA38」を実行します。

    ABAPプログラム実行画面

    ABAPプログラム実行画面で以下の値を入力し、実行します。

    項目名
    プログラム SRFCCONN

    SRFCCONN実行画面

    RFCテスト画面で以下の値を入力し、実行します。

    項目名
    RFCDEST BC_STFC_CON
    NRCALL 1

    BC_STFC_CON RFCテスト画面

    これでSenderが「M60CLNT300」、Receiverが「BC_STFC_CON」、MsgTypeが「STFC_CONNECTION」のルーティングルールがSAP BCに登録されています。

  3. ルーティングルールの設定
    「Routing...」-「Routing Rules」を押下し、ルーティングルール一覧画面を開きます。

    ルーティングメニュー

    STFC_CONルーティング

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

    ルーティング編集ボタン

    項目名
    Transport XML
    Specify URL http://192.168.100.35:7700/dataspider/sapbc/tutorial
    DataSpiderServer稼働OSのホスト名またはIPアドレス、ポート番号に適宜変更してください
    XML dialect bXML

    STFC_CONルーティング編集

    RFC汎用モジュール、またはIDocを実行する場合は、「XML dialect」に「SAP-XML」を設定し、「Use text/xml as content type」にチェックを入れます。

    STFC_CONルーティング編集完了

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

    ルーティング有効化

    STFC_CONルーティング有効化完了

  4. テスト実行
    再度、RFC宛先「BC_STFC_CON」に対して、ファンクション「STFC_CONNECTION」を呼び出すABAPプログラム「SRFCCONN」を実行します。SAP GUIにて、トランザクションコード「SA38」を実行します。

    ABAPプログラム実行画面

    ABAPプログラム実行画面で以下の値を入力し、実行します。

    項目名
    プログラム SRFCCONN

    SRFCCONN実行画面

    RFCテスト画面で以下の値を入力し、実行します。

    項目名
    RFCDEST BC_STFC_CON
    NRCALL 1

    BC_STFC_CON RFCテスト画面

    テストに成功した場合には、下図のような画面が表示されます。

    BC_STFC_CON RFCテスト結果画面

    また、マイトリガーで「SAP BCアウトバウンド用トリガー」トリガーの状態を見ると、[最終実行結果]に「正常終了」と表示されます。

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

    <?xml version="1.0" encoding="Shift_JIS"?>
    <biztalk_1 xmlns="urn:biztalk-org:biztalk:biztalk_1">
      <header>
        <delivery>
          <message>
            <messageID>A9FE3725F70DEBBB000023DD</messageID>
            <sent>2010-06-04T01:53:53</sent>
          </message>
          <to>
            <address>urn:sap-com:logical-system:BC_STFC_CON</address>
          </to>
          <from>
            <address>urn:sap-com:logical-system:BSP000</address>
          </from>
        </delivery>
      </header>
      <body>
        <doc:STFC_CONNECTION xmlns:doc="urn:sap-com:document:sap:rfc:functions" xmlns="">
          <REQUTEXT>abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 äöüß ÄÖÜ !§$%&/()=?{[]}+*~#-_.:,;</REQUTEXT>
        </doc:STFC_CONNECTION>
      </body>
    </biztalk_1>