Search code examples
entitybatch-processingcrudsapui5

SAPUI5 - Batch Operations - how to do it right?


I got multiple EntititySets which I want to update in my SAP Backend, therefore I fetch my data (payload) as JSON and put it in a request (its successfully in the node "data"):

Code:

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();

My Request looks like this:

enter image description here

Where should it arrive in SAP (which method)? What am I doing wrong, there is no error anywhere, but no call arrived in my backend... Glad about every hint! Thanks.

Working example with reduced complexity:

var oEntry = {};
oEntry.MyId = "00000001";
oEntry.Value = "300";

batchChanges.push(oModel.createBatchOperation("MyEntitySet", "POST", oEntry, null));
oModel.addBatchChangeOperations(batchChanges); 
oModel.setUseBatch(true);
oModel.submitBatch();

For the record, method calls:

  • 1) /IWBEP/IF_MGW_CORE_SRV_RUNTIME~CHANGESET_BEGIN: SAP Proposal EXIT.
  • 2) /iwbep/if_mgw_appl_srv_runtime~create_entity. (n-times) // do your stuff with the entity
  • 3) /iwbep/if_mgw_core_srv_runtime~changeset_end: SAP Proposal COMMIT WORK.

Solution

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

    In case you need set a breakpoint in backend for batch operations, just set a break point in method CHANGESET_BEGIN or CHANGESET_END.