2017-05-04 56 views
0

我想发送一些数据到SAP网关服务。 我用这example方法“拯救”,但是当我尝试做在我的代码我得到一个错误“没有定义的OData”SAPUI5 - OData未定义

下面是方法,当我尝试这样做。

 handleConfirmationMessageBoxPress: function(oEvent) { 
     var bCompact = !!this.getView().$().closest(".sapUiSizeCompact").length; 
     MessageBox.confirm(
      "Deseja confirmar a transferência?", { 
       icon: sap.m.MessageBox.Icon.SUCCESS, 
       title: "Confirmar", 
       actions: [sap.m.MessageBox.Action.OK, sap.m.MessageBox.Action.CANCEL], 
       onClose: function(oAction) { 
        if (oAction == "OK") { 
         var oParameters = {}; 
         oParameters.loginfrom = this.getView().byId("multiInput").getValue(); 
         oParameters.loginfrom = this.getView().byId("loginPara").getValue(); 
         oParameters.loginfrom = this.getView().byId("datade").getValue(); 
         oParameters.loginfrom = this.getView().byId("datapara").getValue(); 

         OData.request({ 
          requestUri : "http://<host name>:<port no>/sap/opu/odata/sap/ZMM_EMP_SRV/EmployeeSet", 
          method : "GET", 
          headers : {...} 
             }, 
             function(data, response) { 
               ... 
                var oHeaders = { 
             ... }; 
          OData.request({ 
                requestUri : "http://<host name>:<port no>/sap/opu/odata/sap/ZMM_EMP_SRV/EmployeeSet", 
                method : "POST", 
                headers : oHeaders, 
                data:oParameters 
             }, 
                function(data,request) { 
                MessageToast.show("Transferência realizada!");  
                location.reload(true); 
             },   function(err) { 
                MessageToast.show("A transferência falhou!"); 
             }); 
          }, function(err) { 
                var request = err.request; 
                var response = err.response; 
                alert("Error in Get — Request " + request + " Response " + response); 
             }); 


        } else { 
         ... 
+0

X未定义通常意味着给定变量X仍未定义。您必须正确初始化您的OData变量。可悲的是,在阅读你的例子之后,我不知道作者在想什么......也许OData在他的例子中是一些全局变量? – Marc

回答

0

您正试图从datajs库中使用OData全局对象。这个库确实附带了OpenUI5,但是IMO不应该直接使用它(但是使用OData model的方法;并不能保证UI5将来会继续发布这个第三方库)。

您很可能会收到错误,因为该库尚未被UI5加载。图书馆通常由UI5懒惰地加载,所以你将不得不请求UI5为你加载它(在你已经链接的教程中,它由OData模型在后台加载)。要做到这一点,您可以使用jQuery.sap.require(jQuery.sap.require(“sap.ui.thirdparty.datajs”))或在控制器的开头(例如sap.ui.define(['sap/ui/thirdparty/datajs'], function(datajs){...}))列出您在sap.ui.define调用中的依赖关系。

稍后编辑:您也可以使用jQuery.sap.require("sap.ui.model.odata.datajs");调用,但是模块已从此处移动,它将有效地将您重定向到新位置。

+0

我下载datajs-1.0.1.min.js,放在我的目录中并包含在我的index.html中,因此它可以工作。 它正确吗? –

+0

你不需要单独下载datajs。正如我在答案中提到的那样,“这个库**使用OpenUI5发布**”。这意味着默认情况下,UI5内部具有库,但只在需要时才加载,或者请求它。要请求它,您可以按照答案中的说明使用require/define调用。 –

+0

谢谢Serban,我理解并解决它 –

0

这是一个非常古老的例子,并使用旧的技术。 你应该加入这一行代码:

jQuery.sap.require("sap.ui.model.odata.datajs"); 

这应该解决您的OData是不确定的问题。 一般来说,您应该阅读使用odata模型的read()函数的更新示例。

+0

我把datajs-1.0.1.min.js加载到我的目录中,并包含在我的index.html中,因此它可以工作。 它正确吗? –