Recently we started to develop a tool to be able to react flexible and fast to the changing requirements in product configuration. I will show in this blog the current solution and you are invited to comment, improve or also mention pros and cons of the shown solution. Do not hesitate to share your opinion and questions.
The main goals of the desired solution are:
1. Every – also complicated – variant configurations can be done by pure configuration and there is no need for writing any ABAP code.
2. The whole configuration of one product can be viewed and managed on one screen
3. The solution is based entirely on the existing SAP ECC variant configuration.
Lets assume you have a packaging company for sweet tasty chocolate and you parcel the different bar sizes into different cases and place diffrent label on top of the closed case.
The products have different heights, widths and lenghts and you have lets say 3 different boxes small medium and large.
How to you assign the products to the boxes?
Further how you configure the text on the label. Lets say you want to print the first word of the product description on the label?
Well, the variant configuration of SAP offers a bunch of features to solve this things. The two above tasks could be solved with Variant functions and some ABAP code behind (you can find a good introduction in Variant Functions with an example.)
But what happens if you want to make some small changes – do you want really want that for every configuration change you have to find a developer who makes the necessary code changes for you?
So in the current solution the user view on the product configuration looks like this (simplified):
|characteristic||selection criteria||value expression|
|TrayType||Length > 200 or Width > 50 or Heigth > 20||BIG|
|TrayType||Length < 100 and Width < 20 and Heigth < 10||SMALL|
|ChocolateType||MaterialCode = “chocolate mix”||materialCode|
|WEIGHT||TrayType = ‘BIG’||ROUND(Length * Width * Height*2, 2, ‘X’) + 20|
|WEIGHT||TrayType = ‘SMALL’||ROUND(Length * Width * Height*2, 2, ‘X’) + 10|
That mean for example an customer order with the materialCode “white chocolate” and a characteristic Length = 250 should get additional characteristics TrayType=BIG and ChocolateType=White. In another customer order with characteristic Length=100 the TrayType will be MEDIUM and so on.
If the BIG box should for example only be used if the Length > 210 or the weigth for a big box changes from 20 to 25 the user can change this object dependency by simply changing the corresponding table entry.
So how this can be implemented, what would you suggest?
In my opinion the above mentioned variant functions fits best to get there and the solution is already working quite good with them. With some adaptions the variant functions get rather generic and to apply a change the only thing which remains for the user is to change the configuration.
Some thougths about the implementation in ABAP you can find in the followup:
I am looking forward to your feedback, ratings, comments and especially your ideas to improve the shown solution.