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

SEGW: reflect boolean Data Element change of domain (e.g. XFIELD to XFELD)

Sandra_Rossi
Active Contributor
0 Kudos
422

Hello all,

I have an entity type with its properties imported from a DDIC structure, I have generated everything correctly.

I have an error in /IWFND/GW_CLIENT on a POST request with JSON body: CX_SXML_PARSE_ERROR/001560AA0E081DEB8CA398CC1690D406 "Error while parsing an XML stream" (French: "Erreur lors de l'analyse d'un flux XML")

Sandra_Rossi_0-1741785989538.png

The exception is raised by the method READ_SIMPLE_PROPERTY_VALUE of /IWCOR/CL_DS_EP_READER_JSON, if I understand well, it considers that the entity type property XXXX is of type Edm.String but the value in the request body is boolean ("XXXX":true).

I don't know why it considers the property XXXX as type Edm.String because it's defined as Edm.Boolean (it's what I want). There's no SEGW conversion warning about it.

So, maybe the issue is about the domain XFIELD.

Sandra_Rossi_1-1741786496832.png

Sandra_Rossi_2-1741786592262.png

As I can see in the SAP OData documentation (ABAP Dictionary Type to EDM.Type Mapping), a boolean should not be XFIELD.

So, I've changed it from XFIELD to XFELD and I regenerated the OData service.

I restarted /IWFND/GW_CLIENT, I cleared the backend buffer:

Sandra_Rossi_3-1741787517290.png

I restarted /IWFND/GW_CLIENT, tested again, but still the same error happens.

 

  1. What do you think the problem is?
  2. Is it the regeneration which doesn't detect the domain change? Should I force the regeneration of the property by changing anything for this property, e.g. change the type to Edm.String, regenerate the service, then change back to Edm.Boolean and regenerate again?
  3. There's no "hub system", there's physically only one backend system. Are there two different buffers if there's only one backend system, and should I clear "on both systems"?

Thanks a lot!

System: 7.40 SP 23

Accepted Solutions (1)

Accepted Solutions (1)

Sandra_Rossi
Active Contributor
0 Kudos

I did the following actions:

  1. In SEGW, change the property type from Edm.Boolean to Edm.String,
  2. regenerated the service,
  3. then I changed back from Edm.String to Edm.Boolean,
  4. regenerated the service again.
  5. In /IWFND/GW_CLIENT, I cleared the buffer,
  6. I tested again and that was successful.

Answers (0)