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

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

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

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

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

事前準備

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

    RFCユーザの準備画面

  2. OpenJMSの起動
    アウトバウンド処理を行うためにはJMSサーバの起動が必要です。JMSサーバの起動については「SAP EICSインストールガイド」を参照してください。JMSサーバの起動に成功すると以下の画面が表示されます。

    OpenJMS起動画面

イベントの作成

アウトバウンド処理を行うためには、SAP Enterprise Integration Component Server(以下、EICS)にイベントを登録します。EICSの説明については、こちらを参照してください。
  1. EICSの起動
    EICSにはWebブラウザで以下のURLにアクセスします。

    URL :http://<hostname>:<port>/eics/

    項目名 説明
    hostname DataSpiderサーバをインストールしたホストのホスト名またはIPアドレスです。
    port DataSpiderサーバをインストールする際に入力したポート番号です。

  2. インテグレーションコンポーネント(Integration Component)作成
    既に他のチュートリアルで作成している場合には、新しくインテグレーションコンポーネントを作成する必要はありません。

    Overviewの[New Integration Component]を押下します。
    または左側の[Integration Components]メニューの[Integration Components]-[New Integration Component]を押下します。

    新規インテグレーションコンポーネント作成画面

    インテグレーションコンポーネント登録画面で以下の値を入力します。各項目に値を入力した後、[Continue]を押下し、インテグレーションコンポーネントを作成します。

    項目名
    Name Tutorial
    Description チュートリアル用インテグレーションコンポーネント

    チュートリアル用インテグレーションコンポーネント作成画面

    チュートリアル用インテグレーションコンポーネント

  3. イベント(Event)の作成
    [New Event]を押下します。

    新規イベント作成画面

    イベント登録画面で以下の値を入力した後、[Continue]を押下します。

    項目名
    NameSTFC_CONNECTION
    Descriptionテキストエコー処理
    AdapterLibrados SAP Adapter

    基本情報入力画面

    次の画面で接続情報の登録を行います。接続情報登録画面で以下の値を入力します。

    項目名 説明
    Username <SAPシステムに接続可能なユーザ名>
    ここでは「EICS」を入力しています。
    SAPシステムに接続するユーザ名を入力します。
    Password <SAPシステムに接続可能なユーザのパスワード> SAPシステムに接続するユーザのパスワードを入力します。
    Server <SAPシステムのホスト名>
    ここでは「r3server00」を入力しています。
    SAPシステムのホスト名またはIPアドレスを入力します。
    Client <クライアント番号>
    ここでは「800」を入力しています。
    クライアント番号を入力します。
    Language Japanese 言語を選択します。
    System Number <システム番号>
    ここでは「01」を入力しています。
    システム番号を入力します。
    Connection Pool Minimum Count 2 コネクションプールに関する設定項目です。ここではデフォルトの「2」のままにします。
    Connection Pool Maximum Count 10 コネクションプールに関する設定項目です。ここではデフォルトの「10」のままにします。
    Connection Pool Increment Count 2 コネクションプールに関する設定項目です。ここではデフォルトの「2」のままにします。
    Connection Pool Shrink Count 1 コネクションプールに関する設定項目です。ここではデフォルトの「1」のままにします。
    Connection Pool Shrink Mins 1 コネクションプールに関する設定項目です。ここではデフォルトの「1」のままにします。
    Convert HostName to IP Address True SAPシステムの名前解決の方法に関する設定項目です。ここでは「True」にします。
    Gateway Server <ゲートウェイサービス>
    ここでは「sapgw01」を入力しています。
    SAPシステムで稼働しているゲートウェイサービスを入力します。
    Gateway Host <ゲートウェイホスト>
    ここでは「r3server00」を入力しています。
    SAPシステムが稼働しているサーバのホスト名またはIPアドレスを入力します。

    接続情報入力画面

    [Continue]を押下し、イベント情報登録画面で以下の値を入力します。

    項目名 説明
    Function Name/IDOC Base Type STFC_CONNECTION 呼び出すBAPI名を入力します。
    IDOC Extension Type 入力しません。 IDocに関する設定項目です。BAPIアウトバウンド処理のため、ここでは入力しません。
    Program ID STFC_CON プログラムIDを入力します。ここでは「STFC_CON」を入力します。
    Unicode False 対象SAPシステムがUnicodeシステムかどうかを選択します。接続するSAPシステムがUnicodeシステムの場合には「True」を選択します。そうではない場合には「False」にします。
    ERP6.0(mySAP2005)は通常Unicodeシステムとなっています。それより前のバージョンのSAP ERPは通常非Unicodeシステムとなっています。
    Sap IDocument False IDocに関する設定項目です。BAPIアウトバウンド処理のため、ここでは「False」にします。
    Expand IDocument False IDocに関する設定項目です。BAPIアウトバウンド処理のため、ここでは「False」にします。
    Reply Type Synchronous 同期実行を行うか、非同期実行を行うかを設定します。ここでは「Synchronous」を選択します。
    Translator Class JDOM Translator 変更できない設定項目です。
    Class Name 入力しません。 変更できない設定項目です。
    Search Category BAPI or RFC BAPIを含むRFC汎用モジュールまたはIDocを検索する際に使用します。
    Search Name 入力しません。 BAPIを含むRFC汎用モジュールまたはIDocを検索する際に使用します。
    JMS Event チェックあり 変更できない設定項目です。
    JMS Type Topic 変更できない設定項目です。
    JMS Connection Factory Name Default 変更できない設定項目です。
    JMS Topic Queue Name Default 変更できない設定項目です。
    JMS Message Type ObjectMessage 変更できない設定項目です。
    Java Object Event チェックなし 変更できない設定項目です。
    Event ClassName 入力しません。 変更できない設定項目です。

    イベント情報入力画面

    [Continue]ボタンを押下し、STFC_CONNECTIONイベントを作成します。

    STFC_CONNECTION

  4. スキーマ確認
    指定した「STFC_CONNECTION」から入力されるリクエストデータのスキーマを表示します。[Request Schema]を押下し、リクエストデータのスキーマを表示します。

    リクエストスキーマ

    指定した「STFC_CONNECTION」へ返すレスポンスデータのスキーマを表示します。[Response Schema]を押下し、レスポンスデータのスキーマを表示します。

    レスポンススキーマ

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

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

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

    ゲートウェイモニタ画面

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

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

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

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

    プログラムID確認画面


