ノーコードでクラウド上のデータとの連携を実現。
詳細はこちら →SAP Ariba の注文書や請求書データを取得・分析する方法:CData SAP Ariba Procurement Driver
こんにちは。CData Software Japan リードエンジニアの杉本です。
今回はSAP Ariba Procurement Driver で新しく対応したOperational Reporting API の使い方・各種データの取得方法をガッツリ解説していきたいと思います。
対象のSAP Ariba API
SAP Ariba では何種類かAPI が提供されていますが、今回対象となるAPIは Operational Reporting のAPI になります。
公式ドキュメントは以下を参照してみてください。
このAPI を利用することで、バイヤーとして購買部門などで利用しているAriba 上で取引を行っている注文書や請求書のデータを抽出することが可能になります。
取得できるデータの種類は「Invoice・User・ChargeReconciliation・UserProfile・SupplierLocation・ERPOrder・PCardOrder・AccruedTransaction・RemittanceLocation・AdvancedShipNotice・Reservation・AdvancePaymentRemittance・CollaborationRequest・ServiceSheet・OrderConfirmation・Supplier・FormExtension・CounterProposal・CommonSupplier・Receipt・Charge・DynamicFormExtension・MobileUsers・PaymentTransaction・Payment・CopyOrder・InvoiceReconciliation・DirectOrder・Contract・AdvancePayment・Requisition・Proposal
」の32種類もあるようです。
対象のCData 製品
対象のCData 製品はSAP Ariba Procurement Driver です。
https://www.cdata.com/jp/drivers/saparibaprocurement/
今回はわかりやすさを重視して、Excel Add-in バージョンを使って解説しますが、Power BI やTableau で使うODBC Driver やJDBC Driver などでも同様のことが実施できます。
https://www.cdata.com/jp/drivers/saparibaprocurement/excel/
このドライバーを利用することで以下のようにDirectOrderやInvoiceなどのビューにアクセスできるようになり、
例えばPurchase Order ですと、以下のようにデータが取得できます。
それでは早速使い方を解説していきましょう。
Ariba API 用アプリケーションの登録
まずSAP Ariba Operational Reporting API を使うにあたっての準備を行います。
API を利用するためにはOAuth のアプリケーション作成およびAPIクライアントの接続設定が必要となりますので、この設定を進めていきます。
なお、本記事ではバイヤー側としての利用方法の手順を進めていきます。
まずは以下のURLにアクセスし、ログインします。必要に応じて自社のData Center に変更してログインしてください。
https://developer.ariba.com/api/
「Create Application」をクリックし、新しくAPI アクセスのためのアプリ作成を進めます。
最初に任意のアプリケーションの名前と説明を入力します。
作成が完了したら、アクセスしたいAPI のリクエストを発行します。「Actions」→「Request API Access」をクリックし
「Select an API」から「Operational Reporting for Procurement」を選択し、データ取得の対象となる自社のRealm を指定しましょう。
これで「Submit」をクリックすることでリクエストが行われます。リクエストはAriba側の承認を待つ必要があるようです。タイミングにもよるかもしれませんが、私が試した時は1日で完了しました。
承認されたらSecret Keyをジェネレートし、OAuth Client Id、Application Keyを一緒に控えておきましょう。
CData Driver のインストール
CData SAP Ariba Procurement Driver を対象のマシンにインストールします。
各エディションのインストーラーを入手し、セットアップを行いましょう。
コネクションの構成
セットアップ完了後、コネクションを構成します。
Excel Add-in の場合は、Excel を立ち上げて、CData のリボンから「データの取得」→「取得元:SAP Ariba Procurement」を選択します。
以下のようにコネクションの構成画面が表示されるので、APIの種類から「OperationalReportingAPIForProcurement-V2」を選択し、あらかじめAPI 登録画面で取得しておいた情報を元に、入力を行います。
プロパティ名 |
値 |
|
API Key |
例)xvDiaT4f23f2jwidfXsdfioenwWUirTW9Xa |
作成したアプリケーションのApplication Key を指定します。 |
API |
OperationalReportingAPIForProcurement-V2 |
|
Realm |
例)CDATADSAPP-1-T |
|
Data Center |
AU |
接続先のData Center を指定します。 |
AuthScheme |
OAuthClient |
|
OAuth Client Id |
例)1c3f3df-1h2d-1241-32js-e12392710189 |
作成したアプリケーションのClient Idを指定します。 |
OAuth Client Secret |
例)Ds34z9BGjeneiCjd2j123jBusqRnGtmeAY9 |
作成したアプリケーションのClient Secret を指定します。 |
Environment |
PRODUCTION |
|
これで接続テストをクリックし「サーバーに接続できました。」というメッセージが表示されればOKです。
ODBC の場合は、以下のようなODBC DSNの管理画面から接続情報の編集を行います。
先ほどのExcel Add-in と同じように接続情報を入力して、コネクションを確立させましょう。
標準で備わっているビューについて
SAP Ariba Operational Reporting API のドライバーでは、以下のようなビューを用いてデータアクセスを行う仕様になっています。
名称 |
概要・用途 |
システムビュー |
SAP Ariba 標準で提供されているビュー |
カスタムビュー |
API を通じてユーザーが独自に作成できるビュー 独自の取得項目、フィルター条件を付与することができる |
CData カスタムビュー |
システビューまたはカスタムビューを元に、CData Driver 上で独自に定義したビュー 子要素の取得などに用いる |
ビューはそれぞれシステムであらかじめ定義されているビューとユーザーがカスタムで作成できるビューに分かれます。また、あらかじめ作成されているビューを元に、CData内部で定義しなおしたカスタムビューがあります。
システムビューはあらかじめ以下のようなものが提供されるようです。(環境によってことなる可能性があります)
それぞれデフォルトのフィルター条件が備わっているため、利用する場合はそのフィルター条件の適用範囲に注意しましょう。なお、フィルター条件はクエリ時に上書きすることも可能です。
私の環境ではシステムビュー以外にも追加しているので、上の画像では数多くのビューが表示されています。
ViewTemplateName |
DocumentType |
Contract_SAP_createdRange_v1 |
Contract |
Contract_SAP_updatedRange_v1 |
Contract |
DirectOrder_SAP_updatedRange |
DirectOrder |
InvoiceReconciliation_SAP_updatedRange |
InvoiceReconciliation |
Receipt_SAP_updatedRange |
Receipt |
ERPOrder_SAP_updatedRange |
ERPOrder |
Requisition_SAP_updatedRange_v2 |
Requisition |
Invoice_SAP_updatedRange_v2 |
Invoice |
CopyOrder_SAP_updatedRange |
CopyOrder |
Requisition_SAP_createdRange_v2 |
Requisition |
Invoice_SAP_createdRange_v2 |
Invoice |
InvoiceReconciliation_SAP_createdRange |
InvoiceReconciliation |
Receipt_SAP_createdRange |
Receipt |
ERPOrder_SAP_createdRange |
ERPOrder |
DirectOrder_SAP_createdRange |
DirectOrder |
CopyOrder_SAP_createdRange |
CopyOrder |
注文一覧を取得してみる
それでは早速実際のデータをを取得してみましょう。
例えば、以下のようなSAP Ariba の Purchase Order を取得してみます。
先ほどのテーブル・ビューの選択画面で「DirectOrder_SAP_createdRange」を選択し
取得したい項目などを調整します。必要に応じて「SQL を表示」を行うと、クエリのカスタマイズがしやすくなります。
「OK」をクリックすることで、対象の環境からDirectOrder のデータが取得できます。なお前述の通り、デフォルトでフィルター条件がかかっているため、取得範囲には注意しましょう。
フィルター条件のオーバーライド
フィルター条件は上書きして、任意の条件に変更することも可能です。
各ビューに対してどういったデフォルトのフィルター条件が付与されているか? については「Views」というデータにアクセスすることで確認できます。
これで以下のようなデータが取得でき、「FilterExpressions」の項目で、createdDateFrom、createdDateToという項目でフィルター条件およびデフォルト値が設定されていることがわかります。
この条件を先程のDirectOrderSAP_createdRangeで上書きする場合は、以下のようにWhere句で条件式を指定することで、実施できます。
>WHERE createdDateFrom = '2024-02-01' and createdDateTo = '2024-02-28'
なお、項目でフィルター条件を適用したい場合は、後述する方法で別なビューを定義する必要があります。
また、日付条件の範囲は過去31日間までが制限として存在するようなので、注意しましょう。
新しいビューの追加
続いて独自の項目、フィルター条件を持ったカスタムビューを作成する方法を紹介します。
作成方法は簡単です。Views の一覧を表示し、最下部に行を追加して任意の値を指定し、「行の更新」をクリックすることで、入力した内容でビューが作成されます。
例えばDirectOrderのデータを取得する新しいビューを追加する場合、以下のような指定を行います。
カラム名 |
値 |
備考 |
ViewTemplateName |
DirectOrder_CustomSample |
|
Type |
custom |
|
Status |
published |
|
DocumentType |
DirectOrder |
|
SelectAttributes |
[ "UniqueName", "OrderID", "StatusString", "Name" ] |
取得したい項目を指定します。JSONの配列形式で指定してください。 |
FilterExpressions |
[ { "name": "createdDateFrom", "field": "TimeCreated", "op": ">", "defaultValue": "2024-01-01T23:59:59Z" }, { "name": "createdDateTo", "field": "TimeCreated", "op": "<=", "defaultValue": "2024-01-29T23:59:59Z" } ] |
ビューのフィルター条件式をJSONで指定します。 |
なお、フィルター式などについては、いくつか制約があるので、以下のドキュメントなどを参考に指定してください。
新しいビューで利用できるドキュメントタイプ・フィールド・フィルター条件項目の一覧は「ViewFields」というビューを使うことで確認できます。量が多いので、最大行数のチェックは外して取得すると良いでしょう。
以下のような結果が確認できます。
ちなみに、Sourceのカラムでフィルター条件を適用するためのカラムか取得項目を指定するためのカラムかが確認できます。/json/filterFiledsになっているものが、フィルター条件適用を行うためのカラムですね。
カスタムフィールドの値も利用したい場合は、接続プロパティの「Include Custom Fields」をTrueに指定してください。
ちなみに、利用できるドキュメントタイプは以下の通りです。
DocumentType List |
Invoice |
User |
ChargeReconciliation |
UserProfile |
SupplierLocation |
ERPOrder |
PCardOrder |
AccruedTransaction |
RemittanceLocation |
AdvancedShipNotice |
Reservation |
AdvancePaymentRemittance |
CollaborationRequest |
ServiceSheet |
OrderConfirmation |
Supplier |
FormExtension |
CounterProposal |
CommonSupplier |
Receipt |
Charge |
DynamicFormExtension |
MobileUsers |
PaymentTransaction |
Payment |
CopyOrder |
InvoiceReconciliation |
DirectOrder |
Contract |
AdvancePayment |
Requisition |
Proposal |
これでビューを作成すると、以下のようにCData Driver のテーブル・ビューの一覧画面で選択できるようになります。
項目などが反映されたビューになっていることが確認できますね。
子要素ビューの追加
SAP Ariba のPurchase Order データなどでは、LineItemsやSplitAccountings といったネストされた子要素のデータが存在します。
CData Driver では通常一番上位要素のデータのみがテーブル化されており、子要素は以下のようにJSONで表示されるようになっています。
この子要素をテーブルとして一覧取得したい場合は、CreateChildElementSchema という機能を使うことで対応できます。
Excel Add-in では、テーブル・ビューの一覧選択画面で「新規」ボタンをクリックし
「Create Child Element Schema」を選択して必要な情報を入力し、「Create」をクリックするだけです。
この定義はCData カスタムテーブルの扱いとなり、ローカルに設定値が保存されます。
プロパティ名 |
設定例 |
備考 |
View Template Name |
DirectOrder_SAP_createdRange |
子要素の抽出対象となるビューテンプレート名を指定します。 |
Child Element |
LineItems |
テーブルとして展開する子要素の属性を入力します。 もし、子要素の子要素を指定したい場合は「LineItems.SplitAccountings」といったように コンマで繋ぎます。 |
Table Name |
DirectOrder_LineItems |
作成するテーブル名を指定します。 |
File Name |
DirectOrder_LineItems.rsd |
ローカルに保存される本定義のファイルの名前を指定します。.rsdとして指定してください。 |
ちなみにLineItems 配下のSplitAccountings をテーブル化したい場合はChild Element を「LineItems.SplitAccountings」と指定します。
SQL で実行する場合は、以下のようなストアド・プロシージャとしてコールします。
> Exec CreateChildElementSchema ViewTemplateName = 'DirectOrder_SAP_createdRange',ChildElement = 'LineItems.SplitAccountings', TableName = 'DirectOrder_LineItems_SplitAccountings', FileName = 'DirectOrder_LineItems_SplitAccountings.rsd';
これで正常に作成が完了すると、以下のように一覧に表示されて利用できるようになります。
なお、この定義情報は「%APPDATA%\CData\SAPAribaProcurement Data Provider\Schema\OperationalReportingAPIForProcurement-V2」のフォルダに保存されます。
おわりに
CData SAP Ariba Driver のOperational Reporting API について細部に渡り解説してみました。
API そのものがかなりクセがあるので、CData Driver から利用する際もちょっとしたポイントに注意する必要がありますが、このAPI を使うことでかなりAriba の様々なデータにアクセスがしやすくなると思います。
ぜひいろんな業務で役立ててみてください。
実際に試していく中で、気になる部分があればお気軽にテクニカルサポートフォームまでお問い合わせください。
https://www.cdata.com/jp/support/submit.asp