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

简介: S/4HANA for Customer Management里的搜索分页处理
+关注继续查看

这篇文章的英文版我发在了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.pngimage.png

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


image.png

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


image.png

以40结束:

image.png


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


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


相关文章
|
5月前
|
JavaScript 前端开发
SAP CRM product 主数据搜索,如何采用 ABAP 代码来实现
SAP CRM product 主数据搜索,如何采用 ABAP 代码来实现
|
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这两个应用为例来介绍。
89 0
S/4HANA和CRM Fiori应用的搜索分页实现
|
Windows
SAP Fiori 应用无法根据contact搜索的原因分析
SAP Fiori 应用无法根据contact搜索的原因分析
SAP Fiori 应用无法根据contact搜索的原因分析
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页面对应的技术模型明细
SAP Cloud for Customer根据模型某字段进行OData的搜索操作
SAP Cloud for Customer根据模型某字段进行OData的搜索操作
SAP Cloud for Customer的Opportunity搜索前台实现原理
SAP Cloud for Customer的Opportunity搜索前台实现原理
54 0
SAP Cloud for Customer的Opportunity搜索前台实现原理
SAP S/4HANA Customer Management里的页面搜索结果的分页显示原理
SAP S/4HANA Customer Management里的页面搜索结果的分页显示原理
94 0
SAP S/4HANA Customer Management里的页面搜索结果的分页显示原理
|
存储 Web App开发 数据库
S/4HANA for Customer Management里的搜索分页处理
这篇文章的英文版我发在了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技术来开发的。
65 0
S/4HANA for Customer Management里的搜索分页处理
推荐文章
更多