我可以在格式化程序中使用oData调用吗?

2020-09-19 16:16发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家您好, 我实现了一个...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

我实现了一个函数导入,该函数接受来自实体A的合作伙伴代码并返回来自实体B的合作伙伴描述。由于代码不是实体A的一部分,并且SEGW不允许我创建代码,因此此处无法使用关联 之一。 从实体B开始加载数据也不是一种选择,它包含超过150.000个条目。 函数导入工作正常,我的问题是格式器似乎不等待oData调用返回的数据,即使我同时附加了promise和" batchrequestcompleted "事件。 我在调试器中观看了以正确顺序执行的所有指令(并返回了预期的结果),但似乎视图没有等待。 是否可以使用某种技术使视图等待结果,还是我必须在实体A中附加额外的字段以将描述存储在后端,出于某些明显的原因,我不想这样做 。 (非常简短)下面附上的代码,有什么想法吗?

干杯

格雷格

PS:在观察代码时,有人会很容易注意到值返回了两次,一次是在成功函数中,一次是在promise之后。 毕竟,它们只是为了测试而已:D

 textPartner:函数(sValue){
 如果(!sValue){
 返回"";
 }
 var that = this.getParent()。getParent()。getParent()。getParent()。getParent()。getParent()。getParent()。getParent()。getController();
 var oModel = this.getModel();
 var oModelUpdateDeferred = jQuery.Deferred();


 oModel.attachEventOnce(" batchRequestCompleted",function(oEvent){
 如果(that._checkIfBatchRequestSucceeded(oEvent)){
  oModelUpdateDeferred.resolve();
 }
 });

 oModel.callFunction("/img/Get_Partner_Name",{urlParameters:{Partner_Code:sValue},
 成功:function(oData,sResponse){
 sValue = oData.ReturnValue;
 返回sValue;
 },
 错误:function(oError){
 jQuery.sap.log.error(" oData Failure",oError);
 }
 });
 var readyToGo = function(){
 返回sValue;
 };
 jQuery.when(oModelUpdateDeferred).done()。then(jQuery.proxy(readyToGo,this));
 }

       /*第二个简化的同步版本,行为相同*/

         textPartner:函数(sValue){
 如果(!sValue){
 返回"";
 }
 var oModel = this.getModel();


 oModel.callFunction("/img/Get_Partner_Name",{urlParameters:{Partner_Code:sValue},async:false,
 成功:function(oData,sResponse){
 sValue = oData.ReturnValue;
//返回sValue;
 },
 错误:function(oError){
 jQuery.sap.log.error(" oData Failure",oError);
 }
 });
 返回sValue;
 }