SAPUI5 - 批处理操作 - 如何正确执行?

时间:2014-10-27 06:48:33

标签: entity batch-processing crud sapui5

我有多个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();

我的请求如下:

enter image description here

它应该在哪里到达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();

对于记录,方法调用:

  • 1)/ IWBEP / IF_MGW_CORE_SRV_RUNTIME~CHANGESET_BEGIN:SAP Proposal EXIT。
  • 2)/ iwbep / if_mgw_appl_srv_runtime~create_entity。 (n次)//做你的 实体的东西
  • 3)/ iwbep / if_mgw_core_srv_runtime~changeset_end:SAP Proposal COMMIT WORK。

2 个答案:

答案 0 :(得分:4)

oModel.addBatchChangeOperations(batchChanges);
oModel.setUseBatch(true);

如果您需要在后端为批处理操作设置断点,只需在方法CHANGESET_BEGINCHANGESET_END中设置断点。

答案 1 :(得分:1)

发布sap.ui.model.odata.v2.ODataModel

的POST代码

"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将响应合并为一个。