2017-10-19 106 views
0

我试图做一个oData创建复选框按下并获得以下错误。不知道这是前端还是后端ABAP问题,因为在另一个项目中使用了相同的功能。SAPUI5 oData POST 500错误

它在创建部分失败,但奇怪的是仍然通过SiteId,ArticleNumber,VarianceDate &的细节已确认。

console log error

gui error log

// Set CheckBox status, X for true, blank for false 
    onVarianceChecked: function (oEvent) { 
     var oEntry = {}; 

     var bindingContext = oEvent.getSource().getBindingContext(this.MODEL_VIEW); 
     var path = bindingContext.getPath(); 
     var object = bindingContext.getModel("SI").getProperty(path); 

     // Pass in the Header fields 
     oEntry.SiteId = this.SiteId; 
     oEntry.ArticleNumber = object.ArticleNumber; 
     oEntry.VarianceDate = moment(new Date(object.VarianceDate)).format('YYYY-MM-DDTHH:mm:ss'); 

     // Set X or blank 
     if (oEvent.getParameter("selected") === true) { 
      oEntry.Confirmed = "X"; 
     } else { 
      oEntry.Confirmed = ""; 
     } 

     // Do the create 
     var oModel = this.getView().getModel("SI"); 
     oModel.create("/VarianceHeaderSet", oEntry, { 
      success: function() { 
       console.log("Variance confirmed"); 
       MessageToast.show("Variance confirmed", { 
        duration: 1000 
       }); 
      }, 
      error: function (oError) { 
       console.log("Error, variance could not be confirmed"); 
       MessageToast.show("Error, variance could not be confirmed", { 
        duration: 1000 
       }); 
      } 
     }); 
    } 

回答

1

'000000000' 是Edm.DateTime初始值,因此,当你模仿一个DateTime属性不是可空就会失败。

转到SEGW并将属性更改为“可为空”或确保始终在POST中提供正确的日期。

+0

感谢您的回复。我明天将在开始工作时提及给ABAP开发人员,我只是UI5前端人员:) 我们的确发现了类似的答案,但我的ABAP人却说它不能设置为可以为空,因为它是一个主键?不知道为什么,但我会随身携带,谢谢。 – Scott

+0

@Scott键字段不能设置为空。您必须在前端验证日期字段。或者,您可以在传递到后端时发送默认日期值。 –