SAP HANA and Big Data Community
HANA Expert Series:
CDS View Fundamentals
June 2016
Kranthi Kumar Devangam
We need your help to contribute to our HANA and Big Data Forums
Did you know we’ve answered over 500 questions in our
HANA Forums?
But among our community of 6000+, only ~25 people
regularly contribute.
Why Forums vs Emailing DLs or Colleagues?
ü Makes knowledge more accessible
ü Help build a stronger community
ü Get recognition and win cool prizes
ABAP Core Data Services -
Everything you need to know to get started
June 2016
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 3
AGENDA
1. Core Data Services - Motivation
2. Core data Services - ABAP
3. ABAP CDS Architecture
4. Annotations
5. Features ABAP CDS
6. Consumption of CDS Views
7. Extensibility
8. Authorization Concept
9. Associations
10. Table Functions
11. S/4 HANA CDS Views
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 4
The SAP HANA platform - More than just another database
Big Data
Predictive takes advantage And changed the way of
Analysis
of the latest technology developing and executing
… developments
100% In-Memory No Aggregates
computing On-the-fly data
OLTP & OLAP in real-time models without
duplicates
SAP HANA
(Main
Memory) Column and row Less Indices
+
Flexible and fast
storage
retrieval of the
dataset
Compression Less Code lines
5-50x Based on column Less complexity in
storage data models and
code
Text
Mining
10- Acceleration Parti- Mass data
10,000x Massive tioning analysis
Calculation parallelization
Engine Analytics
/Transaction
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 5
Paradigm Changes in Application Programming
Data-To-Code:
Intensive
computations <code
>
in APPLICATION
layer
Code-To-Data:
Intensive
computations
in DATABASE
layer
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 6
Transformation of Application Design
Classic Data-Centric
Applications Applications
UI Rendering UI Tier UI & Client Side
Application
UI Application Logic Logic
Service Logic Middle Tier Service Layer
Data-Centric Logic
SAP HANA
Database
Database Relational
Database
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 7
CDS enables a consistent SAP Platform Story
Applications
SAP SAP High
SAP HANA Cloud
BW on Busines Performance Platform
HANA s Suite Applications
Core Edge
ABAP Native SAP HANA Java
(XS)
Core Data Services
SAP HANA Database
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 8
What Are Core Data Services?
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 9
Core Data Services: HANA & ABAP
Two Ways of Database Integration
Even so the Core Data Services Specification is
language and platform agnostic, the CDS
implementations are not.
HANA CDS HANA DB
ABAP
?
• Same Semantic on all DBs • HANA only (HANA specific
• Initial Focus on View building features available)
• Integration into ABAP Data • Initial Focus on Building Models
Dictionary from Scratch
CDS Associations: CDS Associations:
• Unmanaged Associations • Managed and Unmanaged
ABAP CDS only Associations
Due to the different requirements and platforms, the two
CDS implementations have different feature sets and
release cycles.
A technical compatibility is not guaranteed.
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 10
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 11
Core Data Services @ ABAP
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 12
Bottom-Up Approach
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 13
Top-Down Approach
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 14
ABAP Database Views
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 15
ABAP CDS - Views
A CDS is defined for existing database tables and any other views or CDS views in
ABAP Dictionary using the statement DEFINE VIEW in the DDL in ABAP Core Data
Services (CDS).
Two objects are created for every CDS view:
§ 1. A CDS database view
§ 2. A CDS entity
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 16
ABAP CDS Entity
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 17
ABAP CDS Views Select List
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 18
ABAP CDS
High-Level Architecture
ABAP in Eclipse ABAP
DDIC
CDS Editor
CDS DDIC Entity
CDS DDL
Resource Processor View Table
Activation
Kernel
CDS DDL
Parser
CREATE/DROP/ALTER VIEW/TABLE …
SQL DDL
Compiler
HANA is treated in the same
AnyDB way as “AnyDB”
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 19
ABAP CDS - Annotations
Annotations are marked with the @ sign on top of DDL Source code in the view.
Annotation @AbapCatalog.sqlViewName is mandatory and specifies the name of
the representation of DDL source in ABAP Dictionary.
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 20
Annotations
We differentiate core and generic annotations:
Core Annotations :
• Are checked by ABAP Dictionary during activation and
saved into ‘Core Metadata’
Generic annotations:
• Are introduced by application user.
• Are evaluated by frameworks of other software components like
ODATA, UI and Analytics
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 21
Annotations
Core
Checks for Core
•
Generic annotation are executed
in Data Dictionary
• Checks for generic
annotations
Generic can be integrated into
ADT by
application
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 22
Features @ ABAP CDS
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 23
ABAB CDS - Joins
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 24
ABAP CDS - Literals
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 25
ABAP CDS - Aggregations
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 26
ABAP CDS – CASE Expression
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 27
Searched CASE Expression
Simple CASE Searched CASE
Operates like a switch statement Operates like an if … elseif construct
Evaluates a series of boolean expressions
Does not allow to check for NULL and returns the first expression that
values (check against NULL always evaluates to true
results in “Unknown”) Allows checks like „IS NULL“ or „IS NOT
NULL“
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 28
CASE Expressions
Simple CASE Searched CASE
@AbapCatalog.sqlViewName: 'ZSFIN_CASE_01' @AbapCatalog.sqlViewName: 'ZSFIN_CASE_02'
define view zsfin_case_simple as select from snwd_so as define view zsfin_case_searched as select from snwd_so as so
so left outer join snwd_so_inv_head as inv_head
{ on inv_head.so_guid = so.node_key
key so.so_id as order_id, {
key so.so_id as order_id,
case so.lifecycle_status
when 'N' then 'New' so.currency_code,
when 'P' then 'In Progress' so.gross_amount,
when 'C' then 'Closed'
when 'X' then 'Cancelled' Case
else 'Unknown' when so.gross_amount < 1000 then 'C'
end as lifecycle_status when so.gross_amount > 1000 and so.gross_amount <
2000 then 'D'
} when so.gross_amount > 2000
then 'S'
else '?'
end as category,
case
when inv_head.node_key is null
then 'Not yet invoiced'
else 'Invoice sent'
end as invoice_info
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 29
ABAP CDS : SQL Functions
Ÿ STRING functions: LPAD(), SUBSTRING() etc.
Ÿ Number Functions: MOD(), CEIL() etc.
Ÿ Conversion Functions: CAST() for „toDecimal“ and „toNumc“
Example:
define view agg_faglfelxa as select from faglfelxa
{
rclnt, ryear, drcrk,
cast(ceil(poper*0,0625)*16 as abap.numc(3)) as repmax, …
}
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 30
Union @ ABAP CDS
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 31
Consume ABAP CDS VIEWS
The Open SQL SELECT Statement is used in ABAP to fetch data from a CDS View.
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 32
ABAP CDS – Modification Free Enhancement
Classical views delivered by SAP or partners can be extended with the well known
classical append views. In order to achieve the same for CDS views a new DDL
statement is introduced: EXTEND_VIEW
@AbapCatalog.sqlViewAppendName: 'DEMO_CDS_EXTENS'
extend view demo_cds_original_view with demo_cds_view_extension
{ spfli.distance,
spfli.distid as unit };
It adds new fields to the existing view fields. Technically, a classical append view - its
name defined behind the annotation @AbapCatalog.sqlViewAppendName - is
generated in the ABAP Dictionary for that purpose.
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 33
Demo- ABAP CDS
Consumption
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 34
Exposing CDS View as OData Service
The annotation @OData.publish: true is added to the CDS view definition in
order to generate all artifacts that are required for OData service exposure.
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 35
ABAP CDS - Authorization
ABAP CDS has its own authorization concept based on a data control language
(DCL).
The implicit authorization checks performed when a CDS entity is accessed
using Open SQL.
CDS roles
A CDS role is defined in separate CDS source code for a CDS entity using the DCL
statement DEFINE ROLE.
The following is checked when the CDS entity is accessed using Open SQL:
Whether the CDS role is assigned to the current user.
Whether the current user has the required authorizations.
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 36
DCL Role Example
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 37
Usage of Declarative DCL Authorizations – Example
Scenario
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 38
Classic Authority Checks
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 39
Usage of Declarative DCL Authorizations – DCL Role and
Consumption
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 40
Demo- ABAP CDS
Authorization
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 41
ABAP CDS - Associations
The Concept
The idea behind the associations in the ABAP Core Data Services (CDS ) is
to provide an adequate representation of a relationship between two entities
in the data model in the ABAP Data Dictionary. If you think of the classical
Entity-Relationship Model as a directed attributed graph, the associations
are the edges of this graph.
The Idea
The idea is to express these relationships as part of the data model, say,
capture them in the meta data stored behind the scenes and make them
available for reuse.
Reusing associations includes an integration into the SQL-like query
language as well as the availability of the association meta data to
frameworks build on top of the ABAP Data Dictionary
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 42
ABAP CDS - Associations
What does this Mean ?
The Modeling of a Relationship in a data model has to specify the
connection between the two related entities. This includes a direction and a
name as well as a cardinality and a technical representation of the
relationship, for example a join condition.
What are the Pros and Cons ?
+ -
• Semantically Rich Data • Reduction of Redundancies: • New Pitfalls: The use of
Model Join Condition is modelled associations in the query
• Intuitive SQL-Like Reuse of only once language conceals join-
Relationships in the CDS • Anchor in Source code for operations
Query Language additional Metadata
• Performance (Meta data Annotations
comes at no costs, more
optimization options)
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 43
ABAB CDS : Association (1/5)
Scope:
Ÿ Allow to define „unmanaged“ Associations within CDS-Views and to expose them via the projection
list (for consumption in „View on View“-scenarios)
Ÿ Usage of Associations in SELECT-, FROM-, WHERE- and HAVING-clauses
Ÿ Allow to define „Filter conditions“ for Associations
Example 1 – Definition of an Association and exposure in projection list:
define view business_partner_sales_orders as select from snwd_bpa
association [*] to snwd_so as sales_orders on …
{
snwd_bpa.node_key,
snwd_bpa.bp_id,
snwd_bpa.company_name,
sales_orders //Make the association available outside of this definition
}
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 44
ABAB CDS : Association(2/5)
Example 2 – Consumption of Associations within the projection list and WHERE-
clause:
define view new_sales_oders as select from business_partner_sales_orders
{
bp_id,
currency_code,
sales_orders.so_id,
sales_orders.gross_amount
}
where sales_orders.created_at > 20130601;
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 45
ABAB CDS : Association(3/5)
Example 3 – Consumption of Associations within SQL Expressions:
define view new_sales_oders as select from business_partner_sales_orders
{
snwd_bpa.node_key,
snwd_bpa.bp_id,
snwd_bpa.company_name,
sales_orders.currency_code,
sum(sales_orders.gross_amount) as sum_gross_amount
}
group by snwd_bpa.node_key, snwd_bpa.bp_id, …
having sum(sales_orders.gross_amount) > 10000
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 46
ABAB CDS : Association(4/5)
Example 4 – Definition of Filter-conditions for Associations:
define view product_texts as select from snwd_pd
association [*] to snwd_text as texts on …
{
snwd_pd.product_id,
snwd_pd.name_guid,
snwd_pd.currency_code,
snwd_pd.price,
texts[ langu = 'DE' ] as german_name,
texts[ langu = 'EN' ] as english_name
}
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 47
ABAB CDS : Association(5/5)
Example 5 – Consumption of Associations within the FROM-clause:
define view emp_view as select from snwd_employees
association [1] to qlast_sddl_address as address on …
{
*
}
define view emp_address_details
as select from emp_view[ sex = 'M' ].address[country = 'DE']
{
postal_code,
city
}
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 48
Demo- ABAP CDS
Association
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 49
CDS Associations – Translation into Joins
overview
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 50
What is a Path-Expressions ?
Using an association in path step closes the gap
between the business intend and the technical
SQL:
• In the From-clause:
from SEPM_I_SalesOrder._item
Retrieve data of all items assocaited to the sales
order entity SEPM_I_SalesOrder
• In the Select list:
_Product._ProductCategory.MainProductCategory,
count( distinct _SaleOrder._Item.ProductUUID )
as sizeSalesOrder
For each item
- retrieve the main product category
- count the number of different products in the
associated salesorder
• In the Where-condition:
where _ScheduleLine.Quantity < 10
Only include items, if their schedule line is less
then 10
Technically, each path step corresponds to a join operation
(see following section: Behind the scenes: Joins )
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 51
Where can I use Path-Expressions ?
Path-Expression in CDS
can be used at almost any
place, where a common
column or table could by
used:
• From
• Select-List
• Inside Aggregate
Functions
• Group By
• Where- or Having-
Condition
Path-Expression cannot
be used inside the ON-
clauses of joins or new
association definitions
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 52
Behind the Scenes: Path Expression
The ABAP CDS Compiler translates path- Native SQL
expressions to Joins. Using an association is The CDS-Editor context menu-entry ‘Show
therefore literally the same as explicitly joining the SQL CREATE Statement’ displays the
two related tables in a query using the On- native SQL create view statement on the
Condition given in the association definition. database, including the generated joins:
Advantages
Compared to explicit Joins, path-expressions
have some advantages:
• Relationship is part of the Meta-Data and thus
can be evaluated by Frameworks on top of
CDS
• More Intuitive Query Statements
• Reuse of Meta-Data: the On-Condition is
defined only once
But from a pure technically point of view, path
expressions do not add any additional
functionality to join operations.
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 53
Usage in Open SQL
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 54
Views with Input Parameters
View with input parameters @AbapCatalog.sqlViewName: 'ZSFIN_PARAM_01'
are not supported on all define view ZSFIN_PARAMETER_01
with parameters customer_name : abap.char(80)
DBs!!! as select from snwd_so as so
join snwd_bpa as bpa on bpa.node_key = so.buyer_guid
à DBSYS dependent {
key so.so_id as order_id,
$parameters.customer_name as param_customer_name,
Syntax:
case
with parameters <name> : when bpa.company_name = $parameters.customer_name then 'Found
it!'
<type> else 'Not
found'
end as found_customer
Consumption
}
Dependent views where bpa.company_name = $parameters.customer_name
OpenSQL
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 55
Open SQL Vs ABAP CDS
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 56
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 57
What do CDS Table Functions do?
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 58
Why do we need Table Functions?
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 59
What do you need?
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 60
Table Function
ABAP/DDIC
ABAP CDS AMDP
Table functions as
Plain CDS- Breakout
native HANA
View CDS-View
SQLScript
generates generates
HANA SQL
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 61
Define Table Function
In order to create a CDS table function, we have two things to do:
1. Define it in a CDS DDL source code,
2. Implement it in an AMDP method with a return value.
Example:
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 62
AMDP Implementation Table Function
Implementation in AMDP Class looks like:
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 63
Key features of Table functions
• They are implemented in HANA SQLScript via AMDP methods
• Signature is defined in DDL source (importing parameters and return columns)
• They can be consumed by Open SQL and ABAP CDS like other DDIC artifacts (i.e.
DB tables, classical DDIC views, CDS views ...)
• The SQLScript implementation is handled by the AMDP framework (lifecycle, tool
support, extensibility etc.)
• DDL source can be activated before the implementing AMDP method exists
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 64
S/4 HANA Applications High Level Architecture
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 65
VDM S/4 HANA
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 66
S/4 HANA ABAP CDS
The usage of ABAP CDS views following the VDM guidelines is mandatory for the
following use cases:
• Any analytical content (e.g. queries, cubes etc. exposed via generic analytical tools like
Lumira, Design Studio)
• New transactional or analytical FIORI applications (following the S4HANA target
architecture)
• Smart Business KPIs
• Fact sheets and object pages
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 67
SAP S/4HANA real time analytics architecture
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 68
SAP Business Suite real-time analytics architecture (SAP
HANA Live)
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 69
Compatibility Views: Data Access
SELECT * FROM COSP WHERE LEDRR = ’001’ AND OBJNR = ’OR000110708300’ AND
ABAP WRTTP = ’04’ AND BEKNZ IN (’H’ , ’S’ , ’L’ )
DBI (NW) redirect
HANA
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 70
Key Takeaways S/4 HANA ABAP CDS
• The new concept of one semantic layer for search, operational and analytical
processing using open CDS views optimized for SAP HANA technology and
infrastructure, allows real-time operational reporting and will be rolled out in all
deployments of S/4HANA, cloud and on premise
• Instead of HANA calculation views, S/4HANA Analytics uses Core Data Services (CDS)
to define views that are still created in the HANA database but defined and accessed
through the ABAP layer. This change allows for a unified set of security roles for
transaction processing and analytics.
• New simplified data models in SAP S/4HANA allow us to streamline the VDM’s and in
order to support ABAP-related use-cases like S/4HANA security and SAP Hierarchies
we have build new Virtual Data Models based on SAP Core Data Services (CDS).
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 71
CDS in ABAP 7.5
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 72
Core Data Services at a Glance
Semantically Rich Data-Models Common Basis for Domain-Specific
Domain specific languages (DDL, QL, Frameworks e.g. UI, Analytics, Odata,
DCL) BW,…
Declarative, close to conceptual
thinking
CDS is completely based on SQL Associations
Integration of ‘Standard SQL’ features Capture relations between entities in
like joins, unions, build-in functions, data model
… Path expressions to navigate along
relations
ABAP CDS compatible with Any DB Extensible
Generated and managed SQL Views On model level thru extensions
Native integration in SAP HANA On meta-model level thru annotations
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 73
Reference Links
http://wiki.scn.sap.com/wiki/display/ABAP/CDS+-+Core+Data+Services
http://scn.sap.com/docs/DOC-47994#jive_content_id_ABAP_Core_Data_Services_CDS
http://scn.sap.com/community/abap/blog/2015/02/02/core-data-services-cds-abap-feature-
matrix
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 74
Practice Scenarios
1. Using associations instead of Joins in Queries
2. Currency Conversion
3. Use case scenarios done using AMBD can be tried using ABAP CDS.
4. Merge result of 2 complex queries using UNION
5. Convert ABAP Case statements to CDS Case expression
6. Usage of Build In functions
7. Extensibility
8. Authorization
9. Scenario on Table Functions
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 75
Questions
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 76
Copyright 2002 SAP AG. All Rights Reserved
n No part of this publication may be reproduced or transmitted in any form or for any purpose without the express
permission of SAP AG. The information contained herein may be changed without prior notice.
n Some software products marketed by SAP AG and its distributors contain proprietary software components of other
software vendors.
n Microsoft®, WINDOWS®, NT®, EXCEL®, Word®, PowerPoint® and SQL Server® are registered trademarks of
Microsoft Corporation.
n IBM®, DB2®, OS/2®, DB2/6000®, Parallel Sysplex®, MVS/ESA®, RS/6000®, AIX®, S/390®, AS/400®, OS/390®, and
OS/400® are registered trademarks of IBM Corporation.
n ORACLE® is a registered trademark of ORACLE Corporation.
n INFORMIX®-OnLine for SAP and Informix® Dynamic ServerTM are registered trademarks of IBM Corporation.
n UNIX®, X/Open®, OSF/1®, and Motif® are registered trademarks of the Open Group.
n Citrix®, the Citrix logo, ICA®, Program Neighborhood®, MetaFrame®, WinFrame®, VideoFrame®, MultiWin® and other
Citrix product names referenced herein are trademarks of Citrix Systems, Inc.
n HTML, DHTML, XML, XHTML are trademarks or registered trademarks of W3C®, World Wide Web Consortium,
Massachusetts Institute of Technology.
n JAVA® is a registered trademark of Sun Microsystems, Inc.
n JAVASCRIPT® is a registered trademark of Sun Microsystems, Inc., used under license for technology invented and
implemented by Netscape.
n SAP, SAP Logo, R/2, RIVA, R/3, SAP ArchiveLink, SAP Business Workflow, WebFlow, SAP EarlyWatch, BAPI,
SAPPHIRE, Management Cockpit, mySAP, mySAP.com, and other SAP products and services mentioned herein as
well as their respective logos are trademarks or registered trademarks of SAP AG in Germany and in several other
countries all over the world. MarketSet and Enterprise Buyer are jointly owned trademarks of SAP Markets and
Commerce One. All other product and service names mentioned are the trademarks of their respective owners.
© 2015 SAP SE or an SAP affiliate company. All rights reserved. Internal 77