Вы находитесь на странице: 1из 72

Five Ways to Enhance

SAP BI Backend
Functionality Using
ABAP

Marc F. Bernard
SAP
Agenda

Introduction

1) Data Extraction
2) Data Staging
3) BEx Variables
4) Virtual InfoCubes, Key Figures, and Characteristics
5) ABAP in Process Chains

Summary

Appendix

© SAP AG 2005, 2
What This Session Will Cover

5) Process Chains
Focus is on
SAP BI Backend

3) BEx Variables

4) Virtual
InfoCubes, Key
Figures, and
Characteristics

2) Data Staging

1) Data Extraction

© SAP AG 2005, 3
ABAP Basics – What You Should Know

ABAP
ABAP Performance
Performance

ABAP
ABAP Enhancements
Enhancements

© SAP AG 2005, 4
ABAP Performance

Internal Tables
Know the difference between standard, sorted, and hashed tables
Understand when to use which table type for best performance
Field Symbols
Avoid field symbols if data can be accessed directly
Use field symbols to accelerate table operations (read, update)
Subroutines
Define the correct parameter types for subroutines and function modules
(using, changing, importing, exporting)
Use global variables only when necessary
Data Retrieval
Reduce database accesses as much as possible
Set table buffering correctly (none, single record, generic)
Check if secondary indexes will speed up database selections

© SAP AG 2005, 5
ABAP Basics – What You Should Know

ABAP
ABAP Performance
Performance

ABAP
ABAP Enhancements
Enhancements

© SAP AG 2005, 6
ABAP Enhancements: How They Work

***
*** SAP
SAP program
program ***
***
*********************************
*********************************

PROGRAM
PROGRAM <name
<name of
of SAP
SAP program>.
program>.

<Call enhancement>
<Object in customer namespace>

Customer exit Exit function module


Business add-in Method

© SAP AG 2005, 7
Function Module Exit: Process Flow

Application Program

X Function Group

Exit function module


EXIT_<prog_name>_001

CALL CUSTOMER-FUNCTION

Include in
Customer Namespace

© SAP AG 2005, 8
Calling and Creating Function Modules

PROGRAM
PROGRAM <program_name>.
<program_name>.

START-OF-SELECTION.
START-OF-SELECTION.
...
...

CALL CUSTOMER-FUNCTION '001'


EXPORTING
....
IMPORTING
.... .
FUNCTION-POOL
FUNCTION-POOL XAAA.
XAAA.
...
...
FUNCTION
FUNCTION exit_<program_name>_001.
exit_<program_name>_001.
...
...

INCLUDE zxaaau01.

ENDFUNCTION.
ENDFUNCTION.

© SAP AG 2005, 9
Implementing Business Add-Ins: Initial Screen

Business Add-Ins: Implementation Maint. Initial Screen

Name of the
Implementation name <impl>
Implementation
Display Change Create
Create

Business Add-Ins: Definition Sel.


Definition name <badi>

© SAP AG 2005, 10
Implementing Business Add-Ins: Methods

Attrs. Interface FCodes


Interface name <badi-interface>
Name of implementing class <impl-class>

Methode Description
<method> Add-in method

Class Builder: Edit Method IF_<interface>~<m...>

METHOD if_<badi-interface>~<method>.

*...

ENDMETHOD.

© SAP AG 2005, 11
Agenda

Introduction

1) Data Extraction
2) Data Staging
3) BEx Variables
4) Virtual InfoCubes, Key Figures, and Characteristics
5) ABAP in Process Chains

Summary

Appendix

© SAP AG 2005, 12
Data Extraction

Contents:
Creating generic DataSources using function modules for
Data Extraction

Enhancing DataSources for transaction data, master data


attributes, and texts

Using the Service API function enhancement to


enrich data

Overview of the options available for enhancing data in


the source system

© SAP AG 2005, 13
Using the Tools for Generic Data Extraction

When should you use the generic data extraction tools


to create a DataSource?

Business Content does not include a DataSource for your application


You want to implement a delta method on your generic DataSource
that cannot be implemented by using the generic delta functionality
(timestamp, date ...)
The application does not allow you to create additional application-
specific generic extractors (CO-PA, FI-SL, LIS)
You use your own programs in the SAP system to populate
your own tables
You have to extract data from several DB tables when:
Using a view is not possible because of insufficient JOIN
Only some fields are relevant to these tables
Data has to be enriched with information not available in the BW system

