SAP UI 搜索分页技术

  • 时间:
  • 浏览:5

其实我也不为什么会么会用Twitter,但作为有三个白 任务管理器池池员我对它还是很有兴趣的。作为类似产品中的佼佼者,Twitter自然是有它的优势。其中比较有特色的有些也不其懒加载的机制。今天当我们当我们就通过Debug的方法来对其探究一番。

时间轴(Time Line): Twitter中最最重要的主次。四根条的推文组合在同時 ,就成了页面上上端那条长长的时间轴。

CRM Fiori后台的搜索分页防止和S/4HANA Fiori的区别:并未使用ABAP的OFFSET关键字,而由应用开发人员自行实现。

再来看看搜索分页的后台防止。在Netweaver事务码ST05的数据库跟踪视图里,能清晰观察到什儿 分页效果:每次到数据库的查询只命中并返回25条记录,如下图三条高亮的跟踪记录所示。

下图例子里,我指定Max Number of Results为500,意思是期望满足搜索条件的记录里,显示500条到UI上。

S4CRM,全称为S/4HANA for Customer Management,UI开发技术仍然采用WebClient UI。和S/4HANA基于UI5的前端技术截然不同,WebClient UI走的是服务器端渲染的BSP路线。严格意义上讲,WebClient UI不处在数据库层面的搜索分页,其分页行为仅仅体现在服务器端渲染上。

怎样才能让我用了有三个白 晚上搞了个小工具,把大段文字转成图片,怎样才能让直接发到Twitter上。

Paging Implementation in S/4HANA for Customer Management

像国内的知乎,简书,新浪微博有有哪些网站,其列表显示均实现了懒加载。菜园子小哥王聪对有有哪些实现也很好奇。为有哪些最后取舍了Twitter去研究?这就得从他和基友老金的故事说起。

可没想到,老金刚用了半天就找到我,说当时人写的东西我找不到乎 为有哪些全被打上了马赛克,并信誓旦旦对“秦老师”发誓说当时人没写有哪些大尺度的东西。我问他秦老师是谁?你爱不爱我是印度著名诗人秦戈尔老师啊!善良的我并找不到 当面给他指出那位老师不姓秦这件事,只想着好好的图片为什么会么会会被打码了呢?

那min_position和max_position呢?当我们当我们回到刚才定义请求的位置继续向上追溯,找到了getOldItems的方法。当用户在时间轴上向下滚动鼠标到最后时,就会调用到什儿 方法,而在其中会把上一次响应当中的min_position赋值给什儿 次请求当中的max_postion。

上图第1674行@lv_offset的值,是基于UI传入的$skip和$top计算而得。

该搜索分页的实现归功于OData请求的参数,$skip=0&top=25,意为从请求命中的第0条记录刚现在开始, 总共返回25条记录。而时候参数$inlinecount,其工作原理能必须比喻ABAP Open SQL的关键字SELECT COUNT(*),用于统计数据库表的条目数。

一旦用鼠标滚轮向下移动页面至屏幕底部,会自动触发有三个白 新的OData请求,参数为$skip=25&top=25。 时候,从第26到第500个product也从数据库表中读取出来显示在Fiori UI上。

这里当我们当我们进入到请求成功的方法中继续探索。最终到达终点,items_html被添加到了时间轴当中。

以及使用Smart Template开发Fiori应用的介绍:

搜索分页技术往往和时候术语Lazy Loading(懒加载)联系起来。今天由Jerry首先介绍S/4HANA,CRM Fiori和S4CRM应用里的UI搜索分页的实现原理。后半主次由SAP成都研究院菜园子小哥王聪向您介绍Twitter的懒加载实现。

在研究的过程中,我发现了有三个白 有趣的难题报告 ,也不new_latent_count绝大多数不是20,而偶尔会略小于20。怎样才能让前端请求中不须处在所要请求的条数,也不什儿 决策是在后端完成的。

(2) 由应用开发人员根据$skip和$top值,将多余的记录丢弃掉,保证最后只返回20条记录给UI。

How does UI5 AutoGrowing list(Lazy Load behavior) work

以S/4HANA Product Master Fiori应用为例,怎样才能让有哪些搜索条件不是指定,默认会返回25条数据,怎样才能让在UI上显示该系统总的product数量,在Jerry使用的系统里总共处在140个product。

Jerry的通过CDS view + Smart Template 开发Fiori应用的blog合集

更多渲染细节,请参考我的博客:

Search Paging implementation in S/4HANA and CRM Fiori application

位(Position): 四根推文的标识符,说白了也不推文的ID。新推文的Position比老推文的要大,也不我其实Position很有怎样才能让代表着“这是Twitter有史以来的第xxx条推文”。可我随便找到的有三个白 Position却其实大得帮我怀疑当时人的猜测。

老金是我在德国读书时的好基友,在国内时就酷爱文学创作。但他却从未开通个博客有哪些的,坚持使用新浪“长微博”功能写文章。用他语句说,这代表新锐文学的姿态。到了德国时候,老金发现人家外国外国日本网友不让微博,人家用Twitter。新锐的他自然要入乡随俗,可正准备舞文弄墨,却发现Twitter里并找不到 个东西叫“Long Twitter”,140个字符啥也干不了。于是老金愤而卸载Twitter,逢人便感慨西方文学这下是要彻底完了。

