Open Sap

Download as pdf or txt
Download as pdf or txt
You are on page 1of 55

Week 2 Unit 1: Introduction and

First Steps with EJB


January, 2015
Introduction and First Steps with EJB
Persistence as a Service

Manages the database systems in the


cloud and the access to them

Operations on database system level


 Monitoring and alerting
 Load balancing and scaling
 Backup and recovery
 Configuration
 Metering
 Application data isolation

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 2


Introduction and First Steps with EJB
Easy Consumption

Standards-based access
 JDBC
 JPA 2.0

Choice of database platform


 SAP HANA
 SAP MaxDB
 Apache Derby (for local development)

Schema management
 One schema per application (default)
 Many applications sharing one schema
 One application using many schemas
 Schema management available in cockpit

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 3


Introduction and First Steps with EJB
Java Persistence API (JPA)

Describes management of relational


data in applications

Replaces persistence solution for


EJB 2.0 CMP

Default support in SAP HANA Cloud


Platform runtimes for JPA 2.0

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 4


Introduction and First Steps with EJB
EJB Sample

Makes use of Java EE 6 Web Profile


(SAP HANA Cloud Platform SDK 2.x) Java EE 6 Web Profile (2.x)

 Web container
 EJB container Web Container
PersistenceWithEJBServlet
 Persistence provider - EclipseLink

EJB Container
PersonBean

EclipseLink as
Person persistence provider

JDBC

DB
Schemas

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 5


Introduction and First Steps with EJB
EJB Sample

Import to Eclipse as
‘Existing Projects into Workspace’
Location:
<SDK_path>\samples\persistence-with-ejb

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 6


Introduction and First Steps with EJB
EJB Sample

Building Blocks:
 Person.java
persistence entity

 PersonBean.java
stateless bean

 persistence.xml
JPA configuration file

 PersistenceWithEJBServlet.java
provides interaction with end users

 web.xml
Web application descriptor

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 7


Introduction and First Steps with EJB
EJB Sample

Run the sample


– ‘Run on Server’
Configure SAP HANA Cloud Server
– hanatrial.ondemand.com
Request URL
– https://<application_name><account_name>.ha
natrial.ondemand.com/persistence-with-ejb/

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 8


Introduction and First Steps with EJB
EJB Sample

SAP HANA Cloud Platform cockpit


provides the following information in
the ‘Database Schemas’ view:
 Schema name/ID
 Database type
 Application bindings

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 9


Introduction and First Steps with EJB
What You’ve Learned in This Unit

 The role of Persistence Service


on SAP HANA Cloud Platform
 The supported database platform
types
 How applications can store data
in a database in the cloud
 JPA, and how it is supported on
SAP HANA Cloud Platform
 What a persistence-enabled EJB
application looks like
 Where to find information about
your schema

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 10


Contact information:

open@sap.com
© 2014 SAP AG or an SAP affiliate company.
All rights reserved.

No part of this publication may be reproduced or transmitted in any form or for any purpose without the express permission of SAP AG or an
SAP affiliate company.

SAP and other SAP products and services mentioned herein as well as their respective logos are trademarks or registered trademarks of SAP AG
(or an SAP affiliate company) in Germany and other countries. Please see http://global12.sap.com/corporate-en/legal/copyright/index.epx for additional
trademark information and notices.

Some software products marketed by SAP AG and its distributors contain proprietary software components of other software vendors.

National product specifications may vary.

These materials are provided by SAP AG or an SAP affiliate company for informational purposes only, without representation or warranty of any kind,
and SAP AG or its affiliated companies shall not be liable for errors or omissions with respect to the materials. The only warranties for SAP AG or
SAP affiliate company products and services are those that are set forth in the express warranty statements accompanying such products and
services, if any. Nothing herein should be construed as constituting an additional warranty.

In particular, SAP AG or its affiliated companies have no obligation to pursue any course of business outlined in this document or any related
presentation, or to develop or release any functionality mentioned therein. This document, or any related presentation, and SAP AG’s or its affiliated
companies’ strategy and possible future developments, products, and/or platform directions and functionality are all subject to change and may be
changed by SAP AG or its affiliated companies at any time for any reason without notice. The information in this document is not a commitment,
promise, or legal obligation to deliver any material, code, or functionality. All forward-looking statements are subject to various risks and uncertainties
that could cause actual results to differ materially from expectations. Readers are cautioned not to place undue reliance on these forward-looking
statements, which speak only as of their dates, and they should not be relied upon in making purchasing decisions.

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 12


