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这两个应用为例来介绍。
S/4HANA Fiori应用的搜索分页实现
点击搜索按钮之后,默认返回前25个命中的product,同时显示总共命中的product数目:140。
这个分页效果通过OData请求的参数KaTeX parse error: Expected 'EOF', got '&' at position 7: skip=0&̲top=25实现的。而总共命中…inlinecount来实现,该参数的后台实现原理类似ABAP Open SQL里的SELECT COUNT(*)。
从Chrome开发者工具里观察该请求的回应,确实只有25条记录返回。
将该搜索结果列表scroll至底部,发现有另一个OData request自动发出:
该请求的头部参数为$skip=25&top=25,因此能够从后台只取从第26到50个product:
在我博客SAP Fiori里的List是如何做到懒加载Lazy load的 我解释了$skip递增的序列值0,25,50,75…是如何在前台生成的。
而在这篇博客里,我会着重介绍分页搜索的后台实现。
假设我重复将搜索结果scroll至底部的动作重复三次,那么能够通过ST05观察到有三个数据库的读请求,每个请求返回25条记录。
点击该按钮,可以查看到具体是哪一行ABAP代码发起的数据库读请求:
skip和skip和skip和top这两个参数的值从前台传入后台,在后台的方法CL_SADL_GW_GENERIC_DPC~_GET_ENTITYSET的输入参数io_query_option能观察到:
开始行的索引值等于$skip参数值加1。
实际的读取分页在后台的实现:通过ABAP关键字OFFSET实现。
该OFFSET的值通过方法CL_SADL_SQL_STATEMENT~GET_SECTIONS_FOR_SELECT内一个较复杂的table表达式来决定出来:
首先得出表达式lt_sections[ type = cl_sadl_sql_statement=>co_type-page ]-from的值:99.
再从内表mt_parts取出第99条记录,从其字段value2得出最终offset值75。
CRM Fiori应用的搜索分页实现
前台的逻辑和S/4HANA的Fiori应用完全一致。
该参数传至后台,存储在参数is_paging里:
至于后台的分页搜索,My opportunities应用并未使用ABAP OPEN SQL里的关键字OFFSET。相反地,所有匹配记录的GUID都通过One Order的搜索API返回:
多余的记录,即那些不在skip和skip和skip和top定义的参数之内的都被DELETE丢弃:
该实现或许不如S/4HANA采用OFFSET方式实现得直接,但是因为从数据库返回的仅仅是命中opportunity的GUID,因此也不会有太多额外的开销。
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙":
S/4HANA和CRM Fiori应用的搜索分页实现相关推荐
- S/4HANA for Customer Management里的搜索分页处理
这篇文章的英文版我发在了SAP Community上:Paging Implementation in S/4HANA for Customer Management https://blogs.sa ...
- S/4HANA for Customer Management里的搜索分页处理 1
这篇文章的英文版我发在了SAP Community上:Paging Implementation in S/4HANA for Customer Management https://blogs.sa ...
- SAP UI 搜索分页技术
搜索分页技术往往和另一个术语Lazy Loading(懒加载)联系起来.今天由Jerry首先介绍S/4HANA,CRM Fiori和S4CRM应用里的UI搜索分页的实现原理.后半部分由SAP成都研究院 ...
- 在 SAP CRM Fiori 应用上给 Opportunity 订单添加 note 的后台执行明细
在 SAP CRM Fiori 应用上给 Opportunity 订单添加 note 的后台执行明细: 修改某些字段之后点击保存按钮: I change "chance of success ...
- SAP CRM Fiori Launchpad 登录之后,看不见任何 tile 的解决办法
我登录 SAP CRM Fiori gateway 系统,发现 Launchpad 里一个 tile 也没有: 解决方法 事物码 PFCG,从标准的 role SAP_CRM_BCR_SALESREP ...
- SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格
这是Jerry 2021年的第 19 篇文章,也是汪子熙公众号总共第 290 篇原创文章. 本文分别针对 SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI,介 ...
- OData Console in C4C and Gateway Client in CRM Fiori
C4C Work center Administrator->OData service explorer: 随便选一个OData service,点Test: 弹出一个新的窗口,就可以用ODa ...
- CRM Fiori和Marketing Cloud里的My Account和All Account
CRM Fiori里的My Account和All Account在这里切换: Marketing Cloud的切换在这里: 要获取更多Jerry的原创文章,请关注公众号"汪子熙" ...
- SAP CRM One Order框架搜索条件里,posting date下拉菜单的渲染逻辑
where does one order posting date search drop down list come from 本文介绍:SAP CRM One Order框架搜索条件里,post ...
最新文章
- mysql5.5多实例配置_mysql-5.5.32多实例配置
- Opencv实战之图像的基本操作:这效果出来惊艳了众人(附代码解析)
- eclipse 搭建Android 开发环境(ADT安装和sdk下载,选择)
- 2017.9.24 虔诚的墓主人 思考记录
- python 爬取历史天气
- svn分支管理的使用与经验
- java 车牌号判断
- echarts 圆环图渐变
- ZKTeco live20R指纹采集识别适配谷歌浏览器
- pandas 取每天某个时刻的数据
- Ruby / Rails代码气味基础01
- 马哥2018linux课程目录,马哥教育2018年Linux第30期视频教程
- 网管员必知:常用电脑密码破解
- echarts柱状图图例不显示的问题
- C++——隐式类型转换
- LC谐振电路跟和LC振荡电路
- 【59元 第二件1元】SIMEITOL/姿美堂玛卡片 蓝玛咖片MACA 60片
- torch.roll 函数的理解
- 成功解决需要Xmanager软件来处理X11转发需求
- 拍拍关闭:C2C模式走向终结?
热门文章
- ps -ef 输出结果的具体含义
- html 订阅发布,发布-订阅模式.html
- mysql导出bacpac_在 Azure 中备份应用
- SAP UI5 应用开发教程之二十三 - 列表控件的排序 Sort 和分组 Group
- SAP 电商云 Spartacus UI SSR 里 engine 和 engine instance 的区别
- Adding Applications for JavaScript Storefronts in SAP 电商云
- yarn ngc使用练习
- SAP Spartacus开启SSR服务器端渲染之后,和默认客户端渲染的差异比较
- SAP云平台Extension Factory和微软Azure上的Lambda Function
- how is central js retrieved from ABAP repository