云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

企业网站_sql恢复数据库_12月免费

小七 141 0

这是关于如何构建您自己的SAP Fiori Approve Purchase Orders应用程序的教程系列的第九部分。

本教程的目的是逐步向您展示如何构建您自己的SAP Fiori Approve Purchase Orders应用程序,并提供有关为什么某些方面已按原样开发的其他见解。

请参阅介绍性内容发布(教程:构建您自己的SAP Fiori Approve Purchase Order应用程序)了解本教程的背景信息。

之前发布的章节可在此处找到:

第2部分:(教程:构建您自己的SAP Fiori Approve Purchase Order应用程序-第2部分)

在本章中,我们使用SAP Web IDE设置应用程序,并使用模拟数据运行应用程序。

第3部分:(教程:构建您自己的SAP Fiori Approve Purchase Order应用程序–第3部分)

在本章中,我们调整了应用程序的列表屏幕。

第4部分:(教程:构建您自己的SAP Fiori Approve Purchase Order应用程序–第4部分)

在本章中,我们调整了详细屏幕应用程序的第5部分:

第5部分:(教程:构建您自己的SAP Fiori Approve Purchase Order应用程序–第5部分)

在本章中,我们启用了Approve和reject按钮。

第6部分:(教程:构建您自己的SAP Fiori Approve Purchase Order应用程序–第6部分)

在第6章中,我们设置了一个存储全局应用程序状态的新模型。

第7部分:(教程:构建您自己的SAP Fiori Approve Purchase Order应用程序–第7部分)

在第7章中,我们封装了Approve/reject service calls。

第8部分:(教程:构建您自己的SAP Fiori Approve Purchase Order应用程序–第8部分)

在第8章中,我们模拟了后端逻辑。

在第9章中,我们将刷新master和detail屏幕

刷新主屏幕和详细屏幕现在,我们将定义采购订单的订单,以便在采购订单成功批准/拒绝后显示在详细信息屏幕上。在决定下一步选择哪个采购订单时,需要考虑几个因素和场景。在列表和详细信息同时显示在同一屏幕上的设备上,我们需要确保列表的选择与详细信息视图中显示的顺序相对应。一个非常直接的解决方案是刷新主列表并选择第一个可用条目。暴力方法将始终刷新列表,与用户是否取消审批对话框或业务逻辑是否成功执行无关。当然,如果我们只在业务逻辑成功执行的情况下刷新列表,那么这可以很容易地得到优化。但是,如果用户批准列表中的第十个条目,则他/她已经决定不批准条目1到条目9。例如,选择第十一个条目是有意义的。我们将实现一个默认机制来选择给定订单中的下一个采购订单。当批准或拒绝成功时,选择下一个采购订单。如果操作不成功或用户取消了操作,选择将保持稳定。至于审批逻辑,我们将为批量选择准备编码。

该逻辑影响主列表和详细屏幕,公众号返利系统,因此需要是"全局"的。我们已经在中的全局模型中为此定义了两个属性(preferredIDs和currentPOId)模型.js无需详细使用/解释。

文件:型号/模型.js

var oModel=new JSONModel({

isBusyApproving:false,免费云服务器,

isSwipeRunning:false,

preferredIds:[],

currentPOId:null

});

数组preferredIds[]存储id列表当前选择审批。这是必需的,因为我们不知道前期的采购订单操作是否会在后端成功。属性currentPOId存储当前显示在详细信息屏幕中的ID。

由于我们需要存储当前的采购订单ID,因此详细信息控制器中的onObjectMatched函数是一个很好的位置。_onObjectMatched是一个在onInit()中注册的函数,每当URL参数请求新的购买项目时,路由器就会调用它。

文件:控制器/详细信息.controller.js

对象匹配:函数(oEvent){

var sobjectd=oEvent.getParameter参数("参数").objectId;

此.getModel().metadataLoaded()。然后(function(){

var sObjectPath=此.getModel().createKey("ZïCïu Purchaseorder",信息大数据,{

POId:sObjectId

});

此.getModel("globalProperties").setProperty("/currentPOId",sObjectId);this.\u bindView("/"+sObjectPath);

}.bind(this));

},

一旦项目成功完成,我们需要刷新主列表。这是通过函数refreshList()完成的。

文件:控制器/列表选择器.js

clearMasterListSelection:function(){

[…]

},

/***

*触发主列表刷新,而不更改滚动位置

*/

刷新列表:function(){

this_附件("updateFinished",这个_奥利斯特聚焦,这个。\列表);

这个_列表.getBinding("items").refresh();

}

});

RefreshList触发绑定的更新。刷新完成后,服务器 云服务器,关于大数据,将触发updateFinished事件。我们不希望每次列表刷新时都调用focus函数,而只希望通过该函数触发刷新。所以我们用附件。这确保了一旦调用eventhandler,它就会被删除。

现在我们可以将refresh函数连接到approval逻辑。每次采购订单审批/驳回成功时调用此函数

文件:型号/审批人.js

|调用:函数(bSuccess,oGlobalModel){

this.\u iopencallscont–

this.\u bOneWaitingSuccess=bSuccess | | this.\u bOneWaitingSuccess;

如果(this.\u iopencallscont===0){//当我们不在等待另一个呼叫时

this.\u mRunningSwipes={};//开始新一轮

oGlobalModel.setProperty属性("/isSwipeRunning",false);

oGlobalModel.setProperty属性("/isBusyApproving",false);

if(this.\u bOneWaitingSuccess){

this.\u bOneWaitingSuccess=false;

这个_oListSelector.refreshList文件();

}

}

}