Dimension Combination Rule in SAC
In this blog, I will introduce how to use the new function Dimension Combination Rule to allow data input and publish only on valid member combination across dimensions. The feature has been released in version 2020.07.
A typical user case is organizational dependencies when defining financial master data; for example: one cost center belongs to one profit center. With Dimension Combination Rule, user is able to define organizational dependency.
Assuming in the planning model, there are Cost Center dimension and Profit Center dimension. User would like to define member combinations between Cost Center and Profit Center dimension.Cost Center and Profit Center have the below dimension members. CC1 belongs to PC1, CC2 belongs to PC2, and so on.
Another user case is sales strategy that some products are only allowed to be sold in some locations. Hence there should be relationship between Product dimension and Location dimension.
Next, taking cost center/profit center case, I will show you how to create the Dimension Combination Rule, and how the planning uses Dimension Combination Rule.
How to define Dimension Combination Rule?
- Open SAC model, switch on Validation Rule in the model preferences. The Rules tab is added to the model maintenance page after turn On the toggle.
- Open the Cost Center dimension and create a new custom property named “ProfitCenter”(it’s not required to name property as ProfitCenter. Any name is ok). And then maintain the allowed combination values of Profit Center for each cost center
- After saving the master data, go to Rule tab of the model. Create a new Rule, select Cost Center as Reference dimension. In Matched dimension setting, select “ProfitCenter” from the attribute list and match it to Profit Center dimension. Then, save the rule.
When defining the rule via dimension attribute, hierarchy node is NOT supported. Member used in combinations are treated as leaf members.
Unassigned (#) member
Unassigned (#) member is always valid with allowed combinations.
Let’s take above rule as example.
Also, CC1, CC2, CC3 has allowed combination with Profit Center dimension, then we will also generate Unassigned (#) of Profit Center as allowed combination with CC1, CC2, CC3.
You may notice CC4 is not a valid member with any Profit Center. So, Unassigned (#) member of Profit Center is not a valid member with CC4 .Same for PC4 which is not valid with any cost center, hence unassigned (#) member of Cost Center is NOT a valid member with PC4.
Enter Data in Table
In the SAC story, add Cost Center and Profit Center in the story row and use unbooked mode to show all the base members in the table.
Then, you would get Data Entry restriction when trying to input data into the table.
- Enter data into (Unassigned, PC1/PC2/PC3/Unassigned) is allowed. Enter data into (Unassigned, PC4) is NOT allowed.
- Enter data into (CC1, PC1/PC2/Unassigned) is allowed. Enter data into (CC1, PC3/PC4) is NOT allowed.
- Enter data into (CC2, PC2/Unassigned) is allowed. Enter data into (CC2, PC1/PC3/PC4) is NOT allowed.
- Enter data into (CC3, PC2/PC3/Unassigned) is allowed. Enter data into (CC3, PC1/PC4) is NOT allowed.
- Enter data into (CC4, PC1/PC2/PC3/PC4/Unassigned) is NOT allowed.
Besides entering data into base member directly, disaggregate data also follow the dimension combination rule.
- If Cost Center or Profit Center does not added in the table row or column, entered data will go to Unassigned member firstly for Cost Center or Profit Center as before.
- If Unassigned member is excluded for Cost Center or Profit Center in this case, data will only be disaggregated to allowed combination.
- If user enters data into parent node of the Cost Center or Profit Center, disaggregation to leaf nodes will follow the rule “booked data have higher priority than unbooked data.”
- For the parent node which is booked (some leaf nodes have data), the value will only be disaggregated to the valid booked combinations. For example,(CC1,PC1) are valid combination while (CC1, PC3) are invalid combination. Both of them have booked data 100. Enter data 300 on their parent node (CC1, All PC) will only be disaggregated to allowed combination (CC1, PC1).
- For the parent node which is unbooked (none leaf nodes have data), the value will only be disaggregated to the valid unbooked cells. For example, (CC1, PC1/PC2/PC3/PC4) are all unbooked cell. Enter data on 200 on their parent node (CC1, All PC) will only disaggregated to allowed combination (CC1, PC1/PC2).
- In case the disaggregated leaf nodes are all invalid (for both unbooked and booked cases above), there will be error message. For Example, un-allowed combination (CC1, PC3) have booked data 100. Enter data 200 on its parent node (CC1, All PC) will get an error message and change data is restricted.
Currently, not all the functions use dimension combination rule.
There are still chances that invalid data is created/modified in private version, These invalid data changes are NOT allowed to be Published to public version.
When click Publish Data button to publish the change to a public version, Dimension Combination Rule will be checked again. User will have the choice to cancel the Publish and go back to story to correct data on invalid combinations, or go ahead with Publish then invalid data changes will be lost.
- Data Import does not know dimension combination rule, hence there is chance that invalid data is imported to model. This might not be a big problem, since most Import case is importing ACTUAL data into SAC, not Plan data.
- Max. three rules are allowed in one model.
- Max. two dimensions are allowed in one rule in 2020.07. (From 2020.10, the limit will be extended to three dimensions.)
Another limitation is that you can only have properties in SAC with 170 characters, so for example you can only create a list of maximum 16 profit centers if they would have a maximum length of 10 characters. Also, users are not informed which combinations are invalid.
So, it's not really useable now for complex scenarios. Please develop this further into robust functionality, and if so, really looking forward to use it.
You are right. Because of SAC dimension property has the length limitation, it cannot define a lot of members in one property. This feature will be continuously improved, which could allow user to define combination rules more flexibly and could support more complex scenarios.
Hi Kilar Gong
Any news on that. In addition the limitation is 127 characters not 170 (3031564)
is there a way to show only valid combinations even with "unbooked" ?
In the example above with CC and PC, only valid combinations need to be shown to the business user in a standard planning layout. A report that shows data on invalid combinations is good, too but that would be more a superuser / admin task.
Would be great to have this option.
Thanks for any feedback & best regards,
Thank you for your feedback and your request is valid. This enhancement has already been considered in our development team. Currently, we are still working on the investigation on the solution of how to reach this.
I have the same request and really hope this is coming soon.
Got it. 🙂
Hi Kilar, is there any update on this?
Currently, there is no update for this request. Will update you when I get anything new.
Hi Kilar, is there any update?
Currently, there is no update. But our team is taking this as high priority and try to align it with all the related teams to figure out the solution. Will update here after I got the updates.
Looking forward to hearing something
Hi Jef Baeyens,
Do you have any improvement requests with regard to this topic?
Several IR's, some have different topics
It´s possible to do the same between models?
For example I have a Model with a internal ordere dimension and other model with profit center dimension, and the Internal Order has Profit center as atribute.
Is it possible to make a combination rule so that it takes the profit center attribute of the internal order dimension of the source model and leaves it as the profit center dimension of the target model?
Currently, the dimension combination rule could only be defined within model. 🙂
Thanks Kilar, it's a shame, that would have been very helpful
Thanks for the blog. As you have mentioned in the blog - > it's possible to create valid combinations between dimensions in the model using rules (even with more than 2 dimensions at a time), however I can not seem to find the option to only show valid combinations in the story, which I have created.
My simple case is - > i have sites and they only sell particular categories of products, in the planning (which has no data by default) i need to only show valid combination of Site & Product category dimension, otherwise whole table becomes unusable. Currently even with enforced rules all combinations of 2 dimensions are shown.
I have also noticed in the Improvement ideas (https://influence.sap.com/sap/ino/#/idea/237887/?section=sectionDetails) that this seems to be released?
Will appreciate your feedback.
For table only show the valid combination, it is in our backlog already and we are still under investigation on the solution of it. Will update when it is ready for customer.
Can anyone confirm if the validation rules setup within the model will be applicable while importing the data into the model via Flat File.
For now, validation rule is NOT applicable to importing flat file.