© SAP AG 2005, 14
Tools for Generic Data Extraction: RSO2

DataSources for
•Transaction data
• Master data attributes
• Texts

© SAP AG 2005, 15
Creating DataSources for Generic Data Extraction

© SAP AG 2005, 16
Generic Data Extraction with Function Modules:
Function Module Interface

© SAP AG 2005, 17
Process of Extraction

The function module is called up several times during an


extraction process:

1. Initialization call:
Only the request parameters are transferred from the module
here. It cannot transfer data at this point.
2. First read call:
The extractor delivers the data typed with the extraction structure
to an interface table.The number of rows expected is specified in a
request parameter (I_MAXSIZE).
3. Further read calls:
The extractor delivers the data connected to the last package,
again in a package with I_MAXSIZE rows.
4. Last call:
The function module is now called until the exception
NO_MORE_DATA is produced. No more data can be transferred
in the call in which the exception is produced.

© SAP AG 2005, 18
Enhancing Business Content DataSources

Reasons:
You want to add extra attributes to the characteristics (master data)
shipped with the system
You want to populate additional fields that you appended to the
extract structure with data at the time of extraction
You want to change/enhance texts or hierachies
Prerequisites:
The additional data is available at the time the extraction takes place
All information that is needed to determine the additional data clearly
is available

© SAP AG 2005, 19
Creating and Maintaining Customer Appends

In BW-IMG
(TA SBIW)

Dictionary: Change Append Structure 2


3

Append structure ZABIW_MARA_S


Short description Append for BIW_MARA_S

Coponent Component type


ZZDISMM DISMM
...

© SAP AG 2005, 20
Developing Service API Function Enhancements

In BW-IMG 1
(TA SBIW)

© SAP AG 2005, 21
Important Points/Troubleshooting

Important points
Once the function exit has been used, it is called for every
extraction (CASE statement required)
Key fields for enhanced content must be available
Maximum field length is 60 characters
Include all recommended units
Further documentation is available under CMOD transaction

Troubleshooting is easily done by setting a break-point in


the exit code and starting the "Extractor Checker" tool
(transaction RSA3)

© SAP AG 2005, 22
Agenda

Introduction

1) Data Extraction
2) Data Staging
3) BEx Variables
4) Virtual InfoCubes, Key Figures, and Characteristics
5) ABAP in Process Chains

Summary

Appendix

© SAP AG 2005, 23
Data Staging (1)

Overview
Overview

InfoPackages
InfoPackages

Start
Start Routines
Routines

Transfer
Transfer Rules
Rules

Update
Update Rules
Rules

© SAP AG 2005, 24
SAP BI Data Staging and ABAP Routines

Info Provider

• Start routine
ABAP • Update rule

Communication Structure

• Start routine

Data Flow
ABAP • Transfer rule

Transfer Structure

• Dynamic InfoPackage selection


ABAP • Dynamic flatfile filename
• Dynamic deletion of requests

InfoPackage

© SAP AG 2005, 25
Sequential Order to Work with SAP BI Structures

The BW ABAP routines are processed sequentially for all records and
all fields:
InfoPackage – Create dynamic filenames (for flat file import)

InfoPackage – Dynamic selection – selection criteria 1 ... n

Transfer rule – Start routine

Transfer rule – Dynamic routines to combine field by field from the transfer structure to
the communication structure

Update rule – Start routine

Update rule – Dynamic routines to combine field by field from the communication struture
to the infoprovider key figures or to the ODS-object data fields

Update rule – Dynamic routines to combine field by field from the communication
structure to the infoprovider characteristics or the ODS-object key fields

InfoPackage – Deletion or taking out of requests after the loading process:


Only for non-collapsed requests
Otherwise the request is cancelled if there is an exception aggregation
Conditions of deletion in process chains are valid for all data targets of the InfoPackage;
within the scheduler the conditions are only valid for the selected data target

© SAP AG 2005, 26
Data Staging (2)

Overview
Overview

InfoPackages
InfoPackages

Start
Start Routines
Routines

Transfer
Transfer Rules
Rules

Update
Update Rules
Rules

© SAP AG 2005, 27
Selection Possibilities

