摘要:在我的博客我介紹了里采用技術實現的上的搜索分頁實現。應用的搜索分頁實現點擊搜索按鈕之后,默認返回前個命中的,同時顯示總共命中的數目。實際的讀取分頁在后臺的實現通過關鍵字實現。應用的搜索分頁實現前臺的邏輯和的應用完全一致。
在我的博客Paging Implementation in S/4HANA for Customer Management 我介紹了S/4HANA for Customer Management里采用WebClient UI技術實現的UI上的搜索分頁實現。
那么S/4HANA和CRM里原生的Fiori應用,其搜索分頁又是如何實現的?
這篇博客分別選取S/4HANA里的Product Master,以及CRM里的My Opportunities這兩個應用為例來介紹。
S/4HANA Fiori應用的搜索分頁實現點擊搜索按鈕之后,默認返回前25個命中的product,同時顯示總共命中的product數目:140。
這個分頁效果通過OData請求的參數$skip=0&top=25實現的。而總共命中條數140的顯示通過另一個參數$inlinecount來實現,該參數的后臺實現原理類似ABAP Open SQL里的SELECT COUNT(*)。
從Chrome開發者工具里觀察該請求的回應,確實只有25條記錄返回。
將該搜索結果列表scroll至底部,發現有另一個OData request自動發出:
該請求的頭部參數為$skip=25&top=25,因此能夠從后臺只取從第26到50個product:
在我博客SAP Fiori里的List是如何做到懶加載Lazy load的 我解釋了$skip遞增的序列值0,25,50,75...是如何在前臺生成的。
而在這篇博客里,我會著重介紹分頁搜索的后臺實現。
假設我重復將搜索結果scroll至底部的動作重復三次,那么能夠通過ST05觀察到有三個數據庫的讀請求,每個請求返回25條記錄。
點擊該按鈕,可以查看到具體是哪一行ABAP代碼發起的數據庫讀請求:
$skip和$top這兩個參數的值從前臺傳入后臺,在后臺的方法CL_SADL_GW_GENERIC_DPC~_GET_ENTITYSET的輸入參數io_query_option能觀察到:
開始行的索引值等于$skip參數值加1。
實際的讀取分頁在后臺的實現:通過ABAP關鍵字OFFSET實現。
該OFFSET的值通過方法CL_SADL_SQL_STATEMENT~GET_SECTIONS_FOR_SELECT內一個較復雜的table表達式來決定出來:
首先得出表達式lt_sections[ type = cl_sadl_sql_statement=>co_type-page ]-from的值:99.
再從內表mt_parts取出第99條記錄,從其字段value2得出最終offset值75。
CRM Fiori應用的搜索分頁實現前臺的邏輯和S/4HANA的Fiori應用完全一致。
該參數傳至后臺,存儲在參數is_paging里:
至于后臺的分頁搜索,My opportunities應用并未使用ABAP OPEN SQL里的關鍵字OFFSET。相反地,所有匹配記錄的GUID都通過One Order的搜索API返回:
多余的記錄,即那些不在$skip和$top定義的參數之內的都被DELETE丟棄:
該實現或許不如S/4HANA采用OFFSET方式實現得直接,但是因為從數據庫返回的僅僅是命中opportunity的GUID,因此也不會有太多額外的開銷。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68897.html
摘要:在我的博客我介紹了里采用技術實現的上的搜索分頁實現。應用的搜索分頁實現點擊搜索按鈕之后,默認返回前個命中的,同時顯示總共命中的數目。實際的讀取分頁在后臺的實現通過關鍵字實現。應用的搜索分頁實現前臺的邏輯和的應用完全一致。 在我的博客Paging Implementation in S/4HANA for Customer Management 我介紹了S/4HANA for Custo...
摘要:在我的博客我介紹了里采用技術實現的上的搜索分頁實現。應用的搜索分頁實現點擊搜索按鈕之后,默認返回前個命中的,同時顯示總共命中的數目。實際的讀取分頁在后臺的實現通過關鍵字實現。應用的搜索分頁實現前臺的邏輯和的應用完全一致。 在我的博客Paging Implementation in S/4HANA for Customer Management 我介紹了S/4HANA for Custo...
摘要:搜索分頁技術往往和另一個術語懶加載聯系起來。該搜索分頁的實現歸功于請求的參數,,意為從請求命中的第條記錄開始總共返回條記錄。更多細節,請參考我的博客應用的搜索分頁實現原理,全稱為,開發技術仍然采用。 搜索分頁技術往往和另一個術語Lazy Loading(懶加載)聯系起來。今天由Jerry首先介紹S/4HANA,CRM Fiori和S4CRM應用里的UI搜索分頁的實現原理。后半部分由SA...
閱讀 1974·2021-11-22 19:20
閱讀 2618·2021-11-22 13:54
閱讀 1932·2021-09-04 16:40
閱讀 1814·2021-08-13 11:54
閱讀 2628·2019-08-30 15:55
閱讀 3456·2019-08-29 13:51
閱讀 519·2019-08-29 11:09
閱讀 2997·2019-08-26 14:06