SAP UI5里Batch操作和Read操作的区别
I would like to share with you my story today about fighting with one customer incident.
We can make changes on Appointment and click save button:
There is a batch operation observed in Chrome network tab to update appointment as expected. However, why every time there are three subsequent appointment read roundtrips?
The callstack clearly shows that the three roundtrips are NOT issued by customer extension, or else the customer js file could be observed in the callstack.
Set a breakpoint on the top most callstack, h function. Check the content of e.target.data:
This is actually the batch request payload which could be observed in Chrome network tab:
This finding gives me more confidence that these roundtrips are issued by framework, not standard or customer application code.
So I just continue debugging until I reach this suspicious stack:
in line 1957, this.bRefreshAfterChange = true.
However, in our internal system ( where everything works fine, there is no duplicate read operations ), this.bRefreshAfterChange = false, which has suppressed the refresh operation. This is the reason why the read operation could not be found in my internal system, since they are not executed at all. But in customer system, _isRefreshNeeded returns true, which leads to the execution of all subsequent read operations.
So why is this difference between two systems? In Chrome development tool, search the boolean variable name and we found one function setRefreshAfterChange defined for ODataModel. Just set a breakpoint in this method and re-launch the application in my internal system from beginning:
Breakpoint is triggered:
However, this line in customer system is missing, which is the root cause – our latest standard code didn’t reach customer system.
After I found the root cause, I search in SCN to check whether there are other poor guy which had encountered the same issue with me, and actually I found one:http://scn.sap.com/thread/3724174
If I read this thread several months earlier, I would save my hours’ debugging today.
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
相关文章
- 166. SAP UI5 OData API 中针对 Edm.DateTime 日期时间类型的操作详解
- 147. SAP UI5 SmartTable 控件的使用介绍
- 47. 如何自定义 SAP UI5 字符串类型输入字段的校验逻辑
- 34. SAP UI5 应用基于设备类型的页面适配功能(Device Adaptation)
- 如何在 Web 应用里消费 SAP Leonardo 的机器学习 API
- SAP UI5 oApplicationFacade - where and when it is initialized
- SAP ABAP OData 服务的 $count 和 $inlinecount 两个操作的区别试读版
- SAP ABAP OData 服务如何支持 $filter (过滤)操作试读版
- SAP ABAP, Fiori, Android和Hybris里的异步操作
- 在SAP Business Application Studio里创建Fiori应用的操作流程
- SAP Spartacus delivery mode页面两个一模一样的cart API请求
- SAP One Order redesign写操作的详细设计
- 如何使用 kubectl 通过命令行的方式操作 SAP Kyma
- SAP Leonardo机器学习训练之前的初始化操作
- SAP UI5 本地开发时 ui5.yaml 文件对构建 Release 版本应用目录的影响分析试读版
- 具有SmartFilterBar 的 SAP Fiori Elements 自动触发的搜索操作
- SAP UI5自学教程一:button.js的加载逻辑
- 22. SAP ABAP OData 服务的 $count 和 $inlinecount 两个操作的区别