How to create transitive navigation attributes in BW Modeling Tools
In traditional BW, modeling of transitive attributes (attribute of attribute) has been quite time consuming and also led to duplication of data, see explanation here.
Transitive attributes – as an out-of-the-box feature – have been introduced in the BW Modeling Tools InfoObject editor with BW 7.5 SP4. Here you can simply enable the required transitive attribute, there is no need for specific modeling anymore.
Transitive attributes are exclusively supported by new object types, so they can be enabled for an Advanced DSO but not within e.g. classic DSOs or InfoCubes. If your CompositeProvider still contains those old object types and you try to activate transitive navigation attributes, then it will fail.
- Adjust your data model as in traditional BW
- Migrate your old PartProviders to new object types
- Manually join the required attributes (e.g. within a CompositeProvider)
Steps to activate transitive attributes
- Open an InfoObject and go to tab “Attributes”. Click with the right mouse button anywhere within the attributes table. A context menu appears, click on “Maintain transitive attributes”. Please note: if your InfoObject is a reference to another InfoObject, then the context menu just won’t appear. You will have to edit the main InfoObject instead.
- A list with all attributes of your attributes appears. Select the required InfoObject – in this example 0MATERIAL__0APO_PROD__0APO_ATTPRI1 – then click on the button “Same” and “OK”.
- 0APO_ATTPRI1 now appears in the attribute table. The value “true” in column “Transitive Attribute” indicates, that this is not a regular attribute but a transitive attribute.
- Enable the navigation attribute checkbox but keep in mind, that the basis attribute – here “0APO_PROD” – has to be enabled as navigation attribute as well. See the following message:
- If you want to add a transitive attribute which has the same name as an already existing attribute – e.g. 0MATERIAL__0MATL_GROUP vs. 0MATERIAL__0APO_PROD__0MATL_GROUP – then you will get an error message. In this case you need to use the buttons “Other” (this maps the attribute to another InfoObject) or “New” (this creates a new InfoObject as reference to the original InfoObject).
Nice Blog post! Thanks for that! 🙂
I have used this functionality to add a transitive attribute to 0EMPLOYEE.
It all works fine and I can see the transitive attribute as a navigational attribute in the relevant BEX Queries.
There is one issue however.
The Data is loaded to an aDSO (which in turn is used in a Composite Provider).
During the load a lot of fields are filled base on Read Master Data rules from info object 0EMPLOYEE.
(Not the transitive attribute to be clear. The TRFN was not changed)
Before activating the data load took 20 minutes.
Now the data load takes 5 hours.
Anyone any experience?