天天看點

SAP C4C OData服務的filter,用戶端分頁和排序的使用方式

假設系統裡已經有許多的Lead曆史資料,而我們正在進行的微信小程式和C4C內建的項目裡,又建立了許多新的Lead資料。如何将這些新的在微信小程式裡調用OData服務建立的Lead資料同老的曆史資料做區分呢?

(1) 在C4C Sales Lead頁面裡,通過Source字段來标明Lead的來源。

對于AI Card項目來說,所有的Lead經由微信小程式建立,是以調用OData API時,SourceCode指定為“Wechat Social Channel”的代号:Z01

這樣,在讀取操作時,使用$filter=SourceCode eq 'Z01'操作,能取出系統所有SourceCode為Z01的lead. 再使用$inlinecount=allpages,能一并傳回SourceCode為Z01的Lead一共有多少個。

最後的url如下:

https://my500.c4c.saphybriscloud.cn/sap/c4c/odata/v1/c4codata/LeadCollection?

$filter=SourceCode eq 'Z01'&$inlinecount=allpages

結果如下:

截至2020年3月20日12:23PM為止,在系統上經由微信小程式建立,Source Code字段為Z01的Lead總共有6個。

如果系統裡滿足這個條件的Lead越來越多,調用OData服務後,會造成規模巨大的資料量從伺服器發送往消費端,是以建議使用用戶端分頁方式讀取資料。

首先擷取滿足SourceCode為Z01的lead個數:

https://my500.c4c.saphybriscloud.cn/sap/c4c/odata/v1/c4codata/LeadCollection/

$count?$filter=SourceCode eq 'Z01'

假設傳回結果數為1000, 我們可以在用戶端進行分頁讀取,每頁讀取的個數可以用戶端自行決定,比如每次讀取20個。

第一頁的讀取請求:

https://my50.c4c.saphybriscloud.cn/sap/c4c/odata/v1/c4codata/LeadCollection?

$filter=SourceCode eq ''&$orderby=CreatedOn desc&$top=20

20個Lead傳回:

第二頁:即第21到第40個:

$filter=SourceCode eq ''&$orderby=CreatedOn desc&$skip=20&$top=20

第三頁:即第41個到第60個

$filter=SourceCode eq ''&$orderby=CreatedOn desc&$skip=40&$top=20

本文來自雲栖社群合作夥伴“汪子熙”,了解相關資訊可以關注微信公衆号"汪子熙"。

繼續閱讀