cancel
Showing results for 
Search instead for 
Did you mean: 

oData submitChanges to update entry with result

ketann
Participant
0 Kudos

Hello Experts,

i'm using the oData submitChanges method in my UI5 component.

In case of update entry, I want the result back which we will be displayed in the table.

How can i get it?

I have updated response in Odata method as shown below.

    LOOP AT  it_changeset_request INTO ls_changeset_request..
lo_delete_context ?= ls_changeset_request-request_context.
ls_changeset_response-operation_no = ls_changeset_request-operation_no.

ls_changeset_request-entry_provider->read_entry_data( IMPORTING es_data = ls_stravelag_key ).

APPEND ls_stravelag_key TO lt_cats.

ls_stravelag_key-date4 = 'WITH'.

copy_data_to_ref(
EXPORTING
is_data = ls_stravelag_key
CHANGING
cr_data = ls_changeset_response-entity_data ).
APPEND ls_stravelag_key TO gt_bulk_tab.

APPEND VALUE #( operation_no = ls_changeset_response-operation_no
headers = ls_changeset_request-request_headers
entity_data = ls_changeset_response-entity_data ) TO ct_changeset_response.

ENDLOOP.

Controller Code :

            Press_check: function (oEvt) {
                //  var oModel = this.getView().byId("Table3").getModel();
                var oModel = new sap.ui.model.odata.v2.ODataModel("/sap/opu/odata/SAP/ZKP_CAT2_V1_SRV_05")
                var mParameters = {};
                var oData = {};
                var oTable = this.getView().byId("Table3");
                var selectedItems = oTable.getRows();
                var groupId = "CheckGroup";
                oModel.setDeferredGroups([groupId]);
                for (var i = 0; i < selectedItems.length; i++) {
                    mParameters.groupId = groupId;
                    // var item = selectedItems[i].getBindingContext().getObject();
                    //  oTable.getRows()[3].getCells()[1].mProperties.value
                    var Cells = oTable.getRows()[i].getCells();
                    if (Cells[4].mProperties.value == '') {
                        var Date03 = 'NA'
                    }
                    else {
                        var Date03 = Cells[4].mProperties.value
                    }
                    oData.Date04 = 'TP';
                    oModel.sDefaultUpdateMethod = sap.ui.model.odata.UpdateMethod.Put // manifest
                    var relpath =
                        "/GetBulkSet(" +
                        "Employeenumber=" +
                        "'" +
                        Employeenumber +
                        "'" +
                        "," +
                        "WbsElement=" +
                        "'" +
                        Cells[0].mProperties.value +
                        "'" +
                        "," +
                        "Date03=" +
                        "'" +
                        Date03 +
                        "'" +
                        ")";

                    // oModel.remove(relpath, mParameters);
                    oModel.update(relpath, oData, mParameters);
                }

                oModel.submitChanges({

                    success: function (oData, oResponse) {

                        var bStatusExists = "response" in oResponse.data.__batchResponses[0];
                        if (oData.__batchResponses[0].message === 'HTTP request failed') {
                            sap.m.MessageBox.error(JSON.parse(oData.__batchResponses[0].response.body)["error"]["message"]["value"], {
                                title: "Error",
                                initialFocus: null
                            });
                        }
                        else {

                            sap.m.MessageBox.success(JSON.parse(oResponse.data.__batchResponses[0].__changeResponses[0].headers['sap-message']).message, {
                                title: "Success",
                                initialFocus: null
                            });

                        }
                    },
                    error: function (oError) {
                        sap.m.MessageBox.error(JSON.parse(oError.responseText)["error"]["message"]["value"], {
                            title: "Error",
                            initialFocus: null
                        });
                    },
                    groupId: groupId,
                });
                // start  calling get entity 
                //this.getView().byId("Table3").getBinding(); 
                // end 

            }

Please share reference code of Odata method and controller.

Regards

KP

Accepted Solutions (0)

Answers (1)

Answers (1)

Marian_Zeis
Active Contributor

Maybe just try to refresh the binding like:

sap.m.MessageBox.success(JSON.parse(oResponse.data.__batchResponses[0].__changeResponses[0].headers['sap-message']).message, {
                title: "Success",
                initialFocus: null
            });
            
// rebind the table to its OData source after the submitChanges() call
oTable.getBinding("rows").refresh();
ketann
Participant
0 Kudos
Sorry for the delay in replying, but this is also not working. I would like to update a few columns from the backend that need to be updated on the front end.  Please share any alternative way to achieve this