注销前的Fiori ODATA

2020-08-25 00:57发布

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

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


嗨,

我有一个Fiori/sapui5应用程序,我想在用户使用注销按钮注销之前先调用ODATA。

我正在使用正确调用的onExit函数,但是未发送我的ODATA

 onExit:function(){
callServiceDisconnect();
},

我检查了我的函数是否正常工作,并在按下按钮时调用了onExit函数,并且控制台中没有错误,网络面板中也没有错误。

我也测试过

 if(sap.ushell.Container!==未定义&& sap.ushell.Container.attachLogoutEvent){
sap.ushell.Container.attachLogoutEvent(function(){
this.callServiceDisconnect();
} .bind(this));
}

使用chrome调试器,我检查了我的函数是否被调用,但再次没有在注销前发送ODATA请求。


有什么想法吗?

谢谢,
让·吕克(Jean-Luc)

(78.0 kB)

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

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


嗨,

我有一个Fiori/sapui5应用程序,我想在用户使用注销按钮注销之前先调用ODATA。

我正在使用正确调用的onExit函数,但是未发送我的ODATA

 onExit:function(){
callServiceDisconnect();
},

我检查了我的函数是否正常工作,并在按下按钮时调用了onExit函数,并且控制台中没有错误,网络面板中也没有错误。

我也测试过

 if(sap.ushell.Container!==未定义&& sap.ushell.Container.attachLogoutEvent){
sap.ushell.Container.attachLogoutEvent(function(){
this.callServiceDisconnect();
} .bind(this));
}

使用chrome调试器,我检查了我的函数是否被调用,但再次没有在注销前发送ODATA请求。


有什么想法吗?

谢谢,
让·吕克(Jean-Luc)

(78.0 kB)
付费偷看设置
发送
5条回答
zhangjiyang1323
1楼-- · 2020-08-25 01:23

问题可能是单击注销按钮时,启动板可能会破坏该组件及其所有请求(到那时可能尚未发送)。

那么您可以 这样做是因为所有v2 odata模型请求都是异步的,因此以同步方式调用odata服务。 但是,如果请求花费时间,则可能会导致UX问题。

问题:您发送的请求是否仅针对该UI5应用或启动板? 如果是启动板,则可以使用以下链接

https://blogs.sap.com/2014/11/05/simple-steps-to-configure-fiori-loginlogoff-page/

哎,真难
2楼-- · 2020-08-25 01:08

尝试ajax电话? Odata v2是异步的,如果您使用普通的odata模型,则它是同步的,但是不推荐使用,不推荐使用。.

梦想连接
3楼-- · 2020-08-25 01:11

您好,谢谢您的回答! 解决方案当然是同步调用该函数,但是我使用的是

 callFunction 

,它似乎没有同步参数

 oUnconnectModel.callFunction  ("/img/Unconnect",{
 方法:" POST",
 urlParameters:运算符,
 成功:successFuncDisconnected,
 错误:errorFunc
 }); 

还有其他想法吗?

谢谢,
Jean-Luc

ZJXianG
4楼-- · 2020-08-25 01:03

我在做

 $。ajax({url:'/sap/opu/odata/sap/ZWM_S40_UNCONNECT_SRV/',
     类型:" GET",
     beforeSend:function(xhr){xhr.setRequestHeader(" X-CSRF-Token"," Fetch");  },
     完成:function(xhr){
         var token = xhr.getResponseHeader(" X-CSRF-Token");
         $ .ajax({
             输入:" POST",
             异步:错误,
             数据类型:" json",
             数据:JSON.stringify({资源:" TDI01",Taski:" 12345"}}),
             contentType:" application/json",
             网址:"/img/sap/opu/odata/sap/ZWM_S40_UNCONNECT_SRV/?sap-client = 100",
             beforeSend:function(xhr){xhr.setRequestHeader('X-CSRF-Token',token);},//为请求设置令牌
             成功:功能(数据){
                 console.log("注销完成2");
             },
             错误:函数(xhr,textStatus,errorMessage){
                 console.log("注销因错误而完成");
                 console.log(errorMessage);
             }
         }); //结束ajax
     }//结束完成
    }); //结束获取令牌
 

似乎可以通过UI处理,但是我得到了

 405不允许的方法

,这可能是因为缺少函数名

/Unconnect 

类似于

 oUnconnectModel.callFunction("/img/Unconnect" 

我要调用的函数的名称?

bbpeas
5楼-- · 2020-08-25 01:23

你好,

您可以在URI的末尾添加函数的名称。

如您在请求中看到的,函数import是用

调用的

url:<函数名称>?parameter1 =''¶meter2=''&...

一周热门 更多>