如何进行S/4HANA和CRMFiori应用的搜索分页实现

这期内容当中小编将会给大家带来有关如何进行S/4HANA和CRM Fiori应用的搜索分页实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:申请域名、网页空间、营销软件、网站建设、杭州网站维护、网站推广。

S/4HANA和CRM里原生的Fiori应用,其搜索分页又是如何实现的?

分别选取S/4HANA里的Product Master,以及CRM里的My Opportunities这两个应用为例来介绍。

S/4HANA Fiori应用的搜索分页实现

点击搜索按钮之后,默认返回前25个命中的product,同时显示总共命中的product数目:140。


如何进行S/4HANA和CRM Fiori应用的搜索分页实现

这个分页效果通过OData请求的参数$skip=0&top=25实现的。而总共命中条数140的显示通过另一个参数$inlinecount来实现,该参数的后台实现原理类似ABAP Open SQL里的SELECT COUNT(*)。

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

从Chrome开发者工具里观察该请求的回应,确实只有25条记录返回。

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

将该搜索结果列表scroll至底部,发现有另一个OData request自动发出:

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

该请求的头部参数为$skip=25&top=25,因此能够从后台只取从第26到50个product:

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

在我博客SAP Fiori里的List是如何做到懒加载Lazy load的 我解释了$skip递增的序列值0,25,50,75...是如何在前台生成的。

而在这篇博客里,我会着重介绍分页搜索的后台实现。

假设我重复将搜索结果scroll至底部的动作重复三次,那么能够通过ST05观察到有三个数据库的读请求,每个请求返回25条记录。

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

点击该按钮,可以查看到具体是哪一行ABAP代码发起的数据库读请求:

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

$skip和$top这两个参数的值从前台传入后台,在后台的方法CL_SADL_GW_GENERIC_DPC~_GET_ENTITYSET的输入参数io_query_option能观察到:

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

开始行的索引值等于$skip参数值加1。

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

实际的读取分页在后台的实现:通过ABAP关键字OFFSET实现。

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

该OFFSET的值通过方法CL_SADL_SQL_STATEMENT~GET_SECTIONS_FOR_SELECT内一个较复杂的table表达式来决定出来:

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

首先得出表达式lt_sections[ type = cl_sadl_sql_statement=>co_type-page ]-from的值:99.

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

再从内表mt_parts取出第99条记录,从其字段value2得出最终offset值75。

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

CRM Fiori应用的搜索分页实现

前台的逻辑和S/4HANA的Fiori应用完全一致。

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

该参数传至后台,存储在参数is_paging里:

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

至于后台的分页搜索,My opportunities应用并未使用ABAP OPEN SQL里的关键字OFFSET。相反地,所有匹配记录的GUID都通过One Order的搜索API返回:

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

多余的记录,即那些不在$skip和$top定义的参数之内的都被DELETE丢弃:

如何进行S/4HANA和CRM Fiori应用的搜索分页实现

该实现或许不如S/4HANA采用OFFSET方式实现得直接,但是因为从数据库返回的仅仅是命中opportunity的GUID,因此也不会有太多额外的开销。

上述就是小编为大家分享的如何进行S/4HANA和CRM Fiori应用的搜索分页实现了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。


标题名称:如何进行S/4HANA和CRMFiori应用的搜索分页实现
文章地址:http://cdiso.cn/article/gssish.html

其他资讯