Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Do's and Don'ts: SAP TM Development

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

Do’s and Don’ts

SAP TM Development
March 2014
Customer

e only with an image


Use this title slid
Do’s and Don’ts in SAP TM Development

March 2014
Agenda

General Do’s and Don’ts


Naming Conventions
Performance
Dependent Objects
Queries
Business Object Modelling
BOPF Test UI
Authorizations
Change Handling
Hints and Links

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


General Do’s and Don’ts

Write readable code


Ÿ  Remove obsolete code instead of commenting it out
(no check on sy-uname or checks like “1 = 2”)
Ÿ  Use indentation / Pretty Printer; avoid too many empty lines between coding blocks
Ÿ  Write generic code only if it is really necessary
Ÿ  Add comments to explain purpose of coding

4-eyes principle for critical coding


Ÿ  In doubt, request an ad-hoc code review with a more experienced colleague (e.g. after
writing a tricky functionality)
–  reuse (“helper”) coding should always be cross-reviewed

Write mass enabled code

Develop BO specific helper classes with static methods to improve reuse

Use mainly such methods in Determinations, Validations, Actions etc.

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


General Do’s and Don’ts

BOPF Reuse Library


•  Transaction BOBF provides a browser for reuse libraries (Library Browser)
•  For SAP TM the library /SCMTMS/LIBRARY_TM was created
•  General helper classes in SAP TM:
•  /SCMTMS/CL_COMMON_HELPER
•  Determination Trigger Nodes determination
•  Determine ISO code for SAP currency code
•  Dependent object handling
•  Message handling
•  Etc.
•  /SCMTMS/CL_*_HELPER

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


General Do’s and Don’ts
Message Handling

Message Handling (to consumers like UI)


•  BOPF Service and Transact. Handler returns BOPF message object (/BOBF/IF_FRW_MESSAGE)
•  Before adding new messages to e.g. EO_MESSAGE, you might need to instantiate with /BOBF/
CL_FRW_FACTORY=>GET_MESSAGE( )
•  Analyse a message object with /SCMTMS/CL_COMMON_HELPER=>ANALYZE_MESSAGES
•  Proposed way to create messages
METHOD /BOBF/IF_FRW_VALIDATION~EXECUTE.
DATA: lv_msg TYPE string,
ls_msg TYPE symsg.

" 1. Clear message object at the beginning of the method implementation


CLEAR: et_failed_key,
eo_message.

" 2. If there is a problem, create a new message (enable where-used check for this message)
MESSAGE E007(<yourMsgClass>) WITH var1 var2 INTO lv_msg.

" 3. Use helper to add message to message container


/scmtms/cl_msg_helper=>msg_helper_add_symsg(
EXPORTING
iv_node = is_ctx-node_key
iv_key = ls_key-key “instance key from IT_KEY[]
iv_detlevel = /scmtms/cl_applog_helper=>sc_al_detlev_default
iv_probclass = /scmtms/cl_applog_helper=>sc_al_probclass_medium
iv_attribute = zds_if_training_0529_c=>sc_node_attribute-item-quantity
CHANGING
co_message = eo_message ).

•  iv_detlevel and iv_probclass define with user Message Settings (à IMG), if message is visible

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


General Do’s and Don’ts
Message Handling

Web Dynpro message box is eliminating duplicate messages automatically comparing


message text and message variables

SAP TM is generating header messages for message contexts, like


Forwarding Order 0815 Item 10
Ÿ  Information is extracted from related Business Object, Document Category, Instance Key and related BO
Node
Ÿ  In case of duplicate messages this can lead to several header messages and then just one error
message
–  Example:
Forwarding Order 0815 Item 10
Forwarding Order 0815 Item 20
Forwarding Order 0815 Item 40
Quantity not specified
Ÿ  This can look very strange. To force WD to show all detail messages, you need to differentiate the
messages via the message variables (without showing them), e.g. by providing the item key as message
variable 1. This leads to that for every header message one detail message is shown.

In general…
Ÿ  Define one aggregated message with Level of Detail 2
Ÿ  Add detailed messages with Level of Detail 3
©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 7
General Do’s and Don’ts
Implementation Rules

