CData Arc で、SAP Ariba のData Import/Export タスクをリクエストする

by 色川穂高 | 2024年06月24日

CData Arc で、SAP Ariba のData Import/Export タスクをリクエストする

こんにちは。CData Software Japan の色川です。

先日、SAP が提供する購買・支出管理サービスであるSAP Ariba のデータ連携を拡張する「CData Drivers for SAP Ariba Source」および「CData Drivers for SAP Ariba Procurement」がリリースされました。

こちらの記事でご紹介したように、SAP Ariba 向けのCData Drivers を利用することで、CData Arc からSAP Ariba とのデータ連携自動化(オートメーション)をノーコードで実現することができます。

現在SAP Ariba では数多くのWeb API が提供されており、SAP Ariba 向けのCData Drivers ではそれらの多くに対応しています。SAP Ariba 向けのCData Drivers を利用することで、調達・購買データのリアルタイムでの取得・分析など、SAP Ariba とのデータ連携をシンプルに実現できるようになります。

従来からAriba を利用されていた方の中には、Ariba とのデータ連携にAriba のIntegration Toolkit(以下、ITK)を利用されていた方も多いかも知れません。Ariba のITK は、Buyer 管理者向けに提供されていた「Ariba のデータを他のバックエンドシステムと統合するためのツールおよびツールキット」ですが、比較的最近にEOS(End of Support)となっています。

SAP Ariba 向けのCData Drivers に関心を頂いた方の中には、ITK での連携を前提にしていた構成から段階的にCData Drivers を通じたSAP Ariba API への連携にシフトしていきたい、と考えている方もおられるかも知れません。ITK に含まれていたデータ転送ツール(SAP Ariba data transfer tool)では、Ariba へのリクエストを比較的シンプルなform ベースのHTTP リクエストで実現していましたので、Arc でそれと近しい連携アプローチが実現できれば、Ariba との連携構成を段階的にシフトしていく際にも便利そうです。

そこで、この記事ではITK に含まれていたデータ転送ツール(data transfer tool)に類似の連携アプローチとして「CData Arc で、SAP Ariba のData Import/Export タスクをリクエストする」シナリオを試してみます。より具体的には「Ariba のExport Purchase Orders タスクを実行して取得したzip に含まれるCSV データをSQL Server に自動連携」するフローを作成します。

CData Arc で、SAP Ariba のData Import/Export タスクをリクエストする

SAP Ariba

SAP Ariba はSAP 社が提供する支出管理(Spend Management)の分野におけるリーダー的な存在のソフトウェアです。SAP Ariba はクラウド型の電子調達・購買サービスで、バイヤー(購買する企業)とサプライヤー(供給する企業)は、世界最大規模の企業間電子商取引(B2B)ネットワークである「SAP Business Network」を通じて、見積・発注・検収・請求などの購買プロセスを実施します。

SAP Ariba

SAP Ariba は、すべての間接材・すべての購買プロセスをカバーしていますが、他にもサプライヤーや契約の管理に特化した機能や、直接材をカバーするソリューションも提供しています。

SAP Ariba のIntegration Toolkit

SAP Ariba のIntegration Toolkit(ITK)は、Buyer 管理者向けに提供されていた「Ariba のデータをERP などのバックエンドシステムと統合するためのツールおよびツールキット」です。

Ariba のITK では、CSV ファイルを介して、Ariba のデータをERP などのバックエンドシステムと統合することが可能でした。Ariba のITK は大きく2つのツールで構成されていました。

SAP Ariba data transfer tool *1  Ariba とバックエンドシステムなどとの間でバッチ型のCSV ファイル連携をサポートするツール
DB Connector *2 JDBC でバックエンドシステムのデータベースからのデータ抽出やCSV 保存、バックエンドシステムへの更新などをサポートするツール

Buyer 側ではITK を利用してデータ連携を実現していたケースが多いかと思いますが、ITK は近年EOS(End of Support)となっています。SAP ERP や他のSAP アプリケーションとのデータ連携の場合は後継となる選択肢も分かりやすいかも知れませんが、SAP 以外のERP やビジネスアプリケーションとの連携では未だ後継を決めかねているケースもあるかも知れません。

CData Arc

CData Arc は、CData 製品の中で「自動化/Automate」を担うデータ連携ツールです。「B2B 連携をもっとシンプルに」をコンセプトに、ファイル連携 & DB 連携 & API 連携といったB2B 連携に必要なすべてをノーコード・ローコードでつなぐことができるプラットフォームです。

CData Arc

この記事のシナリオ

この記事では、Arc から「SAP Ariba のData Export タスクのうち"Export Purchase Orders" の実行をリクエストして、レスポンスに含まれるzip ファイルを解凍し、解凍した中に含まれる各種のPurchase Order データを取得・マッピングして、バックエンドシステムをイメージしたSQL Server へと連携」します。

