Skip to content
This repository has been archived by the owner on Aug 1, 2022. It is now read-only.

Parser xsodata

Antoaneta edited this page Jun 4, 2021 · 19 revisions

Parser for xsodata

The information on how to develop the design-time data-persistence model for an XSK application using the XSODATA syntax

Reference

SAP Help

Tutorial: Use the SAP HANA OData Interface

OData Service-Definition Examples (XS Advanced)

Supported syntax from the parser

Supportable xsodata syntax (XSKXsodataParser) XTransformer MTransfrmer HTransformer Comments
HANA v1/v2 odata service definition SUPPORTED SUPPORTED not relevant not relevant documentation
HANA v1/v2 odata namespace definition SUPPORTED SUPPORTED SUPPORTED not relevant documentation
HANA v1/v2 odata object exposure SUPPORTED SUPPORTED SUPPORTED not relevant documentation
HANA v1/v2 odata property projection SUPPORTED SUPPORTED SUPPORTED not relevant documentation
HANA v1/v2 odata key specification SUPPORTED SUPPORTED using sap:filterable NOT SUPPORTED not relevant documentation
HANA v1/v2 odata associations SUPPORTED SUPPORTED SUPPORTED not relevant documentation
HANA v1/v2 odata aggregations SUPPORTED SUPPORTED using sap:semantics="aggregate" NOT SUPPORTED not relevant documentation
HANA v1/v2 odata parameters entitysets SUPPORTED No odata representation exist not relevant not relevant documentation
HANA v1/v2 odata Etag support NOT SUPPORTED NOT SUPPORTED NOT SUPPORTED not relevant documentation
HANA v1/v2 odata nullable properties SUPPORTED No odata representation exist NOT SUPPORTED not relevant documentation
HANA v1/v2 odata configurable cash settings SUPPORTED No odata representation exist NOT SUPPORTED not relevant documentation
HANA v2 OData Hints for SQL Select Statements SUPPORTED No odata representation exist NOT SUPPORTED not relevant documentation
HANA v2 OData Entity Limits SUPPORTED NOT SUPPORTED NOT SUPPORTED not relevant documentation
HANA v1/v2 modifications SUPPORTED SUPPORTED [forbidden: using sap:creatable, sap:updatable, sap:deletable], [events - no odata representation exist] not relevant SUPPORTED documentation
HANA v1/v2 validation scrips with XS JavaScript SUPPORTED no odata representation exist not relevant SUPPORTED documentation
HANA v1/v2 validation exit with SQL script SUPPORTED no odata representation exist not relevant SUPPORTED documentation

Supported sap annotations

Grammar definition:

Link

Modules

https://github.com/SAP/xsk/tree/main/modules/parsers/parser-xsodata

Transformers

XSKOData2ODataHTransformer

Uses the OData2ODataHTransformer.transform() method. The xsodata modification artifacts are converted to odata artifacts. See the table for the supportable operations.

xsodata modification artifacts convert to odata
create using on
forbidden forbid
before before
after after
precommit not supported
postcommit not supported

Example of .xsodata will generated the following OData2ODataHTransformer

"sample.odata::table1"
      update events (before "sample.odata::beforeMethod", precommit "sample.odata::beforeMethod")
      delete events (after "sample.odata::afterMethod")
      create forbidden;

| ODATAH_METHOD | ODATAH_TYPE | ODATAH_HANDLER             |
|---------------|-------------|----------------------------|
| update        | before      | sample.odata::beforeMethod |
| delete        | after       | sample.odata::afterMethod  |
| create        | fordid      | N/A                        |

Example of .xsodata will generated the following OData2ODataHTransformer

     create using "sample.odata::createMethod"
     update events (precommit "sample.odata::precommitMethod")
     delete forbidden;

| ODATAH_METHOD | ODATAH_TYPE | ODATAH_HANDLER             |
|---------------|-------------|----------------------------|
| create        | on          | sample.odata::createMethod |
| delete        | fordid      | N/A                        |

XSKOData2ODataMTransformer

Dirigible Odata supports the following Multiplicity values: ZERO_TO_ONE("0..1"), MANY("*"), ONE("1");

XSODATA Multiplicity '1..' is converted to '', because '1..*' is not supported from odata.

XSKOData2ODataMTransformer rely on ForeignKey definitions on DB side. if there are no ForeignKey constraint between tables in the DB, then all navigations must be defined inside .odata file, otherwise no navigations will be exposed though the odata service.

Inside xsodata file we can specify which properties can be exposed using the 'with' and 'without' section:

service namespace "np"{
   "sample.odata::table1" as "Table1" without ("COLUMN1");
   "sample.odata::table2" as "Table2" with ("COLUMN1", "COLUMN2");
}

XSKOData2ODataXTransformer

The transformer include OData4SAP annotations (OData Adaptor for SAP Annotations) which is activated in .xsodata service via

service {}

/* Required to show annotations in $metadata like: sap:filterable="false"  */
annotations     {
	enable      OData4SAP;
	enable      OData4SAP;
}

SAP Annotations for OData Version 2.0

Element edm:EntitySet
Attribute Name
XSK Odata Support
label No
creatable Yes
updatable Yes
updatable-path No
deletable Yes
deletable-path No
searchable No
pageable No
topable No
countable No
addressable No
requires-filter No
change-tracking No
maxpagesize No
delta-link-validity No
semantics No

Project

Architecture

Tips & Tricks

Infrastructure

Troubleshooting guide

Clone this wiki locally