1.  Initialize Exporting parameters


2.  Check if it_keys are filled
3.  Pre-read data
4.  Processing
•  Error Handling (ET_FAILED_KEY?)
•  Raise BO specific exceptions
•  Timestamps in backend always in UTC
•  After modifies check change object for foreign locks, failed updates, creates, deletes
•  Creating node instances you have to provide always new GUIDs for the instance KEYs.
The keys are taken over by BOPF and can be used to identify the new created
instances.
•  To get a new key / UUID use method /BOBF/CL_FRW_FACTORY=>GET_NEW_KEY( )
•  Avoid complex generic coding
–  Generic complexity is expensive
–  Double check if an explicite implementation wouldn‘t make more sense
–  Binding Code Review for every generic coding!

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


Naming Conventions

DDIC (BO specific packages or /SCMTMS/COMMON_DDIC)


Domain /SCMTMS/<abbrev>
Data Element /SCMTMS/<abbrev>
Structure /SCMTMS/S_<BO?>_<abbrev> à <BO?> only if no reuse
Table Type /SCMTMS/T_<BO?>_<abbrev> à <BO?> only if no reuse
Database Table /SCMTMS/D_<abbrev>

BOPF
Queries QUERY_BY_ELEMENTS for node spec. queries,
QUERY_BY_ATTRIBUTES for nodes spanning queries
Determinations DET_<node>_<timepoint>
Validations VAL_<node>_CONSISTENCY, VAL_<node>_<action>
Actions Some clear command
Associations Some clear description, e.g. TO_ITEM_FILTER

Classes (BO specific packages or /SCMTMS/COMMON_PRG or /SCMTMS/COMMON)


Helper /SCMTMS/CL_<bo>_HELPER
Parameters IV_, IT_, IR_, IO_, CV_, CT_, CR_, CO_, EV_, …, RV_, RT_, RO_, etc.

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


Naming Conventions

Component names in BO nodes for XBO Associations


•  Target node is not a ROOT node: <BO>_<Node>_KEY
•  Target node is a ROOT node: <BO>_KEY

Component names for Standard Association (short cut)


•  <Node>_KEY

Non BOPF Naming Conventions


•  Customizing Table: /SCMTMS/C_<name>
•  System Table: /SCMTMS/I_<name>
•  View: /SCMTMS/V_<name>
•  View Cluster: /SCMTMS/VC_<name>
•  Search Help: /SCMTMS/SH_<name>

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


Performance

Secondary indices
Ÿ  all node table types (/SCMTMS/T_*_K) should have a primary key with attribute KEY and a
secondary keys with attribute PARENT_KEY of type non-unique sorted
–  of course, all READ TABLE ... WITH KEY and LOOP AT ... WHERE accesses must use these
secondary indices.
Ÿ  define and use application-specific secondary keys for most frequently accessed fields of all
table types
–  keep in mind that unique sorted and unique hashed keys are always updated (=at every insert/append/
delete), whereas non-unique sorted ones are instantiated at the first read access

Keep in mind that your coding will most likely run in high volume scenarios
Ÿ  when READing oder LOOPing internal tables, they may be large
–  use primary/secondary keys and/or binary searches when accessing large tables in loops
–  or rewrite the coding to reduce the nesting levels
Ÿ  clear unused data containers as soon as they’re not needed anymore

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


Performance

Modify
•  Better use io_modify->modify instead of io_modify->create or ->delete or ->update
–  Mass processing possible
–  Build up modification table sorted using library methods
o  /SCMTMS/CL_COMMON_HELPER=>SORT_CREATE_MODIFICATIONS
o  /SCMTMS/CL_COMMON_HELPER=>SORT_UPD_DEL_MODIFICATIONS

•  For new keys use /BOBF/CL_FRW_FACTORY=>GET_NEW_KEY( ) for instances that will


be persisted and use /BOBF/CL_FRW_FACTORY=>GET_NEW_TRANSIENT_KEY( ) for
transient data (like properties, transient node instances etc.)
Read
•  Do not use io_read->compare with IV_FILL_ATTRIBUTES = abap_true
–  Very expensive
–  Better and faster way:
Retrieve After Image (in general you have this image already at hand), Retrieve Before Image, Check directly if relevant
attributes were changed

