这是关于如何构建您自己的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服务调用。
在第8部分中,我们将模拟后端逻辑。
模拟后端逻辑如前所述,模拟服务器可以截获HTTP调用并向客户端提供假输出,而不涉及任何后端系统,但特殊后端逻辑的行为(如通过函数导入执行的行为)不会自动为模拟服务器所知。
如中所定义审批人.js, 我们的应用程序使用两个OData函数导入–/ApprovePurchaseOrder和/RejectPurchaseOrder:
文件:模型/审批人.js
批准:function(baprove,bFromSwipe,oView,aPOIds,sApprovalNote){
return new Promise(function(fnResolve,北京大数据研究院,fnReject){
var sFunction=baprove?"/ApprovePurchaseOrder":/RejectPurchaseOrder"
我们需要实现一个模拟后端行为的逻辑。在这种情况下,只需从模拟服务器处理的列表中删除所有已批准/拒绝的采购订单即可完成此操作。
为此,我们将实现我们自己的请求,该请求能够处理这些调用。
在localService文件夹中,我们将创建一个名为MockRequests.js文件并通过以下代码:
文件:localService/MockRequests.js文件
sap.ui.define(["sap/ui/base/Object"],函数(Object){
"使用严格";
返回对象.扩展("acme.purchaseorder.approve.localService.mock请求", {
构造函数:function(oMockServer){
//service URL->to be replaced
this.\u srvUrl="/sap/opu/odata/sap/SEPMRA\u PO\u APV/";
this.\u bError=false;//true if a this.\u sjax请求失败
this.\u sErrorTxt="";//oXhr错误响应的错误文本
this.\u oMockServer=oMockServer;
},
getRequests:function(){
return[
此.mockApprovePo(),
这个.po()
];
},
mockApprovePo:function(){
return{
//This mock request模拟函数import
//"approvedpurchaseorder",当
//用户选择"批准"按钮时触发,服务器云,
//从模拟
//数据中删除已批准的采购订单
方法:"POST",
路径:new RegExp("ApprovePurchaseOrder\\?POId='(*)&Note='(*),
响应:此.deletePo.bind(this)
};
},
mockRejectPo:function(){
return{
//this mock请求模拟函数import
//"RejectPurchaseOrder",
//当用户选择"拒绝"
//按钮时触发。
//从模拟
//数据中删除拒绝的采购订单。
方法:"POST",
路径:new RegExp("RejectPurchaseOrder\\?POId='(*)&Note='(*),
响应:此.deletePo.bind(this)
};
},
deletePo:function(oXhr,sPOId,sNote){
var aPurchaseOrders=this_oMockServer.getEntitySetData文件("Z\u C\u Purchaseorder"),
aPurchaseOrderItems=此_oMockServer.getEntitySetData文件("Z\u C\u Purchaseorderitem"),
filterPurchaseOrder=函数(OpurCaseOrderOrpOitem){
返回操作urchaseOrderOrPOItem.POId文件!==sPOId;
};
//从实体集数据
aPurchaseOrders=aPurchaseOrders.filter文件(筛选器采购订单.bind(这个);
这个_oMockServer.setEntitySetData设置("ZïCïU Purchaseorder",采购订单);
采购订单=aPurchaseOrderItems.filter文件(筛选器采购订单.bind(这个);
这个_oMockServer.setEntitySetData设置("Z_C_Purchaseorderitem",aPurchaseOrderItems);
oXhr.respondJSON文件(200, {}, JSON.stringify文件({
d:{
结果:[]
}
});
}
});
});
我们的模拟请求以http状态200(ok)响应每个请求,表示业务功能在后端成功执行。使用不同的http状态码,我们还可以模拟错误。
我们现在需要在生成的模拟服务器中注册我们的响应处理程序。
在mockserver.js文件,我们将添加对响应处理程序的引用:
文件:localService/mockserver.js文件
sap.ui.define([
"sap/ui/core/util/MockServer",
."/MockRequests"
],函数(MockServer,MockRequests){
并在init函数中注册mock请求:
文件:localService/mockserver.js文件
//处理请求错误
如果(sErrorParam){
请求。forEach(函数(aEntry){
如果(aEntry.path.toString字符串().indexOf(sEntity)>-1{
fnResponse(iErrorCode,sErrorParam,aEntry);
}
};
}
var oRequests=新MockRequests(oMockServer);
oMockServer.setRequests文件(A请求.concat(oRequests.getRequests请求()));
oMockServer.start文件();
模拟后端响应时间