使用sap.ui.model.odata.v2.ODataModel进行sapui5批处理

时间:2017-08-22 15:01:42

标签: odata sapui5

我使用JSONModel

创建了包含数据的表
    var oModel = new sap.ui.model.json.JSONModel(query);
    oTablePrio = sap.ui.getCore().getControl("idTablePrio2");
    oTablePrio.setModel(oModel, "Prio2"); 

Everythink看起来和工作都很好。

现在我添加了新列(prio),我将更改值。更改后,我想在点击按钮保存后保存每一行(在SAP ztable中)。 我做了这样的事情

var oModel = new sap.ui.model.odata.v2.ODataModel(gServiceUrl);
        oModel.setUseBatch(true);
        for (var i = 0; i < data.length; i++) {
            sEntry.Matnr = data[i].Matnr;
            sEntry.Bbynr = data[i].Bbynr;
            sEntry.Prio = data[i].Prio;

oModel.update("/WielosztSet('"+data[i].Bbynr+"')", sEntry, {
                  method: "PUT",  function(){
                alert('Data Updated Successfully');
                 location.reload(true);
                  },function(){
                        sap.m.MessageToast.show('Update failed',{duration:1000});

                  }});
}

现在只发送最后一行的数据。 我写道,我不能以这种方式更新多行,我需要批处理。 我找不到如何使用sap.ui.model.odata.v2.ODataModel

创建用于上传数据的工作批处理

请给我一些建议。

1 个答案:

答案 0 :(得分:0)

在调用oModel.update之前,将UseBatch分配为true:

$ awk -v outfile=out3 '
NR==FNR { 
    a[$0]
    next
}
($0 in a==0) {
    print $0 > outfile  # file is only opened when there is a match
}' file1 file2
$ cat out3
john

让你的:

oModel.setUseBatch(true);

在放置submitChanges的最后。

for (var i = 0; i < data.length; i++) {
            sEntry.Matnr = data[i].Matnr;
            sEntry.Bbynr = data[i].Bbynr;
            sEntry.Prio = data[i].Prio;

oModel.update("/WielosztSet('"+data[i].Bbynr+"')", sEntry, {
                  method: "PUT",  function(){
                alert('Data Updated Successfully');
                 location.reload(true);
                  },function(){
                        sap.m.MessageToast.show('Update failed',{duration:1000});

                  }});
}

问候。