`
JerryWang_SAP
  • 浏览: 1081923 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

SAP Fiori里的List是如何做到懒加载Lazy load的

阅读更多

今天一同事问我这个问题:S/4HANA Fiori应用里的列表,一旦Scroll到底部就会自动向后台发起新的请求把更多的数据读取到前台显示。

以Product Master这个应用为例,我点击搜索之后,结果区域显示当前系统一共有140个product,但是只有前25个返回并显示在浏览器里。

 

这个分页效果是UI5 OData的参数实现的:$skip=0&top=25。

而总数140,是通过参数$inlinecount实现,其原理和ABAP Open SQL的SELECT COUNT(*)类似。

 

从Chrome开发者工具能观察到头25个product的payload:

 

当将列表滚动至底部时,第二批共25个product从后台读取出来,显示在前台:

 

这个http请求的参数:$skip=25&top=25,用于读取从第25个到第50个product。

 

从调用栈能清楚发现是scroll这个事件触发的第二批product的读取动作。

 

然后再去GrowingEnablement.requestNewPage这一个调用栈,发现一个属性_iLimit维护了一个开始索引,每次scroll到底部的事件触发之后,该属性值都会被GrowingThreshold累加。 因为API this._oControl.getGrowingThreshold每次返回的是一个常量25, 因此_iLimit的值每次scroll到底部之后看起来是这样的:25,50,75,100 ... 这些值会被用来作为HTTP请求参数$skip的值传到后台:

 

我同事的问题:growingThreshold在文件sap.m.ListBase.js里被硬编码成20, 但是运行时在何处被改写成了25?

 

要回答这个问题,需要了解一些UI5 Smart Template的知识,因为例子里这个Product Master的Fiori应用,也是基于Smart Template开发的。可以参考我的博客My understanding about how object page in Smart Template is rendered 来了解其工作原理。

当Product Master这个应用的UI Component被加载并马上开始渲染时,需要先加载Smart Template的库文件:

 

在我博客My understanding about how object page in Smart Template is rendered 提到,ListReport.view.xml这个文件里有若干view fragment的声明,每个声明指向了一些其他的Smart Template库文件。

这些库文件一览:

 

在Chrome开发者工具查看从ABAP后台加载的库文件SmartTable.fragment.xml,能发现属性growingThreshold在此处被硬编码成25。

 

当SmartTable.fragment.xml被加载之后其内容会被解析, growingThreshold值为25,会通过控件的setter API写入到控件属性里。这样接下来在处理列表的scroll事件是,25这个值就会通过控件的getter API返回并累加到_iLimit上。

 

关于XML view从ABAP后台加载到浏览器后是如何被解析并生成对应的UI5控件,可以参考我的博客Why my formatter does not work? A trouble shooting example to know how it works

也许您按照我上面描述的步骤操作,但是无法触发断点。原因是因为UI5框架针对基于Smart Template开发的Fiori应用的XML view设计了一套缓存机制。当待渲染的XML view已经在缓存中存在时,不会去ABAP后台加载Smart Template的库文件, 而是直接执行第428行的IF分支。

 

通过调试我们可以发现缓存是通过IndexedDB加上LRU(Least recently used)算法实现的。

 

通过Chrome开发者工具可以观察到待渲染的view已经有记录存储在IndexedDB里了:

 

如果想观察Smart Template库文件的加载,需点击"Delete database"以手动清除缓存。

 

缓存清除完毕后,即可观察到期望中的Smart Template库文件加载。

 

 


这篇文章介绍了如何通过调试找到同事提出问题的答案。我把它加在了我UI5调试文章分享的合集里:My UI5 debugging tips and experience collection - how to resolve UI5 issues through debugging by yourself
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

 

 
 
0
0
分享到:
评论

相关推荐

    sapFiori配置手册[整理].pdf

    SAP Fiori配置手册 本配置手册旨在指导用户完成SAP Fiori的设置和配置,从而实现SAP Fiori Launchpad的激活。下面是该手册中所涉及到的知识点: 1. 创建管理员账号和测试账号 在SAP Fiori的配置中,需要创建管理...

    SAP Fiori---快速指南 共82页 2018年编著 word文档

    ### SAP Fiori 快速指南知识点详述 #### 一、SAP Fiori 简介 SAP Fiori 是一款由 SAP 开发的新用户体验(UX),旨在为用户提供直观、简洁的操作界面。它包含了300多个基于角色的应用程序,覆盖了人力资源、制造、...

    SAP fiori 简易开发流程

    SAP fiori的简易开发过程指南,从开发者角度出发,分后面ODATA开发环境和前端SAP UI5环境搭建,以及发布进行了讲解

    SAP Fiori APP 应用快速实施解决办法

    ### SAP Fiori APP 应用快速实施解决办法 #### 一、引言 SAP Fiori 是一种全新的用户界面设计原则和技术框架,旨在为用户提供直观、简洁和一致的体验。本文档将详细介绍如何通过手动配置步骤或使用预定义任务列表...

    SAP Fiori 2.0开发指南

    ### SAP Fiori 2.0 开发指南 #### 概述 SAP Fiori 2.0 是 SAP 针对用户体验的一项重大升级,旨在提供更直观、更现代且更一致的用户界面。该版本引入了许多新功能和改进,不仅提高了用户满意度,还简化了系统管理员...

    SAP Fiori 最新现金流案例

    【SAP Fiori 现金流案例详解】 SAP Fiori 是一款由SAP公司开发的现代化用户体验设计框架,它提供了丰富的用户界面,旨在优化业务流程并提升工作效率。在这个最新的现金流案例中,我们看到SAP Fiori如何帮助用户实时...

    SAP Fiori配置全流程详解:从管理员账号创建到权限与服务激活

    内容概要:本文档详细介绍了SAP Fiori配置的全过程,覆盖了从创建初始账号直至完成各种关键配置步骤的具体指导。主要内容分为几个部分,首先是关于如何创建以及赋予权限于管理员账号及用于测试环境的账号,并具体...

    SAP FIORI OVERVIEW

    SAP Fiori是一种创新的用户界面(UI)设计和交付架构,由SAP公司推出,旨在为企业应用程序带来消费级用户体验。SAP Fiori的目标是通过更新最广泛和频繁使用的SAP软件功能的用户界面,为用户提供即时价值,这些功能可以...

    SAP Fiori SAP Fiori SAP Fiori Architecture Architecture

    SAP Fiori SAP Fiori SAP Fiori Architecture Architecture Overview to Deep Overview to Deep Dive -with with focus on S/4 HANA focus on S/4 HANA

    SAP Fiori overview

    ### SAP Fiori 概览与用户体验战略 #### 标题:SAP Fiori 概览 **SAP Fiori** 是 SAP 公司为改善其应用程序的用户界面(UI)和用户体验(UX)而推出的一套设计原则和技术框架。自2013年发布以来,SAP Fiori 已经...

    SAP Fiori Elements Development UX 403

    SAP Fiori Elements Development UX 403 SAP Fiori Elements Development UX 403 是一门关于 SAP Fiori 元素开发的高级课程,旨在帮助开发人员学习如何构建高质量的用户体验(UX)。本课程的主要目标是让开发人员...

    SAP Fiori Launchpad配置指南

    ### SAP Fiori Launchpad配置指南 #### 一、引言 SAP Fiori Launchpad作为移动和桌面设备上的Fiori应用程序入口,为用户提供了一种直观便捷的方式去访问各种业务流程相关的应用。为了确保Fiori Launchpad能够满足...

    SAP Fiori 2.0 产品介绍

    ### SAP Fiori 2.0 产品介绍 #### 一、设计原则与创新方法论 **SAP Fiori 2.0** 是SAP SE在2016年推出的一款面向用户需求的企业软件解决方案,其核心设计理念是为用户提供简单、一致且令人愉悦的用户体验。在**第...

    SAP Fiori 学习概要

    SAP Fiori是一个为SAP软件用户界面提供全新设计框架的用户体验。它强调简洁直观的用户界面,并能够适应不同的设备,包括桌面电脑、平板和智能手机。SAP Fiori 2.0系列视频教程涵盖了从基础到高级的内容,帮助开发者...

    SAP-Fiori-快速指南

    SAP Fiori 是 SAP 公司推出的一种全新的用户体验(UX)设计,旨在提供更加直观、高效和个性化的企业级应用程序。这个快速指南将带你了解 SAP Fiori 的基本概念、设计原则以及不同类型的 SAP Fiori 应用程序。 首先...

    SAP Fiori(SAPUI5)简介

    SAP Fiori是SAP公司推出的一套用户界面(UI)技术框架,用于提供企业软件全新的用户体验。它是前端UI框架SAPUI5的一个重要组成部分,旨在为用户打造简洁、直观、便捷的操作界面。SAP Fiori以用户为中心,强调简洁性和...

    SAP官方Fiori使用说明文件

    SAP Fiori 快速启动板使用指南 SAP Fiori 快速启动板是 SAP Fiori 应用的外壳,为应用提供导航、个性化、嵌入支持和应用程序配置等服务。它是 SAP Fiori 应用在移动和桌面设备上的入口点。 快速启动板的组成部分 ...

    配置 SAP Fiori Launchpad

    配置 SAP Fiori Launchpad 是一项关键任务,目的是为用户创建一个个性化、响应式的启动页面,提供访问各种SAP应用的入口。SAP Fiori Launchpad 是一个基于角色的启动板,它将用户工作和业务需求放在中心位置,提供...

    SAP Fiori - Adding a Custom Workflow in 6 Steps

    ### SAP Fiori - 在六步内添加自定义工作流 #### 概览 本文将详细介绍如何在SAP Fiori环境中通过六个步骤实现自定义工作流的添加。此过程旨在为那些希望利用SAP Fiori的强大功能来提升业务流程管理效率的企业提供...

Global site tag (gtag.js) - Google Analytics