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

本チュートリアルでは、SkyOnDemandのスクリプトからSAPシステムのBAPIの実行を行います。
本チュートリアルでは、SAPシステムに登録された銀行情報を取得するBAPI(BAPI_BANK_GETLIST)を実行し、取得したデータをCSVファイルに書き出します。

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

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

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

事前準備

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

    RFCユーザの準備画面

ビジネスメソッドの作成

SAPアダプタでBAPIを使用するためには、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. ビジネスメソッド(Business Method)の作成
    [New Method]を押下します。

    新規ビジネスメソッド作成画面

    ビジネスメソッド登録画面で以下の値を入力した後、[Continue]を押下します。

    項目名
    NameBAPI_BANK_GETLIST
    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」にします。

    接続情報入力画面

    [Test Connection]を押下します。接続テストが成功すると「Successfully connected with properties.」メッセージが表示されます。

    接続情報入力画面

    [Continue]を押下し、ビジネスメソッド情報登録画面で以下の値を入力します。

    項目名 説明
    Function Name/IDOC Base Type BAPI_BANK_GETLIST 呼び出したいBAPI名を入力します。
    IDOC Extension Type 入力しません。 IDocに関する設定項目です。BAPI呼び出しのため、ここでは入力しません。
    Sap IDocument False IDocに関する設定項目です。BAPI呼び出しのため、ここでは「False」にします。
    Encoding 入力しません IDocに関する設定項目です。BAPI呼び出しのため、ここでは入力しません。
    Commit Transaction True BAPI実行後、トランザクションをコミットするかどうかを設定します。ここでは「True」にします。
    Search Category BAPI or RFC BAPIを含むRFC汎用モジュールまたはIDocを検索する際に使用します。
    Search Name 入力しません。 BAPIを含むRFC汎用モジュールまたはIDocを検索する際に使用します。

    ビジネスメソッド情報入力画面

    [Browse]を押下し、SAPシステムに登録されているBAPIのリストから[Function Name/IDOC Base Type]選ぶことができます。

    ブラウズ画面

    「BAPI_BANK_GETLIST」は[SAP Root Category]-[SAP BAPIs]-[アプリケーションコンポーネント]-[クロスアプリケーションコンポーネント]-[銀行]-[銀行]-[銀行一覧照会]で選択できます。

    BANK BAPIの選択画面

    [Continue]ボタンを押下し、BAPI_BANK_GETLISTビジネスメソッドを作成します。

    BAPI BANK GETLIST

  4. スキーマ確認
    指定した「BAPI_BANK_GETLIST」BAPIに送信するリクエストデータのスキーマを表示します。[Request Schema]を押下し、リクエストデータのスキーマを表示します。

    リクエストスキーマ

    指定した「BAPI_BANK_GETLIST」BAPIから返されるレスポンスデータのスキーマを表示します。[Response Schema]を押下し、レスポンスデータのスキーマを表示します。

    レスポンススキーマ

  5. テスト実行
    [Test]を押下し、テスト画面を表示します。テスト画面で以下の値を入力します。 各項目に値を入力した後、[Test]を押下します。

    項目名 説明
    BAKN_CTRY JP 国コード
    MAX_ROWS 10 最大検索件数

    テスト実行画面

    SAPシステムに登録されているBANKのリストが表示されます。

    テスト実行結果画面

    [Request XML]を押下すると、「BAPI_BANK_GETLIST」BAPIに送信したリクエストデータが表示されます。

    テスト実行リクエストXML画面

    [Response XML]を押下すると、「BAPI_BANK_GETLIST」BAPIから返されたレスポンスデータが表示されます。

    テスト実行レスポンスXML画面

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

