【SAPIUI5】SuccessFactors連携時のOdata注意点


SuccessFactors等の拡張機能として、SAP BTP上でFioriのアプリを構築し、
OdataAPIを通じてSuccessFactorsと連携する場合の考慮点

アプリごとに使用するEntityを絞る

manifest.jsonに記載のdatasourceの内容

特に考慮しない場合

"mainService": {
    "uri": "https://api10preview.sapsf.com/odata/v2",
    "type": "OData",
    "settings": {
        "odataVersion": "2.0",
        "localUri": "localService/metadata.xml"
    }
}

例)Userのデータに絞る場合

"mainService": {
    "uri": "https://api10preview.sapsf.com/odata/v2/User",
    "type": "OData",
    "settings": {
        "odataVersion": "2.0",
        "localUri": "localService/metadata.xml"
    }
}

例)複数のEntityを参照する場合

"mainService": {
    "uri": "https://api10preview.sapsf.com/odata/v2/User,EmpJob",
    "type": "OData",
    "settings": {
        "odataVersion": "2.0",
        "localUri": "localService/metadata.xml"
    }
}

となります。
Controllerにてアクセスする場合は

oDataModel.read("/User");

等でアクセスが可能になります。

実際のURLは

https://api10preview.sapsf.com/odata/v2/User,EmpJob/User

へアクセスされますが、問題なくデータが取得できます。

注意点

  • 参照するEntityはかならず記載する
  • $expand等で子階層のデータを参照する時も必ず子階層のEntity情報を記載する

SuccessFactorsの標準Entity等により、metadaのサイズが大きくなりがちかと思います。
多くのEntityを参照するアプリでも必ず指定するようにしましょう。

基本は1,000件のレスポンス

フィルター条件等を指定しても、最大1,000のレスポンスとなります。
\$top,\$skipを使用してPagingの考慮を行いましょう。

また、1001件以上データが存在する場合は、__nextのデータが存在します
__nextに記載されたURLへアクセスすると1001件目~のデータ取得できます。

こちらを使用してページング処理を行う場合はURLのパラメータとして
paging=snapshotを指定するようにしましょう

参考ページ
https://help.sap.com/viewer/b2b06831c2cb4d5facd1dfde49a7aab5/2105/en-US/12fe2115d865471f9e4b91d55ccfe51a.html

その他

  • bathでまとめてリクエス可能件数は180リクエスト
  • upsertの可能件数は1000件

CDSビュー等で構築したoDataとは異なる独自の制限があることに注意しましょう