InfoPackages provide static and dynamic selection criteria for


every selection field for various characteristic types

DYNAMIC

Date field (due date is actual day):


• Get yesterday (00:00 to 24:00h)
• Get last week (Monday to Sunday)
• Get last month (first to last day of last month)
• Get last quarter (first to last day of last quarter)
• Get last year (1st of Jan. to 31st of Dec. of previous year)
No date field:
• Free boundary (also a period boundary is possible)
All fields:
• ABAP Routine
• OLAP Variable
© SAP AG 2005, 28
Call of Deletion Functionality

When the button on the InfoPackage tab “Data Targets” is


grey, there are no functions for deletion defined

When a deletion function is defined the symbol appears

© SAP AG 2005, 29
Deletion of Requests After the Update Rules Where
Executed

Important:
The deletion functionalities are
executed after all update rules
have run!

Multiple deletion conditions are


possible at the same time:
By object types
By time definition
By routine

Exceptions to the deletion


conditions can be set for specific
days

© SAP AG 2005, 30
Dynamic Determination of Filenames

Should you upload from client workstation or the application server?


It is preferable to use the server path advantages:
Data load in batch mode is possible
Path is physically equal to all administrators

Scenario in which to use it:


Transaction data is delivered monthly by flat file
The naming convention includes the name of the month within the
filename
Directory paths are maintained for every year
Coding:
Concatenate
Directory path
Actual year
Actual month

© SAP AG 2005, 31
Data Staging (3)

Overview
Overview

InfoPackages
InfoPackages

Start
Start Routines
Routines

Transfer
Transfer Rules
Rules

Update
Update Rules
Rules

© SAP AG 2005, 32
Call of Start Routines

Start routines are processed:

– After the data is written into the


PSA

– Before the transfer rules are


processed

Start routines do get as a


parameter the whole data package
structured in the form of the
transfer structure

© SAP AG 2005, 33
Classic Usage – Transfer Rules

Particularly the start routine of the transfer rules gives


“classic” scenarios of usage:
Selective deletion of records delivered with the data package
Coding example:
DELETE DATAPAK WHERE VKORG = “1000.”
Advantage:
Smaller data package loading performance improves
Reasons why (examples):
The InfoPackage from the data source does not offer selection criteria
The processing time with a selection from the InfoPackage sent to the
source system takes considerably more time than without selection
The deletion criteria is easy to code within the start routine
Fill an internal table from a DDIC select
(please refer to the performance aspects)
Complex data cleansing or data consolidation from various
source systems eventually with a look up as ETL process

© SAP AG 2005, 34
Typical Scenarios – Update Rules

Fill an internal table from a database table (DDIC)


(please refer also to performance aspects)

Look up scenarios when loading into data targets

Add or append information from other data providers or data stores

Consolidation scenarios:
Consolidate characteristic and key figure combinations
Key figure calculation to store the result on the database in order to
release the OLAP processor, e.g., when multiple basis cubes are
consolidated into one

Segmentations of characteristic values in order of key


figure numbers
(e.g., ABC classification on characteristic values)

© SAP AG 2005, 35
Data Staging (4)

Overview
Overview

InfoPackages
InfoPackages

Start
Start Routines
Routines

Transfer
Transfer Rules
Rules

Update
Update Rules
Rules

© SAP AG 2005, 36
Call of Transfer Rule Routine

1.

2.

3.

Edit transfer rules

Create routine

Transfer rule routine dialog:


1. Give the routine a name
2. Mark the fields with
which you want to work
© SAP AG 2005, 37
Data Staging (5)

Overview
Overview

InfoPackages
InfoPackages

Start
Start Routines
Routines

Transfer
Transfer Rules
Rules

Update
Update Rules
Rules

© SAP AG 2005, 38
InfoCube Characteristic Update Rule
ODS-Object Key Field Update Rule

Characteristic assignment – change of source (1)

Give a name for the update rule (2)

Interface:
Like in the start routine global declaration within the header
The form routine “compute_key_field” delivers the following parameters:
The table MONITOR for monitoring
The communication structure COMM_STRUCTURE with all fields from the data
source
The current record number of the loop over the data package
The number of total records
RESULT delivers to the marked characteristic the result value
RETURNCODE says whether the current record will be processed or not
ABORT clarifies whether the whole data package will be processed or not

