sap first guidance sap netweaver bw 7.40 sp5 powered...
TRANSCRIPT
SAP First Guidance SAP NetWever BW 7.40
SAP HANA™ Appliance
Applicable Releases:
SAP BW 7.40 SP5 powered by SAP HANA
This First Guidance Document is the beginning of a series of documents that should help to better understand the various concepts of SAP BW powered by SAP HANA. The documents are still “work in progress”, so these guides are not intended to be exhaustive so far, and might never be. The purpose of these documents is to deliver additional information besides SAP Help and Blogs to get a better understanding of the concepts of SAP BW on HANA.
For more information or feedback please contact: [email protected].
Version 2.0
March 2014
SAP First Guidance – SAP Netweaver BW 7.40 SP5 powered by HANA - OpenODSView
© Copyright 2014 SAP AG. All rights reserved. No part of this publication may be reproduced or tran smitt ed in any form or for any purpose wi thout the express p ermission of SAP AG. Th e information cont ained herein may b e changed wi thout prior notice.
Some softw are products market ed by SAP AG and its dist ributors contain propri et ary softw are component s of other software vendors. Microsoft, Windows , Excel, Outlook, and PowerPoint are registered trademarks of Microsoft Corporation.
IBM , DB2, D B2 Universal Datab ase, Syst em I, Syst em i5, Syst em p, Syst em p5, Syst em x, System z, Syst em z 10, System z9, z 10, z9, iSeri es, pSeri es, xSeries , zSeri es, eSe rv er, z /VM , z/OS, i5 /OS, S/39 0, OS/390, OS/400, AS/4 00, S/39 0 Parall el Enterpris e Serv er, Po werVM, Pow er Archit ecture, POWE R6+, PO WER6 , PO WER5 +, PO WE R5, PO WER, OpenPow er, PowerPC, Bat chPipes, Bl adeC enter, System Storage, G PFS, H ACMP, RET AIN, D B2 Connect, RACF, Redbooks, O S/2 , Parall el Sysplex, MVS/E SA, AIX,
Intelligent Miner, WebSph ere, N etfinity, Tivoli and Informix are trademarks or regist ered trad emarks of IBM Corporation.
Linux is the registered trademark of Linus Torvalds in the U.S. and other countries.
Adobe, the Adobe logo, Acrobat, PostScript, and Reader are eith er trademarks or regist ered t rad emarks of Adobe Systems In corporated in the United Stat es and /or other countries. Oracl e is a regist ered trad emark of Oracle Corporation.
UNIX, X/Op en, OSF /1, and Motif are regist ered trademarks of the Open Group.
Citrix, ICA, Program N eighborhood, MetaFrame, WinFrame, VideoFrame, and MultiWin are trad emarks or regist ered trad emarks of Citrix Systems, Inc.
HTML, XML, XH TML and W3C are t rad emarks or registered trademarks of W3C®, World Wid e Web Consortium, M ass achus etts Institut e of Technology.
Jav a is a registered trademark of Sun Micro syst ems, Inc. Jav aScript is a registered trademark of Sun Microsyst ems, Inc., used under licen se for technology invented and i mplement ed by N etscape.
SAP, R/3, SAP N etWeaver, Duet, Partn erEdge, ByDesign, SAP BusinessObjects Explorer, StreamWork, and other SAP product s and services mentioned herein as w ell as thei r respective logos are trademarks or regist ered trad emarks of SAP AG in Germany and other co untries.
Business Objects and the Business Objects logo, BusinessObjects,
Crystal Reports, Crystal Decisions, Web Intelligence, Xcelsius, and other
Business Objects products and services mentioned herein as well as their
respective logos are trademarks or registered trademarks of Business
Objects Software Ltd. Business Objects is an SAP company. Sybase and Adapti ve Serv er, iAnywh ere, Sybas e 365, SQL Anywhere, and other Sybas e products and services mentioned herein as well as thei r respective logos are trademarks or regist ered t rad emarks of Sybase, Inc. Sybase is an SAP comp any.
All other product and service names mentioned are the trademarks of their resp ectiv e co mpani es. Dat a cont ained in this document serves information al purposes only. N ational product specifications may vary.
The information in this document is proprietary to SAP. No part of this document may b e rep roduced, copied, or trans mitted in an y form or for any purpos e without th e express prior writ ten permis sion of SAP AG.
This document is a preli minary v ersion and not subject to your licens e agreement or any other agreement with SAP. This document contains only int ended strat egies, d evelop ments , and functionalities of the SAP® product and is not intended to be binding upon SAP to an y parti cular course of business , product strategy, and /or dev elopment. Pl eas e note that this docu ment is subject to ch ange and may be ch anged by SAP at any ti me without notice.
SAP assu mes no responsibility for errors or omissions in this document. SAP does not w arrant the accuracy or compl et eness of the information, text, graphics, links , or other items contained within this mat erial . This document is provided without a warrant y of any kind, either express or i mplied, including but not limited to the i mplied w arranties of merchant ability, fitness for a particular purpose, or non-infringement.
SAP sh all hav e no liability for damages of any kind including without limit ation direct , special, indirect , or consequ ential d amages that may result from the us e of these materi als. Thi s limit ation shall not apply in cases of intent or gross negligence. The statutory liability for p ersonal injury and defectiv e products is not affected. SAP has no control over the information that you may access th rough the use of hot links contained in thes e materials and does not endors e your use of third -party Web pag es nor provide an y warranty whatso ever rel ating to third-part y Web pages .
SAP “How-to” Guides are intended to simplify the product implement-
tation. While specific product features and procedures typically are
explained in a practical business context, it is not implied that those
features and procedures are the only approach in solving a specific
business problem using SAP NetWeaver. Should you wish to receive
additional information, clarification or support, please refer to SAP
Consulting.
Any software coding and/or code lines / strings (“Code”) included in this
documentation are only examples and are not intended to be used in a
productive system environment. The Code is only intended better explain
and visualize the syntax and phrasing rules of certain coding. SAP does
not warrant the correctness and completeness of the Code given herein,
and SAP shall not be liable for errors or damages caused by the usage of
the Code, except if such damages were caused by SAP intentionally or
grossly negligent.
Disclaimer
Some components of this product are based on Java™. Any code change
in these components may cause unpredictable and severe malfunctions
and is therefore expressively prohibited, as is any decompilation of these
components.
Any Java™ Source Code delivered with this product is only to be used by
SAP’s Support Services and may not be modified or altered in any way.
Document History
Document Version Description
1.00 First draft of this guide
2.00 Added section regarding referential integrity and unit / currency
handling
Typographic Conventions
Type Style Description
Example Text Words or characters quoted
from the screen. These
include field names, screen
titles, pushbuttons labels,
menu names, menu paths,
and menu options.
Cross-references to other
documentation
Example text Emphasized words or
phrases in body text, graphic
titles, and table titles
Example text File and directory names and
their paths, messages,
names of variables and
parameters, source text, and
names of installation,
upgrade and database tools.
Example text User entry texts. These are
words or characters that you
enter in the system exactly
as they appear in the
documentation.
<Example
text>
Variable user entry. Angle
brackets indicate that you
replace these words and
characters with appropriate
entries to make entries in the
system.
EXAMPLE TEXT Keys on the keyboard, for
example, F2 or ENTER.
Icons
Icon Description
Caution
Note or Important
Example
Recommendation or Tip
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 1
Table of Contents
1. Introduction .......................................................................................................................... 2
2. Scenario ................................................................................................................................ 3
3. Eclipse based BW modeling tools ........................................................................................ 4
3.1 Prerequisite ....................................................................................................................... 4
3.2 Definition of OpenODSView YSHHTG02 for sales data ............................................... 6
3.3 Definition of OpenODSView YSHHTG01 for master data ...........................................13
3.4 Defining associations between single objects .............................................................. 17
3.4.1 Influence of implicit mapping of 0CURRENCY and 0UNIT ........................... 20
3.4.2 Influence of Referential Integrity setting when mapping EDW core
InfoObjects......................................................................................................... 23
4. Transformations ................................................................................................................. 28
5. Switch from virtualization to persistent data structures .................................................. 30
6. Summary ............................................................................................................................. 31
7. Appendix ............................................................................................................................. 31
7.1 SQL definition files of the involved tables and data .....................................................31
7.1.1 Fact table YSHSALES ........................................................................................31
7.1.2 Master data table YSHCUSTOMER ................................................................. 33
7.2 Notes ............................................................................................................................... 34
7.3 Illustrations ..................................................................................................................... 35
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 2
1. Introduction In SAP BW 7.4 SP5 on HANA the new metadata object OpenODSView is introduced, which enables
the data warehouse modeler to integrate external data in the EDW Core Data Warehouse without
the need to stage the data first. It offers the possibility to enrich external data structures with
semantics and enables BW to apply BW OLAP functionality on data that is not yet staged into HANA.
Looking at the overall LSA++ architecture the OpenODSView is located inside the OpenODS Layer
(see Picture 1: LSA++ architecture in BW 7.4 SP5 on HANA).
Picture 1: LSA++ architecture in BW 7.4 SP5 on HANA
Beside the classical data acquisition layer of SAP BW the OpenODS Layer offers a flexible and easy
consumption of external data models building a SAP BW OpenODS Layer using field-based
modeling. By providing this possibility external data can be consumed virtually and combined with
EDW core InfoProviders without the need to create InfoObjects first.
Through the creation of OpenODSViews external data can be made visible to BW and afterwards be
consumed in reporting scenarios without the need to replicate that data in a BW managed
persistence.
Typically this external data are located in a non BW managed schema of the SAP HANA database
on which BW is installed or in a separated database which is connected through Smart Data Access
to the SAP HANA database on which BW is installed.
OpenODSViews allow the combination of such external data sources with BW data models by
defining associations between single fields of the external sources with core EDW InfoObjects or
other BW OpenODSViews.
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 3
The OpenODSView object complements the BW 7.4 SP5 based CompositeProvider (see
https://scn.sap.com/docs/DOC-52329) as it can be used to combine (union / join) external data
with other BW InfoProviders.
The OpenODS layer allows an evolutionary integration of external data sources into the EDW core
data model without the need to adjust queries or authorizations modeled on top of an
OpenODSView.
Both editors for OpenODSView as well as for the CompositeProvider are shipped within the Eclipse
based BW modeling tools.
2. Scenario The basis scenario for the explanations in this First Guidance document is data stored in an own
HANA schema DEMO. On the same HANA database a SAP BW 7.4 system is installed which stores
its data in the HANA schema SAPHBW.
In schema DEMO there are 2 tables which we want to integrate into the SAP BW Core data model
(see Picture 2 and Picture 3).
Picture 2: External data structure of table YSHSALES
Picture 3: Data within external data structures
In case you want to replay the scenario you find the SQL definitions of the involved tables as well as
insert statements to create a sample dataset in the appendix.
As you can see in Picture 4 in our schema we have a table YSHCUSTOMER which stores master
data.
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 4
Picture 4: Content of table YSHCUSTOMER
The table itself is parent table to table YSHSALES (see Picture 5) which holds transactional sales
data. Foreign key column CustID has a reference to our master data table YSHCUSTOMER.
Picture 5: Content of table YSHSALES
How would we now integrate this external data into SAP BW to use OLAP functionality provided by
the Analytic Manager of SAP BW on top of it?
3. Eclipse based BW modeling tools
Starting with BW 7.4 on HANA Support Package 5 new Eclipse based modeling tools have been
shipped to administrate and maintain BW metadata objects. The purpose of that approach is to
provide BW application designers with a flexible, efficient and modern modeling environment,
which is deeply integrated with the ABAP development tools as well as with SAP HANA modeling
tools. In general these new BW modeling tools enable the usage of SAP HANA elements such as
virtual tables, HANA tables, Calculation and/or Analytical views in the definition of BW metadata
objects such as OpenODSView and Composite Provider.
3.1 Prerequisite You run a SAP BW 7.4 SP5 or higher on HANA.
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 5
In order to create a OpenODSView you need to install the BW modeling tools (see
http://scn.sap.com/community/netweaver-bw-hana/blog/2014/01/29/sap-bw-modelling-tools)
for details.
Next you have to open the BW perspective in SAP HANA studio (see Picture 6 and Picture 7).
Picture 6: Window Open Perspective
Picture 7: BW Perspective
As a next step you have to create a BW project within the SAP HANA Studio Eclipse IDE (see
Picture 8 and Picture 9). When using the BW Modeling perspective, you always have to establish a
system connection that is managed by a corresponding BW project. The BW perspective enables
access to both Eclipse-based and GUI-based BW Modeling editors.
Picture 8: New project
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 6
Picture 9: BW project
3.2 Definition of OpenODSView YSHHTG02 for sales data Let us now start with the integration of the tables above into the BW data model. Be aware that the
SAP<SID> database user has to have authorizations to read from your schema in which your tables
are located. In our case the database user SAPHBW has to be authorized to read from schema
DEMO.
In a regular BW approach you start creating your model by modeling the dimensions first. So you
start modeling the master data objects (InfoObjects) including properties such as attributes, texts
and hierarchies followed by a development of your transactional data structures. With
OpenODSViews you have completely new modeling options as you can gradually build up models
and architectures based on relational schemas.
OpenODSViews offer you the possibility to start modeling from facts developing towards the
dimensions.
Let’s have a closer look how we approach here.
Before being able to create an OpenODSView, you have to define a BW project in the Eclipse
environment. Details how to set up a project and how to install the BW modeling tools can be found
above. In your BW project select the InfoArea, in which you want to define your OpenODSView and
select New > OpenODSView from the Context menu (see Picture 10).
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 7
Picture 10: Create an Open ODS View
In the next step the system asks you for an InfoArea, a technical name, the description and
semantic of the OpenODSView.
As we have our sales data table YSHSALES in our schema, we define the OpenODSView
YSHHTG02. We select the option ‘Facts’ out of the selectable options for semantics in the
definition process of the OpenODSView and choose YSHSALES as the DB Object name (see Picture
11).
You can categorize the underlying source type as Facts, Master Data or Texts. The source type
itself can be a DataStore Object, a BW Datasource, a HANA Database table or Database View or a
Virtual Table. The latter is created once you decide to use HANA Smart Data Access to federate
against an external database such as Oracle, MSS, Sybase IQ, Sybase ASE, SAP HANA, Teradata or
Hadoop.
As in our scenario our 2 HANA tables which we want to integrate are located in a HANA schema
DEMO of the same HANA database on which our BW system is installed we choose Database Table
or View. Additional we provide the schema and the database object name.
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 8
Picture 11: Definition of OpenODSView YSHHTG02
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 9
The initial proposal of the system delivers after a few adjustments regarding the names of the
proposed view fields the structure of the OpenODSView as illustrated in Picture 12.
Picture 12: Structure of the OpenODSView YSHHTG02
As you can see, the system automatically assigned those fields of type DEC to the keyfigures
section, and those fields of type INT and CHAR to Characteristics.
As we have reference fields for CURRENCY and ORDERUNIT in our underlying table, we have to
move those to the relevant folder Currency resp Unit and map it to the relevant key figures (see
Picture 13).
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 10
Picture 13: Structure of the OpenODSView YSHHTG02
To map the reference fields for Currency resp Quantity to the key figures we need to provide the
relevant entry in the key figure property section to a chosen keyfigure in the right panel (see Picture
14).
Picture 14: Key figure specific properties
Please be aware that all currencies / units that are used in your external data set have to be
configured as currency / unit in the customizing of BW. Internally the system checks for referential
integrity of the values for the used currencies / units in your dataset once they are used as
reference fields as in the example. More details will follow in the explanation below.
After saving and activating the structure we get following query result, once we drill down by CustID
and Delivery Date (see Picture 15).
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 11
Picture 15: Initial Drilldown on YSHHTG02
As you can see the Analytic Manager of BW didn’t aggregate the key figures to which we had
different currencies / units (see Picture 15). As you can see, here is a first indication of a BW
feature.
By looking at the output we see, that the format of the Delivery Date looks slightly different to that
what you would expect in a BW Query. Our requirement is to format the date fields as defined in our
BW backend for a date field. Furthermore we’d like to see a text for CustID instead of a technical
key.
To achieve that, we use the functionality of the OpenODSView to assign on field level other
OpenODSViews or InfoObjects.
To achieve the formatting of Delivery Date and Order Date we assign the InfoObject 0CALDAY to
our fields DELDATE and ORDDATE in the OpenODSView (see Picture 16 and Picture 17). By doing
so the field inherits properties of the selected / associated InfoObject.
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 12
Picture 16: Defining associations on field level
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 13
Picture 17: Associate Order Date with 0CALDAY
As in our model table YSHSALES has a foreign key relationship to table YSHCUSTOMER, we want
to use this relationship also in our OpenODSView. To translate that into the ‘BW world’, we just
need to create a second OpenODSView on the master data table YSHCUSTOMER and assign that
OpenODSView to our sales data OpenODSView YSHHTG02.
3.3 Definition of OpenODSView YSHHTG01 for master data
To start the definition of our OpenODSView YSHHTG01 we again choose in our BW project the
option New > OpenODSView from the Context menu. As the underlying table stores master data,
we select semantics ‘Master data’.
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 14
Picture 18: New OpenODSView Dialog 1
Again you can see that you can categorize the underlying source type as Facts, Master Data or
Texts. The source type itself can be a DataStore Object, a BW Datasource, a HANA Database table
or Database View or a Virtual Table. The latter is created once you decide to use HANA Smart Data
Access to federate against an external database such as Oracle, MSS, Sybase IQ, Sybase ASE, SAP
HANA, Teradata or Hadoop.
In our scenario we provide the schema and the database object name YSHCUSTOMER – see
Picture 19.
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 15
Picture 19: OpenODSView Definition Dialog 2
In the now opened OpenODSView maintenance screen you specify the structure of the object by
assigning the fields of the source object (which you see on the left side of the screen) to single field
categories of the resulting OpenODSView (middle section). The field categories offered depend on
the chosen semantic of the OpenODSView. Initially the system assigns the fields of the source
objects automatically to the field categories of the OpenODSView.
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 16
Picture 20: OpenODSView maintenance screen
As we want to define an OpenODSView of type master data we have to assign a relevant field of the
source to the representative key field section of the view. Furthermore we specify which field of the
source should be used as a possible text field for the query frontend. In our case we choose
Customer.
Picture 21: OpenODSView maintenance details for OpenODSView YSHHTG01
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 17
As you can see in Picture 21 to each single field of the view you can specify further details, such as
associations, authorization relevance, referential integrity and reporting properties, which I will
describe in a later section of that document.
After saving and activating the OpenODSView YSHHTG01 we can immediately define and run a BW
query on the object. To do so we selected the OpenODSView as Datasource in Advanced Analysis
Office. In the screenshot below, we already drilled down by Customer ID (see Picture 22). Due to
the fact that we dragged the field ‘Customer’ of our source table into the section ‘Short Text’ of our
OpenODSView we are able to display the Text during the Query execution.
Picture 22: Initial data preview of OpenODSView YSHHTG01
As you can see on the left side, all single fields of the OpenODSView can already be used in the
Query as possible drill down options.
3.4 Defining associations between single objects On each single field of the OpenODSView you can adjust the properties by using the functions
provided in the right panel of the OpenODSView. In case of type characteristics you can assign
associations to texts and master data of already designed OpenODSViews or to already defined
InfoObjects. If you associate other objects the properties of the associated object are inherited to
the field selected. Furthermore you can configure further attributes of the assigned object to be
used as navigational attributes in the OpenODSView or you can assign further key components (in
case you need compounded keys).
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 18
In case you want to query on the field of the OpenODSView using the concept of external
hierarchies the prerequisite is to assign an InfoObject to the field of the OpenODSView.
For fields of type key figures you can assign InfoObjects to inherit the aggregation properties, etc.
to the fields of the source.
How does this functionality help us in solving our requirement to see a text in the output (see
Picture 15) of our query for CustID instead of a technical key?
As you can see Picture 24 we defined can define in the OpenODSView YSHHTG02 an association on
field level CustID to our OpenODSView YSHHTG01. Once we have done that association we further
can select fields (Gender, City and Country) of the associated OpenODSView YSHHTG01 to act as
navigational attributes in our sales data OpenODSView (see Picture 23).
Picture 23: Navigational attributes of OpenODSView YSHHTG01
As in addition to that, we already assigned the EDW InfoObject 0CALDAY to the field ORDDATE and
DELDATE, we get the final OpenODSView definition as displayed below.
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 19
Picture 24: OpenODSView definition of YSHHTG02
So let’s see how our query result displayed in Picture 25 looks like after our metadata adjustments.
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 20
Picture 25: Drill down on YSHHTG02 with inherited properties
If you compare Picture 25 with Picture 15 you can see, that besides the formatting of the date fields
and the text for Customer, we also got the possibility to drill down by Gender, City and Country, as
we selected those as navigational attributes.
The output of the field Delivery Date changed to the format as we expect it for a BW time
characteristic. This is caused by the assignment of InfoObject 0DATE to the relevant field of the
OpenODSView YSHHTG02.
3.4.1 Influence of implicit mapping of 0CURRENCY and 0UNIT Let us focus on the special treatment for units and currencies, as we already observed in the output
of our query. As you can see, once you have different units or currencies, the result displays a ‘*’, as
an aggregation of different currencies and/or units wouldn’t make much sense without a
conversion first.
How did we achieve such an behavior.
Once you are dragging fields of your source into the relevant folder for Unit or Currency you see
that the option for setting the referential integrity is greyed out. The system doesn’t offer you to
change that setting any longer.
Picture 26: Implicit mapping of referential integrity for currencies and units
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 21
In BW we have a special treatment in the Analytic Manager for Currencies and Units. This treatment
is triggered once you assign a field to act as a reference field of type Currency or Unit.
This treatment implies some prerequisites, which we can easily demonstrate, once we insert a new
value in our Sales Order table which has an Order Unit ‘STK’.
This unit is unknown to BW. To insert that record we use the statement
INSERT INTO YSHSALES VALUES (0000000051, '0000000956', '000000000000315413',
'20120903', '20121101', 97, 59, 3687.59, 3225.6, 60, 'EUR', 'STK');
Once we execute a query on the OpenODSView YSHHTG02 we get the following output
Picture 27: Default query with missing base unit of measure
As you can see, the system raised a message ‘No SID found for value ‘STK’.
Why is it like that?
Due to the special treatment of currencies and units BW expects all currencies and units to be
maintained in the central tables for currencies or units.
To resolve the issue above, we have to customize in BW the base units of measure for ‘STK’. Once
we have done that our query will display the results as expected.
To do this you have to call transaction SPRO (see Picture 28) and select the relevant customizing
entry point (see Picture 29).
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 22
Picture 28: Transaction SPRO
Picture 29: Check Units of Measurements
Picture 30: Maintain Units of measurement
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 23
After maintaining the missing entry for ‘STK’ we see the output of the entries in our query (see
Picture 31: Query result on OpenODSView after customizing).
Picture 31: Query result on OpenODSView after customizing
3.4.2 Influence of Referential Integrity setting when mapping EDW core InfoObjects
To explain the influence of the referential integrity setting we need a little more background around
the system behavior using another simple example. We have an OpenODSView in which a field of
the external source got assigned to a core EDW InfoObject 0D_NW_BP (see Picture 32). We have
confirmed referential integrity by setting the relevant option.
Picture 32: OpenODSView YEPM001 with confirmed Referential Integrity
What does this mean for the query execution?
Once we have set the option as illustrated in Picture 32 the system performs a referential join
between the field D_NW_BP of our external table D_NW_BP_SALES and the SID table of the
associated InfoObject 0D_NW_BP. That means once we execute a query we see only those entries
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 24
in our query result set (see Picture 33) to which a corresponding entry in both tables exists
(external table and SID table entry for the same key exists).
Picture 33: Query result with confirmed referential integrity
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 25
As you can see the overall result for our key figure QUANTITY is 210.
If we now do not confirm referential integrity by leaving the relevant option blank (see Picture 34),
the system executes a left outer join between our external table D_NW_BP_SALES and our SID
table instead of the referential join that was executed before.
Picture 34: OpenODSView YEPM_001 without confirmed referential integrity
Let’s see the result of our query (see Picture 35).
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 26
Picture 35: Query result without confirmed referential integrity
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 27
As you can see, due to the 2 additional suppliers which are in our external table but not in the
master data table of our central InfoObject 0D_NW_BP we get a different query result as in Picture
33. The overall result for our key figure QUANTITY is 224, no longer 210.
As you can see, you have to be sure to set the option so it fits to your expectation.
But be careful. Once you do not confirm referential integrity you should be aware that you get
additional entries inserted in your master data table of your core EDW InfoObject that you
associated. As you can see in Picture 36 we had 45 entries in our master data table of InfoObject
0D_NW_BP before executing the query in Picture 35.
Picture 36: Master data table before query execution
Afterwards we have the following state (see Picture 37).
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 28
Picture 37: Master data table after query execution
As you can see the 2 additional data records which had been not in our table before got inserted
during query execution.
4. Transformations
When working with external - especially non-SAP data - you will frequently encounter situations
where certain modifications to the external data are necessary or desired to better leverage BW
functionality. A typical example are combined date and time fields in a format like ‘2014-03-04
17:43:12.412’ that require some conversion in order to benefit from BW time handling (like locale
specific rendering, availability of date hierarchies etc.).
In the Open ODS framework, such problems can be handled in various ways. If the source object is
a database table or view, a simple but very flexible approach is to create another view that contains
the transformation logic on top of the actual source. Whilst very powerful, the drawback of creating
such a HANA artefact is that it is not integrated in the BW metadata live cycle and transport.
With BW 7.40 SP08, it will be possible to leverage BW transformations for this purpose. Such a
transformation can be either modelled or manually implemented e.g. using a HANA Expert Script.
Below, you can see an example of a transformation which does a simple date conversion as
mentioned above using simple formulas in a BW transformation. Note that the check box “SAP
HANA processing possible” is checked, which ensures that query processing is pushed down to
HANA.
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 29
Picture 38: On the fly transformation with an Open ODS View
As you can see in the below query drill down by DueDate, the system now recognizes the date
semantics of this field and offers functionalities like time hierarchies, etc.
Picture 39: Query drill down by the converted DueDate field
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 30
5. Switch from virtualization to persistent data structures
Another characteristic property of the Open ODS Framework is that it is designed to cover not only
(virtual) query access to existing data persistencies but also allows to transform and transfer data
from a given (possibly remote) persistency to a BW managed one.
This is the reason why, in the Open ODS Framework, we distinguish between the different
multidimensional semantics (fact, master data and text) each of which corresponds to separate
persistencies in a physical star schema: Facts would be materialized separately from master data
dimensions; likewise, text tables typically require a separate persistence from master data, since
they have an additional key field specifying the language code.
Thus, creating a reporting view via Open ODS ensures that the whole model consists of structures
that can – if the need arises – be turned into BW managed persistencies. There is, of course, a
variety of reasons for such a switch: it might be hard to keep required Service Level Agreements
with remote access, it may be desirable to work with a stable daily snapshot of data, or the
transformations required to allow combination of external data with other BW data could be too
complex to be always executed on the fly.
What’s important in such a switch scenario is, of course, that all the modelling artefacts (e.g.
queries, work books) built for the virtual access can be used after the switch as well. Open ODS
ensures that by allowing to exchange the source object under an Open ODS View: after creating the
BW managed persistence (or having it generated by the system) you can replace, e.g. the original
database table with the newly created BW DataStore Object and continue working with your
previously built queries.
With BW 7.40 SP05 it is possible to generate a DataStore Object based on fields (only available with
pilot note 1922533) from an Open ODS View. In the course of this, it is also possible to exchange the
original source object of the Open ODS View with the newly generated DSO.
Picture 40: Data flow generation based on an Open ODS View
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 31
6. Summary As you can see in the example above, the new possibilities offered by Open ODS Views complement
the existing InfoObject based modeling very well. Re usage of the existing business content objects
on external data structures offer a great value. In our scenario a very easy enrichment of external
data structures is achievable without the need to stage data into BW.
Furthermore in our simple scenario it was not necessary to create an InfoObject first before being
able to query on the relevant data.
With the possibility to associate Open ODS Views to each other, you can start developing data
models from the facts to master data (bottom up).
The slide in Picture 40 illustrates and summarizes the functionality of the Open ODS View in
combination with external data sources made visible by virtual tables.
Picture 40: Summary slide
7. Appendix
7.1 SQL definition files of the involved tables and data
7.1.1 Fact table YSHSALES DROP TABLE YSHSALES; CREATE COLUMN TABLE YSHSALES( "Order id" NVARCHAR (255) NOT NULL, "CustID" NVARCHAR (10), "Product" NVARCHAR (255) NOT NULL, "Order date" NVARCHAR (255) NOT NULL, "Delivery date" NVARCHAR (255) NOT NULL, "Ordered quantity" DECIMAL (34) NOT NULL, "Delivered quantity" DECIMAL (34), "Gross amount" DECIMAL (34,4), "Net amount" DECIMAL (34,4),
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 32
"Discount" DECIMAL (34), "Currency" NVARCHAR (3) NOT NULL, "Orderunit" NVARCHAR (3) ); INSERT INTO YSHSALES VALUES (0000000001, '0000000374', '000000000000320213', '20110120', '20120504', 96, 64, 2007.09, 2007.09, 15, 'EUR', 'EA'); INSERT INTO YSHSALES VALUES (0000000002, '0000000163', '000000000000316367', '20120619', '20120619', 3, 3, 2078.23, 2078.23, 69, 'USD', 'ST'); INSERT INTO YSHSALES VALUES (0000000003, '0000000736', '000000000000311624', '20100419', '20101018', 10, 10, 874.61, 874.61, 35, 'USD', 'EA'); INSERT INTO YSHSALES VALUES (0000000004, '0000000344', '000000000000314124', '20120509', '20120509', 23, 23, 3105.38, 3039.23, 54, 'EUR', 'ST'); INSERT INTO YSHSALES VALUES (0000000005, '0000000336', '000000000000315342', '20111219', '20120913', 15, 15, 1102.19, 1102.19, null, 'USD', 'EA'); INSERT INTO YSHSALES VALUES (0000000006, '0000000095', '000000000000315816', '20121024', '20130102', 7, 7, 7299, 5982.94, null, 'EUR', 'EA'); INSERT INTO YSHSALES VALUES (0000000007, '0000000344', '000000000000311671', '20100308', '20110511', 35, 35, 6439.73, 4927.98, 50, 'USD', 'EA'); INSERT INTO YSHSALES VALUES (0000000008, '0000000190', '000000000000311119', '20100625', '20100710', 19, 19, 4722.24, 2235.52, 22, 'EUR', 'EA'); INSERT INTO YSHSALES VALUES (0000000009, '0000000736', '000000000000311528', '20120713', '20130127', 17, 17, 5610.98, 2668.46, 35, 'EUR', 'ST'); INSERT INTO YSHSALES VALUES (0000000010, '0000000095', '000000000000318319', '20090804', '20130123', 95, 75, 8230.83, 8212.87, 65, 'EUR', 'EA'); INSERT INTO YSHSALES VALUES (0000000011, '0000000736', '000000000000314143', '20120705', '20121114', 87, 86, 9883.19, 5370.97, null, 'EUR', 'ST'); INSERT INTO YSHSALES VALUES (0000000012, '0000000288', '000000000000316911', '20091024', '20111224', 91, 77, 6960.05, 6361.29, null, 'USD', 'ST'); INSERT INTO YSHSALES VALUES (0000000013, '0000000904', '000000000000314152', '20090702', '20110820', 62, 54, 8141.89, 4753.51, 65, 'EUR', 'ST'); INSERT INTO YSHSALES VALUES (0000000014, '0000000904', '000000000000311697', '20110124', '20120831', 65, 59, 1200.19, 1200.19, 44, 'USD', 'ST'); INSERT INTO YSHSALES VALUES (0000000015, '0000000163', '000000000000311122', '20100518', '20110814', 39, 39, 7439.43, 4088.25, null, 'USD', 'EA'); INSERT INTO YSHSALES VALUES (0000000016, '0000000697', '000000000000315331', '20100711', '20121019', 75, 60, 7426.12, 3672.93, null, 'EUR', 'ST'); INSERT INTO YSHSALES VALUES (0000000017, '0000000289', '000000000000314150', '20120411', '20121130', 91, 52, 8903.28, 8207.52, 53, 'USD', 'ST'); INSERT INTO YSHSALES VALUES (0000000018, '0000000289', '000000000000316326', '20120827', '20120827', 15, 15, 7135.78, 5138.3, 53, 'USD', 'EA'); INSERT INTO YSHSALES VALUES (0000000019, '0000000289', '000000000000311264', '20101027', '20110315', 61, 51, 1252.01, 1252.01, 15, 'EUR', 'EA'); INSERT INTO YSHSALES VALUES (0000000020, '0000000095', '000000000000316524', '20120804', '20120804', 37, 37, 6503.1, 3035.26, 35, 'EUR', 'EA'); INSERT INTO YSHSALES VALUES (0000000021, '0000000188', '000000000000311640', '20120706', '20121014', 27, 27, 6873.67, 5223.33, null, 'EUR', 'ST'); INSERT INTO YSHSALES VALUES (0000000022, '0000000190', '000000000000311644', '20091002', '20100321', 38, 38, 4552.32, 2274.6, 4, 'USD', 'EA'); INSERT INTO YSHSALES VALUES (0000000023, '0000000697', '000000000000311293', '20120422', '20120422', 82, 60, 3417.49, 2567.07, 6, 'USD', 'ST'); INSERT INTO YSHSALES VALUES (0000000024, '0000000395', '000000000000315628', '20110217', '20120908', 66, 55, 3597.82, 3256.65, 2, 'EUR', 'EA'); INSERT INTO YSHSALES VALUES (0000000025, '0000000736', '000000000000314135', '20100621', '20120504', 87, 63, 3253.94, 2838.83, 12, 'EUR', 'ST'); INSERT INTO YSHSALES VALUES (0000000026, '0000000736', '000000000000311348', '20101223', '20120814', 90, 58, 8573.99, 4811.72, 67, 'USD', 'EA'); INSERT INTO YSHSALES VALUES (0000000027, '0000000657', '000000000000318222', '20090614', '20091226', 47, 47, 2898.89, 2460, 16, 'EUR', 'ST');
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 33
INSERT INTO YSHSALES VALUES (0000000028, '0000000736', '000000000000316422', '20101109', '20120108', 58, 56, 7693.53, 2353.05, 14, 'USD', 'EA'); INSERT INTO YSHSALES VALUES (0000000029, '0000000336', '000000000000311660', '20101112', '20101128', 60, 58, 6143.95, 2167.38, 59, 'USD', 'ST'); INSERT INTO YSHSALES VALUES (0000000030, '0000000697', '000000000000317058', '20121221', '20121221', 60, 58, 7404.07, 3588.44, 26, 'USD', 'ST'); INSERT INTO YSHSALES VALUES (0000000031, '0000000026', '000000000000311297', '20121222', '20121222', 82, 64, 4557.23, 2007.41, 35, 'EUR', 'EA'); INSERT INTO YSHSALES VALUES (0000000032, '0000000288', '000000000000316213', '20100525', '20120116', 19, 19, 7387.72, 6885.95, 0, 'EUR', 'ST'); INSERT INTO YSHSALES VALUES (0000000033, '0000000188', '000000000000317251', '20111119', '20120616', 87, 60, 9033.32, 5042.9, 17, 'USD', 'EA'); INSERT INTO YSHSALES VALUES (0000000034, '0000000153', '000000000000315728', '20110919', '20130228', 63, 55, 4090.54, 4090.54, 53, 'EUR', 'ST'); INSERT INTO YSHSALES VALUES (0000000035, '0000000095', '000000000000311273', '20120708', '20120909', 5, 5, 2059.45, 2059.45, null, 'USD', 'EA'); INSERT INTO YSHSALES VALUES (0000000036, '0000000288', '000000000000314118', '20110522', '20110917', 86, 53, 3564.86, 2320.42, 52, 'USD', 'ST'); INSERT INTO YSHSALES VALUES (0000000037, '0000000026', '000000000000315201', '20100430', '20121105', 26, 26, 5947.71, 2564.22, 22, 'EUR', 'EA'); INSERT INTO YSHSALES VALUES (0000000038, '0000000163', '000000000000311326', '20091220', '20120808', 73, 64, 8469.53, 3380.2, null, 'USD', 'EA'); INSERT INTO YSHSALES VALUES (0000000039, '0000000697', '000000000000317278', '20100121', '20120930', 19, 19, 5672.93, 5200.6, 33, 'EUR', 'ST'); INSERT INTO YSHSALES VALUES (0000000040, '0000000686', '000000000000319227', '20100801', '20111115', 72, 61, 8595.2, 7997.44, 60, 'EUR', 'EA'); INSERT INTO YSHSALES VALUES (0000000041, '0000000736', '000000000000311529', '20100915', '20110301', 4, 4, 7683.04, 3984.75, 24, 'EUR', 'ST'); INSERT INTO YSHSALES VALUES (0000000042, '0000000916', '000000000000311278', '20100508', '20111115', 83, 80, 7669.83, 3443.75, 1, 'EUR', 'EA'); INSERT INTO YSHSALES VALUES (0000000043, '0000000657', '000000000000316510', '20090526', '20120127', 83, 60, 4552.09, 3149.09, null, 'USD', 'ST'); INSERT INTO YSHSALES VALUES (0000000044, '0000000697', '000000000000316362', '20100131', '20111008', 38, 38, 3432.88, 2639.02, null, 'EUR', 'ST'); INSERT INTO YSHSALES VALUES (0000000045, '0000000697', '000000000000316362', '20100131', '20111008', 38, 38, 3432.88, 2639.02, null, 'EUR', 'ST'); INSERT INTO YSHSALES VALUES (0000000046, '0000000736', '000000000000317039', '20091128', '20100204', 58, 58, 8589.91, 5618.37, 59, 'EUR', 'EA'); INSERT INTO YSHSALES VALUES (0000000047, '0000000026', '000000000000316924', '20110802', '20120417', 32, 32, 7661.44, 4199.19, 37, 'USD', 'EA'); INSERT INTO YSHSALES VALUES (0000000048, '0000000153', '000000000000315751', '20120822', '20120822', 34, 34, 5359.71, 2962.16, null, 'EUR', 'ST'); INSERT INTO YSHSALES VALUES (0000000049, '0000000904', '000000000000311281', '20091114', '20120720', 88, 52, 4528.14, 4450.82, 5, 'EUR', 'ST'); INSERT INTO YSHSALES VALUES (0000000050, '0000000288', '000000000000316212', '20090423', '20091022', 86, 53, 3836.44, 2282.69, 40, 'EUR', 'EA');
7.1.2 Master data table YSHCUSTOMER DROP TABLE YSHCUSTOMER; CREATE COLUMN TABLE YSHCUSTOMER( "CustID" NVARCHAR (10) NOT NULL, "Customer" NVARCHAR (255), "Gender" NVARCHAR (255) NOT NULL, "Marital status" NVARCHAR (255), "Phone Number" NVARCHAR (255), "Country" NVARCHAR (255) NOT NULL, "City" NVARCHAR (255), "Payment mode" NVARCHAR (255) );
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 34
INSERT INTO YSHCUSTOMER VALUES ('0000000069', 'Delia Khan', '2', 'Widow', '1-797-291-4082', 'MALAYSIA', 'TCZEW', 'Scheduled payment'); INSERT INTO YSHCUSTOMER VALUES ('0000000017', 'Art Gneiser', '2', 'Divorced', '1-903-702-8516', 'OMAN', 'VAXJO', 'Paypal'); INSERT INTO YSHCUSTOMER VALUES ('0000000369', 'Lamar Fassio', '2', 'Married', '1-155-966-9218', 'NEW ZEALAND', 'CEUTA', null); INSERT INTO YSHCUSTOMER VALUES ('0000000796', 'Minta Molyneaux', '1', 'Divorced', '1-578-036-1370', 'CHINA', 'ARNBOROUGH', null); INSERT INTO YSHCUSTOMER VALUES ('0000000787', 'Ladawn Pultz', '1', 'Widow', '1-374-770-0727', 'NORTH KOREA', 'CRAWLEY', null); INSERT INTO YSHCUSTOMER VALUES ('0000000165', 'Sheryl . Favieri', '1', 'Single', null, 'INDONESIA', 'UNTERSCHLEISSHEIM', null); INSERT INTO YSHCUSTOMER VALUES ('0000000099', 'Amado Lipsie', '2', 'Married', '1-692-971-9424', 'SWEDEN', 'FELUY', 'Cash'); INSERT INTO YSHCUSTOMER VALUES ('0000000860', 'Dottie Marske', '2', 'Married', null, 'IRELAND', 'MEDIAS', null); INSERT INTO YSHCUSTOMER VALUES ('0000000554', 'Minta Coskey', '2', 'Single', '1-175-766-4452', 'ISRAEL', 'LINARES', 'Cash'); INSERT INTO YSHCUSTOMER VALUES ('0000000956', 'Stanford C. Scandalis', '1', 'Married', null, 'COLOMBIA', 'SOPHIA ANTIPOLIS CEDEX', 'Check'); INSERT INTO YSHCUSTOMER VALUES ('0000000650', 'Felicia Hainley', '1', 'Married', '1-955-452-0802', 'SWEDEN', 'BRUSSEL', 'Paypal'); INSERT INTO YSHCUSTOMER VALUES ('0000000096', 'Arla Evaristo', '2', 'Married', '1-915-265-5211', 'OMAN', 'CARAVACA DE LA CRUZ', null); INSERT INTO YSHCUSTOMER VALUES ('0000000052', 'Kaila Hursey', '1', 'Divorced', '1-505-072-2674', 'NORTH KOREA', 'SIGHISOARA', 'Paypal'); INSERT INTO YSHCUSTOMER VALUES ('0000000390', 'Cecelia . Annal', '2', 'Married', '1-575-504-5788', 'SWEDEN', 'KARLSKRONA', 'Scheduled payment'); INSERT INTO YSHCUSTOMER VALUES ('0000000693', 'Stan Tinneberg', '1', 'Widow', '1-412-380-2397', 'NORTH KOREA', 'LINZ', 'Check'); INSERT INTO YSHCUSTOMER VALUES ('0000000579', 'Gaylord R. Engelking', '2', 'Single', '1-635-809-5684', 'SWEDEN', 'EL ESPARRAGAL', 'Credit card'); INSERT INTO YSHCUSTOMER VALUES ('0000000070', 'Charissa Bordelon', '1', 'Divorced', '1-244-016-8156', 'OMAN', 'NAPOLI', null); INSERT INTO YSHCUSTOMER VALUES ('0000000737', 'Denisse J. Reiger', '1', 'Widow', null, 'SWEDEN', 'CHALON SUR SAONE', 'Other'); INSERT INTO YSHCUSTOMER VALUES ('0000000842', 'Kiley Cafaro', '2', 'Single', '1-413-882-1875', 'INDONESIA', 'MAROUSI', 'Other'); INSERT INTO YSHCUSTOMER VALUES ('0000000537', 'Tynisha Wariner', '2', 'Single', '1-593-477-0539', 'INDONESIA', 'GERONA', 'Cash');
7.2 Notes http://service.sap.com/sap/support/notes/
First Guidance SAP BW 7.40 on HANA – OpenODSViews
March 2014 35
7.3 Illustrations
Picture 41: Querying Open ODS Views
Picture 42: Referencing InfoObjects in Open ODS Views
www.sap.com/contactsap