SAPUI5批量提交返回错误

SAPUI5批量提交返回错误,sapui5,Sapui5,我正在使用以下代码,试图批量上载对表所做的更改: onConfirmActionPressed: function() { var oModel = this.getModel(); oModel.setUseBatch(true); oModel.submitChanges(); } 我使用setProperty设置新值,如下所示: onSingleSwitchChange: function(oControlEvent) { var oModel = t

我正在使用以下代码,试图批量上载对表所做的更改:

onConfirmActionPressed: function() {
    var oModel = this.getModel();

    oModel.setUseBatch(true);

    oModel.submitChanges();
}
我使用setProperty设置新值,如下所示:

onSingleSwitchChange: function(oControlEvent) {
    var oModel = this.getView().getModel();
    var rowBindingContext = oControlEvent.getSource().getBindingContext();

    oModel.setProperty(rowBindingContext.sPath + "/Zlspr", "A");
}
当执行OnConfigurationPressed时,我得到一个服务器错误,表示SAP R3不允许在变更集处理期间进行提交工作

当我一行一行地上传表格时,效果很好。然而,这种上传方式非常慢,在某些情况下,完成上传过程需要10分钟以上


批量提交时我是否做错了什么?问题是否有可能是由于服务器R3配置错误造成的?

您需要覆盖以下方法: /IWBEP/IF\u MGW\u APPL\u SRV\u运行时~CHANGESET\u开始 /IWBEP/IF_MGW_APPL_SRV_运行时~CHANGESET_END

跟踪所有更新方法调用中的错误,如果一切正常,则在变更集中结束对数据库执行提交

编辑:

澄清:

在SAP Gateway中的数据提供程序类扩展中,您需要找到您的YOURENTITY\u UPDATE\u ENTITY方法并删除任何提交工作语句

然后需要重新定义/IWBEP/IF_MGW_APPL_SRV_RUNTIME~CHANGESET_BEGIN方法和,这是在任何批处理操作之前激发的方法。您可以定义一个类属性,比如表mt\u batch\u errors,在这个方法中它将被清空

当您使用oModel.submitChanges发布UI5中的批处理更改时,对实体的所有单个更改都将定向到适当的…\u UPDATE\u实体方法。您需要跟踪任何可能的错误,如果出现任何错误,请填写mt_batch_errors表

更新所有实体后/IWBEP/IF_MGW_APPL_SRV_RUNTIME~CHANGESET_END方法被激发,在该方法中,如果批处理过程中发生任何错误,您可以检查mt_batch_errors表。若有错误,那个么您可能应该回滚工作,若并没有,那个么您可以自由地提交工作

这只是一个如何做到这一点的例子,我很好奇其他的建议


祝你好运

非常感谢。这是非常有用的。