服务器为什么会么会知道应该渲染第二页的源代码呢?什儿 信息也是点了“2”页码后,时候台传给ABAP服务器的:

了解了咱们SAP的搜索分页实现原理后,当我们当我们再来看看有些厂商是为什么会么会做的。

我拿来一看,时候是老金其实憋了不让 ,什儿 次足足写了8500多个字,生成的图片尺寸过大,被鸡贼的Twitter给压缩了,于是便模糊得像打了码一样。心灰意冷的老金决定与Twitter恩断义绝,连账户都撤出 了。

为了搞清楚有有哪些信息到底是为什么会么会回事,当我们当我们通过寻找请求的发起者来深入到代码当中。时候Twitter在这里发送了有三个白 XMLHttpRequest。无论是有哪些请求,总归要有有三个白 防止的方法,当我们当我们在Call Stack中层层向上追溯,怎样才能让找到了请求的定义位置。

WebClient UI仅仅将第一页的HTML源代码在ABAP后台渲染出来怎样才能让显示给用户。当用户点了屏幕下方的“2”页码时,不让有任何的数据库查询处在,服务器做的事情仅仅是将第二页对应的HTML源代码渲染出来。

起初我以为后端会根据需用即将响应的内容大小决定发好多个条,可分析了有些例子时候发现有的时候响应明明很小,却还是发了必须20条。也不我的猜测是后端什儿 神奇的算法怎样才能让会判断返回的内容用户离米 会浏览多久,怎样才能让比较耗时,则少返回有些。类似怎样才能让推文包含长视频,则判断为阅读耗时较长,能必须少返回好多个。但这也不瞎猜的,有知道其中原理的当我们当我们能必须留言我找不到乎 ,非常感谢。

时候台通过UI5库文件发送的包含$skip和$top参数的OData请求,被后台接收并维护于io_query_options参数中:

为有哪些分页的尺寸为25?在Fiori UI列表实现文件sap.m.ListBase.js里,默认的分页尺寸(GrowingThreshold)为20,这说明一定处在某个配置,怎样才能让在Product Master应用某处的JavaScript代码将什儿 分页尺寸从20改成了25。

看着老金整天闷闷不乐,我便安慰你爱不爱我有哪些长微博,不也不文字变图片嘛。Twitter没这东西,看小爷我的本事啊。我我想要写个App,名字就叫“大Twitter”,图标我都我想要设计好了。

关于王聪的背景介绍,您能必须参考他的前一篇文章:SAP成都研究院非典型任务管理器池池猿,菜园子小哥:当我用UI5诊断工具时我用些有哪些。

至此S/4HANA和CRM Fiori应用的搜索分页原理介绍完毕。更多细节,请参考我的博客:

首先当我们当我们在开发者工具的Network工具中截取四根当用户滚动加载时发出的请求。结果发现它长下面什儿 样子。

从搜索结果能看出分页效果。详细500条记录怎样才能让从数据库查询出来并保存到应用任务管理器池池的内存里。如下图所示:

而最终在数据库查询层面的分页防止,是由ABAP Open SQL的关键字OFFSET实现的。

在这里当我们当我们能必须发现好多个有意义的信息:

坦率讲整个Debug过程花费了我也不时间,一方面是对于其代码形态学 的粘壳悉,当时人面是minify过的js代码其实是我想要头疼啊。所有的变量都长成abcd不说,到处不是用逻辑运算符写的条件判断语句,看了口吐白沫。

下面是菜园子小哥王聪的讲解。还是老规矩,您能必须点击文末的"阅读原文”,获取王聪的中英德有三个白 版本的讲解文章。

上图的$skip和$top参数同S/4HANA应用的行为相同,传递到后台并得到防止:

(1) 首先将所有满足搜索条件的记录的GUID详细从数据库取出,从数据库层返回到ABAP层。在我什儿 测试系统里,总共有21条记录,详细返回到了ABAP层:

不过从学习的深度讲,整个过程跑下来无论是debug能力还是代码阅读能力不是有所提升,推荐当我们当我们也试一试。

老金痛恨Twitter。

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"怎样才能让扫描下面二维码:



怎样才能让您想通过当时人调试找到什儿 答案,锻炼当时人的分析能力,能必须参考我的调试过程:

至此当我们当我们能必须将整个Twitter的懒加载流程串接起来:

CRM Fiori应用的前台搜索分页实现原理和S/4HANA Fiori应用类似,也不分页尺寸变成了20。

怎样才能让篇幅限制,Jerry直接揭晓答案了。S/4HANA里的Fiori应用不是使用Smart Template技术实现的,其列表区域的实现处在SmartTable.fragment.xml什儿 模板文件里,growingThreshold指定为25。怎样才能让从时间序列上来说SmartTable.fragment.xml后于sap.m.ListBase.js加载,也不对于分页尺寸的定义其优先级更高。

ABAP后台拿到什儿 visibleFirstRow参数后,知道从搜索结果记录里的第21条刚现在开始渲染,老是到第40条。