S/4HANA for Customer Management里的搜索分页处理-阿里云开发者社区

开发者社区> 开发者小助手-bz5> 正文

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


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
8448 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10235 0
SAP WebClient UI删除搜索条件的后台处理,以及max hit的处理逻辑
SAP WebClient UI删除搜索条件的后台处理,以及max hit的处理逻辑
6 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
11755 0
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技术来开发的。
3 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11383 0
自然语言处理在开放搜索中的应用
构建搜索引擎的时候,都会遇到很多效果优化的问题,其中很多都和自然语言处理相关。本文通过结合开放搜索中NLP技术要点进行解读和分析。
8113 0
2497
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载