cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Error while parsing an XML stream: 'BOM / charset detection failed' when deep create

Former Member
0 Likes
10,958

Hi,

I am trying to create with deep structure. When I send the request with create() method of odatamodel I get Error while parsing an XML stream: 'BOM / charset detection failed' error. Here is the full error text:

  1. <error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
    1. <code>CX_SXML_PARSE_ERROR/001560AA0E081DEB8CA398D5EBFB9406</code>
    2. <message xml:lang="tr">Error while parsing an XML stream: 'BOM / charset detection failed'.</message>
    3. <innererror>
      1. <transactionid>AB5DC6E5A878F10580CF000D3A21E04A</transactionid>
      2. <timestamp>20160129075538.5730000</timestamp>
      3. <Error_Resolution>
        1. <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>
        2. <SAP_Note>See SAP Note 1797736 for error analysis (https://service.sap.com/sap/support/notes/1797736)</SAP_Note>
        3. </Error_Resolution>
      4. <errordetails />
      5. </innererror>
    4. </error>

Here is my SAPUI5 code:



onDefaultHataSavePress : function(oEvent) {

  var errorFlag = false;

  var dhChild = [];

  var oDHLstItems = this.getView().byId("dhLst").getItems();

  var oController = this;

  jQuery.each(oDHLstItems, function(i, item) {

  var oDefId = item.getBindingContext().getProperty("Zzhatano");

  var oContent = item.getContent()[0].getContent();

  var oRContent = oContent[1].getItems();

  var oFindValue = oRContent[1].getValue();

  if (oFindValue.length > 5) {

  var tmpMessage = oController.getView().getModel("i18n")

  .getResourceBundle().getText("findValLonger");

  MessageToast.show(tmpMessage, {

  width : "25em"

  });

  errorFlag = true;

  return false;

  }

  var oRBG = oRContent[0];

  var selectedRBtn = oRBG.getSelectedIndex();

  if (selectedRBtn == -1) {

  var tmpMessage = oController.getView().getModel("i18n")

  .getResourceBundle().getText("selectAll");

  MessageToast.show(tmpMessage, {

  width : "25em"

  });

  errorFlag = true;

  return false;

  }

  var oRes = "OK";

  if (selectedRBtn === 1)

  oRes = "NOK";

  else if (selectedRBtn === 2)

  oRes = "NA";

  dhChild.push({

  Kltadm : oController.dHKaliteAdm,

  Aufnr : oController.dHIsEmri,

  Dhhata : oDefId,

  Dhsonuc : oRes,

  Bulnndgr : oFindValue

  });

  });

  if (errorFlag)

  return;

  var dhHeader = {

  Kltadm : this.dHKaliteAdm,

  Aufnr : this.dHIsEmri

  }

  dhHeader.DhItem = dhChild;

  var oModel = oController.getView().getModel();

  oModel.setHeaders({

  "Content-Type" : "application/json"

  });

  oModel.create("/DhHeaderSet", dhHeader, null, function() {

  var tmpMessage = oController.getView().getModel("i18n")

  .getResourceBundle().getText("workOrderAdded");

  MessageToast.show(tmpMessage, {

  width : "25em"

  });

  oController.getView().byId("isEmriListesiTbl").getBinding(

  "items").refresh(true);

  }, function(oError) {

  var tmpMessage = oController.getView().getModel("i18n")

  .getResourceBundle().getText("errorMsg");

  MessageToast.show(tmpMessage, {

  width : "25em"

  });

  });

Here is my deep entity:

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Likes

I figured it out. I used OData.request to solve the problem. I had to implement get_entity service.

var header_xcsrf_token;

OData

                               .request(

                                                                           {

                                                                                            requestUri : "http://xxxx:8000/sap/opu/odata/sap/ZQMGEN_001_SRV/DhHeaderSet(Aufnr='0',Kltadm='0')",

                                                                                            method : "GET",

                                                                                            headers : {

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

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

                                                                                                                       "DataServiceVersion" : "2.0",

                                                                                                                       "X-CSRF-Token" : "Fetch"

                                                                                            }

                                                                           },

                                                                           function(data,

                                                                                                                       response) {

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

                                                                                            OData

                                                                                                                                       .request(

                                                                                                                                                                                   {

                                                                                                                                                                                                               requestUri : "http://xxxx:8000/sap/opu/odata/sap/ZQMGEN_001_SRV/DhHeaderSet/",

                                                                                                                                                                                                               method : "POST",

                                                                                                                                                                                                               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

                                                                                                                                                                                                               },

                                                                                                                                                                                                               data : dhHeader

                                                                                                                                                                                   },

                                                                                                                                                                                   function(

                                                                                                                                                                                                                               data,

                                                                                                                                                                                                                               response) {

                                                                                                                                                                                                               var tmpMessage = oController

                                                                                                                                                                                                                                                           .getView()

                                                                                                                                                                                                                                                           .getModel(

                                                                                                                                                                                                                                                                                                       "i18n")

                                                                                                                                                                                                                                                           .getResourceBundle()

                                                                                                                                                                                                                                                           .getText(

                                                                                                                                                                                                                                                                                                       "dhSucc");

                                                                                                                                                                                                               MessageToast

                                                                                                                                                                                                                                                           .show(

                                                                                                                                                                                                                                                                                                       tmpMessage,

                                                                                                                                                                                                                                                                                                       {

                                                                                                                                                                                                                                                                                                                        width : "25em"

                                                                                                                                                                                                                                                                                                       });

                                                                                                                                                                                                               oController.onNavBack();

                                                                                                                                                                                   },

                                                                                                                                                                                   function(

                                                                                                                                                                                                                               err) {

                                                                                                                                                                                                               var tmpMessage = oController

                                                                                                                                                                                                                                                           .getView()

                                                                                                                                                                                                                                                           .getModel(

                                                                                                                                                                                                                                                                                                       "i18n")

                                                                                                                                                                                                                                                           .getResourceBundle()

                                                                                                                                                                                                                                                           .getText(

                                                                                                                                                                                                                                                                                                       "errorMsg");

                                                                                                                                                                                                               MessageToast

                                                                                                                                                                                                                                                           .show(

                                                                                                                                                                                                                                                                                                       tmpMessage,

                                                                                                                                                                                                                                                                                                       {

                                                                                                                                                                                                                                                                                                                        width : "25em"

                                                                                                                                                                                                                                                                                                       });

                                                                                                                                                                                   });

                                                                           },

                                                                           function(err) {

                                                                                            var tmpMessage = oController

                                                                                                                                       .getView()

                                                                                                                                       .getModel(

                                                                                                                                                                                   "i18n")

                                                                                                                                       .getResourceBundle()

                                                                                                                                       .getText(

                                                                                                                                                                                   "errorMsg");

                                                                                            MessageToast

                                                                                                                                       .show(

                                                                                                                                                                                   tmpMessage,

                                                                                                                                                                                   {

                                                                                                                                                                                                               width : "25em"

                                                                                                                                                                                   });

                                                                           });

Answers (0)