この記事のシナリオ

この記事のシナリオ

ITK に含まれていたデータ転送ツール(data transfer tool)と同じように、curl などを利用して「Export Purchase Orders」タスクを対象に、form ベースのHTTP POST リクエストを発行すると、Purchase Order に関連した複数のCSV ファイルを含んだzip ファイルがレスポンスとして取得されます。(この記事では特に期間指定等はせず実行しています)

この記事のシナリオ

この記事のシナリオ

この記事のシナリオ

この記事のシナリオ

それぞれのCSV ファイルを見てみると、1行目にはファイルのエンコーディングが明記され、2行目に各カラムのヘッダー、3行目以降にエクスポートされたデータが構成されているのが分かります。

この記事のシナリオ

こちらの記事でご紹介したように、SAP Ariba 向けのCData Drivers と組み合わせて利用することで、CData Arc からSAP Ariba とのデータ連携自動化(オートメーション)をノーコードで実現することができますが、この記事では、Ariba との通信部分にはREST コネクタを利用します。Arc のREST コネクタを利用して、ITK に含まれていたデータ転送ツール(data transfer tool)*1 と同じように、form ベースのHTTP POST リクエストを実行し、CSV ファイルが含まれるzip 形式のレスポンスを取得します。その後は「Zip コネクタを利用した解凍」「Script コネクタでのCSV 形式の調整」「Branch コネクタでの判断や分岐」「CSV コネクタでのXML 変換」などを経て、Arc のフローではおなじみの「XMLMap コネクタのマッピング」「SQL Server へのUpsert」と続きます。

この記事のシナリオ

ITK に含まれていたDB Connector *2 では、Oracle、SQL Server、DB2 への連携がサポートされていたかと思いますが、Arc であればSaaS やDB など270 を超えるデータソースへの連携が可能です。

なお、この記事はSAP Ariba integration toolkit guide で紹介されている「Replacing the SAP Ariba data transfer tool with your own tool」の内容等を参考にしています。Data Import/Export タスクの詳細などAriba 側で必要な設定等についてはSAP Ariba のドキュメントをご確認ください。

Ariba のExport Purchase Orders タスクを実行して取得したzip に含まれるCSV データをSQL Server に自動連携

ワークスペースの準備ができたら、シナリオを実現するフローを作成していきます。

ワークスペースの準備

このシナリオで作成する連携フローは以下のような流れになっています。

コネクタ 内容
1 REST SAP Ariba のExport Purchase Orders タスクをリクエストしてzip 形式のレスポンスを取得
2 Zip 1 のレスポンスを解凍
3 Script 2 で解凍したCSV ファイルのフォーマットを調整(1行目をカット)
4 Branch 2 に複数含まれるCSV ファイルを名称で判断・分岐
5 CSV (分岐毎に)4 のCSV ファイルをXML 形式に変換
6 XMLMap (分岐毎に)5 と7 をマッピング
7 SQL Server (分岐毎に)SQL Server へUpsert(更新)

Ariba のExport Purchase Orders タスクを実行して取得したzip に含まれるCSV データをSQL Server に自動連携

REST コネクタ

最初に「SAP Ariba のExport Purchase Orders タスクをリクエストしてzip 形式のレスポンスを取得」するREST コネクタを設定します。この連携フローのはじまり(起点)でありポイントとなるコネクタです。コネクタは右上の「+追加」から選択や検索をして追加することができます。またフローキャンバス上での右クリックなどからも追加することができます。

REST コネクタ

次に「メソッド&URL」で、メソッドは「POST」に設定し、URL を下記のように指定します。realm はそれぞれの環境にあわせて指定してください。

REST コネクタ

「ボディの種類」を「form-data」に構成し、認証に必要な「sharedsecret」、実行対象として「event」に「Export Purchase Orders」を指定します。

REST コネクタ

アウトプットタブの「受信」で、zip 形式のレスポンスが取得できることを確認します。

REST コネクタ

ダウンロードして確認してみると、想定通り、Purchase Order に関する3種のCSV ファイルが含まれていることが確認できます。

REST コネクタ

Zip コネクタ

次に「レスポンスで得たzip ファイルを解凍」するZip コネクタを設定します。

Zip コネクタ

オペレーションを「解凍」にしたら、あとはデフォルトの構成でOK です。

Zip コネクタ

Script コネクタ

次に「解凍したCSV ファイルのフォーマットを調整」するためにScript コネクタを利用します。先ほど確認したように、取得されるCSV ファイルの1行目にはファイルのエンコーディングが明記されていますが、このシナリオでは不要です。少し変わったシナリオですが、こういう時もArcScript を利用すればシンプルに調整ができます。