© SAP AG 2005, 39
Time References
Within update rules there are various
possibilities to reference time
dependencies:
Characteristic update rule with time
reference
It is possible to update data target
characteristics of type “DATE“ via an
automatic time distribution
The field is fed from a data field out of the
communication structure
For example, the data target characteristic
calendar day is fed from the source
characteristic calendar month
The effect is that every summarized key
figure has to be distributed to the calendar
days of the month
In addition to that, it can be defined
whether the company calendar has to be
used
Time characteristics
Within the frame time reference various
data target time characteristics can be filled
automatically from only one time
characteristic of the data source
© SAP AG 2005, 40
Speciality: Return Table

If it is necessary to use a return table the generated update rule differs


marginally
... (1) ... (2) ...
Interface:
Global data declaration within the header works in the same way as the start
routine and characteristics
The form routine “compute_data_field” delivers following parameters:
The table MONITOR for monitoring
The table RESULT_TABLES with the structure of the data target
The communication structure COMM_STRUCTURE with all fields from the data source
The current record number of the loop over the data package
The number of total records
RESULT delivers to the marked characteristic the result value
RETURNCODE says whether the current record will be processed or not
ABORT clarifies whether the whole data package will be processed or not
The structure of the data target is assigned with the parameter ICUBE_VALUES

© SAP AG 2005, 41
Agenda

Introduction

1) Data Extraction
2) Data Staging
3) BEx Variables
4) Virtual InfoCubes, Key Figures, and Characteristics
5) ABAP in Process Chains

Summary

Appendix

© SAP AG 2005, 42
BEx-Variables

One way to fill a variable value is to use ABAP coding


We can differentiate between two alternatives:
1. Fill the value independently with a program
2. Fill the value dependent on an other variable value

© SAP AG 2005, 43
BEx-Variables (cont.)

Default information:
For filling variables the standard SAP Enhancement
RSR00001 is used
See the documentation related to this enhancement
for details and example coding (transaction SMOD)
In the function module of this enhancement you will
find include ZXRSRU01 where you implement your
program code
The exit is called four times, called "steps" (I_STEP)

© SAP AG 2005, 44
BEx-Variables (cont.)

Default information:
Step 1 (I_STEP = 1) is called before the processing of the
variable pop-up and gets called for every variable of the
processing type, “customer exit.” You can use this step
to fill your variable with a default or proposal value
Step 2 (I_STEP = 2) is called after processing of the
variable pop-up. This step is called only for those
variables that are not marked as “ready for input” and
are set to “mandatory variable entry”
Step 3 (I_STEP = 3) is called after all variable processing
and gets called only once and not per variable. Here you
can validate the user entries
Step 0 (I_STEP = 0) is called for variables that are used in
authorizations objects

© SAP AG 2005, 45
BEx-Variables (cont.)

Please note that you cannot overwrite the user input values
into a variable with this customer exit. You can only derive
values for other variables or validate the user entries

© SAP AG 2005, 46
Agenda

Introduction

1) Data Extraction
2) Data Staging
3) BEx Variables
4) Virtual InfoCubes, Key Figures, and Characteristics
5) ABAP in Process Chains

Summary

Appendix

© SAP AG 2005, 47
Business Scenario

Standard deviation formulas are calculated for variable


versions and fiscal years

Calculation in the query is too complex because the formula


needs to be calculated on a fixed granularity (often more
detailed than the query)

Calculation in the Administrator Workbench is too inflexible


because there are too many combinations of years and
versions

Warning: This exit is very powerful but can cause huge


performance problems

© SAP AG 2005, 48
What Is a Virtual Characteristic or Key Figure?

A virtual characteristic or a virtual key figure is an InfoObject,


which is defined within the InfoProvider as metadata without
having any data stored physically

Historical Background:

The BAdI RSR_OLAP_BADI replaces the user exit RSR00002 with


the following advantages:
Easier to implement
Different classes for different InfoCubes/implementations
No large includes

© SAP AG 2005, 49
Virtual Key Figures and Characteristics

Three
Three Implementation
Implementation Steps:
Steps:

1)
1) Creating
Creating aa BAdI
BAdI Implementation
Implementation

2)
2) Implementation
Implementation of
of the
the DEFINE
DEFINE Method
Method

