SAP Aribaの注文書や請求書データを取得・分析する方法
本記事はCDataが提供する「CData Software Blog」に掲載された「SAP Ariba の注文書や請求書データを取得・分析する方法」を再編集したものです。
こんにちは。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 | 例)xvDiaT4f23f2jwidfXsdfioenwWUirT W9Xa |
作成したアプリケーションのApplication Key を指定します。 |
API | OperationalReportingAPIForProcur ement-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 | 例)Ds34z9BGjeneiCjd2j123jBusqRnGt meAY9 |
作成したアプリケーションの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 |
|
取得したい項目を指定します。JSONの配列形式で指定してください。 |
FilterExpressions |
|
ビューのフィルター条件式を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の様々なデータにアクセスがしやすくなると思います。
ぜひいろんな業務で役立ててみてください。
実際に試していく中で、気になる部分があればお気軽にテクニカルサポートフォームまでお問い合わせください。