Week 2 Unit 2:
Connecting to Your Database
January, 2015
Connecting to Your Database
How to Connect to My Database in the Cloud

Eclipse IDE
Scenario: + SAP HANA Tools
 App developer wants to connect to
database in the cloud via JDBC tool
 Database in the cloud is not publicly
accessible

How to do it: DB Tunnel over SSL


Use Eclipse IDE plug-ins:
 SAP HANA Cloud Platform Tools for
connecting to SAP HANA systems
DB
 SAP HANA Tools Schema

SAP HANA Cloud Platform

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 2


Connecting to Your Database
Procedure

Open Perspective:
SAP HANA Administration
Console

Add Cloud System

Select Trial Instances option

Choose the instance you want


to work with

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 3


Connecting to Your Database
Finding Your Application Data

DEV_<GUID> - the schema for the


automatically generated developer
user

NEO_<GUID> - the schema used by


the application

T_PERSONS – the table created by


the application

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 4


Connecting to Your Database
What You’ve Learned in This Unit

 How to connect to your database in


the cloud
 What the additional tools are that
should be installed in Eclipse IDE to
support this scenario
 Operations on application data that
can be performed from the SAP HANA
Tools plug-in

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 5


Contact information:

open@sap.com
© 2014 SAP AG or an SAP affiliate company.
All rights reserved.

No part of this publication may be reproduced or transmitted in any form or for any purpose without the express permission of SAP AG or an
SAP affiliate company.

SAP and other SAP products and services mentioned herein as well as their respective logos are trademarks or registered trademarks of SAP AG
(or an SAP affiliate company) in Germany and other countries. Please see http://global12.sap.com/corporate-en/legal/copyright/index.epx for additional
trademark information and notices.

Some software products marketed by SAP AG and its distributors contain proprietary software components of other software vendors.

National product specifications may vary.

These materials are provided by SAP AG or an SAP affiliate company for informational purposes only, without representation or warranty of any kind,
and SAP AG or its affiliated companies shall not be liable for errors or omissions with respect to the materials. The only warranties for SAP AG or
SAP affiliate company products and services are those that are set forth in the express warranty statements accompanying such products and
services, if any. Nothing herein should be construed as constituting an additional warranty.

In particular, SAP AG or its affiliated companies have no obligation to pursue any course of business outlined in this document or any related
presentation, or to develop or release any functionality mentioned therein. This document, or any related presentation, and SAP AG’s or its affiliated
companies’ strategy and possible future developments, products, and/or platform directions and functionality are all subject to change and may be
changed by SAP AG or its affiliated companies at any time for any reason without notice. The information in this document is not a commitment,
promise, or legal obligation to deliver any material, code, or functionality. All forward-looking statements are subject to various risks and uncertainties
that could cause actual results to differ materially from expectations. Readers are cautioned not to place undue reliance on these forward-looking
statements, which speak only as of their dates, and they should not be relied upon in making purchasing decisions.

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 7


Week 2 Unit 3:
Creating a JDBC Application
January, 2015
Creating a JDBC Application
JDBC Overview

Java Database Connectivity (JDBC)


 Java-based data access technology
 Defines how a client can connect,
query, and update data in a database

JDBC API
 JDBC connections support creation and
execution of statements
 ResultSet presents the outcome after a
statement has been executed

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 2


Creating a JDBC Application
Why Use JDBC?

Advantages of JDBC
 Clean and easy for small applications
 Good performance with large amounts
of data
 Allows optimization of SQL requests
 Reuse of existing JDBC libraries
(Liquibase, Hibernate)

Disadvantages of JDBC
 Large programming overhead for large
projects
 Concurrency support and transaction
and connection management required
 Initial creation of database structures
required

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 3


Creating a JDBC Application
JDBC Sample

Uses standard database access Java EE 6 Web Profile (2.x) or


(JDBC) Java Web (1.x)

Needs only a Web container, so can PersistenceWithEJBServlet


run in both runtimes Person
 Java Web (1.x) Web Container
PersonDAO
 Java EE 6 Web Profile (2.x)
JDBC

DB Schemas

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 4


Creating a JDBC Application
JDBC Sample

Import to Eclipse as
‘Existing Projects into Workspace’
Location:
<SDK_path>\samples\persistence-with-jdbc

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 5


Creating a JDBC Application
JDBC Sample

Building Blocks:
 Person.java
holds the information for a person

 PersonDAO.java
performs all operations with DB

 PersistenceWithJDBCServlet.java
provides interaction with the end users and
looks up the DataSource from JNDI

 web.xml
