S/4HANA for Customer Management里的搜索分页处理

简介: 这篇文章的英文版我发在了SAP Community上:Paging Implementation in S/4HANA for Customer Managementhttps://blogs.sap.com/2018/03/28/paging-implementation-in-s4hana-for-customer-management/按照我的公众号文章里介绍的,S/4HANA for Customer Management 1.0里的Service Request UI仍然是采用CRM Webclient UI技术来开发的。

这篇文章的英文版我发在了SAP Community上:Paging Implementation in S/4HANA for Customer Management


https://blogs.sap.com/2018/03/28/paging-implementation-in-s4hana-for-customer-management/


按照我的公众号文章里介绍的,S/4HANA for Customer Management 1.0里的Service Request UI仍然是采用CRM Webclient UI技术来开发的。


假设我在UI上指定max hit值为200:


image.png


每页默认显示20条数据,因此这200条搜索结果总共分10页显示。


image.png


关于CRM WebClient UI的分页机制,有两个要点:


1. 搜索按钮点击后,会有max hit的值指定条数的记录从数据库取出,存储于WebClient UI的应用的内存区域中。在我的例子里,我指定的max hit为200,因此有200条Service Request从数据库里取出。


2. WebClient UI是一项服务器端渲染的技术,意味着所有WebClient UI页面对应的html源代码都是在ABAP服务器里渲染的,然后直接在浏览器显示。在搜索这个场景里,任意时间段里,ABAP后台只会生成默认20条搜索结果的html源代码。

image.png



例如我点了搜索按钮之后,只有第1条道第20条记录的html源代码在后台生成,然后返回给浏览器由其渲染。当了我点了第二页的超链接"2"时,第21条到第40条的源代码相应在后台生成。


下面是一些技术细节。


1. 可以使用事务码ST05找到S4CRM的Service Request搜索查询的CDS view的名称CRMS4_SERVHSRCH

image.png



第201条记录被丢弃:


image.png


在视图ICCMP_INBOX/INBOXRESULTVIEW.HTM里设置断点, 在调试器里检查变量"me":


image.png


通过这个路径能找到存储在内存中的200条搜索结果:


{O:5768*\CLASS-POOL=CL_BSP_WD_COLLECTION_WRAPPER\CLASS=LCL_COLLECTION_REF}-IF_BSP_WD_COLLECTION_REF~COLLECTION


image.png


2. 当我点第二页的超链接后:


image.png


后台生成好的针对从第21行到第40行记录的html源代码可以在Chrome开发者工具中观察到,如下图所示:


image.png


那么后台如何得知应该从第21行开始准备其html源代码呢?这个索引信息是从前台传到后台的,通过http请求头部的字段:ItemTree_visibleFirstRow.


如果您搞不清楚类似下图这种前缀C36_W138_V139_的生成逻辑,请参考我的博客 WebClient UI element ID generation logic


image.png


在方法CL_THTMLB_CELLERATOR~GET_REQUEST_PARAMETERS设置断点,找到后台是在何处解析该前台请求传入的visibleFirstRow:


image.png


在BSP渲染类CL_THTMLB_CELLERATOR里,这个变量gv_visible_first_row被用于渲染的起始索引:lv_current_row_index:


image.png


每一行的每一个单元的源代码在循环里依次生成好。循环基于表的列定义,当前我系统里默认的配置,搜索结果有8列:



image.png


image.png

出于调试目的,您可以在变量GT_TABLE_ENTRIES里查看生成好的用于当前页面显示的html源代码:


image.png


比如对于第二页,索引从21开始:


image.png


以40结束:


image.png


为什么变量gt_table_entries有168条记录?


每页默认显示20条记录,加上1行表头,每条记录8列,所以最后是( 20 + 1 ) * 8 = 168


相关文章
|
6月前
|
JavaScript 前端开发
SAP CRM product 主数据搜索,如何采用 ABAP 代码来实现
SAP CRM product 主数据搜索,如何采用 ABAP 代码来实现
24 0
|
存储 Web App开发 数据库
S/4HANA for Customer Management里的搜索分页处理
S/4HANA for Customer Management里的搜索分页处理
S/4HANA for Customer Management里的搜索分页处理
SAP S/4HANA Customer Management里的页面搜索结果的分页显示原理
SAP S/4HANA Customer Management里的页面搜索结果的分页显示原理
112 0
SAP S/4HANA Customer Management里的页面搜索结果的分页显示原理
|
SQL Web App开发 存储
S/4HANA和CRM Fiori应用的搜索分页实现
在我的博客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这两个应用为例来介绍。
111 0
S/4HANA和CRM Fiori应用的搜索分页实现
SAP Cloud for Customer根据模型某字段进行OData的搜索操作
SAP Cloud for Customer根据模型某字段进行OData的搜索操作
|
Windows
SAP Fiori 应用无法根据contact搜索的原因分析
SAP Fiori 应用无法根据contact搜索的原因分析
SAP Fiori 应用无法根据contact搜索的原因分析
SAP Cloud for Customer的Opportunity搜索前台实现原理
SAP Cloud for Customer的Opportunity搜索前台实现原理
74 0
SAP Cloud for Customer的Opportunity搜索前台实现原理
SAP S/4HANA Material Fiori应用根据扩展字段搜索的实现原理
Prerequisite You should first enable your extension field to be used in search scenario:
SAP S/4HANA Material Fiori应用根据扩展字段搜索的实现原理
|
Web App开发 JSON 数据格式
如何查找SAP Cloud for Customer UI页面对应的技术模型明细
如何查找SAP Cloud for Customer UI页面对应的技术模型明细
如何查找SAP Cloud for Customer UI页面对应的技术模型明细