Académique Documents
Professionnel Documents
Culture Documents
Version: 1.0
Page: 1 / 11
Document history:
Version
Date
Author
CR
1.0
25-10-2013
Claudio Pinevsky
NA
Comments
Page: 2 / 11
Table of Contents
1
INTRODUCTION..................................................................................................................... 4
1.1
1.2
IMPLEMENTATION.................................................................................................................. 5
2.1
Centrally Define SPO PartProvider Implement BAdI RSLPO_BADI_PARTITIONING.................5
2.2
RSLPO_BADI_PARTITIONING: Method GET_T_SPO returns SPOs.........................................5
2.3
RSLPO_BADI_PARTITIONING: Method GET_T_PART - returns Partitions...................................6
2.4
RSLPO_BADI_PARTITIONING: Method GET_T_PART_TEXT - returns description of Partitions.7
2.5
RSLPO_BADI_PARTITIONING: Method GET_T_PART_CRIT - returns Partitioning Criteria
(partition characteristic(s) & values).............................................................................................................. 8
Page: 3 / 11
Background
Assigning a fix partition characteristic values: assign a fix year for each PartProvider e.g.
PartProvider 1 - for the actual year 2010, PartProvider 2- for 2009, PartProvider 3- for 2008
Modeling a rolling window: define a rule which assigns partition characteristic values (in
the example year) in an automated way to the Partitions
With this simple example we can learn two things (at least):
1. We should not use different logical partitioning implementations for the same requirements of
different InfoProviders as this will decrease maintainability and increase costs. Beside this we will
have a lot of second best implementations like implementation 1. in the example
2. If partitioning conditions are volatile over time we should not assign fix values but a rule based
logical partitioning to remain flexible. The origin of the volatility means that with every new year
the partition condition will change.
If we look to the real world we can learn a third thing:
4. Building a logical partitioned InfoCube or DSO in a continuous roll-out situation not all partition
characteristic values are known at definition time and often even the final number of PartProviders
is not known. That means over time you have to maintain the logical Partitions again and again
assigning new values to PartProviders and/ or creating new PartProviders.
We have this situation designing BWs using the Layered Scalable Architecture (LSA).
We can summarize that individual modeling of Logical Partitioned InfoCubes/ DSOs is the second
best choice especially with large BWs (EDW) as we have numerous InfoProviders following the
same logical partitioning conditions.
1.2 Semantically Partitioned Objects (SPOs) and Complex or Volatile
Partitioning Conditions
The new SPO feature is a big step forward modeling complex partitioning conditions as the new
wizard makes the assignment of partitioning characteristics and partitioning characteristic values to
semantical partitions (PartProvider) transparent and consistent (DTP filters).
Page: 4 / 11
Nevertheless we still have to manually enter the partition characteristic(s) and partition
characteristic(s) values for each SPO defining the semantical partitions. Thus with the standard SPO
wizard functionality we are confronted with the same challenges mentioned before even though on
a higher more comfortable level:
Implementation
Page: 5 / 11
method IF_RSLPO_BADI_PARTITIONING~GET_T_SPO.
DATA:
l_spo TYPE rslponame.
* Return a table with names of supported BAdI SPOs.
*
* TEST SPO
L_SPO = 'C9TECP'.
APPEND L_SPO TO R_T_SPO.
endmethod.
Fi
g.3: SPO BAdI Method GET_T_PART
Coding for our example:
method IF_RSLPO_BADI_PARTITIONING~GET_T_PART.
DATA:
l_s_part
TYPE rslpo_badi_s_part.
Page: 6 / 11
The method returns for our example SPO C9TESTCP four Partitions.
2.4 RSLPO_BADI_PARTITIONING: Method GET_T_PART_TEXT - returns
description of Partitions
This method is called for each SPO, which is returned by the first method GET_T_SPO (other
assignments only done here will be ignored) and returns the names / description of the Partitions.
The method supports multi-languages.
F
ig.4: SPO BAdI Method GET_T_PART_TEXT
method IF_RSLPO_BADI_PARTITIONING~GET_T_PART_TEXT.
DATA:
l_text_d
l_text_e
l_s_part_text
TYPE string,
TYPE string,
TYPE rslpo_badi_s_part_text.
IF I_SPO = 'C9TECP'.
CONSTANTS: C_YEAR_FROM TYPE N LENGTH 4 VALUE '2006'.
DATA: L_IND TYPE N LENGTH 2 VALUE 1,
L_NUM_PART TYPE N LENGTH 2,
L_YEAR_FROM TYPE N LENGTH 4,
L_YEAR_TO TYPE N LENGTH 4.
L_YEAR_FROM = C_YEAR_FROM(4).
L_YEAR_TO = SY-DATUM(4).
L_NUM_PART = L_YEAR_TO - L_YEAR_FROM + 1.
WHILE L_IND LE L_NUM_PART.
Page: 7 / 11
L_S_PART_TEXT-IDPART = L_IND.
L_S_PART_TEXT-LANGU = 'E'.
L_S_PART_TEXT-TXTLG = L_YEAR_TO.
APPEND L_S_PART_TEXT TO R_T_PART_TEXT.
L_IND = L_IND + 1.
L_YEAR_TO = L_YEAR_TO - 1.
ENDWHILE.
ENDIF.
ENDMETHOD.
Page: 8 / 11
L_S_PART_CRIT-OPT
= 'EQ'.
L_S_PART_CRIT-LOW = L_YEAR_TO.
APPEND L_S_PART_CRIT TO R_T_PART_CRIT.
L_S_PART_CRIT-IOBJNM = '0FISCVARNT'.
L_S_PART_CRIT-OPT
= 'EQ'.
L_S_PART_CRIT-LOW = 'K4'.
APPEND L_S_PART_CRIT TO R_T_PART_CRIT.
L_IND = L_IND + 1.
L_YEAR_TO = L_YEAR_TO - 1.
ENDWHILE.
ENDIF.
ENDMETHOD.
The so far described methods return all information necessary defining the PartProviders of an SPO.
3
Entering the Partition maintenance screen you do not need to enter any partitions or partition
characteristic values. These are entered via the BAdI: Build Version From BAdI Implementation:
Page: 9 / 11
Fi
g.7: Example- SPO Partitions after getting data using BAdI screen
We observe that all SPO PartProviders are defined like given in the mapping table above: names,
partition characteristic, partition characteristic values and even the sequence like the partitions are
shown.
4
The Transaction RSLPO_MASS_ACT allows maintaining all BAdI managed SPOs (returned by
method GET_T_SPO) centrally.
RSLPO_MASS_ACT compares the BAdI (methods GET_T_PART, GET_T_PART_TEXT,
GET_T_PART_CRIT) returned SPO definition with the active version of these SPOs and lists
whether there are differences:
Page: 10 / 11
RSLPO_MASS_ACT allows reducing the SPO interactive modeling to an absolute minimum for
all SPOs managed via BAdI in case of
removing partition criteria values if no data for this values exist any longer in the
PartProvider (planned)
automated generation of DTPs (planned) not just the DTP assignment like with the SPO
Wizard
Page: 11 / 11