web application descriptor; defines
datasource resource

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 6


Creating a JDBC Application
JDBC Sample

Run the sample


– ‘Run on Server’
Configure SAP HANA Cloud Server
– hanatrial.ondemand.com
Request URL
– https://<application_name><account_name>.
hanatrial.ondemand.com/persistence-with-
jdbc/

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 7


Creating a JDBC Application
JDBC Sample

In the background:
 A new schema is created
 Schema is bound to the application
 When app requests data source the app
gets connected to this schema
– Maximum 8 parallel database connections per
schema
 When application is undeployed, the
schema is not removed
 When application is redeployed, it uses
same schema and bindings

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 8


Creating a JDBC Application
How Can I See the SQL Statements Sent to the Database?

SQL Trace
 Provides a log of selected SQL
statements
 Relevant for both JPA and JDBC
applications
 Integrated in the standard trace log
files
 Disabled by default

Scenarios
 Investigate database access-related
performance issues
 Determine inefficient SQL statements

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 9


Creating a JDBC Application
How to Enable the SQL Trace

Set the log level of “com.sap.core.persistence.sql.trace” to DEBUG

Tools:
 Eclipse IDE
 SAP HANA Cloud Platform Cockpit

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 10


Creating a JDBC Application
How to Read SQL Trace Records

The SQL trace is written in the default trace log file


 File name prefix ljs_trace_vsa

Tools:
 Eclipse IDE
 SAP HANA Cloud Platform Cockpit

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 11


Creating a JDBC Application
What You’ve Learned in This Unit

 What JDBC is
 The advantages and disadvantages
of JDBC
 What a persistence-enabled JDBC
application looks like
 What happens in the background
when an application is deployed and
started
 How to trace the SQL statements
performed by your application
 How to enable, disable, and display
the SQL trace recordings

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 12


Contact information:

open@sap.com
© 2014 SAP SE or an SAP affiliate company.
All rights reserved.

No part of this publication may be reproduced or transmitted in any form or for any purpose without the express permission of SAP SE or an
SAP affiliate company.

SAP and other SAP products and services mentioned herein as well as their respective logos are trademarks or registered trademarks of SAP SE
(or an SAP affiliate company) in Germany and other countries. Please see http://global12.sap.com/corporate-en/legal/copyright/index.epx for additional
trademark information and notices.

Some software products marketed by SAP SE and its distributors contain proprietary software components of other software vendors.

National product specifications may vary.

These materials are provided by SAP SE or an SAP affiliate company for informational purposes only, without representation or warranty of any kind,
and SAP SE or its affiliated companies shall not be liable for errors or omissions with respect to the materials. The only warranties for SAP SE or
SAP affiliate company products and services are those that are set forth in the express warranty statements accompanying such products and
services, if any. Nothing herein should be construed as constituting an additional warranty.

In particular, SAP SE or its affiliated companies have no obligation to pursue any course of business outlined in this document or any related
presentation, or to develop or release any functionality mentioned therein. This document, or any related presentation, and SAP SE’s or its affiliated
companies’ strategy and possible future developments, products, and/or platform directions and functionality are all subject to change and may be
changed by SAP SE or its affiliated companies at any time for any reason without notice. The information in this document is not a commitment,
promise, or legal obligation to deliver any material, code, or functionality. All forward-looking statements are subject to various risks and uncertainties
that could cause actual results to differ materially from expectations. Readers are cautioned not to place undue reliance on these forward-looking
statements, which speak only as of their dates, and they should not be relied upon in making purchasing decisions.

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 14


Week 2 Unit 4:
Sharing Data Between Applications
January, 2015
Sharing Data Between Applications
How Can I Share Data Between Applications?

Scenario:
 Multiple applications need to work with
the same data Application1

Auto-bound
Auto-generated schemas
Application2 <DEFAULT>
 New schema is automatically created Data source
for application on first start
Auto-bound
 Application is bound to the schema <DEFAULT>
with default data-source binding Data source

Auto-generated
schema1

Auto-generated
schema2

SAP HANA database


systems

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 2


Sharing Data Between Applications
Sharing Schemas

A schema can be shared between


applications by binding it to more
than one application Application1

Steps:
Auto-bound
 Unbind the schema from the Application2 <DEFAULT>
application Data source

 Bind the application to the other Auto-bound


schema with <DEFAULT> data-source <DEFAULT>
binding Data source

 Restart the application


Auto-generated
schema1

Auto-generated
schema2

SAP HANA database


systems

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 3


Sharing Data Between Applications
Tools: SAP HANA Cloud Platform Cockpit

