cancel
Showing results for 
Search instead for 
Did you mean: 

Update entity not getting triggered in ABAP work bench

Former Member
0 Kudos

Hi Experts,

i have a scenario where i am trying to get the values from oData service which i am successfully able to get in FIORI app, but when i try to update some value in app and trying to SAVE it i am getting the below error...

GET

PUT

Response error--

<?xml version="1.0" encoding="utf-8"?><error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><code>SY/530</code><message xml:lang="en">Inline component is not defined or not allowed (HTTP PUT)</message><innererror><transactionid>C13C5AE6F199F1EBBE730050569C4F03</transactionid><timestamp>20160804121248.8830000</timestamp><Error_Resolution><SAP_Transaction>Run transaction /IWFND/ERROR_LOG on SAP NW Gateway hub system and search for entries with the timestamp above for more details</SAP_Transaction><SAP_Note>See SAP Note 1797736 for error analysis (https://service.sap.com/sap/support/notes/1797736)</SAP_Note></Error_Resolution><errordetails/></innererror></error>

This is my code for my save Button Function.

function PostDoc2(){

      hdpage.setBusy(true);

      itmpage.setBusy(true);

      matnrpage.setBusy(true);

      vendpage.setBusy(true);

   var serviceURI = url+"/sap/opu/odata/sap/ZPO_CHG_SRV/PO_HEADER_SET('"+txt_PrevPO.getValue()+"')?$expand=PO_Navigation/POCOND_NAVI";

      OData.request({ requestUri: serviceURI,

                   headers:{"X-Requested-With": "XMLHttpRequest",

                                "Content-Type": "application/atom+xml",

                                "DataServiceVersion": "2.0",

                                "X-CSRF-Token":"Fetch"   },

                   method : "GET",

                user: "xyz",

                password: "123" ,

                recognizeDates: true,

              },

                         function (data, response){

                           console.log('DATA >>',data);

                           console.log('RESPONSE >>',data);

                           stat = 0;

                           check_fields ();

                           if (stat == 1) {

                    hdpage.setBusy(false);

                    itmpage.setBusy(false);

                    matnrpage.setBusy(false);

                    vendpage.setBusy(false);

              } else {

                     header_xcsrf_token = response.headers['x-csrf-Token'];

                var PostReq = "http://000.000.00.000:0000/sap/opu/odata/sap/ZPO_LGWZ_CHG_SRV/PO_HEADER_SET('"+txt_PrevPO.getValue()+"')";

              

                  var PostData = new sap.ui.model.json.JSONModel();

                  var LineItmArr = [] , POCOND_NAVI = [], results = [];

                  var LinesLength = oModel.oData.modelData.length;

                  var PricLength = aCondData2.length;

                  for (i = 0; i < LinesLength; i++){

                    results = [];

                    for (j = 0; j < aCondData2.length; j++){

                      var innerdata = aCondData2[j];

                      for (k = 0; k < innerdata.length ; k++){

                        if (oModel.oData.modelData[i]['LineItem'] == innerdata[k]['LineItem']) {

                          if (innerdata[k]['condtype'] !== '' && innerdata[k]['condval'] !== '') {

                            results.push({

                              ChangeId : '',

                              CondPUnt : '1',

                              CondStNo : '001',

                              CondType: innerdata[k]['condtype'],

                              CondValue: innerdata[k]['condval'],

                              ConditionNo : '',

                              Currency: currency.getValue(),

                              Exppurchaseorder : '',

                              ItmNumber : innerdata[k]['LineItem'],

                              PoItem : innerdata[k]['LineItem']

                            });

                          }

                          else{

                            results.push({

                              ChangeId : '',

                              CondPUnt : "0",

                              CondStNo : '',

                              CondType: innerdata[k]['condtype'],

                              CondValue: "0.000000000",

                              ConditionNo : '',

                              Currency: currency.getValue(),

                              Exppurchaseorder : '',

                              ItmNumber : innerdata[k]['LineItem'],

                              PoItem : innerdata[k]['LineItem']

                            });

                          }

                        }

                      }

                    }

                    checkMandatory();

                    if (stat == 1) {

                        hdpage.setBusy(false);

                        itmpage.setBusy(false);

                        matnrpage.setBusy(false);

                        vendpage.setBusy(false);

                    }

                    else {

                      var delvformat = '';

                      if (oModel.oData.modelData[i]['delvdate'] !== '') {

                        jQuery.sap.require("sap.ui.core.format.DateFormat");

                        var oDateFormat = sap.ui.core.format.DateFormat.getDateTimeInstance({pattern: "yyyy/MM/dd"});

                        var dateTemp = oModel.oData.modelData[i]['delvdate'];

                        delvformat = oDateFormat.format(new Date(dateTemp));

                      }

                      oModel.oData.modelData[i]['AccAss'] = oModel.oData.modelData[i]['AccAss'].replace(/\s/g,'');  // Remove spaces

                      oModel.oData.modelData[i]['matgroup'] = oModel.oData.modelData[i]['matgroup'].replace(/\s/g,'');  // Remove spaces

                      oModel.oData.modelData[i]['gl'] = oModel.oData.modelData[i]['gl'].replace(/\s/g,''); // Remove Space

                      oModel.oData.modelData[i]['coststr'] = oModel.oData.modelData[i]['coststr'].replace(/\s/g,''); // Remove Space

                      oModel.oData.modelData[i]['copamat'] = oModel.oData.modelData[i]['copamat'].replace(/\s/g,''); // Remove Space

                      oModel.oData.modelData[i]['copacust'] = oModel.oData.modelData[i]['copacust'].replace(/\s/g,''); // Remove Space

                      oModel.oData.modelData[i]['material'] = oModel.oData.modelData[i]['material'].replace(/\s/g,''); // Remove Space

                      oModel.oData.modelData[i]['netprice'] = oModel.oData.modelData[i]['netprice'].replace(/\s/g,''); // Remove Space

                      oModel.oData.modelData[i]['ordid'] = oModel.oData.modelData[i]['ordid'].replace(/\s/g,''); // Remove Space

                      oModel.oData.modelData[i]['plant'] = oModel.oData.modelData[i]['plant'].replace(/\s/g,''); // Remove Space

                      oModel.oData.modelData[i]['UOM'] = oModel.oData.modelData[i]['UOM'].replace(/\s/g,''); // Remove Space

                      oModel.oData.modelData[i]['POQty'] = oModel.oData.modelData[i]['POQty'].replace(/\s/g,''); // Remove Space

                      oModel.oData.modelData[i]['copaSalDoc'] = oModel.oData.modelData[i]['copaSalDoc'].replace(/\s/g,''); // Remove Space

                      LineItmArr.push({

                        Acctasscat : oModel.oData.modelData[i]['AccAss'],

                        ChangeId : '',

                        CondPUnt : "0",

                        CondStNo : '',

                        CondType : '',

                        CondValue : "0.000000000",

                        Copa_Material : oModel.oData.modelData[i]['copamat'],

                        Costcenter : oModel.oData.modelData[i]['coststr'], // cc

                        Customer : oModel.oData.modelData[i]['copacust'],

                        DelDatcatExt : '',

                        DeleteInd : '',

                        DeliveryDate : delvformat,

                        Exppurchaseorder : '',

                        GlAccount : oModel.oData.modelData[i]['gl'], // gl

                        Material : oModel.oData.modelData[i]['material'],

                        MatlGroup : oModel.oData.modelData[i]['matgroup'],

                        NetPrice : oModel.oData.modelData[i]['netprice'],

                        Orderid : oModel.oData.modelData[i]['ordid'],  // oi

                        POCOND_NAVI : results,

                        PeriodIndExpirationDate : '',

                        Plant : oModel.oData.modelData[i]['plant'],

                        PoItem : oModel.oData.modelData[i]['LineItem'],

                        PoUnit : oModel.oData.modelData[i]['UOM'],

                        Quantity : oModel.oData.modelData[i]['POQty'],

                        SalesDoc : oModel.oData.modelData[i]['copaSalDoc'],

                        ShortText : oModel.oData.modelData[i]['shorttext'],

                        StgeLoc : oModel.oData.modelData[i]['SrorageLocation'],

                        TaxCode : oModel.oData.modelData[i]['taxcode'],

                        TextId : 'F01',

                        TextLine : oModel.oData.modelData[i]['itmtext']

                      });

                      PostData = {

                          "CompCode" : ComCode.getValue(),

                          "CompCodeX" : "",

                          "CreatedBy" : createdby.getValue(),

                          "CreatedByX" : "",

                          "Currency" : currency.getValue() ,

                          "CurrencyX" : "",

                          "DeleteInd" : "",

                          "DeleteIndX" : "",

                          "DocType" : oDropd1.getValue().substr(0, 4),

                          "DocTypeX" : "",

                          "ExchRate": exrate.getValue() ,

                          "Exppurchaseorder": " ",

                          "Langu": "E",

                          "LanguX": "",

                          "Msg": "" ,

                          "PoNumber": ""  ,

                          "PurGroup": PurGrp.getValue(),

                          "PurGroupX": "" ,

                          "PurchOrg": PurOrg.getValue(),

                          "PurchOrgX": "",

                          "Return_Msg": ""  ,

                          "Text_ID": ""   ,

                          "Text_Line": hText.getValue(),

                          "Vendor" : txt_vendor.getValue()  ,

                          "VendorX" : "" ,

                          "hTextNote" : hTextNote.getValue(),

                          "CondNbtval" : CONDNBT.getValue(),

                     

                          "PO_Navigation": LineItmArr

                        };

                    }

                  }

                  //oData POst

                  if (stat == 1) {

                  } else {

                    // Check oData Format is OK

                    var chk_lngth, chk_cond ;

                    chk_lngth = '';

                    chk_lngth = PostData.PO_Navigation.length;

                    for (k = 0; k < PostData.PO_Navigation.length; k++){

                      chk_cond = '';

                      chk_cond = PostData.PO_Navigation[k].POCOND_NAVI.length;

                      if (chk_cond == 0) {

                        PostData.PO_Navigation[k].POCOND_NAVI.push({

                          ChangeId : '',

                          CondPUnt : "0",

                          CondStNo : '',

                          CondType: '',

                          CondValue: "0.000000000",

                          ConditionNo : '',

                          Currency: currency.getValue(),

                          Exppurchaseorder : '',

                          ItmNumber : '',

                          PoItem : ''

                        });

                      }

                    }

                    //sap.m.MessageToast.show('LOG FOR xcsrf >>',header_xcsrf_token);

                    console.log('POST DATA >>',PostData);// PostData-- getting values from textfield in UI

                    console.log('LINEITEMARRAY >>',LineItmArr);// attributes loadded in variables array

                    console.log('POST REQ >>',PostReq);// this is the URL-- PostReq

                    OData.request({

                        requestUri: PostReq,   // this is the URL-- PostReq

                        method: "PUT",

                              headers: {    "X-Requested-With": "XMLHttpRequest",

                                             "Content-Type": "application/atom+xml",

                                             "DataServiceVersion": "2.0",

                                             "Accept": "application/atom+xml,application/atomsvc+xml,application/xml",

                                             "X-CSRF-Token": header_xcsrf_token

                                             },

                          user: "xyz",

                          password: "123",

                          data : PostData, // PostData-- getting values from textfield in UI

                       

                      },

                      function (data, response){

                      console.log('Data POST Resp:l-',data, response);

                        hdpage.setBusy(false);

                        itmpage.setBusy(false);

                        matnrpage.setBusy(false);

                        vendpage.setBusy(false);

                        if(data['Msg'] == 'E'){

                            tptext.setText(data['Return_Msg']);

                            tptext.setDesign("Bold");

                            tp1.addStyleClass("colorRedText");

                            tp1.setTitle("Error in Posting Document ");

                            tp1.open(sap.ui.core.Popup.Dock.BeginCenter, sap.ui.core.Popup.Dock.RightTop);

                        }else{

                            tptext.setText(data['Return_Msg']);

                            tptext.setDesign("Bold");

                            tp1.setTitle("PO Doc # : " + data['Exppurchaseorder']);

                            tp1.open(sap.ui.core.Popup.Dock.BeginCenter, sap.ui.core.Popup.Dock.RightTop);

                            tp1.addStyleClass(".colorRedText");

                            clearLineitm();

                            clearPricing();

                        }

                      },

                                 function (err) {

                                   hdpage.setBusy(false);

                                   itmpage.setBusy(false);

                                   matnrpage.setBusy(false);

                                   vendpage.setBusy(false);

                                    sap.ui.commons.MessageBox.alert("Error Ocurred: " + ' ' + err.message, "", "Error", "");

                                    }

                      );  // oData POST Request

                  }

                }

                         },

                         function (err) {

                           hdpage.setBusy(false);

                           itmpage.setBusy(false);

                           matnrpage.setBusy(false);

                           vendpage.setBusy(false);

                            sap.ui.commons.MessageBox.alert("Error Ocurred: " + ' ' + err.message, "", "Error", "");

                            });

    }

Please point me out my mistake where it going wrong... Thanks in advance

Accepted Solutions (0)

Answers (1)

Answers (1)

former_member203031
Contributor
0 Kudos

HI Deepak,

To update please use the following code it will be simple than odata.request method.

previously i also used the same then shifted to this became simple.

var oModel = new sap.ui.model.odata.ODataModel(url,true)

oModel.update('/PATH', postdata, null,

function()

{

  alert("Update successful");

  },

function(){

alert("Update failed");

}

);

If you don't understand this please follow the link given below:

OData Write Support - UI Development Toolkit for HTML5 (SAPUI5) - SAP Library

search for the update in this link.

Hope you will get the solution.

Thanks,

Deepak.

Former Member
0 Kudos

Dear Deepak,

I replaced the above code with my PUT operation, i am getting syntax error.

can you please tell me where exactly i have to change in the code?

so I should use the GET method or not ?

thanks ,

Deepak

former_member203031
Contributor
0 Kudos

You completely remove that ODATA.request method in the function

and paste the code which i mentioned in the previous comment.

Thanks,

Deepak.