•  Pre-read data whenever possible


•  System killers
–  Single retrieves in a LOOP
–  CONVERTs in a LOOP

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


Performance

Queries
•  See section about Queries

©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 13


Dependent Objects

Accessing DO node instances you can’t use the DO node keys from the DO
constants interface
Ÿ  Determine runtime DO node keys using one of the methods
–  /SCMTMS/CL_COMMON_HELPER=>GET_DO_NODE_KEY (preferred for Retrieve)
–  /SCMTMS/CL_COMMON_HELPER=>GET_DO_KEYS_4_RBA (preferred for RbA)
–  /SCMTMS/CL_COMMON_HELPER=>GET_DO_NODE_KEY_BY_NAME

©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 14


Queries

Modelled Queries are only extendable by extending the underlying node structure
Ÿ  Not extendable with other nodes attributes
Ÿ  That is why the main query of a BO should be an implemented one
Implemented BOPF Queries are per se not extensible
Implemented TM Queries for attributes just of one node
Ÿ  Define query structure and enter directly the class /SCMTMS/CL_Q_SUPERCLASS as query class
Implemented TM Queries
Ÿ  Do not use subqueries and merge the results after their execution à Performance killer
Ÿ  Create a subclass of /SCMTMS/CL_Q_SUPERCLASS and overwrite method
GET_QUERY_ENHANCE_TABLE filling table ET_QUERY_ENHANCE
–  Superclass contains also a BAdI for customer extensions
–  Superclass concept can be used in future to replace DB selection by Enterprise Search (optional)
–  Also database tables, views and external BO nodes can be included
Ÿ  Implement only queries that are necessary; no pool queries without direct use case
Ÿ  See also Class Documentation of /SCMTMS/CL_Q_SUPERCLASS

©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 15


Queries
Performance

Don‘t use BOPF Service Manager for Retrieve, RbA, Convert Alternative Key,
or Standard Queries
Ÿ  Only in very exceptional cases

Don‘t use existing helper classes


Ÿ  In general they are using BOPF for fetching data resulting in building up buffers

Do select a database table once and select all needed data with one fetch

Do include authority check relevant attributes into the query result structure
Ÿ  Authority checks are directly performed on the query results

Do keep the query filter and result structures lean

Naming convention: /SCMTMS/CL_<BO>_Q_GW_<ENTITY> (like /SCMTMS/CL_TOR_Q_GW_RFQ)

©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 16


Queries
Performance

Within the Query Enhance Table you define where and how the system should
resolve the selection parameters with which a query is executed
Ÿ  The simplier the selection parameters are, the better the performance of the query will be
Ÿ  Try to define as many selection parameters as possible via the Query Enhance Table
–  It is not necessary to define an Query Enhance Table entry for selection parameters from the query
node
Ÿ  For complex cases you have three alternatives:
–  Overwrite method GET_PRESELECTED_FILTER_KEYS()
Select keys of instances matching the complex selection parameter criteria and return them in
CT_FILTER_KEY. This leads to that only these instances are selected from database and
further filtered by the other selection parameters.
–  Overwrite method ADAPT_SELECTION_PARAMETERS()
Convert complex selection parameters into simple ones, e.g. having selection parameters for
BUPA street and city, you could find all business partners for the given street and city and
replace the selection parameters for BUPA street and city by the BUPA Keys.
–  Mark the selection parameter with FILTER_AFTER_SELECTION = ABAP_TRUE
With this the selection parameter is ignored during database selection. Instead it is used after
selection to reduce the query result set accordingly.

©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 17


Queries
Performance

Within the Result Enhance Table you define where and how the system can
find the attributes of the query result set
Ÿ  Let the Query Superclass handle only the simple query result attributes
–  You need not to define anything for attributes from the query node
–  Simple joins can also be handled by the Query Superclass
Ÿ  Mark complex query result attributes with super_ignore = abap_true
–  The query superclass will not select these attributes from database
–  Implement method ADAPT_QUERY_RESULT() fetching all additional result list data that was not
handled by the query superclass
Ÿ  The Query result structure should contain
–  all attributes being relevant for authority check
–  All attributes being relevant for the query use cases
Ÿ  The Query should not
–  use complex helper classes from TM backend
–  Not mass enabled method, function modules or forms
Ÿ  The query should be able to optimize the coding in ADAPT_QUERY_RESULT() on basis of
requested attibutes

