Introduction This plugin would allow SAP ECC enterprise users to specify one of the Inventory Management data sources as source in Cloud Data Fusion. Typical pipeline scenario would include specifying one of the data sources as source (under Sources plugins) and BigQuery as sink. For the sake of simplicity, this document will cover one data source ( Material Movements from Inventory Management - 2LIS_03_BF).
User Experience and Configuration
SAP ECC users log into SAP Gateway Service Builder (segw) to create and expose the data source as SAP OData service. SAP has published following articles around this step:
OData service introduction
Step-by-step guide to build OData service
User creates OData service for the data source (2LIS_03_BF). Output is RESTful OData service that can be accessed by Cloud Data Fusion.
User can also use SAP Netweaver Gateway client to test the service (with HTTP request and response)
Name
Name of the source
Textbox
Description
Description of the service and the data source it is going to connect to (e.g. 2LIS_03_BF)
Textbox
OData service URL
OData service URL exposed via SAP ECC
Textbox
User name
Login user name for authenticating API call
Textbox
Password
Password for authenticating API call
Textbox
The same dialog will have “Test connection” button to allow users to validate a validation API call. If failed, the error message will be presented to the user in red next to “Test connection” button.
Once connection has been established successfully to this OData service, it can be used as a source for creating data pipelines using Cloud Data Fusion.
User would create a BigQuery table inside a dataset where the data extracted through OData service API will be ingested.
User needs to ensure that the table schema includes data types that have been mapped as part of this integration (see below for integration considerations section for more details)
Integration considerations
Edm.Binary
Schema.Type.String
Edm.Boolean
Schema.Type.Bool
Edm.Byte
Schema.Type.Byte
Edm.DateTime
Schema.Type.DateTime
Edm.Decimal
Schema.Type.Float
Edm.Double
Schema.Type.Double
Edm.Single
Schema.Type.Float
Edm.Guid
Schema.Type.String
Edm.Int16
Schema.Type.Int
Edm.Int32
Schema.Type.Int
Edm.Int64
Schema.Type.Long
Edm.SByte
Schema.Type.Bytes
Edm.String
Schema.Type.String
Edm.Time
Schema.Type.Time
Edm.DateTimeOffset
Schema.Type.Timestamp
OData Service API Service Metadata Document Describes the structure of all resources in the service.
Note: service metadata document has no JSON representation.
GET: http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S3_SRV/$metadata
Response:
Sample metadata response
<?xml version="1.0" encoding="UTF-8"?>
<edmx:Edmx 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" Version="1.0">
<edmx:DataServices m:DataServiceVersion="2.0">
<Schema xmlns="http://schemas.microsoft.com/ado/2008/09/edm" Namespace="ZGW100_XX_S2_SRV" xml:lang="en" sap:schema-version="1">
<EntityType Name="SalesOrder" sap:content-version="1">
<Key>
<PropertyRef Name="SoId" />
</Key>
<Property Name="SoId" Type="Edm.String" Nullable="false" MaxLength="10" sap:label="Sales Order ID" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" />
<Property Name="Note" Type="Edm.String" Nullable="false" MaxLength="255" sap:label="Description" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" />
<Property Name="BuyerId" Type="Edm.String" Nullable="false" MaxLength="10" sap:label="Business Partner ID" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" />
<Property Name="BuyerName" Type="Edm.String" Nullable="false" MaxLength="80" sap:label="Company" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" />
<Property Name="CurrencyCode" Type="Edm.String" Nullable="false" MaxLength="5" sap:label="Currency Code" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" sap:semantics="currency-code" />
<Property Name="GrossAmount" Type="Edm.Decimal" Nullable="false" Precision="16" Scale="3" sap:label="Gross Amount" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" />
<Property Name="NetAmount" Type="Edm.Decimal" Nullable="false" Precision="16" Scale="3" sap:label="Net Amount" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" />
<Property Name="TaxAmount" Type="Edm.Decimal" Nullable="false" Precision="16" Scale="3" sap:label="Tax Amount" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" />
<NavigationProperty Name="SalesOrderItems" Relationship="ZGW100_XX_S2_SRV.SalesOrderSalesOrderItems" FromRole="FromRole_SalesOrderSalesOrderItems" ToRole="ToRole_SalesOrderSalesOrderItems" />
</EntityType>
<EntityType Name="SalesOrderItem" sap:content-version="1">
<Key>
<PropertyRef Name="SoId" />
<PropertyRef Name="SoItemPos" />
</Key>
<Property Name="SoId" Type="Edm.String" Nullable="false" MaxLength="10" sap:label="Sales Order ID" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" />
<Property Name="SoItemPos" Type="Edm.String" Nullable="false" MaxLength="10" sap:label="Item Position" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" />
<Property Name="ProductId" Type="Edm.String" Nullable="false" MaxLength="10" sap:label="Product ID" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" />
<Property Name="Note" Type="Edm.String" Nullable="false" MaxLength="255" sap:label="Description" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" />
<Property Name="CurrencyCode" Type="Edm.String" Nullable="false" MaxLength="5" sap:label="Currency Code" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" sap:semantics="currency-code" />
<Property Name="GrossAmount" Type="Edm.Decimal" Nullable="false" Precision="16" Scale="3" sap:label="Gross Amount" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" />
<Property Name="NetAmount" Type="Edm.Decimal" Nullable="false" Precision="16" Scale="3" sap:label="Net Amount" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" />
<Property Name="TaxAmount" Type="Edm.Decimal" Nullable="false" Precision="16" Scale="3" sap:label="Tax Amount" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" />
<Property Name="Quantity" Type="Edm.Decimal" Nullable="false" Precision="13" Scale="3" sap:label="Quantity" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" />
<Property Name="QuantityUnit" Type="Edm.String" Nullable="false" MaxLength="3" sap:label="Unit of Measure" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false" sap:semantics="unit-of-measure" />
</EntityType>
<Association Name="SalesOrderSalesOrderItems" sap:content-version="1">
<End Type="ZGW100_XX_S2_SRV.SalesOrder" Multiplicity="1" Role="FromRole_SalesOrderSalesOrderItems" />
<End Type="ZGW100_XX_S2_SRV.SalesOrderItem" Multiplicity="*" Role="ToRole_SalesOrderSalesOrderItems" />
<ReferentialConstraint>
<Principal Role="FromRole_SalesOrderSalesOrderItems">
<PropertyRef Name="SoId" />
</Principal>
<Dependent Role="ToRole_SalesOrderSalesOrderItems">
<PropertyRef Name="SoId" />
</Dependent>
</ReferentialConstraint>
</Association>
<EntityContainer Name="ZGW100_XX_S2_SRV_Entities" m:IsDefaultEntityContainer="true" sap:supported-formats="atom json xlsx">
<EntitySet Name="SalesOrderSet" EntityType="ZGW100_XX_S2_SRV.SalesOrder" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:pageable="false" sap:addressable="false" sap:content-version="1" />
<EntitySet Name="SalesOrderCollection" EntityType="ZGW100_XX_S2_SRV.SalesOrder" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:pageable="false" sap:addressable="false" sap:content-version="1" />
<EntitySet Name="SalesOrderItemSet" EntityType="ZGW100_XX_S2_SRV.SalesOrderItem" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:pageable="false" sap:addressable="false" sap:content-version="1" />
<EntitySet Name="SalesOrderItemCollection" EntityType="ZGW100_XX_S2_SRV.SalesOrderItem" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:pageable="false" sap:addressable="false" sap:content-version="1" />
<AssociationSet Name="SalesOrderSalesOrderItems_AssocSet" Association="ZGW100_XX_S2_SRV.SalesOrderSalesOrderItems" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:content-version="1">
<End EntitySet="SalesOrderSet" Role="FromRole_SalesOrderSalesOrderItems" />
<End EntitySet="SalesOrderItemSet" Role="ToRole_SalesOrderSalesOrderItems" />
</AssociationSet>
</EntityContainer>
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="self" href="http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/$metadata" />
<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="latest-version" href="http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/$metadata" />
</Schema>
</edmx:DataServices>
</edmx:Edmx> Service Document
Lists the available top-level resources.
GET: http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/
Response:
Sample service XML document
<?xml version="1.0" encoding="UTF-8"?>
<app:service xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:sap="http://www.sap.com/Protocols/SAPData" xml:lang="en" xml:base="http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/">
<app:workspace>
<atom:title type="text">Data</atom:title>
<app:collection sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:pageable="false" sap:addressable="false" sap:content-version="1" href="SalesOrderSet">
<atom:title type="text">SalesOrderSet</atom:title>
<sap:member-title>SalesOrder</sap:member-title>
</app:collection>
<app:collection sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:pageable="false" sap:addressable="false" sap:content-version="1" href="SalesOrderCollection">
<atom:title type="text">SalesOrderCollection</atom:title>
<sap:member-title>SalesOrder</sap:member-title>
</app:collection>
<app:collection sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:pageable="false" sap:addressable="false" sap:content-version="1" href="SalesOrderItemSet">
<atom:title type="text">SalesOrderItemSet</atom:title>
<sap:member-title>SalesOrderItem</sap:member-title>
</app:collection>
<app:collection sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:pageable="false" sap:addressable="false" sap:content-version="1" href="SalesOrderItemCollection">
<atom:title type="text">SalesOrderItemCollection</atom:title>
<sap:member-title>SalesOrderItem</sap:member-title>
</app:collection>
</app:workspace>
<atom:link rel="self" href="http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/" />
<atom:link rel="latest-version" href="http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/" />
</app:service>
GET: http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/?$format=json
Response:
Sample service JSON document
{
"d":{
"EntitySets":[
"SalesOrderSet",
"SalesOrderCollection",
"SalesOrderItemSet",
"SalesOrderItemCollection"
]
}
} Requesting EntitySet GET: http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S3_SRV/SalesOrderSet
Response:
Sample 'GetEntitySet' response
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xml:base="http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S3_SRV/">
<id>http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S3_SRV/SalesOrderSet</id>
<title type="text">SalesOrderSet</title>
<updated>2019-08-21T10:29:14Z</updated>
<author>
<name />
</author>
<link href="SalesOrderSet" rel="self" title="SalesOrderSet" />
<entry>
<id>http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S3_SRV/SalesOrderSet('500000000')</id>
<title type="text">SalesOrderSet('500000000')</title>
<updated>2019-08-21T10:29:14Z</updated>
<category term="ZGW100_XX_S3_SRV.SalesOrder" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<link href="SalesOrderSet('500000000')" rel="edit" title="SalesOrder" />
<content type="application/xml">
<m:properties>
<d:SoId>500000000</d:SoId>
<d:BuyerId>100000000</d:BuyerId>
<d:BuyerName>SAP</d:BuyerName>
</m:properties>
</content>
</entry>
<entry>
<id>http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S3_SRV/SalesOrderSet('500000001')</id>
<title type="text">SalesOrderSet('500000001')</title>
<updated>2019-08-21T10:29:14Z</updated>
<category term="ZGW100_XX_S3_SRV.SalesOrder" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<link href="SalesOrderSet('500000001')" rel="edit" title="SalesOrder" />
<content type="application/xml">
<m:properties>
<d:SoId>500000001</d:SoId>
<d:BuyerId>100000002</d:BuyerId>
<d:BuyerName>DelBont Industries</d:BuyerName>
</m:properties>
</content>
</entry>
<entry>
<id>http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S3_SRV/SalesOrderSet('500000002')</id>
<title type="text">SalesOrderSet('500000002')</title>
<updated>2019-08-21T10:29:14Z</updated>
<category term="ZGW100_XX_S3_SRV.SalesOrder" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<link href="SalesOrderSet('500000002')" rel="edit" title="SalesOrder" />
<content type="application/xml">
<m:properties>
<d:SoId>500000002</d:SoId>
<d:BuyerId>100000005</d:BuyerId>
<d:BuyerName>TECUM</d:BuyerName>
</m:properties>
</content>
</entry>
...
GET: http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/SalesOrderCollection?$format=json
Response:
Sample 'GetEntitySet' JSON response
{
"d":{
"results":[
{
"__metadata":{
"id":"http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/SalesOrderCollection('500000000')",
"uri":"http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/SalesOrderCollection('500000000')",
"type":"ZGW100_XX_S2_SRV.SalesOrder"
},
"SoId":"500000000",
"Note":"EPM DG: SO ID 0500000000 Deliver as fast as possible",
"BuyerId":"100000000",
"BuyerName":"SAP",
"CurrencyCode":"USD",
"GrossAmount":"14385.850",
"NetAmount":"12088.950",
"TaxAmount":"2296.900",
"SalesOrderItems":{
"__deferred":{
"uri":"http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/SalesOrderCollection('500000000')/SalesOrderItems"
}
}
},
{
"__metadata":{
"id":"http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/SalesOrderCollection('500000001')",
"uri":"http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/SalesOrderCollection('500000001')",
"type":"ZGW100_XX_S2_SRV.SalesOrder"
},
"SoId":"500000001",
"Note":"EPM DG: SO ID 0500000001 Deliver as fast as possible",
"BuyerId":"100000002",
"BuyerName":"DelBont Industries",
"CurrencyCode":"USD",
"GrossAmount":"15117.760",
"NetAmount":"12704.000",
"TaxAmount":"2413.760",
"SalesOrderItems":{
"__deferred":{
"uri":"http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/SalesOrderCollection('500000001')/SalesOrderItems"
}
}
},
... Querying Data GET: http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/SalesOrderCollection?$top=1&$select=BuyerName
Response:
Sample querying data response
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xml:base="http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/">
<id>http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/SalesOrderCollection</id>
<title type="text">SalesOrderCollection</title>
<updated>2019-08-21T10:46:14Z</updated>
<author>
<name />
</author>
<link href="SalesOrderCollection" rel="self" title="SalesOrderCollection" />
<entry>
<id>http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/SalesOrderCollection('500000000')</id>
<title type="text">SalesOrderCollection('500000000')</title>
<updated>2019-08-21T10:46:14Z</updated>
<category term="ZGW100_XX_S2_SRV.SalesOrder" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<link href="SalesOrderCollection('500000000')" rel="self" title="SalesOrder" />
<content type="application/xml">
<m:properties>
<d:BuyerName>SAP</d:BuyerName>
</m:properties>
</content>
</entry>
</feed>
For more examples, please, refer: https://www.odata.org/odata-services/
SAP ECC Source Plugin Design The suggestion is to use Apache Olingo as Client Library . Both OData v2 and v4 are supported by the SAP Gateway, so it could require to use Olingo v2 and Olingo v4 .
Sample application to read OData resources
public class OlingoSampleApp {
private static final String ROOT_URL = "http://vhcalnplci.dummy.nodomain:8000/sap/opu/odata/SAP/ZGW100_XX_S2_SRV/";
private static final String USERNAME = "DEVELOPER";
private static final String PASSWORD = "Appl1ance";
private static final String RESOURCE_PATH = "SalesOrderCollection";
public static void main(String[] params) throws Exception {
ODataClient client = ODataClientFactory.getClient();
client.getConfiguration().setHttpClientFactory(new BasicAuthHttpClientFactory(USERNAME, PASSWORD));
URI resourcesUri = client.newURIBuilder(ROOT_URL)
.appendEntitySetSegment(RESOURCE_PATH)
.build();
ODataEntitySetIteratorRequest<ClientEntitySet, ClientEntity> request = client
.getRetrieveRequestFactory()
.getEntitySetIteratorRequest(resourcesUri);
request.setAccept("application/atom+xml");
ODataRetrieveResponse<ClientEntitySetIterator<ClientEntitySet, ClientEntity>> response = request.execute();
ClientEntitySetIterator<ClientEntitySet, ClientEntity> iterator = response.getBody();
while (iterator.hasNext()) {
ClientEntity entity = iterator.next();
// process client entity
}
}
} Source Properties
General
Label
textbox
Label for UI.
Reference Name
textbox
Uniquely identified name for lineage.
OData Service URL
textbox
URL of the SAP ECC OData service. The URL must end with an external service name
(e.g., http://eccsvrname:8000/sap/opu/odata/sap/zgw100_dd02l_so_srv/ ).
Required
Resource Path
textbox
Path of the SAP ECC OData entity.
For example:
"SalesOrderCollection"
"Category(1)/Products"
Required
Query Options
keyvalue
OData query options to filter the data.
For example:
The plugin copies data from the combined URL: <OData Service URL>/<Entity Set>?<Query Option 1>&<Query Option 2>
For more information, see OData URL components .
Include Metadata Annotations
toggle
Whether the plugin should read SAP metadata annotations and include them to each record.
Credentials
Username
textbox
Username for basic authentication.
Password
password
Password for basic authentication.
Output Schema
schema
Specifies the schema of the entries.
OData V2 Data Types Mapping Types can be mapped as follows, according to the org.apache.olingo.odata2.api.edm.EdmSimpleType and OData Primitive Data Types (section 6):
Edm.Binary
bytes
Edm.Boolean
boolean
Edm.Byte
int
Unsigned 8-bit integer value
Edm.DateTime
timestamp
Datetime in the following format:
'yyyy-mm-ddThh:mm[:ss[.fffffff]]'
Edm.Decimal
decimal
Edm.Double
double
Edm.Single
float
Edm.Guid
string
Edm.Int16
int
Edm.Int32
int
Edm.Int64
long
Edm.SByte
int
Represents a signed 8-bit integer value
Edm.String
string
Edm.Time
time
Represents the time of day with values ranging from 0:00:00.x to 23:59:59.y, where x and y depend upon the precision
Edm.DateTimeOffset
string
Represents date and time as an Offset in minutes from GMT, with values ranging from 12:00:00 midnight, January 1, 1753 A.D. through 11:59:59 P.M, December 9999 A.D
Example 1: 2002-10-10T17:00:00Z
Mapped to string to avoid timezone information loss.
OData V4 Data Types Mapping Types can be mapped as follows, according to the org.apache.olingo.commons.api.edm.EdmPrimitiveType and OData CSDL Primitive Types :
Edm.Binary
bytes
Edm.Boolean
boolean
Edm.Byte
int
Unsigned 8-bit integer value
Edm.Date
timestamp
Date without a time-zone offset
Edm.DateTimeOffset
string
Represents date and time as an Offset in minutes from GMT, with values ranging from 12:00:00 midnight, January 1, 1753 A.D. through 11:59:59 P.M, December 9999 A.D
Example 1: 2002-10-10T17:00:00Z
Mapped to string to avoid timezone information loss.
Edm.Decimal
decimal
Edm.Double
double
Edm.Duration
string
"Duration@odata.type": "#Duration",
"Duration": "P12DT23H59M59.999999999999S", <d:Duration m:type="Edm.Duration">P12DT23H59M59.999999999999S</d:Duration> Signed duration in days, hours, minutes, and (sub)seconds.
Edm.Guid
string
Edm.Int16
int
Edm.Int32
int
Edm.Int64
long
Edm.SByte
int
Represents a signed 8-bit integer value
Edm.Single
float
Edm.Stream
record
"Stream@odata.mediaReadLink": "http://placehold.it/10x10.jpg?read",
"Stream@odata.mediaEditLink": "http://placehold.it/10x10.jpg?edit",
"Stream@odata.mediaContentType": "image/jpeg",
"Stream@odata.mediaEtag": "W/\"####\"",
"Stream": "" <link rel="http://docs.oasis-open.org/odata/ns/edit-media/Stream" title="Stream" href="AllDataTypes(3)/Stream"/>
Binary data stream.
Olingo client maps this data type to java.net.URI.
The proposal is to map this data type to CDAP record that corresponds to the JSON representation.
Edm.String
string
Edm.TimeOfDay
time
Clock time 00:00-23:59:59.999999999999
Edm.Geography
Abstract base type for all Geography types.
Edm.GeographyPoint
record
"GeographyPoint": {
"type": "Point",
"coordinates": [142.1, 64.1]
}