SAP Ariba の注文書や請求書データを取得・分析する方法:CData SAP Ariba Procurement Driver

sapariba

こんにちは。CData Software Japan リードエンジニアの杉本です。

今回はSAP Ariba Procurement Driver で新しく対応したOperational Reporting API の使い方・各種データの取得方法をガッツリ解説していきたいと思います。

対象のSAP Ariba API

SAP Ariba では何種類かAPI が提供されていますが、今回対象となるAPIは Operational Reporting のAPI になります。

公式ドキュメントは以下を参照してみてください。

https://help.sap.com/docs/ariba-apis/operational-reporting-api-for-procurement/operational-reporting-api-for-procurement

この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で指定します。

なお、フィルター式などについては、いくつか制約があるので、以下のドキュメントなどを参考に指定してください。

https://help.sap.com/docs/ariba-apis/operational-reporting-api-for-procurement/filter-parameters-for-operational-reporting-api?locale=en-US

新しいビューで利用できるドキュメントタイプ・フィールド・フィルター条件項目の一覧は「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

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

関連コンテンツ