©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 18


Queries
Extensibility

Method GET_QUERY_ENHANCE_TABLE
Ÿ  Enhancement structure [query_key, attr_node_key, db_counter, node_attr, query_attr]
DATA: ls_enh TYPE /scmtms/s_query_enhance.
CLEAR et_query_enhance.
ls_enh-query_key = /scmtms/if_tor_c=>sc_query-root-root_elements.
ls_enh-attr_node_key = /scmtms/if_tor_c=>sc_node-main.
ls_enh-node_attr = /scmtms/if_tor_c=>sc_node_attribute-main-mtr.
ls_enh-query_attr = /scmtms/if_tor_c=>sc_query_attribute-main-mtr.
APPEND ls_enh TO et_query_enhance.

Method QUERY_CALL_BADI
Ÿ  Calls BAdI /SCMTMS/FRW_QUERY
–  Parameters
o  Same as for method /BOBF/IF_FRW_QUERY->QUERY
o  ET_QUERY_ENHANCE : Query extension via enhancement table
o  EV_SKIP_QUERY : Skip modelled query?

Default implementation for the BAdI existing


•  /SCMTMS/CL_ENHNC_QUERY_CUST
•  Transaction /SCMTMS/QUERY_ENH can be used for simple use cases
©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 19
Queries
Alternative Keys

Use Alternative Keys instead of Query to determine a key for an external BO instance ID
Ÿ  Using secondary index on DB
Ÿ  Using buffer if already available
DATA: lt_prod_ids TYPE /bobf/t_demo_product_id,
ls_prod_id TYPE /bobf/s_demo_product_id,
lt_prod_results TYPE /bobf/t_frw_keyindex,
ls_result TYPE /bobf/s_frw_keyindex.

* Extract BP names and build up altkey keys
LOOP AT lt_item ASSIGNING <ls_item>
WHERE prod_name IS NOT INITIAL.
ls_prod_id-product_id = <ls_item>-prod_name.
APPEND ls_prod_id TO lt_prod_ids.
ENDLOOP.
SORT lt_prod_ids BY product_id.
DELETE ADJACENT DUPLICATES FROM lt_prod_ids COMPARING product_id.

* Use prod. altkey to get partner UUIDs


lo_srv_prod = /bobf/cl_tra_serv_mgr_factory=>get_service_manager(
iv_bo_key = /bobf/if_demo_product_c=>sc_bo_key ).
CALL METHOD lo_srv_prod->convert_altern_key
EXPORTING
iv_node_key = /bobf/if_demo_product_c=>sc_node-root
iv_altkey_key = /bobf/if_demo_product_c=>sc_alternative_key-root-product_id
* iv_target_altkey_key = /BOBF/IF_FRW_C=>SC_ALTERNATIVE_KEY_KEY
it_key = lt_prod_ids
IMPORTING
et_result = lt_prod_results.

Ÿ  Cross BO Associations should be modelled in BOPF, completely

©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 20


Business Object Modelling
Determinations and Validations

Determinations have to inherit from super class /SCMTMS/CL_D_SUPERCLASS


Validations have to inherit from super class /SCMTMS/CL_V_SUPERCLASS
Class Naming Convention
Ÿ  /SCMTMS/CL_<bo>_D_<node>_<timepoint>
Ÿ  /SCMTMS/CL_<bo>_V_<node>_CONS, /SCMTMS/CL_<bo>_V_<node>_<action>
Minimize number of modelled Determinations
Ÿ  General Aim: 1 Determination per Node and Trigger Timepoint
Ÿ  Determination Naming convention: DET_<node>_<timepoint>
–  <timepoint>
o  After Loading – AL
o  Before retrieve – BR
o  After Modify – AM
o  After Validation – AV
o  Before Save (Before Consistency Check) – BSC
o  Before Save (Finalize) – BSF
o  Before Save (Draw Numbers) – BSN
o  During Save – DS
o  After Commit – AC
o  After Failed Save Attempt – AF
Ÿ  Why?
à ABAP corretions are easier to ship than meta model changes
à More Det./Val. in a Meta Model produce more overhead in BOPF

©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 21


Business Object Modelling
Determinations and Validations

One Consistency and one Action Validation per Node


Ÿ  Naming Convention: VAL_<node>_CONSISTENCY, VAL_<node>_ACTION
–  Action Validation is called with IS_CTX-ACT_KEY = key of the checked action

Determinations must not throw failed keys


Ÿ  Determinations must not fail à at least not critically
Ÿ  Determination fail must not cause inconsistencies
Ÿ  Failed Keys of Determinations always mean something like „DB full“ or „Enqueue Server down“
Ÿ  Check if a Determination which could fail in general isn‘t more an Action
Examples for how fail-situations within Determinations could be handled
Ÿ  Master Data key completion
–  Determination determines UUID for an XBO ID
o  Fail à CLEAR UUID and update it in the buffer
–  Afterwards a Validation checks for pairs of initial UUIDs and XBO IDs and returns messages, if needed
Ÿ  Validation and Determination return messages for errors
–  But only the validation returns failed keys
–  Validation can be a Consistency Validation à Set consistency status, save always possible
–  Validation can be an Action Validation à Avoid save, delete, update etc.

©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 22


Business Object Modelling
Transient Determinations

Before Retrieve
Ÿ  Transient Determinations only
Ÿ  Called for transient nodes only
Ÿ  Called before every retrieve of the trigger nodes
–  Should be used with care! Performance impact!

After Loading
Ÿ  Transient Determinations only
Ÿ  Called once after node was loaded into buffer
–  Following retrieves do not trigger such determinations
Ÿ  Called for all After-Loading-Determinations of the same Loading Group
Ÿ  Not called in a nested scenario
–  After-Loading-Determinations of foreign loading groups are not executed

Transient determinations are triggered by associations. Association parameters are


visible in IS_CTX-ASSOC_PARAMETERS and can be used at determination runtime
Ÿ  This way you are able to define „input parameters“ for transient determinations

©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 23


BOPF Test UI

The BOPF Test UI (BOBF/TEST_UI) can be used to check and verify business
object functionality

Restrictions
•  Can‘t handle deep BO Node Structures. This leads to that not every SAP TM
functionality can be tested with this generic Test UI.
•  Very technical UI
•  No support for problems in connection with the BOPF Test UI

©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 24


Authorizations

Authorizations are checked whenever the SAP TM backend is entered via


BOPF service manager, automatically
•  Actions or modifications are rejected in case of failed authority check
•  Query, convert altkey and retrieves return only valid results back to the consumer
•  Retrieves, action calls or modifications from within an action, determination, validation
etc. are not checked against users authorizations
•  Privilege mode for stacked backend access
Master Data BO instances are not checked within SAP TM processes
•  Not relevant, because not shown in detail on the UI
•  Restrictions could influence SAP TM processes, what could lead to unforeseeable
system behaviour or planning results à critical
•  Only exception: Business Partners
Authority checks can pull down the system performance
•  Whenever possible define additional authority checks on ROOT node attributes
•  See the documentation of BAdI /SCMTMS/AC_BADI, describing how authority checks
can be extended or changed

©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 25


Transaction Change Handling

You get a change object EO_CHANGE back after…


Ÿ  CHECK_AND_DETERMINE
Ÿ  DO_ACTION
Ÿ  MODIFY
Ÿ  RETRIEVE
Ÿ  RETRIEVE_BY_ASSOCIATION
Ÿ  Contains all the notifications about changes that were performed
–  Marked as failed (X/‘ ‘), external (X/‘ ‘) etc.
–  Contains also Sync Notifications (Loading Change Notifications)

Constants in /BOBF/IF_FRW_C
Ÿ  /BOBF/IF_FRW_C=>SC_MODIFY_...

©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 26


Hints and Links

Helper class for batch reports


Ÿ  /SCMTMS/CL_BATCH_HELPER_80
Debugging
•  Checkpoint Groups
–  /BOBF/FRW_FLUSH
–  Activation Variants
o  /BOBF/ALL
o  /BOBF/ERROR
o  /BOBF/WARNING

•  Debugger Scripts
–  Helper class for Debugger Scripts
o  /SCMTMS/CL_DEBUGGER_SCRIPT_H
–  TM Scripts
o  /SCMTMS/DEBUGGER_SCRIPT_*

•  SW Layer Aware Debugging


–  BOPF Layers start in BS with /BOBF/ or /BOFU/
–  TM Layers start with /SCMTMS/ or /SCMB/

SAP TM Enhancement Guide in SCN


•  https://scn.sap.com/docs/DOC-51480

©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 27


Thank you

Contact information:

F name MI. L name


Title
Address
Phone number

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


© 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. Customer 29


© 2014 SAP AG oder ein SAP-Konzernunternehmen.
Alle Rechte vorbehalten.

Weitergabe und Vervielfältigung dieser Publikation oder von Teilen daraus sind, zu welchem Zweck und in welcher Form auch immer, ohne die
ausdrückliche schriftliche Genehmigung durch SAP AG oder ein SAP-Konzernunternehmen nicht gestattet.

SAP und andere in diesem Dokument erwähnte Produkte und Dienstleistungen von SAP sowie die dazugehörigen Logos sind Marken oder
eingetragene Marken der SAP AG (oder von einem SAP-Konzernunternehmen) in Deutschland und verschiedenen anderen Ländern weltweit.
Weitere Hinweise und Informationen zum Markenrecht finden Sie unter http://global.sap.com/corporate-de/legal/copyright/index.epx.

Die von SAP AG oder deren Vertriebsfirmen angebotenen Softwareprodukte können Softwarekomponenten auch anderer Softwarehersteller enthalten.

Produkte können länderspezifische Unterschiede aufweisen.

Die vorliegenden Unterlagen werden von der SAP AG oder einem SAP-Konzernunternehmen bereitgestellt und dienen ausschließlich zu Informations-
zwecken. Die SAP AG oder ihre Konzernunternehmen übernehmen keinerlei Haftung oder Gewährleistung für Fehler oder Unvollständigkeiten in
dieser Publikation. Die SAP AG oder ein SAP-Konzernunternehmen steht lediglich für Produkte und Dienstleistungen nach der Maßgabe ein, die in der
Vereinbarung über die jeweiligen Produkte und Dienstleistungen ausdrücklich geregelt ist. Keine der hierin enthaltenen Informationen ist als zusätzliche
Garantie zu interpretieren.

Insbesondere sind die SAP AG oder ihre Konzernunternehmen in keiner Weise verpflichtet, in dieser Publikation oder einer zugehörigen Präsentation
dargestellte Geschäftsabläufe zu verfolgen oder hierin wiedergegebene Funktionen zu entwickeln oder zu veröffentlichen. Diese Publikation oder
eine zugehörige Präsentation, die Strategie und etwaige künftige Entwicklungen, Produkte und/oder Plattformen der SAP AG oder ihrer Konzern-
unternehmen können von der SAP AG oder ihren Konzernunternehmen jederzeit und ohne Angabe von Gründen unangekündigt geändert werden.
Die in dieser Publikation enthaltenen Informationen stellen keine Zusage, kein Versprechen und keine rechtliche Verpflichtung zur Lieferung von
Material, Code oder Funktionen dar. Sämtliche vorausschauenden Aussagen unterliegen unterschiedlichen Risiken und Unsicherheiten, durch die
die tatsächlichen Ergebnisse von den Erwartungen abweichen können. Die vorausschauenden Aussagen geben die Sicht zu dem Zeitpunkt wieder,
zu dem sie getätigt wurden. Dem Leser wird empfohlen, diesen Aussagen kein übertriebenes Vertrauen zu schenken und sich bei Kaufentscheidungen
nicht auf sie zu stützen.

©  2014 SAP AG or an SAP affiliate company. All rights reserved. Customer 30

You might also like