In an Enterprise Data Warehousing context, InfoObjects often play an arbitrary double role: they are used for modeling the Data Warehouse Layer and multi-dimensional modeling the Reporting Layer. In my blog Introducing Data Warehouse InfoObjects – Part 1: Conceptual Overview I advised segregation of duties by introducing a dedicated, independent set of InfoObjects: Data Warehouse InfoObjects.
But how about those Reporting InfoObjects? Should we simply activate all the Business Content InfoObjects we need? Or do we have to introduce our own set of InfoObjects, customized and fit to the Business Users’ requirements? Or a combination of both? In this blog I would to like to present an alternative approach.
I created an ABAP program to generate Reporting InfoObjects based on Business Content. This blog series explains how to use the program. In Part 1 we will have a look at the rationale, the program, the application log, the generated InfoObjects and Template InfoProvider.
The blog series consists of the following blogs in addition to this blog:
- Generating Reporting InfoObjects based on Business Content – Part 2: Metadata Repository & Customizing;
- Generating Reporting InfoObjects based on Business Content – Part 3: Optimizing Results.
The document Implementing Reporting InfoObjects based on Business Content provides detailed technical instructions on how to create the ABAP program and all related ABAP Workbench objects.
Since the earliest SAP NetWeaver BW releases SAP delivers so-called Business Content (a.k.a. BI Content). It’s a multitude of BW data modeling objects, amongst others InfoObjects. Strong advantages can be materialized in pure SAP implementations. The Business Content is developed in synch with the SAP source system and perfectly complements standard business processes with analytical scenarios.
However, there are in my opinion some drawbacks to take into account. Activation of Business Content can lead to a massive number of new InfoObjects. All dependencies are considered and can go many levels deep. This can lead to an extensive data model which might also include unused SAP modules, business processes and even Industry solutions. Such a data model will become increasingly difficult to understand and won’t make any sense from a Business User’s perspective.
The installation of Business Content in a productive system can even be dangerous. There are many cases where previously activated Business Content is enhanced. These enhancements can be overwritten by an inappropriate activation. No matter how experienced you are, one day it can happen to all of us.
I would like to propose an alternative approach: generating Reporting InfoObjects in the customer namespace based on Business Content InfoObjects using a program. All mandatory dependencies will be respected (i.e. compounding InfoObjects and reference InfoObjects). For Characteristics however, generation of attributes will be restricted to the highest level. This will prevent an uncontrolled expansion of the data model as we can observe with the Business Content activation.
Starting the Program
You can start the program by using t/code YRIOBJ.
Figure 1: Selection Screen
There are 3 ways to run the program:
- For one or more single Business Content InfoObjects;
- For one single Business Content InfoCube;
- For one single Business Content DataStore Object.
Make the appropriate selection on the selection screen. You can use the F4 search help functionality. The program will check the input afterwards and gives an error message in case of any incorrect input. Press the Execute push button to start processing.
Note that the program will check on authorization object YBWREPIOBJ. Please make sure that an appropriate authorization role is assigned to your user-id. This will be explained in Part 2 of the blog series.
Analyzing the Application Log
As the last processing step the program will display an application log.
Figure 2: Application Log
The program collects all messages issued during processing and adds them to the application log. Here you can obtain an overview of all InfoObjects that have been generated as well as the Template InfoProvider. If applicable any error messages can be found here. The various processing blocks can be identified by the “Start of processing” and “End of processing” messages.
Note that you can always review previous application logs retrospectively via t/code SLG1.
Make sure to fill in appropriate selection criteria such as Object YBW , Sub Object YBWREPIOBJ, date/time and user-id to narrow down the search results.
Figure 3: Analyze Application Log
The program checks the Metadata Repository if an InfoObject already exists for the respective Business Content InfoObject. If yes, then it will proceed by skipping this InfoObject. Otherwise it will generate a new InfoObject that will be appended to the central Metadata Repository table and adds it to the appropriate InfoObject Catalog.
Figure 4: InfoObject Catalogs for Generated InfoObjects
Please note that there is a restricted set of “special” InfoObjects which is excluded from the generation process. It concerns InfoObjects in table RSDIOBJFIX which have a special purpose in the system. One can think of Time Characteristics but also Characteristics like 0LANGU, 0UNIT and 0CURRENCY.
Generated Template InfoProvider
After the processing of the InfoObjects the program generates a so-called Template InfoProvider depending on the processing mode. In my example the processing mode was InfoCube and the program generated a Template InfoCube.
Figure 5: Generated Template InfoProviders
Such a Template InfoProvider acts as a container for all InfoObjects and can be used as a starting point for creating your own DataMart.
In this blog we discussed the rationale of generating Reporting InfoObjects based on Business Content, the program, the application log, the generated Reporting InfoObjects and the Template InfoProvider. In Generating Reporting InfoObjects based on Business Content – Part 2: Metadata Repository & Customizing we will have a look at the Metadata Repository and Customizing. In Generating Reporting InfoObjects based on Business Content – Part 3: Optimizing Results we will discuss several ways to optimize the results.