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

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

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

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

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

事前準備

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

    RFCユーザの準備画面

イベントの作成

アウトバウンド処理を行うためには、SAP Enterprise Integration Component Server(以下、EICS)にイベントを登録します。EICSの説明については、こちらを参照してください。
  1. EICSの起動
    EICSにはWebStudioとは別の設定画面が用意されています。SkyOnDemandフロント画面のサーバー情報の詳細メニューよりEICSへアクセスします。

    EICS概要画面

  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(JA) 言語を選択します。
    System Number <システム番号>
    ここでは「01」を入力しています。
    システム番号を入力します。
    Connection Pool Minimum Count 2 コネクションプールに関する設定項目です。ここではデフォルトの「2」のままにします。
    Connection Pool Maximum Count 10 コネクションプールに関する設定項目です。ここではデフォルトの「10」のままにします。
    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」を入力します。
    Sap IDocument False IDocに関する設定項目です。BAPIアウトバウンド処理のため、ここでは「False」にします。
    Encoding 入力しません IDocに関する設定項目です。BAPI呼び出しのため、ここでは入力しません。
    Reply Type Synchronous 同期実行を行うか、非同期実行を行うかを設定します。ここでは「Synchronous」を選択します。
    Search Category BAPI or RFC BAPIを含むRFC汎用モジュールまたはIDocを検索する際に使用します。
    Search Name 入力しません。 BAPIを含むRFC汎用モジュールまたはIDocを検索する際に使用します。

    イベント情報入力画面

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

    STFC_CONNECTION

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

    リクエストスキーマ

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

    レスポンススキーマ

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

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

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

    ゲートウェイモニタ画面

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

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

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

    項目名
    LU名 <SkyOnDemand Serverが稼働するOSのホスト名またはIPアドレス>
    TP名 STFC_CON
    Syst. Type 登録済みサーバ
    ユーザ名 <SkyOnDemand Serverが稼働するOSのホスト名または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" !§$%&/()=?{[]}+*~#-_.:,;
    

    リクエストデータ