3)
3) Implementation
Implementation of
of the
the COMPUTE
COMPUTE Method
Method

© SAP AG 2005, 50
Virtual InfoCubes with Services

Definition:
InfoCube that does not have its own physical data storage in SAP BI

User-defined function module is used as data source

Properties of data source can be defined more precisely using several


options. Depending on these properties, the Data Manager provides
services for converting parameters and data

Usage:
You use a Virtual InfoCube with services if you want to display data
from non-SAP BI data sources in SAP BI without having to copy the
data set into the SAP BI structures

The data can be either local or remote. You can also use your
own calculations to change the data before it is passed to the
OLAP processor

© SAP AG 2005, 51
Agenda

Introduction

1) Data Extraction
2) Data Staging
3) BEx Variables
4) Virtual InfoCubes, Key Figures, and Characteristics
5) ABAP in Process Chains

Summary

Appendix

© SAP AG 2005, 52
ABAP in Process Chains

Process
Process Chains
Chains

Insert
Insert Process
Process "ABAP
"ABAP Program"
Program"

Implementing
Implementing New
New Process
Process Types
Types

© SAP AG 2005, 53
Process Chains Maintenance in RSPC

© SAP AG 2005, 54
ABAP in Process Chains

Process
Process Chains
Chains

Insert
Insert Process
Process "ABAP
"ABAP Program"
Program"

Implementing
Implementing New
New Process
Process Types
Types

© SAP AG 2005, 55
Insert ABAP Program

Transaction Code RSPC:

1.

2.

1. Insert process “ABAP Program“


2. Create new process variant

© SAP AG 2005, 56
Create Variant

1.

2.

1. Create new process


variant: technical name
and description
2. Maintain process variant

© SAP AG 2005, 57
Maintain Variant – Program to Call/Called From

Programs with or
without variants

Predefined events of the


application or events you
defined yourself
The background processing
system receives events (signal
stating that a predefined status
has been reached) and then
starts the job

Program runs on the same server in


which the chain is scheduled

Scheduled program waits for an event on the target server

© SAP AG 2005, 58
ABAP in Process Chains

Process
Process Chains
Chains

Insert
Insert Process
Process "ABAP
"ABAP Program"
Program"

Implementing
Implementing New
New Process
Process Types
Types

© SAP AG 2005, 59
Implementing a New Process Type

If you ...

... have a simple, stand-alone program to run in a chain


... have a program, which is planned in batch by another program or user

... then you can use the process type "ABAP" to run your program in a chain

However, if you ...

... want to ask predecessor processes of your program


... write a log, which should be displayed in the process monitor
... have implemented an own monitor
... have a customizing screen, which is more difficult than the “parameters“
of a program

... then it is recommended to custom develop your own process type

© SAP AG 2005, 60
Agenda

Introduction

1) Data Extraction
2) Data Staging
3) BEx Variables
4) Virtual InfoCubes, Key Figures, and Characteristics
5) ABAP in Process Chains

Summary

Appendix

© SAP AG 2005, 61
7 Key Points to Take Home

Know where the SAP BI backend can be enhanced using ABAP

Implement enhancements as close to the source system


as possible

Knowledge about general ABAP performance tuning


is mandatory

Often there are several options for the implementation –


choose wisely

Check the documentation and example implementations

Read how-to papers available on the SAP Service Marketplace

Sign up for SAP Developer Network

© SAP AG 2005, 62
For More Information: Access the SAP Developer Network
– www.sdn.sap.com
The central hub for the SAP technology
community
Everyone can connect, contribute, and
collaborate – consultants, administrators
and developers
Focus around SAP NetWeaver and SAP
xApps

High quality of technical resources


Articles, how-to guides, weblogs,
collaborative areas, discussion forums,
downloads, toolkits, and code-samples

A collaboration platform, not a


one-way street
SAP experts from customers, partners
and SAP

SDN is powered by SAP NetWeaver™


Built on the SAP Enterprise Portal
Featuring collaboration capabilities of SAP
Knowledge Management

© SAP AG 2005, 63
Questions?

Q&A
Marc.bernard@sap.com

© SAP AG 2005, 64
Agenda

Introduction

1) Data Extraction
2) Data Staging
3) BEx Variables
4) Virtual InfoCubes, Key Figures, and Characteristics
5) ABAP in Process Chains

