调用多个odata并设置在一个表中

2020-08-16 15:51发布

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

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


专家,

我想从odata中读取数据并处理数据,然后设置为表以显示结果。

这是我的想象力。

*************************************************** ******************************************

OModel1.read(" EntitySet1",{成功:函数(odata1){

odata1循环⇒处理①

OModel2.read(" EnitySet2(odata1)",{成功:函数(odata2){

处理odata 2和odata 1的数据。 过程②

endloop}

});

Table.setProperty(odata2.value,odata1.value);}}); ⇒过程③

*************************************************** ******************************************

当我读取Omodel2时,结果数据无法输出并再次循环odata1。 循环后,执行过程③,然后进行②。

因此数据无法正确显示。

如何在表设置属性之前获取Process②的数据。

我将使用批处理值设置为true或false。 读取操作没有变化。

最好的问候

Phyo

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

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


专家,

我想从odata中读取数据并处理数据,然后设置为表以显示结果。

这是我的想象力。

*************************************************** ******************************************

OModel1.read(" EntitySet1",{成功:函数(odata1){

odata1循环⇒处理①

OModel2.read(" EnitySet2(odata1)",{成功:函数(odata2){

处理odata 2和odata 1的数据。 过程②

endloop}

});

Table.setProperty(odata2.value,odata1.value);}}); ⇒过程③

*************************************************** ******************************************

当我读取Omodel2时,结果数据无法输出并再次循环odata1。 循环后,执行过程③,然后进行②。

因此数据无法正确显示。

如何在表设置属性之前获取Process②的数据。

我将使用批处理值设置为true或false。 读取操作没有变化。

最好的问候

Phyo

付费偷看设置
发送
4条回答
槿木_熙
1楼-- · 2020-08-16 16:07

这是您可以利用Promise功能的地方。

对于读取请求都使用两个Promise,在两个Promise成功之后,执行数据操作。 例如。 如下:

 var oPromise1 =新Promise(function(resolve,reject){
 oModel.read(sPath1,{
 成功:解决,
 错误:function(oError){
 reject(oError);
 }
 });
 });

 var oPromise2 =新的Promise(function(resolve,reject){
 oModel.read(sPath2,{
 成功:解决,
 错误:function(oError){
 reject(oError);
 }
 });
 });

 Promise.all([oPromise1,oPromise2])。then(function(arrayOfResolves){
    //从arrayOfResolves中读取数据并在此处执行数据操作
 } .bind(this)); 

那里有很多博客,请查看它们:

https://blogs.sap.com/2019/01/28/call- 当一切都做完时我回来...如何承诺。所有使生活变得轻松/

https://www.nathanhand.co.uk/blog/post/better-odata-handling-in-ui5 -using-promises-part-1

-Mahesh

打一壶酱油
2楼-- · 2020-08-16 16:11
PhyoPa PaAung a>

否,您无法在javascript中完成此操作,可以在google中找到它,这是通用的javascript代码; 但是我只是为odata2result做的。

 odata2result = [{custid:" cus1",工厂:" AAA",amt:1000},{custid:" cus1",工厂:" AAA",amt:1000},{custid:"  cus1",工厂:" AAA",amt:1000},{custid:" cus1",工厂:" BBB",amt:1000},{custid:" cus1",工厂:" BBB",amt:1000},  {custid:" cus2",工厂:" AAA",amt:1000}];

 odata2result.reduce(function(acc,curr){
   var accValue = acc.filter(function(val){
       return val.custid === curr.custid && val.plant === curr.plant
     });
   if(accValue.length === 0){
     acc.push(curr);
 }其他{
 accValue [0] .amt = accValue [0] .amt + curr.amt;
 }
 返回acc;
  },[]);
 

您可以使用如下所示的odata odata1result过滤odat2result,如下所示,您可以搜索google,从另一个数组中过滤arrary

https://stackoverflow.com/questions/46894352/filtering-an-array-of- 基于JavaScript的另一个数组中的对象

-Mahesh

me_for_i
3楼-- · 2020-08-16 16:13

检查我的包装函数,以使每个odata操作都可以实现诺言: a hraf=" https://blogs.sap.com/2018/09/17/ui5-odata-requests-with-promises/"> https://blogs.sap.com/2018/09/17/ui5- odata-requests-promise/

闻人可可
4楼-- · 2020-08-16 16:12

亲爱的

感谢您的建议。

我想使用从oPromise1检索的值作为oPromise2的参数(填充符)。

我想知道我不能读取odata内循环并且不能同时操作吗?

这是我的要求。

例如。 odata1具有[cus1,AAA],[cus1,BBB],[cus2,AAA]

odata2具有[cus1,AAA,1000],[cus1,AAA,1000],[cus1,AAA,1000],[cus1,BBB,1000],[cus1,BBB,1000],[cus1,BBB, 1000],[cus2,AAA,1000],

result⇒[cus1,AAA,3000],[cus1,BBB,3000],[cus2,AAA,1000]

最好的问候

一周热门 更多>