cancel
Showing results for 
Search instead for 
Did you mean: 

Generating annotations for SmartTable in XSOData

isuruwarn
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi All,

I need to write an XS OData service which will be consumed by a smart table in UI5. The UI5 smart controls require special annotations to be provided in the metadata. Can I please know how these annotations can be generated as part of the xs odata $metadata? If xsodata cannot provide this, how can we generate this metadata file? We are currently running on Hana XS Advanced (SP12).

I have already tried including the following code after the odata service definition, but this did not produce the required annotations:


annotations {

  enable OData4SAP;

}

Any help is greatly appreciated.

Thanks,

Isuru

PS - Here is a sample metadata file required by Smart Tables. Annotations are from line 28 to 45:


<?xml version="1.0" encoding="utf-8"?>

<edmx:Edmx Version="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx"

  xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:sap="http://www.sap.com/Protocols/SAPData">

  <edmx:Reference

  Uri="http://server:port/sap/opu/odata/IWFND/CATALOGSERVICE;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC..."

  xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">

  <edmx:Include Namespace="com.sap.vocabularies.UI.v1" Alias="UI"/>

  </edmx:Reference>

  <edmx:DataServices m:DataServiceVersion="2.0">

  <Schema Namespace="SmartTbl" xml:lang="de" sap:schema-version="1 " xmlns="http://schemas.microsoft.com/ado/2008/09/edm">

  <EntityType Name="Person" sap:content-version="1">

  <Key>

  <PropertyRef Name="PersonID"/>

  </Key>

  <Property Name="PersonID" Type="Edm.String" Nullable="false" sap:creatable="false" sap:updatable="false" sap:sortable="false"

  sap:filterable="false"/>

  <Property Name="FirstName" Type="Edm.String" Nullable="false" sap:visible="true" sap:creatable="false" sap:updatable="false"

  sap:sortable="false" sap:filterable="false"/>

  <Property Name="LastName" Type="Edm.String" Nullable="false" sap:visible="true" sap:creatable="false" sap:updatable="false"

  sap:sortable="false" sap:filterable="false"/>

  <Property Name="Birthday" Type="Edm.DateTime" Nullable="false" sap:visible="true" sap:creatable="false" sap:updatable="false"

  sap:sortable="false" sap:filterable="false"/>

  </EntityType>

  <EntityContainer Name="SmartTbl_Entities" m:IsDefaultEntityContainer="true" sap:supported-formats="atom json xlsx">

  <EntitySet Name="Persons" EntityType="SmartTbl.Person" sap:creatable="false" sap:updatable="false" sap:deletable="false"

  sap:pageable="false" sap:addressable="false" sap:content-version="1"/>

  </EntityContainer>

  <Annotations Target="SmartTbl.Person" xmlns="http://docs.oasis-open.org/odata/ns/edm">

  <Annotation Term="com.sap.vocabularies.UI.v1.LineItem">

  <Collection>

  <Record Type="UI.DataField">

  <PropertyValue Property="Value" Path="FirstName"/>

  <Annotation Term="UI.Importance" EnumMember="UI.Importance/High"/>

  </Record>

  <Record Type="UI.DataField">

  <PropertyValue Property="Value" Path="LastName"/>

  <Annotation Term="UI.Importance" EnumMember="UI.Importance/High"/>

  </Record>

  <Record Type="UI.DataField">

  <PropertyValue Property="Value" Path="Birthday"/>

  <Annotation Term="UI.Importance" EnumMember="UI.Importance/High"/>

  </Record>

  </Collection>

  </Annotation>

  </Annotations>

  </Schema>

  </edmx:DataServices>

</edmx:Edmx>

Accepted Solutions (1)

Accepted Solutions (1)

pfefferf
Active Contributor
0 Kudos

Hello Isuru,

as the documentation describes XS Advanced does not support OData Annotations at the moment (OData Service Definition Language Syntax (XS Advanced) - Introduction to Application Development and...).

You could use a local annotations file. Some insights are given e.g. in post . Using SAP Web IDE you have a good support to create such files using the Annotation Modeler.

Regards,

Florian

isuruwarn
Product and Topic Expert
Product and Topic Expert
0 Kudos

Thanks a lot for your input Florian..

Answers (1)

Answers (1)

sdebeaulieu
Participant
0 Kudos

Hi Isuru,

Were you able to consume an XSOData service by a smart table in UI5?

May you post an example here?

Cheers,

Severin

0 Kudos

Hi Severin,

kind of.. after intercepting the $metadata request and replacing the response with a local metadata file version that contains the V2 annotations (sap:label ..etc.) .. yes, I know its kind of a hack...

looks like the smartchart and/or smarttable need those V2 annotations and the local annotation file supports V4 annotations only.

Best

Miro

sdebeaulieu
Participant
0 Kudos

Hi Miro,

May you tell me how did you intercept the $metadata request?

Cheers,

Sev