0% found this document useful (0 votes)
83 views77 pages

CDS Abap 2016

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
83 views77 pages

CDS Abap 2016

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 77

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

You might also like