Scenario Overview
The next step in our data flow is to define a CompositeProvider. This is built on top of the InfoObject-based Standard DataStore Object.
CompositeProvider: terminology and use cases
A CompositeProvider exposes data, which is sourced from one of more providers, to a BW Query. A CompositeProvider does not store data but generates a data-set at run-time from the underlying providers. Providers in SAP BW/4HANA are InfoProviders like DataStore Object (advanced), InfoObject and Open ODS View.
Note
We cover Open ODS View in one of the next lessons.Note
It's also possible to use SAP HANA views as provider for a CompositeProvider. We cover this in one of the next lessons.Although it is possible to build BW Queries directly on top of a DataStore Object (advanced), it is best practice to build a CompositeProvider on top of a DataStore Object (advanced) and then build the BW Query on top of the CompositeProvider.
A CompositeProvider provides the following benefits:
- Expose only the fields to a BW Query that are required from the underlying sources
- Create a single data set by combining multiple providers using a union, join or a combination of both
- Generate additional columns using formulas and calculations
- Apply filters to restrict the data that is exposed to the BW Query
Even if you require all fields from the underlying provider and there are no other providers to combine, it is still good practice to only build BW Queries on CompositeProviders and not directly on other types of InfoProvider. This is because the InfoProvider on which the BW Query is built cannot be replaced later with another, but it is possible to replace the provider of the CompositeProvider. So better create the fixed assignment between the BW Query and the CompositeProivider.
A CompositeProvider is a very powerful modeling object. The strength of a CompositeProvider is in preparing data sets for consumption by BW Queries. By comparison, the strength of a DataStore Object (advanced) is in its handling of complex data loading scenarios.
CompositeProvider: system settings
In our scenario, the CompositeProvider will have only one source provider which is our InfoObject-based Standard DataStore Object. This means we don't have to define a union or join to multiple providers. We have decided to use all InfoObjects from the DataStore Object (advanced).
You can watch the following demo to explore the settings of the CompositeProvider: