摘要:是一項(xiàng)服務(wù)器端渲染的技術(shù),意味著所有頁(yè)面對(duì)應(yīng)的源代碼都是在服務(wù)器里渲染的,然后直接在瀏覽器顯示。在搜索這個(gè)場(chǎng)景里,任意時(shí)間段里,后臺(tái)只會(huì)生成默認(rèn)條搜索結(jié)果的源代碼。當(dāng)了我點(diǎn)了第二頁(yè)的超鏈接時(shí),第條到第條的源代碼相應(yīng)在后臺(tái)生成。
這篇文章的英文版我發(fā)在了SAP Community上:Paging Implementation in S/4HANA for Customer Management
https://blogs.sap.com/2018/03/28/paging-implementation-in-s4hana-for-customer-management/
按照我的公眾號(hào)文章里介紹的,S/4HANA for Customer Management 1.0里的Service Request UI仍然是采用CRM Webclient UI技術(shù)來(lái)開發(fā)的。
假設(shè)我在UI上指定max hit值為200:
每頁(yè)默認(rèn)顯示20條數(shù)據(jù),因此這200條搜索結(jié)果總共分10頁(yè)顯示。
關(guān)于CRM WebClient UI的分頁(yè)機(jī)制,有兩個(gè)要點(diǎn):
1. 搜索按鈕點(diǎn)擊后,會(huì)有max hit的值指定條數(shù)的記錄從數(shù)據(jù)庫(kù)取出,存儲(chǔ)于WebClient UI的應(yīng)用的內(nèi)存區(qū)域中。在我的例子里,我指定的max hit為200,因此有200條Service Request從數(shù)據(jù)庫(kù)里取出。
2. WebClient UI是一項(xiàng)服務(wù)器端渲染的技術(shù),意味著所有WebClient UI頁(yè)面對(duì)應(yīng)的html源代碼都是在ABAP服務(wù)器里渲染的,然后直接在瀏覽器顯示。在搜索這個(gè)場(chǎng)景里,任意時(shí)間段里,ABAP后臺(tái)只會(huì)生成默認(rèn)20條搜索結(jié)果的html源代碼。
例如我點(diǎn)了搜索按鈕之后,只有第1條道第20條記錄的html源代碼在后臺(tái)生成,然后返回給瀏覽器由其渲染。當(dāng)了我點(diǎn)了第二頁(yè)的超鏈接"2"時(shí),第21條到第40條的源代碼相應(yīng)在后臺(tái)生成。
下面是一些技術(shù)細(xì)節(jié)。
1. 可以使用事務(wù)碼ST05找到S4CRM的Service Request搜索查詢的CDS view的名稱CRMS4_SERVHSRCH
第201條記錄被丟棄:
在視圖ICCMP_INBOX/INBOXRESULTVIEW.HTM里設(shè)置斷點(diǎn), 在調(diào)試器里檢查變量"me":
通過(guò)這個(gè)路徑能找到存儲(chǔ)在內(nèi)存中的200條搜索結(jié)果:
{O:5768*CLASS-POOL=CL_BSP_WD_COLLECTION_WRAPPERCLASS=LCL_COLLECTION_REF}-IF_BSP_WD_COLLECTION_REF~COLLECTION
2. 當(dāng)我點(diǎn)第二頁(yè)的超鏈接后:
后臺(tái)生成好的針對(duì)從第21行到第40行記錄的html源代碼可以在Chrome開發(fā)者工具中觀察到,如下圖所示:
那么后臺(tái)如何得知應(yīng)該從第21行開始準(zhǔn)備其html源代碼呢?這個(gè)索引信息是從前臺(tái)傳到后臺(tái)的,通過(guò)http請(qǐng)求頭部的字段:ItemTree_visibleFirstRow.
如果您搞不清楚類似下圖這種前綴C36_W138_V139_的生成邏輯,請(qǐng)參考我的博客 WebClient UI element ID generation logic
在方法CL_THTMLB_CELLERATOR~GET_REQUEST_PARAMETERS設(shè)置斷點(diǎn),找到后臺(tái)是在何處解析該前臺(tái)請(qǐng)求傳入的visibleFirstRow:
在BSP渲染類CL_THTMLB_CELLERATOR里,這個(gè)變量gv_visible_first_row被用于渲染的起始索引:lv_current_row_index:
每一行的每一個(gè)單元的源代碼在循環(huán)里依次生成好。循環(huán)基于表的列定義,當(dāng)前我系統(tǒng)里默認(rèn)的配置,搜索結(jié)果有8列:
出于調(diào)試目的,您可以在變量GT_TABLE_ENTRIES里查看生成好的用于當(dāng)前頁(yè)面顯示的html源代碼:
比如對(duì)于第二頁(yè),索引從21開始:
以40結(jié)束:
為什么變量gt_table_entries有168條記錄?
每頁(yè)默認(rèn)顯示20條記錄,加上1行表頭,每條記錄8列,所以最后是( 20 + 1 ) * 8 = 168
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/52116.html
摘要:是一項(xiàng)服務(wù)器端渲染的技術(shù),意味著所有頁(yè)面對(duì)應(yīng)的源代碼都是在服務(wù)器里渲染的,然后直接在瀏覽器顯示。在搜索這個(gè)場(chǎng)景里,任意時(shí)間段里,后臺(tái)只會(huì)生成默認(rèn)條搜索結(jié)果的源代碼。當(dāng)了我點(diǎn)了第二頁(yè)的超鏈接時(shí),第條到第條的源代碼相應(yīng)在后臺(tái)生成。 這篇文章的英文版我發(fā)在了SAP Community上:Paging Implementation in S/4HANA for Customer Managem...
摘要:是一項(xiàng)服務(wù)器端渲染的技術(shù),意味著所有頁(yè)面對(duì)應(yīng)的源代碼都是在服務(wù)器里渲染的,然后直接在瀏覽器顯示。在搜索這個(gè)場(chǎng)景里,任意時(shí)間段里,后臺(tái)只會(huì)生成默認(rèn)條搜索結(jié)果的源代碼。當(dāng)了我點(diǎn)了第二頁(yè)的超鏈接時(shí),第條到第條的源代碼相應(yīng)在后臺(tái)生成。 這篇文章的英文版我發(fā)在了SAP Community上:Paging Implementation in S/4HANA for Customer Managem...
摘要:在我的博客我介紹了里采用技術(shù)實(shí)現(xiàn)的上的搜索分頁(yè)實(shí)現(xiàn)。應(yīng)用的搜索分頁(yè)實(shí)現(xiàn)點(diǎn)擊搜索按鈕之后,默認(rèn)返回前個(gè)命中的,同時(shí)顯示總共命中的數(shù)目。實(shí)際的讀取分頁(yè)在后臺(tái)的實(shí)現(xiàn)通過(guò)關(guān)鍵字實(shí)現(xiàn)。應(yīng)用的搜索分頁(yè)實(shí)現(xiàn)前臺(tái)的邏輯和的應(yīng)用完全一致。 在我的博客Paging Implementation in S/4HANA for Customer Management 我介紹了S/4HANA for Custo...
摘要:在我的博客我介紹了里采用技術(shù)實(shí)現(xiàn)的上的搜索分頁(yè)實(shí)現(xiàn)。應(yīng)用的搜索分頁(yè)實(shí)現(xiàn)點(diǎn)擊搜索按鈕之后,默認(rèn)返回前個(gè)命中的,同時(shí)顯示總共命中的數(shù)目。實(shí)際的讀取分頁(yè)在后臺(tái)的實(shí)現(xiàn)通過(guò)關(guān)鍵字實(shí)現(xiàn)。應(yīng)用的搜索分頁(yè)實(shí)現(xiàn)前臺(tái)的邏輯和的應(yīng)用完全一致。 在我的博客Paging Implementation in S/4HANA for Customer Management 我介紹了S/4HANA for Custo...
閱讀 3324·2023-04-25 16:25
閱讀 3837·2021-11-15 18:01
閱讀 1609·2021-09-10 11:21
閱讀 3016·2021-08-02 16:53
閱讀 3087·2019-08-30 15:55
閱讀 2494·2019-08-29 16:24
閱讀 2104·2019-08-29 13:14
閱讀 1037·2019-08-29 13:00