Script コネクタ

この記事では、fileReadLine オペレーションを利用してCSV ファイルを行単位に読み込んで1行目をカット(2行目以降を出力)するようにしました。

Script コネクタ

<arc:set attr="input.file" value="[FilePath]" />
<arc:set attr="output.data" value="" />
<arc:call op="fileReadLine" in="input" out="result" >
  <!-- csv locale line -->
  <arc:if exp="[result.file:line] != 1">
    <!-- csv header line -->
    <arc:if exp="[result.file:line] == 2">
      <arc:set attr="output.data" value="[result.file:data]" />
      <arc:else>
        <arc:set attr="output.data" value="[output.data]\n[result.file:data]" />
      </arc:else>
    </arc:if> 
  </arc:if> 
</arc:call>
<arc:set attr="output.filepath" value="[FilePath]" />
<arc:push item="output" />

Branch コネクタ

複数含まれているCSV ファイルはそれぞれフォーマットが異なりますので、Branch コネクタを利用して「CSV ファイルを名称で判断・分岐」します。

Branch コネクタ

Branch コネクタ

ここまで進めば、あとはそれぞれの分岐で「CSV ファイルからSQL Server オブジェクトへの連携」です。以降は「典型的なマッピングと連携」になりますので、概要のみ記載しています。「典型的なマッピングと連携」について詳しく知りたい方は、こちらの記事などを参考にしてください。

CSV コネクタ

それぞれの分岐毎に、先ほどフォーマットを調整済みの「CSV ファイルをXML 形式に変換」するCSV コネクタを設定します。

CSV コネクタ

それぞれ処理するCSV ファイルにはカラムヘッダーが存在しますので「カラムヘッダーが存在します」を有効にしておきます。

CSV コネクタ

XMLMap コネクタでのマッピング時にスキーマが選択できるように、インプットタブの「テストファイルをアップロード」から、それぞれ処理するレイアウトのCSV ファイルをアップロードしてスキーマ情報を生成しておきます。

CSV コネクタ

CSV コネクタ

SQL Server コネクタ

XMLMap コネクタでのマッピングの前に、マッピングの宛先側となる「SQL Server コネクタへUpsert」するSQL Server コネクタを設定します。

SQL Server コネクタ

アクションに「Upsert」を選択したら、テーブルの「+追加」で更新対象のオブジェクトを選択して構成します。

SQL Server コネクタ

XML Map コネクタ

最後に「CSV ファイル(を変換したXML 形式のデータ)と、SQL Server をマッピング」するXMLMap コネクタを設定します。

XML Map コネクタ

この記事では特に編集・加工は施さず、同名カラムをシンプルにマッピングしています。

XML Map コネクタ

他の分岐も同様に設定して「Ariba のExport Purchase Orders タスクを実行して取得したzip に含まれるCSV データをSQL Server に自動連携」するフローが完成しました。

XML Map コネクタ

フローの実行

作成したフローを実行して確認してみましょう。起点となるREST コネクタからフローを実行してみます。「トリガー開始」から「手動で受信」を実行します。これは起点となるREST コネクタのアウトプットタブから「受信」を実行することと同様です。

フローの実行

トランザクションのメッセージビューアで、作成したフローの一連の実行状況が確認できます。

フローの実行

SQL Server の対象オブジェクトに連携されていることが確認できました。

フローの実行

まとめ

この記事では、ITK に含まれていたデータ転送ツール(data transfer tool)に相当する連携アプローチとして「CData Arc で、SAP Ariba のData Import/Export タスクをリクエストする」シナリオを試してみました。

先日リリースされたSAP Ariba 向けのCData Drivers を利用することで、CData Arc からSAP Ariba のWeb API を通じたデータ連携をノーコードで実現することができますが、SAP Ariba 向けのCData Drivers に関心を頂いた方の中には、ITK での連携を前提にしていた構成から段階的にCData Drivers を通じたSAP Ariba API への連携にシフトしていきたい、と考えている方もおられるかも知れません。この記事で試した連携アプローチがこれまでに実施していた連携にフィットすれば、Ariba との連携構成を段階的にシフトしていきたいという場合にも良い選択肢になるかも知れません。

CData Arc はシンプルで拡張性の高いコアフレームワークに、豊富なMFT・EDI・エンタープライズコネクタを備えたパワフルな製品です。CData Drivers との組み合わせで270を超えるアプリケーションへの連携を実現できます。

皆さんのつなぎたいシナリオでぜひ CData Arc を試してみてください。
CData Arc - セキュアなデータ連携とマネージドファイル転送(MFT)

製品を試していただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。

CData Software Japan - Support Form


この記事では CData Arc™ 2024 - 24.1.8910.0 を利用しています。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。