Database Schema Views


 Operations:
– list all schemas in account
– show bindings per schema
– delete existing binding
– create new binding
– delete schema

Applications -> Dashboard


 Operations:
– restart application

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 4


Sharing Data Between Applications
Tools: SDK Console Commands

Open a command window in the ‘<SDK>/tools’ folder and set proxy settings if
needed
 list-schemas
neo list-schemas -h <host> -u <user> -a <account>
 display-schema-info
neo display-schema-info -h <host> -u <user> -a <account> --id <schema id>
 unbind-schema
neo unbind-schema -h <host> -u <user> -a <account> -b <application>
 bind-schema
neo bind-schema -h <host> -u <user> -a <account> -b <application> --id<schema id>

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 5


Sharing Data Between Applications
Demo

Scenario: Configure the JDBC sample


to use the same data as the EJB sample
 No code change is needed
 Unbind the JDBC sample application EJB Sample

from its schema


Auto-bound
 Bind it to the schema of the EJB sample JDBC Sample <DEFAULT>
 Restart the JDBC sample application Data source

 Request it Auto-bound
<DEFAULT>
Data source

ejb sample schema

jdbc sample
schema

SAP HANA database


systems

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 6


Sharing Data Between Applications
What You’ve Learned in This Unit

 What auto-generated schemas are


 What default data-source binding is
 How to bind a schema to an
application
 How to remove the binding between
an application and a schema
 How to share data between
applications

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 7


Contact information:

open@sap.com
© 2014 SAP SE or an SAP affiliate company.
All rights reserved.

No part of this publication may be reproduced or transmitted in any form or for any purpose without the express permission of SAP SE or an
SAP affiliate company.

SAP and other SAP products and services mentioned herein as well as their respective logos are trademarks or registered trademarks of SAP SE
(or an SAP affiliate company) in Germany and other countries. Please see http://global12.sap.com/corporate-en/legal/copyright/index.epx for additional
trademark information and notices.

Some software products marketed by SAP SE and its distributors contain proprietary software components of other software vendors.

National product specifications may vary.

These materials are provided by SAP SE or an SAP affiliate company for informational purposes only, without representation or warranty of any kind,
and SAP SE or its affiliated companies shall not be liable for errors or omissions with respect to the materials. The only warranties for SAP SE or
SAP affiliate company products and services are those that are set forth in the express warranty statements accompanying such products and
services, if any. Nothing herein should be construed as constituting an additional warranty.

In particular, SAP SE or its affiliated companies have no obligation to pursue any course of business outlined in this document or any related
presentation, or to develop or release any functionality mentioned therein. This document, or any related presentation, and SAP SE’s or its affiliated
companies’ strategy and possible future developments, products, and/or platform directions and functionality are all subject to change and may be
changed by SAP SE or its affiliated companies at any time for any reason without notice. The information in this document is not a commitment,
promise, or legal obligation to deliver any material, code, or functionality. All forward-looking statements are subject to various risks and uncertainties
that could cause actual results to differ materially from expectations. Readers are cautioned not to place undue reliance on these forward-looking
statements, which speak only as of their dates, and they should not be relied upon in making purchasing decisions.

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 9


Week 2 Unit 5:
Using Multiple Databases
January, 2015
Using Multiple Databases
How Can I Use Multiple Schemas in My Application?

Scenario: Application1
 You want your application to store data
Auto-bound
in multiple schemas Application2 <DEFAULT>
Data source

Auto-generated schemas Auto-bound


 One schema per application <DEFAULT>
Data source
 Database type (default account
Auto-generated
setting) schema
 Default data-source binding
SAP HANA database systems

Auto-generated
schema

SAP MaxDB database


systems

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 2


Using Multiple Databases
How to Use Multiple Schemas in an Application

Steps:
1. Prepare the application
2. Create schemas
3. Unbind the auto-generated
schema
4. Bind the application to the other
schemas using declared data-
source names
5. For Java EE Web Profile 2.X,
also create bindings to
– jdbc/defaultManagedDataSource
– jdbc/defaultUnmanagedDataSource

6. Re-deploy the application

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 3


Using Multiple Databases
Demo: Scenario

Enhance the JDBC sample to use a


second schema of type MaxDB JDBC Sample

‘jdbc/DefaultDB’
Data source

Auto-generated
schema

SAP HANA database systems

‘jdbc/MaxDB’
Data source

maxdb schema

SAP MaxDB database systems

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 4


Using Multiple Databases
Demo: Code Changes

Declare additional resource reference


