MyException - 我的反常网
当时方位:我的反常网» Web前端 » S/4HANA跟CRM Fiori运用的查找分页完成

S/4HANA跟CRM Fiori运用的查找分页完成

www.bsjylc692.com  网友共享于:2018-06-06  阅读:0次
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恳求的参数$skip=0&top=25完成的。而一共射中条数140的显现经过另一个参数$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和$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和$top界说的参数之内的都被DELETE丢掉:

 

该完成或许不如S/4HANA选用OFFSET方法完成得直接,可是由于从数据库回来的仅仅是射中opportunity的GUID,因而也不会有太多额定的开支。
要获取更多Jerry的原创技能文章,请重视大众号"汪子熙"或许扫描下面二维码:

 
 

文章谈论

软件开发程序过错反常ExceptionCopyright © 2009-2015 MyException 版权一切