当前位置: 首页 > Web前端 > HTML

SAPUI5Fiori应用在启动时向ABAP后台发起的OData请求序列的时序及功能分析

时间:2023-03-28 16:58:15 HTML

写这篇文章的动机来自于我知识星球一个朋友的提问:Wearenowgivingsuccessfactorsenhances一个函数,screenfiori,针对屏幕上的fo字段或picklist类型字段,为了方便在屏幕上输入值,一般用什么方法使下拉框中的值,而且不影响性能,现在我们考虑增加代码来获取下拉框的值,但是在初始打开屏幕时,如果项目太多,会影响性能,请问什么是最好的办法?或者这样的例子应该如何实现?感谢您对我的一些回复:第一次打开屏幕时,是否可以延迟加载下拉框?也就是说,第一次打开页面时,页面处于只读模式。此时下拉框的位置只需要显示下拉框默认选中的key值对应的描述信息即可。这时,下拉框退化为TextField。只有当切换到编辑模式时,才会从数据库中读取键和描述。这种方法在点击编辑按钮切换到编辑模式时也感觉有点延迟。一种更高级的方法是在只读模式下单击编辑按钮之前在后台异步读取密钥和描述。这个问题促使我思考一个问题:SAP标准的Fiori应用是如何管理和处理发送到后台的ABAPHTTPOData请求的?带着这个疑问,我找到了一个SAP标准的Fiori应用,CRM领域的MyOpportunity,研究了应用打开时发送到ABAP后台的所有OData请求,并对每个OData请求的原因一一分析。还详细讨论了HTTP请求的标头字段和文本有效负载以及每个请求的HTTP响应。我们在SAPCRMFioriLaunchpad中点击MyOpportunity的磁贴:Fiori应用程序被启动,我们看到如下界面:这是一个典型的SAPUI5应用程序,具有Master-Detail布局,左侧区域称为MasterList,以及右边是细节视图。这种Master-Detail布局应用开发方法在作者的另一套SAPUI5开发教程中有详细介绍:SAPUI5应用开发教程105-SAPUI5Master-Detail布局模式联动效果实现详解图例1显示总系统中商机项数为451,区域2默认显示20条数据。当我们将鼠标滚动到第20条数据并继续向下滚动时,就会触发第21条到第40条数据的加载。这其实是设计进了OData读取数据的分页概念。默认情况下,每页包含20条机会数据。应用启动时,只读取第一页的Opportunity数据,即默认显示20条Opportunity。图3是Opportunity详情页,这里是第一页20个Opportunity中的第一个数据。https://:44355/sap/bc/ui5_ui5/ui2/ushell/shells/abap/FioriLaunchpad.html?sap-client=001#Opportunity-manageOpportunity&/detail/Opportunities(guid'FA163EE5-6C3A-1ED6-9DC1-A73EEF634C10')我们打开Chrome开发者工具,切换到Networks选项卡,在filter中输入/sap/opu/odata/sap/CRM_OPPORTUNITY,这是Fiori应用消费后台ABAP服务的url(图2).对于此筛选条件,所有6个OData请求都显示在网络中。本文余下部分一一介绍这六个OData请求的细节。