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

本チュートリアルでは、SAPシステムのBAPIの実行をトリガーとして、DataSpider Servistaのスクリプトを実行します。
本チュートリアルでは、「STFC_CONNECTION」BAPIを実行し、SAPシステムから渡されたデータをCSVファイルに書き出し、DataSpiderからは実行された時刻を戻り値に付与してSAPシステムに返します。

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

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

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

事前準備

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

    RFCユーザの準備画面

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

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

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

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

    スクリプト完成画面

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

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

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

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

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

    項目名
    パス /data/sap/bapi_outbound

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

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

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

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

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

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

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

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

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

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


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

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

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

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

    マッピングの追加画面

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

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

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

    カテゴリ 項目名
    基本設定 名前 CSVファイルの書き込み
      入力データ 入力スキーマの読み取り
    必須設定 ファイル /data/sap/bapi_outbound/request.csv
      列一覧/列名 REQTEXT
    [列一覧][追加]を押下し[列名]を追加します。
    書き込み設定 エンコード UTF-8

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

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

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

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

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

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

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

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

    「SAP→CSV」を開き、以下のようにマッピングします。

    入力元項目名 出力先項目名
    REQTEXT REQTEXT

    SAPからCSVへのマッピング


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

    カテゴリ 項目名
    基本設定 名前 出力スキーマの読み取り
      入力データ 入力スキーマの読み取り
    必須設定 接続先 SAP接続設定
      インターフェース RFC(BAPIを含む)
      ビジネスメソッド STFC_CONNECTION

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

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

    アウトバウンド入力処理「入力スキーマの読み取り」とアウトバウンド出力処理「出力スキーマの読み取り」はスキーマが異なるため、Mapperを使用しデータをマッピングする必要があります。Mapperを使用しデータのマッピングを行うため[はい]を押下します。

    アウトバウンド入力処理「入力スキーマの読み取り」とアウトバウンド出力処理「出力スキーマの読み取り」の間に「mapping」が追加されます。

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

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

    カテゴリ 項目名 変更前の値 変更後の値
    基本設定 名前 mapping 入力→出力

    「入力→出力」を開き、以下のようにマッピングします。

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

    入力から出力へのマッピング

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

    項目名
    コメント 現在日時の取得

    現在日時ロジック作成画面

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

    項目名
    フォーマット yyyy/MM/dd hh:mm:ss
    コメント 日付フォーマットの変換

    日付の変換ロジック作成画面

  10. スクリプトの完成
    アウトバウンド出力処理「出力スキーマの読み取り」の結果データをスクリプトの出力結果とするために、アウトバウンド出力処理「出力スキーマの読み取り」からスクリプト出力変数「out_xml」にデータフローを引きます。データフローを引くためには、アウトバウンド出力処理「出力スキーマの読み取り」を右クリックでドラッグし、end処理にドロップします。

    出力編集へのマッピング設定画面

    データフローを引き終わると、[マッピングの追加]ダイアログが表示されます。

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

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

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

    スクリプト完成画面

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

SAPトリガーの作成

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

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

    マイトリガー画面

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

    項目名
    トリガー名 STFC_CONNECTION受信
    接続先 SAP接続設定
    プログラムID STFC_CON
    インターフェース RFC(BAPIを含む)
    ビジネスメソッド STFC_CONNECTION
    応答種別 同期

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

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

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

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

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

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

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

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

    高度な操作メニュー画面

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

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

    STFC_CONNECTION受信トリガー

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

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

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

    ゲートウェイモニタ画面

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

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

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

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

    プログラムID確認画面

RFC宛先の設定

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

    RFC宛先の表示画面

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

    新規RFC宛先登録画面

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

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

    STFC_CON RFC宛先基本設定画面

    STFC_CON RFC宛先技術設定画面

    RFC宛先接続設定画面

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

    Unicodeシステムの場合

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

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

    接続テスト成功画面

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

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

    ABAPプログラム実行画面

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

    項目名
    プログラム SRFCCONN

    SRFCCONN実行画面

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

    項目名
    RFCDEST EICS_STFC_CON
    NRCALL 1

    EICS_STFC_CON RFCテスト画面

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

    テスト実行成功画面

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

    STFC_CONNECTIONトリガー実行成功画面

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

    項目名
    ファイルパス /data/sap/bapi_outbound/request.csv
    内容
    abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 a"o"u"? A"O"U" !§$%&/()=?{[]}+*~#-_.:,;
    

    リクエストデータ