RFC宛先の設定

アウトバウンド処理を行うためには、SAPシステムでRFC宛先の設定を行います。
  1. RFC宛先の設定
    EICSにて登録したイベントのプログラムを参照する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. 接続テスト
    [接続テスト]を押下し、接続テストを行います。
    接続テストに成功した場合には以下のような画面が表示されます。

    接続テスト成功画面

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

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

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

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

    スクリプト完成画面

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

    項目名
    パス /data/sap/bapi_outbound

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

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

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

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

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

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

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

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

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

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


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

    カテゴリ 項目名
    基本設定 名前 入力スキーマの読み取り
      入力データ in_xml
    必須設定 インテグレーションコンポーネント Tutorial
      イベント STFC_CONNECTION

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

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

    マッピングの追加画面

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

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

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

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

    CSV書き込み処理必須設定画面

    CSV書き込み処理書き込み設定画面

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

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

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

    CSV書き込み処理完了画面

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

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

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

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

    SAPからCSVへのマッピング


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

    カテゴリ 項目名
    基本設定 名前 出力スキーマの読み取り
      入力データ 入力スキーマの読み取り
    必須設定 インテグレーションコンポーネント Tutorial
      イベント STFC_CONNECTION

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

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

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

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

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

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

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

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

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

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

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

    項目名
    ラベル 現在日時の取得

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

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

    項目名
    ラベル 日付フォーマットの変換
    フォーマット yyyy/MM/dd hh:mm:ss

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

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

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

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

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

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

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

    スクリプト完成画面

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

SAPトリガーの作成

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

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

    マイトリガー画面

    マイトリガーのタスクから[新しいSAPトリガーを作成する]を選択し、SAPトリガーの設定画面を表示します。

    新規トリガー作成画面

    SAPトリガーの設定画面で以下の値を入力し、[次へ]を押下します。

    項目名
    トリガー名 STFC_CONNECTION受信
    コンポーネント Tutorial
    イベント 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. テスト実行
    今回のテスト実行では、「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" !§$%&/()=?{[]}+*~#-_.:,;
    

    リクエストデータ