我有多个EntititySets,我想在我的SAP Backend中更新,因此我将我的数据(有效负载)作为JSON获取并将其放入请求中(它成功地在节点&#34; data&#34;)中:< / p>
代码:
var oTreeJSON = oTreeTable.getModel().getProperty("/root");
var oModel = sap.ui.getCore().getModel();
var batchChanges = [];
for (var i = 0; i < oTreeAll.length; i++) {
batchChanges.push(oModel.createBatchOperation("/sap/opu/odata/sap/MY_SERVICE/?$batch", "POST", oTreeAll[i]));
}
oModel.submitBatch();
我的请求如下:
它应该在哪里到达SAP(哪种方法)?我做错了什么,在任何地方都没有任何错误,但我的后端没有来电......很高兴每一个提示!感谢。
降低复杂性的工作示例:
var oEntry = {};
oEntry.MyId = "00000001";
oEntry.Value = "300";
batchChanges.push(oModel.createBatchOperation("MyEntitySet", "POST", oEntry, null));
oModel.addBatchChangeOperations(batchChanges);
oModel.setUseBatch(true);
oModel.submitBatch();
对于记录,方法调用:
答案 0 :(得分:4)
oModel.addBatchChangeOperations(batchChanges);
oModel.setUseBatch(true);
如果您需要在后端为批处理操作设置断点,只需在方法CHANGESET_BEGIN
或CHANGESET_END
中设置断点。
答案 1 :(得分:1)
发布sap.ui.model.odata.v2.ODataModel
"models": {
"": {
"dataSource": "mainService",
"preload": true,
"settings" : {
"useBatch" : true,
"defaultBindingMode": "TwoWay",
"defaultCountMode" : "None",
//default is sap.ui.model.odata.UpdateMethod.Merge
"defaultUpdateMethod" : "Put"
}
}
}
var sPath = oView.getBindingContext().getPath();
oModel.setDeferredGroups(["editGroup"]);
oModel.update(sPath, oData, {groupId: "editGroup"});
oModel.update(sPath, oData2, {groupId: "editGroup"});
oModel.submitChanges({
groupId: "editGroup",
success: this.successCallback,
error: this.errorCallback
});
实际上,默认情况下,v2.ODataModel将使用“标量”,使用update()
/ create()
/ delete()
而不setDeferredGroups()
,submitChanges()
即可。但就这样,我将为每个请求进行回调,我使用submitChanges
将响应合并为一个。