EICSで登録した「BAPI_BANK_GETLIST」BAPIをスクリプトから呼び出します。 CSVアダプタからデータを読み込んで、SAPアダプタで「BAPI_BANK_GETLIST」BAPIを呼び出し、SAPシステムから返されたデータをCSVアダプタで書き込みます。
  1. スクリプトの完成イメージ

    スクリプト完成画面

  2. 入力データを保存するディレクトリの作成
    入力データを保存するディレクトリを作成します。入力データは「/data/sap/bapi_inbound」に保存します。

    項目名
    パス /data/sap/bapi_inbound

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

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

  3. 入力データの作成
    入力データとなるCSVファイルを「/data/sap/bapi_inbound/input.csv」に作成します。
    エクスプローラで/data/sap/bapi_inboundディレクトリに移動し、[ファイル]-[新規作成]-[テキストファイル]を選んでCSVファイルを作成します。以下の内容でCSVファイルを作成します。

    項目名
    ファイルパス /data/sap/bapi_inbound/input.csv
    内容
    国コード,検索件数
    JP,10
    

    入力データ画面

    入力データファイルパス画面


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

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

  5. CSVファイル読み取り処理の作成
    作成したCSVファイルをCSVアダプタを使用し、スクリプトから使用できるようにします。
    [ファイル]-[CSV]-[CSVファイル読み取り]をスクリプトキャンバスにドラッグ&ドロップします。 CSVファイル読み取り処理の設定画面で以下の値を入力し[完了]を押下します。

    カテゴリ 項目名
    基本設定 名前 CSVファイルの読み取り
    必須設定 ファイル /data/sap/bapi_inbound/input.csv
      列一覧/列名 国コード
    検索件数
    [ファイル]を指定した後、[列一覧の更新]プロパティアクションを実行すると[列一覧]に「input.csv」の列情報が自動的に表示されます。
    読み取り設定 最初の行は値として取得しない チェックします
    inputdata.csvの最初の行の「国コード」、「検索件数」をデータとして読み取らないようにします。

    CSV読み取り必須設定画面

    CSV読み取り読み取り設定画面

    CSVファイル読み取り処理完了後スクリプト画面

  6. ビジネスメソッド実行処理の作成
    EICSで登録した「BAPI_BANK_GETLIST」BAPIをSAPアダプタを使用し、スクリプトから使用できるようにします。
    [アプリケーション]-[SAP]-[ビジネスメソッド実行]をスクリプトキャンバスにドラッグ&ドロップします。ビジネスメソッド実行処理の設定画面で以下の値を入力し[完了]を押下します。

    カテゴリ 項目名
    基本設定 名前 BAPI_BANK_GETLISTの実行
      入力データ CSVファイル読み取り
    必須設定 インテグレーションコンポーネント Tutorial
      ビジネスメソッド BAPI_BANK_GETLIST
    実行設定 空のテーブルパラメータを削除する チェックします

    ビジネスメソッド実行処理必須設定画面

    ビジネスメソッド実行処理実行設定画面

  7. CSVファイル読み取り処理からビジネスメソッド実行処理へのマッピングの作成
    CSVファイル読み取り処理からビジネスメソッド実行処理へドラック&ドロップすると[フローを引く]ダイアログが表示されます。表示されない場合は、一旦データフローを削除してから操作してください。

    マッピングの追加画面

    CSVアダプタはテーブルモデル型、SAPアダプタはXML型のため、Mapperを使用しデータをマッピングする必要があります。Mapperを使用しデータのマッピングを行うため[データフローを引く]を選択して[マッピングを追加する]にチェックをいれます。

    CSVファイル読み取り処理「CSVファイル読み取り」とビジネスメソッド実行処理「BAPI_BANK_GETLISTの実行」の間に「mapping」が追加されます。

    ビジネスメソッド実行処理完了画面

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

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

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

    入力元項目名 出力先項目名
    国コード BANK_CTRY
    検索件数 MAX_ROWS

    CSVからSAPへのマッピング

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

    カテゴリ 項目名
    基本設定 名前 CSVファイルの書き込み
      入力データ BAPI_BANK_GETLISTの実行
    必須設定 ファイル /data/sap/bapi_inbound/result.csv
      列一覧/列名 国コード
    銀行コード
    銀行名
    所在地
    [列一覧][追加]を押下し[列名]を追加します。
    書き込み設定 1行目に列名を挿入する チェックします
    書き込んだCSVファイルの1行目に[列一覧][列名]が出力されます。

    CSV書き込み必須設定画面

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

  9. ビジネスメソッド実行処理からCSVファイル書き込み処理へのマッピングの作成
    ビジネスメソッド実行処理からCSVファイル書き込み処理へドラック&ドロップすると[フローを引く]ダイアログが表示されます。表示されない場合は、一旦データフローを削除してから操作してください。

    マッピングの追加画面

    Mapperを使用しデータのマッピングを行うため[データフローを引く]を選択して[マッピングを追加する]にチェックをいれます。

    ビジネスメソッド実行処理「BAPI_BANK_GETLISTの実行」とCSVファイル書き込み処理「CSVファイルの書き込み」との間に「mapping」が追加されます。
    追加したマッピングの名前を「mapping」から「SAP→CSV」に変更します。マッピングアイコンを選択し、プロパティインスペクタから以下のように変更します。

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

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

    「SAP→CSV」を開き、以下のようにマッピングします。
    「BAPI_BANK_GETLIST」BAPIは「item」要素に複数のBANK情報が格納されるため、「item」単位でCSVの1行のデータを出力するようにマッピングしています。

    入力元項目名 ロジックアイコン名 出力先項目名
    item [繰り返し]-[基本]-[単純な繰り返し] row
    BANK_CTRY   国コード
    BANK_KEY   銀行コード
    BANK_NAME   銀行名
    CITY   所在地

    SAPからCSVへのマッピング

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

    順序 名前
    1 CSVファイルの読み取り
    2 CSV→SAP
    3 BAPI_BANK_GETLISTの実行
    4 SAP→CSV
    5 CSVファイルの書き込み

    スクリプト完成画面

  11. スクリプト実行と結果確認
    デザイナのツールバーにある[スクリプト実行]を押下し、スクリプトを実行します。

    スクリプト実行ツールバー画面

    スクリプトの実行に成功すると下図のメッセージが表示されます。

    スクリプト実行成功ダイアログ

    /data/sap/bapi_inbound/result.csvファイルに「BAPI_BANK_GETLIST」BAPIを実行した結果が出力されています。
    下図のような結果が出力されます。

    項目名
    ファイルパス /data/sap/bapi_inbound/result.csv
    内容
    国コード,銀行コード,銀行名,所在地
    JP,5000001,Test Bank 1,Tokyo
    JP,5000002,Test Bank 2,Tokyo
    JP,5000003,Test Bank 3,Tokyo
    JP,5000004,Test Bank 4,Tokyo
    JP,5000005,Test Bank 5,Tokyo
    JP,5000006,Test Bank 6,Tokyo
    JP,5000007,Test Bank 7,Tokyo
    JP,5000008,Test Bank 8,Tokyo
    JP,5000009,Test Bank 9,Tokyo
    JP,5000010,Test Bank 10,Tokyo
    

    実行結果画面