in web.xml
<resource-ref>
<res-ref-name>jdbc/MaxDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
</resource-ref>

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 5


Using Multiple Databases
Demo: Code Changes

Create a new method in ‘PersistenceWithJDBCServlet‘ that looks up a data


source by name and returns the database product information
private String getDatabaseNameAndVersion(String
dataSourceName) throws NamingException, SQLException {
InitialContext ctx = new InitialContext();
DataSource dataSource =
(DataSource) ctx.lookup(dataSourceName);
Connection connection = null;
try {
connection = dataSource.getConnection();
DatabaseMetaData metaData =
connection.getMetaData();
return metaData.getDatabaseProductName() + " "
+ metaData.getDatabaseProductVersion();
} finally {
if (connection != null)
connection.close();
}
}

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 6


Using Multiple Databases
Demo: Code Changes

Invoke the new method ‘PersistenceWithJDBCServlet’ in doGet(…) to


display the database product information in the UI for both the ‘jdbc/MaxDB’
and ‘jdbc/DefaultDB’ data sources

response.getWriter().println("<p>The MaxDB data source is connected to " +


getDatabaseNameAndVersion("java:comp/env/jdbc/MaxDB") + "</p>");

response.getWriter().println("<p>The DefaultDB data source is connected to " +


getDatabaseNameAndVersion("java:comp/env/jdbc/DefaultDB") + "</p>");

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 7


Using Multiple Databases
Demo: Configuration Changes

Create a new schema of type MaxDB


visible to all apps in the account
 Choose a unique schema name
 Choose the database type SAP
MaxDB

Tools
 SAP HANA Cloud Platform cockpit
 Console client command
neo create-schema -h <host> -u <user> -a
<account> --id<schema id> -d <db type>

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 8


Using Multiple Databases
Demo: Configuration Changes

Unbind the default data-source


binding
JDBC Sample
Auto-bound

Bind the new MaxDB schema with <DEFAULT>

data-source name ‘jdbc/MaxDB‘ Data source

Bind the old SAP HANA schema with


Auto-generated
data-source names schema
my_hana
– jdbc/DefaultDB schema

– jdbc/defaultManagedDataSource SAP HANA database systems


– jdbc/defaultUnmanagedDataSource

my_maxdb
schema

SAP MaxDB database systems

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 9


Using Multiple Databases
Demo: Results

Restart the JDBC sample application

Request it

Check the UI for the new entries showing the database product name and
version

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 10


Using Multiple Databases
What You’ve Learned in This Unit

 How an application can use multiple


schemas
 How to create a schema
 How to bind multiple schemas to an
application
 Which additional data-source
bindings must be created if the
application uses Java EE Web
Profile 2.X

© 2014 SAP AG or an SAP affiliate company. All rights reserved Public 11


Contact information:

open@sap.com
© 2014 SAP AG or an SAP affiliate company.
All rights reserved.

No part of this publication may be reproduced or transmitted in any form or for any purpose without the express permission of SAP AG or an
SAP affiliate company.

SAP and other SAP products and services mentioned herein as well as their respective logos are trademarks or registered trademarks of SAP AG
(or an SAP affiliate company) in Germany and other countries. Please see http://global12.sap.com/corporate-en/legal/copyright/index.epx for additional
trademark information and notices.

Some software products marketed by SAP AG and its distributors contain proprietary software components of other software vendors.

National product specifications may vary.

These materials are provided by SAP AG or an SAP affiliate company for informational purposes only, without representation or warranty of any kind,
and SAP AG or its affiliated companies shall not be liable for errors or omissions with respect to the materials. The only warranties for SAP AG or
SAP affiliate company products and services are those that are set forth in the express warranty statements accompanying such products and
services, if any. Nothing herein should be construed as constituting an additional warranty.

In particular, SAP AG or its affiliated companies have no obligation to pursue any course of business outlined in this document or any related
presentation, or to develop or release any functionality mentioned therein. This document, or any related presentation, and SAP AG’s or its affiliated
companies’ strategy and possible future developments, products, and/or platform directions and functionality are all subject to change and may be
changed by SAP AG or its affiliated companies at any time for any reason without notice. The information in this document is not a commitment,
promise, or legal obligation to deliver any material, code, or functionality. All forward-looking statements are subject to various risks and uncertainties
that could cause actual results to differ materially from expectations. Readers are cautioned not to place undue reliance on these forward-looking
statements, which speak only as of their dates, and they should not be relied upon in making purchasing decisions.

© 2014 SAP SE or an SAP affiliate company. All rights reserved. Public 13

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy