abap unicode enable
DESCRIPTION
ABAP Unicode EnableTRANSCRIPT
LCM262Making ProgramsUnicode Enabled
SAP AG 2007, SAP TechEd ’07 / LCM262 / 2
Contributing Speaker(s)
Markus EbleNW Foundation Internationalization, SAP AG
Martin SchmidtNW Foundation Internationalization, SAP AG
SAP AG 2007, SAP TechEd ’07 / LCM262 / 3
Learning Objectives
As a result of this workshop, you will be able to:Do the Unicode enabling for your own ABAP programsUnderstand how to adapt your file and RFC interfaces
OverviewABAP Language EnhancementsFile InterfacesCommunication via RFCUnicode enabling tools
SAP AG 2007, SAP TechEd ’07 / LCM262 / 5
English
German
Turkish
DanishDutch,
FinnishFrench, Italian
NorwegianPortugueseSpanish
Swedish
CroatianCzechHungarianPolish
RumanianSlovakian
Slovene
RussianUkrainian
Greek
Hebrew
Thai
Korean
Japanese Chinese
Taiwanese
Icel
andi
c
And morelanguagescan besupportedeasilywithout theneed fornew code
pages orother new
methods
Unicode, one Code Page for all Scripts
SAP AG 2007, SAP TechEd ’07 / LCM262 / 6
ASCIIGeneral Scripts
Symbols
CJK Ideographs
Hangul
Compatibility
Surrogate Area
65,000 characters
Additional1,000,000 characters
(e.g. Hong Kong Chinese)
Unicode characters
SAP AG 2007, SAP TechEd ’07 / LCM262 / 7
Representation of Unicode Characters
UTF-16 – Unicode Transformation Format, 16 bit encodingFixed length, 1 character = 2 bytes (surrogate pairs = 2 + 2 bytes)Platform dependent byte order
UTF-8 – Unicode Transformation Format, 8 bit encodingVariable length, 1 character = 1...4 bytesPlatform independent7 bit US ASCII compatible
E3 91 B979 3434 79U+3479
CE B1B1 0303 B1U+03B1
C3 A4E4 0000 E4U+00E4ä6161 0000 61U+0061a
UTF-8UTF-16little endian
UTF-16big endian
Unicodescalar value
Character
F0A081BB00DA7BDCDA00 DC7BU+2007B
SAP AG 2007, SAP TechEd ’07 / LCM262 / 8
Representation of Unicode characters in ABAP
Keep existing coding as far as possible
Use existing character type for Unicode data
Use UTF-16 to keep buffer sizes
SAP AG 2007, SAP TechEd ’07 / LCM262 / 9
Transparent Unicode Enabling of R/3
Character Expansion ModelSeparate Unicode and non-Unicode versions of R/3
No explicit Unicode data type in ABAPSingle ABAP source for Unicode and non-Unicode systems
1 character = 2 bytes (UTF16),(types C, N, D, T, STRING)Unicode kernelUnicode database
1 character = 1 byte(types C, N, D, T, STRING)Non-Unicode kernelNon-Unicode database
ABAPsource
Non-Unicode
R/3
UnicodeR/3
ABAPsourceABAPsource
SAP AG 2007, SAP TechEd ’07 / LCM262 / 10
ABAP Unicode Enabling – Golden Rule
Distinguish character and byte based data
1 Character 1 Byte
OverviewABAP Language EnhancementsFile InterfacesCommunication via RFCUnicode enabling tools
SAP AG 2007, SAP TechEd ’07 / LCM262 / 12
Program Attribute „Unicode checks active“
SAP AG 2007, SAP TechEd ’07 / LCM262 / 13
Unicode-Enabled ABAP Programs
Program attribute „Unicode checks active“Required to run on a Unicode system
If attribute is set, additional restrictions:– apply at compile and at run time– apply in Unicode systems and in non-Unicode systems– ensure that program will run on non-Unicode and Unicode systems with
(almost) identical behavior
not allowedokAttribute not set
(not Unicodeenabled)
okokAttribute set(Unicode enabled)
Unicodesystem
Non-Unicodesystem
SAP AG 2007, SAP TechEd ’07 / LCM262 / 14
CONCATENATE cf1 cf2 TO cf3.IF cf1 CS cf2. ...
CONCATENATE xf1 xf2 TO xf3 IN BYTE MODE.IF xf1 BYTE-CS xf2. ...
Unicode Restrictions – String Processing
Character Processing
String operations are only allowed for character-like operands– ABAP types C, N, D, and T, STRING– Structures consisting only of characters (C, N, D, T)– X and XSTRING are no longer considered character-like types
Byte Processing
Variants of string operations for byte processing– Addition „IN BYTE MODE“ for statements– Prefix „BYTE-“ for comparison operations
Only operands of type X or XSTRING allowed
SAP AG 2007, SAP TechEd ’07 / LCM262 / 15
Unicode Restrictions – Length and Distance
Determining the Length and DistanceCounted in bytes or in characters? Specify!
DESCRIBE FIELD...LENGTH... IN (BYTE | CHARACTER) MODE
DESCRIBE DISTANCE BETWEEN ... AND ... INTO ...IN (BYTE | CHARACTER) MODE.
Example
FORM write3 USING fld TYPE c.DATA: fldlen TYPE i.DESCRIBE FIELD fld LENGTH fldlen IN CHARACTER MODE.IF fldlen >= 3.
WRITE: / fld(3).ENDIF.
ENDFORM.
SAP AG 2007, SAP TechEd ’07 / LCM262 / 16
Unicode Restrictions – Access with Offset or Length
Access To Structures With Offset/LengthStructure must begin with charactersOffset/length counted in charactersAccess only allowed within the character type prefix of a structure
ASSIGN fld+off(len) TO ...Access must not exceed field boundariesIf ASSIGN fails, field-symbol is set to „unassigned“New ... RANGE addition allows the permissible boundariesto be expanded
N(6) C(4) X(3) C(5)
+off(len)
SAP AG 2007, SAP TechEd ’07 / LCM262 / 17
New ABAP Features – Includes with Group Names
Symbolic Access to Includes of Structures
skey = stru-key.srest = stru-rest.WRITE: stru-r2.
skey = stru(4).srest = stru+4(20).WRITE: stru-r2.
Pre-Unicode Unicode enabled with group names
DATA: BEGIN OF stru.INCLUDE TYPE t_key as key.INCLUDE TYPE t_rest as rest.
DATA: END OF stru.DATA: skey TYPE t_key,
srest TYPE t_rest.
TYPES: BEGIN OF t_key,k1(2) TYPE x,k2(2) TYPE c,
END OF t_key.
TYPES: BEGIN OF t_rest,r1(10) TYPE c,r2(10) TYPE c,
END OF t_rest.
stru
k1 k2 r1 r2
key rest
SAP AG 2007, SAP TechEd ’07 / LCM262 / 18
New ABAP Features – Golden Rule
Think in types
Think in semantics
Tell the system what you want to do
SAP AG 2007, SAP TechEd ’07 / LCM262 / 19
Unicode Restrictions - MOVE
MOVE Between Incompatible StructuresMatching data layout („fragment views“) required
Example
C(4) C(3) X(3) C(4) I
C(6) N(4) X(3) N(4) I P(8)
C(3)
C(10) X(3) C(4) I P(8)
struc1
struc2
fragments
cstru = xstru. "Unicode error!
DATA:BEGIN OF cstru,first(10) TYPE c,tab(1) TYPE c,last(10) TYPE c,
END OF cstru.
DATA:BEGIN OF xstru,first(10) TYPE c,tab(1) TYPE x VALUE '09',last(10) TYPE c,
END OF xstru.
SAP AG 2007, SAP TechEd ’07 / LCM262 / 20
DATA: my_buffer TYPE xstring.data1 TYPE some_type.
...
EXPORT id = data1 TO DATA BUFFER my_buffer.
FORM read_buffer USING buffer TYPE xstring.DATA: fld2 TYPE some_type.IMPORT id = fld2 FROM DATA BUFFER buffer....
ENDFORM.
New ABAP Features – Import/Export Data Buffer
Using fields of type xstring as data containersWriting data to an xstring.
– Data is stored in a platform-independent format– Contents of xstring can be exchanged with any other 6.10-system (Unicode
and non-Unicode)
Reading data from an xstring
– Automatic conversion of data during import
SAP AG 2007, SAP TechEd ’07 / LCM262 / 21
New ABAP Features – Dynamic Programming Support
Creating Data Objects DynamicallyCreating and accessing data objects on the heap
Casting to User Defined TypesLook at the contents of a field as a value of another type
fld must provide sufficient alignment and length for the given type
DATA: dref TYPE REF TO data.
CREATE DATA dref TYPE sometype.CREATE DATA dref TYPE (typename).CREATE DATA dref TYPE c LENGTH len.CREATE DATA dref TYPE STANDARD TABLE OF (typename)
ASSIGN dref->* TO <f>. "access data object
FIELD-SYMBOLS: <f> TYPE any.
ASSIGN fld TO <f> CASTING TYPE sometype.ASSIGN fld TO <f> CASTING TYPE (typename).
SAP AG 2007, SAP TechEd ’07 / LCM262 / 22
SIMPLESIMPLE
CLIKECLIKE
XSEQUENCEXSEQUENCECSEQUENCECSEQUENCE NUMERICNUMERIC
II FF PPXX XSTRINGXSTRINGCC STRINGSTRING NN DD TT character-likestructures(C,N,D,T)
character-likestructures(C,N,D,T)
New ABAP Features - Generic Types
New generic types for parameters and field-symbolsEliminate untyped parameters or field-symbols for improved securityand performance
SAP AG 2007, SAP TechEd ’07 / LCM262 / 23
New ABAP Features – Enhancement categorization
If you are writing software for others you may have the following
ProblemEnhancements on structures or tables may affect your coding:– Syntax-/runtime errors– Changed behavior (e.g. damaged or changed data)
SolutionMaintaining the enhancement category in the DDIC: SE11 (Extras ->Enhancement Category)– Can not be enhanced– Can be enhanced - character like– Can be enhanced – character and numerical type– Can be arbitrarily enhanced
Additional checks are done on your ABAP programs (SLIN) and showpossible problems in allowed enhancement situations
SAP AG 2007, SAP TechEd ’07 / LCM262 / 24
New ABAP Features – ABAP list programming
ABAP lists: Difference between memory and display length
1 Character 1 Display Column
’ ’Character unitsin the memory
Display columns
Non-Unicode 2 2Unicode 1 2
SAP AG 2007, SAP TechEd ’07 / LCM262 / 25
New ABAP Features – Different list types
DynamicHalf width (Default) Full width
SAP AG 2007, SAP TechEd ’07 / LCM262 / 26
ABAP list programming – Golden Rules
Use ALV Grid and ALV List
Explicitely define display length
class CL_ABAP_LIST_UTILITIEShelps in complex cases
SAP AG 2007, SAP TechEd ’07 / LCM262 / 27
New ABAP Features – Character Utilities
Class CL_ABAP_CHAR_UTILITIESConstant attributes with system specific values
charsize length of 1 character in bytesnewlinecr_lfform_feedhorizontal_tabvertical_tabbackspaceminchar X’00‘ in non-Unicode systems, U+0000 in Unicode systemsmaxchar X‘FF‘ in non-Unicode systems, U+FFFD in Unicode systems
Example
CLASS cl_abap_char_utilities DEFINITION LOAD.
DATA: text TYPE string.
REPLACE cl_abap_char_utilites=>horizontal_tabWITH space INTO text.
SAP AG 2007, SAP TechEd ’07 / LCM262 / 28
system code page any code pageCL_ABAP_CONV_OUT_CE
any code page any code pageCL_ABAP_CONV_X2X_CE
any code page system code pageCL_ABAP_CONV_IN_CE
ConversionABAP Class
New ABAP Features – Conversion Classes
Conversion classesCode page conversion– Unicode / non-Unicode code pages
Endian conversion– little endian / big endian byte order
Character conversion– Unicode codepoint / ABAP character
OverviewABAP Language EnhancementsFile InterfacesCommunication via RFCUnicode enabling tools
SAP AG 2007, SAP TechEd ’07 / LCM262 / 30
File transfer – Golden Rule
Know the code page used by the other side
or ask the user
SAP AG 2007, SAP TechEd ’07 / LCM262 / 31
File transfer: Application server
Pattern for writing/reading files on the application server:
OPEN DATASET IN <mode> MODE
TRANSFER/READ
CLOSE DATASET
SAP AG 2007, SAP TechEd ’07 / LCM262 / 32
File transfer: TEXT MODE ENCODING NON-UNICODE
TEXT MODE ENCODING NON-UNICODEAllowed typescharacter likeBehaviorconvert text data between system code page and non-Unicode encodingmatching to current system language (sy-langu)Usagebackward compatible exchange of text data with systems that cannotsupport UTF-8
SAP AG 2007, SAP TechEd ’07 / LCM262 / 33
Example: TEXT MODE NON-UNICODE
R/3ISO8859-1
SJIS
SY-LANGU
TEXT MODENON-UNICODE
SY-LANGU
TEXT MODENON-UNICODE
TEXT MODENON-UNICODE
TEXT MODENON-UNICODE1100
8000
1100
8000
Only part of UC charset supported (possible data loss in the file)
Structured data as a whole write field by field =
File transfer: TEXT MODE ENCODING NON-UNICODE
R/3 Enterprise
SAP AG 2007, SAP TechEd ’07 / LCM262 / 34
File transfer: ENCODING UTF-8
TEXT MODE ENCODING UTF-8Allowed typescharacter likeBehaviorconvert text data between system code page and UTF-8 encodingUsageloss free exchange of text data
SAP AG 2007, SAP TechEd ’07 / LCM262 / 35
Example: TEXT MODE UTF-8
R/3ISO8859-1
SJISTEXT MODE UTF-8 TEXT MODE UTF-8
SY-LANGU
TEXT MODE UTF-8 TEXT MODE UTF-8
SY-LANGU
Full charset supported (no data loss in the file)
Structured data as a whole write field by field =
File transfer: TEXT MODE ENCODING UTF-8
R/3 Enterprise
SAP AG 2007, SAP TechEd ’07 / LCM262 / 36
File transfer: BINARY MODE
BINARY MODEAllowed typesbinary and character likeBehaviorno conversion, copy bytes between memory and fileUsagefix format with defined encoding, endian and data structure
SAP AG 2007, SAP TechEd ’07 / LCM262 / 37
Using XML as transport format
Use CALL TRANSFORMATION with target data type XSTRING to create anUTF-8 based XML representation of your data.
Structure information (nolayout / alignmentproblems)UTF-8 based (no data loss)Transport in binary form
File transfer: Using XML
SAP AG 2007, SAP TechEd ’07 / LCM262 / 38
Example: UTF-8 based XML + BINARY MODE
R/3ISO8859-1
SJIS
SY-LANGU
CALLTRANSFORMATION+ BINARY MODE
BINARY MODE +CALLTRANSFORMATION
CALLTRANSFORMATION+ BINARY MODE
SY-LANGU
BINARY MODE +CALLTRANSFORMATION
Full charset supported (no data loss in the file)
Structured data
File transfer: BINARY + Using XML
R/3 Enterprise
SAP AG 2007, SAP TechEd ’07 / LCM262 / 39
File transfer: LEGACY MODE
LEGACY TEXT/BINARY MODEAllowed typesbinary and character likeBehaviorProduce in Unicode system format of non-Unicodeconvert text data to non-Unicoderead/transfer binary data as isUsagebackward compatibility with systems that mix binary and character datawithin a fileDifference between TEXT and BINARYLEGACY TEXT MODE adds end of line marker
OverviewABAP Language EnhancementsFile InterfacesCommunication via RFCUnicode enabling tools
SAP AG 2007, SAP TechEd ’07 / LCM262 / 41
RFC – Golden Rule
Everything Unicode
or ensure data fit to receiver
SAP AG 2007, SAP TechEd ’07 / LCM262 / 42
In case of an Unicode Unicode combination RFC passes all characterdata without code page conversion or merely with adaption of theendianness.
• UTF-16 big endian = SAP code page 4102• UTF-16 little endian = SAP code page 4103
Information about the destination is maintained in SM59special options character width in target system
• 1 Byte = non-Unicode• 2 Byte = Unicode
RFC Unicode Unicode
R/3 Enterprise R/3 Enterprise
SAP AG 2007, SAP TechEd ’07 / LCM262 / 43
In case of an Unicode non-Unicode single code page combination,RFC passes all character data with code page conversion betweenUnicode and the old code page.
As Unicode is a true superset of any old standard codepage not allUnicode characters can be transfered to the non-Unicode system:
Ä Äß ß
##
##
RFC Unicode non-Unicode single code page
R/3 4.6CISO8859-1
R/3 Enterprise
SAP AG 2007, SAP TechEd ’07 / LCM262 / 44
In case of an Unicode non-Unicode MDMP combination RFC passesall character data with code page conversion between Unicode and thedifferent old code pages.
Which of the MDMP code pages is chosen depends on the language:
Ä DE Äß DE ß
JAJA
This mechanism is only available for flat tables with language key
RFC Unicode non-Unicode MDMP (table with lang key)
R/3 4.6CISO8859-1
SJIS
R/3 Enterprise
OverviewABAP Language EnhancementsFile InterfacesCommunication via RFCUnicode enabling tools
SAP AG 2007, SAP TechEd ’07 / LCM262 / 46
Migrating to Unicode Enabled ABAP
Step 1
In non-Unicode system
Adapt all ABAP programs to Unicode syntax and runtime restrictions
Set attribute "Unicode enabled" for all programs
Step 2
Set up a Unicode system
– Unicode kernel + Unicode database
– Only ABAP programs with the Unicode attribute are executable
Do runtime tests in Unicode system
– Check for runtime errors
– Look for sematic errors
– Check ABAP list layout with former double byte characters
SAP AG 2007, SAP TechEd ’07 / LCM262 / 47
Transaction UCCHECK
SAP AG 2007, SAP TechEd ’07 / LCM262 / 48
Step 1 – Unicode Enabling with UCCHECK
Use UCCHECK to analyze your applications:Remove errorsInspect statically not analyzable places (optional)– Untyped field symbols– Offset with variable length– Generic access to database tables
Set unicode program attributeusing UCCHECK or SE38 / SE24 / ...Do additional checks with SLIN (e.g. matching of actual and formalparameters in function modules)
SAP AG 2007, SAP TechEd ’07 / LCM262 / 49
UCCHECK – Setting Unicode Flag
SAP AG 2007, SAP TechEd ’07 / LCM262 / 50
UCCHECK – Statically Non-Analyzable Places
What to do with the places that can only be checked atruntime?
Reduce their number– In many cases you can specify the type of parameters and field-symbols– Use generic ABAP types where neccessary– Mark those places that really need untyped parameters due to some kind of
generic programming with “#EC * as OK after you did revise them.
Do Runtime tests
SAP AG 2007, SAP TechEd ’07 / LCM262 / 51
Step 2 – Testing Your Application
Final tests in the Unicode system
Runtime tests, Runtime tests, Runtime tests, ...– Because the amount of warnings due to statically not analyzable places may
be very large, you cannot type everything. In this case you have to rely onrun-time tests.
– Some semantic problems may be seen only in the Unicodesystem (e.g. byte or character length)
– ABAP list layout can be checked only manually
Monitoring of runtime tests:
Having test plans is good, knowing the coverage of the test isbetter:
Use the ABAP Coverage Analyzer to monitor runtime tests
SAP AG 2007, SAP TechEd ’07 / LCM262 / 52
Summary
Distinguish characters and bytes
Distinguish characters and display cells
Think in types, think in semantics,tell the system what you want
Define code page for each communication
You can start ABAP Unicode enabling today
SAP AG 2007, SAP TechEd ’07 / LCM262 / 53
Further Information
SAP Public Web:SAP Developer Network (SDN): www.sdn.sap.comSAP Service Marketplace: www.service.sap.com/unicode@sap
Related Workshops/Lectures at SAP TechEd 2007LCM211, Conversion of MDMP Systems to Unicode, LectureLCM212, Conversion of Single Code Page Systems to Unicode,Lecture
Related SAP Education and Certification Opportunitieshttp://www.sap.com/education/
SAP AG 2007, SAP TechEd ’07 / LCM262 / 54
SDN Subscriptions Program
The SDN Subscriptions Program introduces the SAPNetWeaver, Development Subscription for individualdevelopers. Available for purchase in Germany and theUnited States.
Subscription gives you one year access to …SAP NetWeaver platform software, patches, and updatesDevelopment license for SAP NetWeaver to evaluate, develop and testStandard software maintenanceOnline sessions from SAP TechEdAccess to SAP Enterprise Services Workplace for testingPremium presence in forums
Purchase the SAP NetWeaver, Development Subscription todayat the SAP Community Clubhouse, or online athttps://www.sdn.sap.com/irj/sdn/devsubVisit us at the Community Clubhouse, show us you are asubscriber, and get a gift!
SAP AG 2007, SAP TechEd ’07 / LCM262 / 55
THANK YOU FOR YOURATTENTION !
QUESTIONS – SUGGESTIONS – DISCUSSION
Q & A
SAP AG 2007, SAP TechEd ’07 / LCM262 / 56
Exercises
SAP AG 2007, SAP TechEd ’07 / LCM262 / 57
Please complete your session evaluation.
Be courteous — deposit your trash,and do not take the handouts for the following session.
Feedback
Thank You !
SAP AG 2007, SAP TechEd ’07 / LCM262 / 58
Disclaimer
“This presentation outlines our general product direction and should not be reliedon in making a purchase decision. This presentation is not subject to your licenseagreement or any other agreement with SAP. SAP has no obligation to pursueany course of business outlined in this presentation or to develop or release anyfunctionality mentioned in this presentation. This presentation and SAP's strategyand possible future developments are subject to change and may be changed bySAP at any time for any reason without notice. This document is provided withouta warranty of any kind, either express or implied, including but not limited to, theimplied warranties of merchantability, fitness for a particular purpose, or non-infringement. SAP assumes no responsibility for errors or omissions in thisdocument, except if such damages were caused by SAP intentionally or grosslynegligent.”
SAP AG 2007, SAP TechEd ’07 / LCM262 / 59
Copyright 2007 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 bechanged without prior notice.
Some software products marketed by SAP AG and its distributors contain proprietary software components of other software vendors.
Microsoft, Windows, Excel, Outlook, and PowerPoint 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, System i, System i5, System p,System p5, System x, System z, System z9, z/OS, AFP, Intelligent Miner, WebSphere, Netfinity, Tivoli, Informix, i5/OS, POWER, POWER5, POWER5+, OpenPower and PowerPC aretrademarks or registered trademarks of IBM Corporation.
Adobe, the Adobe logo, Acrobat, PostScript, and Reader are either trademarks or registered trademarks of Adobe Systems Incorporated in the United States 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, ICA, Program Neighborhood, MetaFrame, WinFrame, VideoFrame, and MultiWin are trademarks or registered trademarks of Citrix Systems, Inc.
HTML, XML, XHTML and W3C 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.
MaxDB is a trademark of MySQL AB, Sweden.
SAP, R/3, mySAP, mySAP.com, xApps, xApp, SAP NetWeaver, and other SAP products and services mentioned herein as well as their respective logos are trademarks or registeredtrademarks 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.Data contained in this document serves informational purposes only. National product specifications may vary.
The information in this document is proprietary to SAP. No part of this document may be reproduced, copied, or transmitted in any form or for any purpose without the express priorwritten permission of SAP AG.
This document is a preliminary version and not subject to your license agreement or any other agreement with SAP. This document contains only intended strategies, developments,and functionalities of the SAP® product and is not intended to be binding upon SAP to any particular course of business, product strategy, and/or development. Please note that thisdocument is subject to change and may be changed by SAP at any time without notice.
SAP assumes no responsibility for errors or omissions in this document. SAP does not warrant the accuracy or completeness of the information, text, graphics, links, or other itemscontained within this material. This document is provided without a warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability,fitness for a particular purpose, or non-infringement.
SAP shall have no liability for damages of any kind including without limitation direct, special, indirect, or consequential damages that may result from the use of these materials. Thislimitation shall not apply in cases of intent or gross negligence.
The statutory liability for personal injury and defective products is not affected. SAP has no control over the information that you may access through the use of hot links contained inthese materials and does not endorse your use of third-party Web pages nor provide any warranty whatsoever relating to third-party Web pages.