Pattern-based Partitioning using the SPO BAdI – Part 2: BAdI Managed Maintenance
In this blog series I would like to share how to realize central definition and maintenance of partitioning patterns. The standard Semantically Partitioned Object (SPO) functionality of SAP NetWeaver BW 7.3 is enhanced by implementing Business Add-in (BAdI) RSLPO_BADI_PARTITIONING and few control tables. It facilitates an automated (re)partitioning, either individually or collectively, and enables partitions, criteria, texts and Data Transfer Processes (DTPs) to be generated automatically and consistently.
The blog series consists of the following blogs in addition to this blog:
- Pattern-based Partitioning using the SPO BAdI – Part 1: Introduction;
- Pattern-based Partitioning using the SPO BAdI – Part 3: Partitioning Patterns;
- Pattern-based Partitioning using the SPO BAdI – Part 4: Use Cases.
I developed a working version of the BAdI implementation which I would like to share via two documents. Implementing Pattern-based Partitioning using the SPO BAdI – Part 1: Control Tables contains all technical details of creating the control tables and the related ABAP data dictionary objects. Implementing Pattern-based Partitioning using the SPO BAdI – Part 2: BAdI Implementation explains all technical details of implementing BAdI RSLPO_BADI_PARTITIONING and the necessary ABAP Object Oriented programming in the implementing class.
Semantically Partitioned Object
I would like to start with a brief overview of the Semantically Partitioned Object technology which is copied from SAP Help. A Semantically Partitioned Object (SPO) is an InfoProvider that consists of several InfoCubes or DataStore objects with the same structure. Semantic partitioning divides the InfoProvider into several small, equally sized units (partitions).
You define the template for the partitions (the reference structure). The partitions are identical and are derived from the structure. You can only create and change the reference structure. The partitions are write-protected to make sure that they remain identical.
To keep the process of creating a Semantically Partitioned Object as simple as possible, different objects are generated when the object is activated. The following graphic shows the objects that are generated (upper area) and the objects that you need to create yourself (lower area).
Figure 1: SPO Data Flow Objects (Source: SAP AG)
Part of data flow is generated by data flowing out of the partitions. Here an outbound InfoSource is created as well as simple dummy transformations that are not executed by the DTP.
Part of the data flow is also created by data flowing into the partitions: an inbound InfoSource is generated with simple dummy transformations. This InfoSource represents a data entry layer for all partitions and makes it easier for you to connect sources.
A Semantically Partitioned Object can only be transported as a whole object. The generated objects are not transported. Instead they are generated in the target system.
BAdI Managed Maintenance of Partitions
Business Add-In (BAdI) RSLPO_BADI_PARTITIONING helps you to (re)partition Semantically Partitioned Objects. You can use this BAdI to automate repartitioning, meaning that you do not need to change partitioning properties manually anymore.
Similar to the manual maintenance you start with Maintain Partitions in the wizard. Here you can select the partition criteria.
Figure 2: Partitioning Criteria
Instead of the manual input, you only have to flag the checkbox “Get chars. from BAdI” and the BAdI will do the rest. An obvious prerequisite is that the required settings have been maintained appropriately in the control tables.
Figure 3: Generated Partitions
As you can see in the next screenshot, the DTPs also have been generated with the help of the BAdI.
Figure 4: Generated DTPs
Please note the role of the DTP Template. All technical settings are maintained with the DTP Template such as data source object type (e.g. DataSource or DataStore Object) and extraction mode.
Figure 5: DTP Template
The DTP Filter is generated by the BAdI with the help of the various control tables. The filter values are hard copied in the DTP Filter and will have to be regenerated in case of any changes.
Figure 6: Generated DTP Filter
In this BAdI, you can implement the following properties:
- The number of partitions and their sequential order;
- The partition criteria and the texts in various languages;
- The DTPs to be generated for new partitions.
Once you have implemented the BAdI, there are two options for adjusting the Semantically Partitioned Object according to the BAdI:
- Manually in the editing screen for the Semantically Partitioned Object: under Change Partitions, you can select the BAdI-Implementation under “Build Version From”.
- Automated using a program: you can schedule program RSLPO_MASS_ACT regularly using a process chain. To do this, select process type ABAP Program in process chain maintenance and specify program RSLPO_MASS_ACT. The program checks which Semantically Partitioned Objects implemented for the BAdI need to be adjusted. All Semantically Partitioned Objects are then adjusted and activated.
Below you find a screenshot of the mass maintenance program. The program can be started via t/code RSLPO_MASS_ACT.
Figure 7: Mass Maintenance
Please refer to the following SAP Help, blogs and articles for more information on SPO:
- SAP Help: Using Semantic Partitioning;
- BW 7.30: Semantically Partitioned Objects;
- SAP NetWeaver BW 7.30: Semantically Partitioned Objects (SPOs) built from BAdI – Consistent, Rule Based Modeling of Logical Partitions;
- KHNC Webinar presentation: Automated LSA with EDW Scalability Modeler;
- SAP Network Article: All you need to know about Semantically Partitioned Object in BW 7.30.
In this blog I explained in detail how the automated maintenance scenario works. After a quick overview of SPO we had a closer look at the BAdI Managed Maintenance scenario from a functional perspective. The BW developer is exposed to the standard user interface (wizard) but once the control tables are maintained correctly, the BAdI will generate all configuration.
In Pattern-based Partitioning using the SPO BAdI – Part 3: Partitioning Patterns you will learn more about authorized partitioning patterns, the maximum number of partitions and how to use the control tables. Finally, I will highlight in Pattern-based Partitioning using the SPO BAdI – Part 4: Use Cases some use cases of pattern-based partitioning based on LSA data flow templates.