可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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
My Request looks like this:
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.
回答1:
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.
回答2:
Post my POST code for 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 });
Actually, v2.ODataModel will useBatch by default, use update()/create()/delete() without setDeferredGroups() and submitChanges() is OK. But in that way, I will get callback for each request, I use submitChanges to merge the responses to one.