2017-05-04 55 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中,因此它可以工作。 它正確嗎? –