Summary

Appendix (not shown during presentation)

© SAP AG 2005, 65
SAP Enhancements and BAdIs

RS_BBS_BADI:
Exit of Report-Report-Interface

RSDBC_SQL_STATEMENT:
DB connect: BADIs for the DB SQL Statements

RSR_OLAP_AUTH_GEN:
Generating authority: Creating User (new in rel. 3.10)

RSR_OLAP_BADI:
Virtual characteristics and key figures in reporting

RSU5_SAPI_BADI:
SAP BI Service APIs (in BW and in R/3 since 4.6, respectively)

© SAP AG 2005, 66
SAP Enhancements and BAdIs (cont.)

OPENHUB_TRANSFORM:
Open hub transformations
RSRA_ALERT:
Batch reporting (BW-BEX-RSRB)

RSAR_CONNECTOR:
Formula Builder—customer-defined functions

BW_SCHEDULER:
BAdI for subsequent processing

RSOD_DOC_BADI:
BAdI for documents

© SAP AG 2005, 67
SAP Enhancements and BAdIs (cont.)

RSOD_ITEM_DOC:
BAdI for the Web item “Single Document”

RSOD_ITEM_DOC_LIST:
BAdI for the Web item “List of Documents”

RSOD_WWW_DOC_MAINT:
BAdI for the maintenance of text documents on the Web

© SAP AG 2005, 68
SAP Enhancements and BAdIs (cont.)

RSAP0001 exits parallel with RSU5_SAPI_BADI

RSR00001 see Note 492445


Enhancement for reporting variables

RSR00002 exists parallel with RSR_OLAP_BADI

RSR00004 automatically migrated to BAdI SMOD_RSR00004


Report-Report-Interface

RSSBR001 obsolete (deleted with rel. 3.0B SP8)

© SAP AG 2005, 69
Exits in Business Planning and Simulation (BW-BPS)

Planning functions of Type "Exit"

Variables of Type "Exit"

Characteristic relationships of Type "Exit"


Combination check, combination proposal, derivation

Enhancement SEMBPSU01 obsolete


Characteristic validation
Enhancement SEMBPSU02 obsolete
Characteristic derivation

© SAP AG 2005, 70
Runtime Analysis of ABAP Statements

Transaction: SE30 Tips and Tricks


Runtime Analysis of
ABAP Statements
Choice of Different
ABAP Statements

Documentation of
ABAP Statements

© SAP AG 2005, 71
Copyright 2005 SAP AG. 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. The information contained herein may be changed without prior notice.
Some software products marketed by SAP AG and its distributors contain proprietary software components of other
software vendors.
Microsoft®, WINDOWS®, NT®, EXCEL®, Word®, PowerPoint® and SQL Server® are registered trademarks of Microsoft
Corporation.
IBM®, DB2®, DB2 Universal Database, OS/2®, Parallel Sysplex®, MVS/ESA, AIX®, S/390®, AS/400®, OS/390®,
OS/400®, iSeries, pSeries, xSeries, zSeries, z/OS, AFP, Intelligent Miner, WebSphere®, Netfinity®, Tivoli®, Informix
and Informix® Dynamic ServerTM are trademarks of IBM Corporation in USA and/or other countries.
ORACLE® is a registered trademark of ORACLE Corporation.
UNIX®, X/Open®, OSF/1®, and Motif® are registered trademarks of the Open Group.
Citrix®, the Citrix logo, ICA®, Program Neighborhood®, MetaFrame®, WinFrame®, VideoFrame®, MultiWin® and other
Citrix product names referenced herein are trademarks of Citrix Systems, Inc.
HTML, DHTML, XML, XHTML are trademarks or registered trademarks of W3C®, World Wide Web Consortium,
Massachusetts Institute of Technology.
JAVA® is a registered trademark of Sun Microsystems, Inc.
JAVASCRIPT® is a registered trademark of Sun Microsystems, Inc., used under license for technology invented and
implemented by Netscape.
MarketSet and Enterprise Buyer are jointly owned trademarks of SAP AG and Commerce One.
SAP, R/3, mySAP, mySAP.com, xApps, xApp 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. All other product and service names mentioned are the trademarks of their respective companies.

© SAP AG 2005, 72

Вам также может понравиться