2017-05-04 8 views
0

SAP 데이터 게이트웨이 서비스에 일부 데이터를 보내려고합니다. 이 코드를 example "저장"하는 방법을 사용하고 있지만 코드에서 "OData is not defined"오류가 발생합니다.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.define(['sap/ui/thirdparty/datajs'], function(datajs){...})).

나중에 편집 : jQuery.sap.require("sap.ui.model.odata.datajs"); 호출을 사용할 수도 있지만 모듈이 거기에서 이동하여 효과적으로 새 위치로 리디렉션됩니다.

+0

datajs-1.0.1.min.js를 다운로드하고 내 디렉토리에 넣고 index.html에 넣으십시오. 맞습니까? –

+0

데이터 킷을 별도로 다운로드 할 필요가 없습니다. 대답에서 언급했듯이 "이 라이브러리 **는 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를 donwload하고 내 디렉토리에 넣고 index.html에 포함 시키십시오. 맞습니까? –