我有一个带有XSA的SAP HANA Express服务器,我创建了一个带有DB和NodeJS模块的MTA应用程序,在NodeJS模块中我创建了一个连接到数据库模块的.xsodata。
XSOdata定义:
service {
//Definición de servicios
"SISGASTOS"."CATEGORIA" as "Categoria"
create events ( before "movilidad.rindegastos:Informe.xsjslib::crear_categoria");
"SISGASTOS"."ESTADO" as "Estado"
create events ( before "movilidad.rindegastos:Informe.xsjslib::crear_estado");
"SISGASTOS"."PROYECTO" as "Proyecto"
create events ( before "movilidad.rindegastos:Informe.xsjslib::crear_proyecto");
"SISGASTOS"."TIPO_DOCUMENTO" as "TipoDoc"
create events ( before "movilidad.rindegastos:Informe.xsjslib::crear_tipo_documento");
"SISGASTOS"."INFORME" as "Informe"
navigates ("Informe_Comentario" as "Comentarios", "Informe_Proyecto" as "Proyecto", "Informe_Estado" as "Estado","Informe_Gasto" as "Gastos", "Informe_Hist" as "Info_Historial")
create events ( before "movilidad.rindegastos:Informe.xsjslib::crear_informe");
"SISGASTOS"."HIST_INFORME" as "Hist_Informe"
navigates ("Hist_Informe_Estado" as "Estado")
create events ( before "movilidad.rindegastos:Informe.xsjslib::crear_hist_informe");
"SISGASTOS"."COMENTARIO_INFORME" as "ComentarioInforme";
// create events ( before "movilidad.rindegastos:Informe.xsjslib::crear_comentario_informe");
"SISGASTOS"."GASTO" as "Gasto"
navigates ("Gasto_Categoria" as "Categoria", "Gasto_TipoDoc" as "TipoDoc", "Gasto_Estado" as "Estado", "Gasto_Comentario" as "Comentarios", "Gasto_Anexo" as "Anexos", "Gasto_Hist" as "Gasto_Historial")
create events ( before "movilidad.rindegastos:Informe.xsjslib::crear_gasto");
"SISGASTOS"."HIST_GASTO" as "Hist_Gasto"
navigates ("Hist_Gasto_Estado" as "Estado")
create events ( before "movilidad.rindegastos:Informe.xsjslib::crear_hist_gasto");
"SISGASTOS"."COMENTARIO" as "Comentario"
create events ( before "movilidad.rindegastos:Informe.xsjslib::crear_comentario");
"SISGASTOS"."ANEXO" as "Anexo"
create events ( before "movilidad.rindegastos:Informe.xsjslib::crear_anexo");
//Asociacion Historiales
association "Hist_Gasto_Estado"
principal "Hist_Gasto"("ID_ESTADO") multiplicity "1"
dependent "Estado"("ID_ESTADO") multiplicity "1";
association "Hist_Informe_Estado"
principal "Hist_Informe"("ID_ESTADO") multiplicity "1"
dependent "Estado"("ID_ESTADO") multiplicity "1";
//Asociacion Informe
association "Informe_Comentario"
principal "Informe"("ID_INFORME") multiplicity "1"
dependent "ComentarioInforme"("ID_INFORME") multiplicity "*";
association "Informe_Proyecto"
principal "Informe"("ID_PROYECTO") multiplicity "1"
dependent "Proyecto"("ID_PROYECTO") multiplicity "1";
association "Informe_Estado"
principal "Informe"("ID_ESTADO") multiplicity "1"
dependent "Estado"("ID_ESTADO") multiplicity "1";
association "Informe_Gasto"
principal "Informe"("ID_INFORME") multiplicity "1"
dependent "Gasto"("ID_INFORME") multiplicity "*";
association "Informe_Hist"
principal "Informe"("ID_INFORME") multiplicity "1"
dependent "Hist_Informe"("ID_INFORME") multiplicity "*";
//Asociación Gasto
association "Gasto_Categoria"
principal "Gasto"("ID_CATEGORIA") multiplicity "1"
dependent "Categoria"("ID_CATEGORIA") multiplicity "1";
association "Gasto_TipoDoc"
principal "Gasto"("ID_TIPO_DOCUMENTO") multiplicity "1"
dependent "TipoDoc"("ID_TIPO_DOCUMENTO") multiplicity "1";
association "Gasto_Estado"
principal "Gasto"("ID_ESTADO") multiplicity "1"
dependent "Estado"("ID_ESTADO") multiplicity "1";
association "Gasto_Comentario"
principal "Gasto"("ID_GASTO") multiplicity "1"
dependent "Comentario"("ID_GASTO") multiplicity "*";
association "Gasto_Anexo"
principal "Gasto"("ID_GASTO") multiplicity "1"
dependent "Anexo"("ID_GASTO") multiplicity "*";
association "Gasto_Hist"
principal "Gasto"("ID_GASTO") multiplicity "1"
dependent "Hist_Gasto"("ID_GASTO") multiplicity "*";
}
我们使用更新操作从SAPUI5应用程序调用该服务。
submitChanges: function() {
this.getView().getModel("oModelDialogo").setProperty("/busy", true);
this.getView().getModel().submitChanges({
success: function(oResult) {
this.getView().getModel("oModelDialogo").setProperty("/busy", false);
console.log(oResult);
}.bind(this),
error: function(oError) {
this.getView().getModel("oModelDialogo").setProperty("/busy", false);
console.log(oError);
}.bind(this)
});
},
但回复未实施501:
--batch_1523471867867_0
Content-Type: application/http
Content-Transfer-Encoding: binary
HTTP/1.1 501 Not Implemented
Content-Type: application/json;charset=utf-8
{"error":{"code":501,"message":{"lang":"en-US","value":"Not implemented"}}}
读取,创建和删除操作正常,只有更新操作有问题。
编辑:
作为0x17推荐我更改清单文件中的defaultUpdateMethod,如下所示:
"models": {
"i18n": {
"type": "sap.ui.model.resource.ResourceModel",
"settings": {
"bundleName": "Adjuntos.i18n.i18n"
}
},
"": {
"dataSource": "mainService",
"preload": true,
"settings": {
"defaultBindingMode": "TwoWay",
"defaultUpdateMethod": "sap.ui.model.odata.UpdateMethod.Put"
}
}
},
随着更新请求的工作!感谢。
答案 0 :(得分:1)
你能来吗?检查在更新操作期间发送的完整请求标头?我想如果请求方法设置为MERGE
,就会发生这种情况我假设您正在使用ui5应用中的OData V2模型。但是,在HANA xsa版本(基于Cloudfoundry)OData V2 API中,默认情况下不支持MERGE。
您可以将defaultUpdateMethod设置为PUT(在manifest.json中)并重试吗?您也可以在控制器代码中更改相同的内容
SCP Neo与SAP XSA(基于cloudfoundry)中的OData v2 API具有细微差别。后者在V2 API方面并不像前者那样强大,但它正逐渐倾向于使用OData V4 API(这很好)