SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理

i042416發表於2020-09-01

You might also be interested with this blog  Search Paging implementation in S/4HANA and CRM Fiori application.

The search implemented by WebClient UI framework in S/4HANA for Customer Management(called as S4CRM for short) does have paging mechanism with a small difference compared with other SAP products. Suppose I have specified the following search criteria:


SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


In my test system I prepares lots of Service Request as test data, so 200 Service Requests found as expected. The results are divided into 10 pages with each page displaying 20 rows by default.


SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


Two key points for paging implementation in CRM WebClient UI framework:

(1) Business data with number which equals to “max hit” value specified by end user is retrieved from database and held in application memory in ABAP backend server.

In my example above, the number is 200.

(2) As WebClient UI is a server-rendering technology, all html source code are prepared in ABAP server. The browser simply displays those html source code assembled in the backend. ABAP backend only renders source code for records which will be visible in current page.

Take my above example for illustration, after I click search button, 200 Service Requests are fetched and held in the given buffer implemented in Agent search application. WebClient UI framework then prepare html source code for first 20 Service Requests. When I click page index “2”, the source code for 21th~ 40th records are generated. If you woud like to get these two conclusions by yourself, you can following my research steps below.

(1) You can use ST05 to find out the exact code where the Service Requests are fetched from new CDS view in S4CRM: CRMS4_SERVHSRCH


SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


Then the last record is discarded:


SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


Set a breakpoint in view ICCMP_INBOX/INBOXRESULTVIEW.HTM, inspect variable “me” in debugger:


SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


And use this reference path to find the 200 records held in BOL collection wrapper: {O:5768*\CLASS-POOL=CL_BSP_WD_COLLECTION_WRAPPER\CLASS=LCL_COLLECTION_REF}-IF_BSP_WD_COLLECTION_REF~COLLECTION


SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


(2) When I click the page index “2”, the second page is displayed:


SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


the assembed html source code for these rows with index from 21 to 40 could be observed in Http response sent from ABAP backend:


SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


How does backend server know it should render rows starting with index 21? This index is passed by frontend via http request parameter ItemTree_visibleFirstRow. If you still have doubt about the prefix C36_W138_V139_, please refer to my blog  WebClient UI element ID generation logic


SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


Just set breakpoint on method CL_THTMLB_CELLERATOR~GET_REQUEST_PARAMETERS to figure out where the backend interprets this visibleFirstRow:


SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


In BSP renderer class CL_THTMLB_CELLERATOR, this gv_visible_first_row is used as the starting index of current page – lv_current_row_index:


SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


Then each rows’ cells are rendered within the loop against 8 columns visible in UI by default:


SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


Table Columns header information are stored in lt_cellerator_cols:


SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


For trouble shooting purpose you can inspect the final rendered html source code for current page in variable GT_TABLE_ENTRIES:


SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


html source code for rows in second page starting from index 21:


SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


and ends with index 40:


SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


why gt_table_entries have 168 records? 20 records are displayed in a page by default plus one row for table column display, and in each row 8 columns are displayed with default configuration, as a result: ( 20 + 1 ) * 8 = 168

Further Reading and update for S4CRM

CRM One Order Model Redesign in S/4HANA for Customer Management 1.0 – Part 1 – this blog give you more detail about One Order Model Redesign and how One order readworks under this new adapted model in S/4HANA.

(1) Service Order Management

(2) IC Service Request ManagementThe package provides all accelerators needed to set up and test a system with these processes configured and ready to use.

It provides customers, partners and SAP the possibility to explore the solution quickly.

The package is also the basis for a engineered implementation service.

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

SAP S/4HANA Customer Management裡的頁面搜尋結果的分頁顯示原理


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2716193/,如需轉載,請註明出處,否則將追究法律責任。

相關文章