BRFplus Wish List
Not long ago I’ve asked Carsten Ziegler if he would like to open an Idea Place for community ideas/requests ( ).
Unfortunately, he explained that it won’t be practical because the BRFplus team is in full capacity so they won’t be able to respond to requests.
However, as time passed and I had the chance to work more intensively with BRFplus, I created my own (not final) wish list, which consist of useful features and annoying issues.
I thought that I might share it with the community and allow you to express your opinion and add some of your own wishes.
I’ll try to follow your comments and add all ideas in order to create one complete wish list.
My Wish List
1. Reusable Constant ranges
A reusable value range, which isn’t restricted to one specific BRFplus element (Data object), but generally to the data type. This value range is convenient when used in Decision Table cells.
For example: You may define a value range of countries GERMANY, AUSTRIA, FRANCE and use it both for source country and destination country.
More info can be found.
2. Expression Refactor Tool
Refactor tool for used expression, i.e. to edit all the BRFplus objects which are using/referring expression A to refer to expression B instead (with the same result type, of course).
For example, replacing formula expression ‘Max Limit’ (which is being used in many other expressions/rules) with new decision table expression.
3. Structure Data Object – Find Component
Option for Quick search of component (name) while Structure object is displayed.
Currently, there isn’t any find component and you have to scroll down and search the component manually, even if the structure is consists of hundreds of components (elements).
4. Structure Components – Add Structure Prefix
When you create two structure data objects with same data type, all their elements are created with the same texts (and name).
As a result, when you use one of these elements and other BRFplus expression/rules, it is hard to tell which structure they are referring to.
My solution was to enter for each and every used element and rename it by adding some prefix.
It would be to have an option to add prefix for all the structure elements in the structure level.
5. Loop expression – Local Variables + Initialization
a. Option to define local variables in loop expressions.
Sometimes you have to make some complex calculations during loop expression. These might require some internal variables which aren’t relevant to the external context nor expression result.
b. Initialization block before loop for internal initialization of variables/result before loop is processed.
Currently it requires preliminary handling in external rule.
6. Select Expression – Select Constant
Additional function in all “Select Expression” context-relevant menus for quick selection of Constant expressions, restricted by the element/date type.
I like to use Constants expression for better readability, maintainability and tractability (where-used). However, using them might be a little pain in the *** since you have to search them manually each and every time via “Select expression”. Quick search of relevant-only constants would make the life much easier.
7. Decision Table Simulation – Partial/Nearest Match Mode
New simulation mode which allow you to find the matching percentage of decision table (How many columns has matched their condition) in order to find the nearest/best nominate for complete match. In this mode all table columns would be processed regardless if column condition was met or not.
This might be really useful during QA phase for analysis of decision tables with many columns and tens/hundreds of rows. In case that no match was found due to some error it is really hard (almost impossible) to find out what is the reason behind it since you cannot tell which rows have nearest match.
8. Decision table – Editable mode
Option for setting the whole table in editable mode (only for direct values?).
Currently, edit is possible only in cell or row level, but sometimes you are required to make some quick changes for multiple rows. The best option for now is using the Export/Import from Excel, but it also spent some time.
9. Decision table – Drag&Drop in Cell Level
Allowing quick drag and drop of cell value of one row to cell of the same cell (of the same column).
10. Use current UI components in BRF+ Workbench
Newer WDA table controls provide a Search / Find component automatically, plus a lot more (sorting, Excel export, fixed columns, client-side scrolling, dynamic data loading, …).
Thanks to Jürgen Lukasczyk for suggesting this point.
11. Decision Table Export to Excel – Expressions
Currently, When decision table with expressions in cell values is exported to Excel, the expressions are evaluated as object ID. It is impossible to understand what lies behind these IDs out of BRFplus (Excel in this case).
It would be nice if the expression description will be added to the cell value as comment, for documentation purpose only. e.g. 005056B500281EE395BD44D3095C2BC2 (Customer Rank).
When the Excel will be re-imported, these comments will be ignored.
12. BRFPlus – DDIC Integration (Values List) (NEW)
Values tables (Code + description) are really useful in SAP in general and in BRFplus in particular.
When the business user is the one who is responsible to maintain these values (and BRFplus is being used), the most natural “maintenance view” would be BRFplus decision table.
However, many times these values should be used both in BRFplus and in the outer world. The problem is the fact that BRFplus objects aren’t exposed to DDIC (in a simple manner, at least), so “native” ABAP objects/program cannot make use of them easily.
Therefore, the only/simplest option in such cases is maintaining the values in standard DDIC table (probably via maintenance view).
It will be nice if BRFplus -> DDIC integration can be achieved somehow (currently only DDIC -> BRFplus is supported).
One option I may suggest is creation of a new dedicated/naive BRFplus decision table (only with direct values/constants) which generates automatically a mirror DDIC DB table.
Your Wish List
What do you think?
Would you like to share any of your own ideas?
Totally agree on the Constant wishes. I also like to use Constants for the same reasons you suggest.
Also number 4.) is a good one: It is sometimes quite hard to see which structure you are addressing when you have multiple structures created e.g. from the same DDIC structure. This is especially evil in decision tables, where the structure name is omitted from the display when you are in "Table settings".
On 3.): You can use the normal search for that, just give the name of the component you search for. Result list will contain all data objects matching, and the parent structure will appear on top but greyed out and not selectable (on 7.40 SP08)
Thanks for sharing your own experience.
Regarding 3, actually my requirement is much simpler: It's not about using structure component in other expression (e.g. adding column to decision table), but about the structure view itself.
When I'm already in structure data object, I would to search specific component name.
e.g. Find component LOAN_PERIOD in structure (other component names were hidden).
Ah, I see. 😳
Hmm, maybe you wanna turn this into a more general topic like "Use current UI components in BRF+ Workbench" - though I think this is unlikely to happen, like the New formula editor.
Newer WDA table controls provide a Search / Find component automagically, plus a lot more (sorting, Excel export, fixed columns, client-side scrolling, dynamic data loading, ...).
Are you referring to ALV or some other technique?
(I will be satisfied if they would implement the filtering manually as a first step)
I wondered when the new Formula editor UI is about to be released... 😉
I meant stuff like CTable, which is used e.g. by Floorplan Manager for Web Dynpro ABAP.
For the matter of fact, I thought you were referring to CTable, but as far as I remember it doesn't offer automatic filtering/sorting, but only via manual implementation. The same can be achieved in the "old" Table.
I don't know how is it implemented in the FPM though.
nice idea with the wish list.
I have one more very simple wish regarding the usability of the UI. Because the width of the area with the object list on the left hand side cannot be resized, it is always necessary to hover over the corresponding object to see the full name as tooltip. This is necessary for most of the technical names (if speaking technical names are used) and also of course for the long texts (following the best practice to disable technical names and not using short texts).
In my example below I have a list with different reusable rules. Some rules (e.g. Claim Date minus x ...) are beginning with the same text, because they have some similar information. In the list then I cannot distinguish directly between the different rules. I have to hover over each rule until I found the necessary one.
I agree with that.
The navigation area can be changed. Unfortunately, there is not slider, but only a menu option in the top menu. You can increase and decrease the panel width.
Thanks for sharing that information. Unfortunately the settings are not persisted, so every time the workbench is restarted the increase button has to be pressed several times to get the required width. But better than nothing 😉 .
Somehow I've missed this option (Although it isn't the most intuitive place, I must say).
Another wish would be the ability to identify circular dependencies between Applications:
When you have a large number of Applications and you want to re-use some expressions in different applications you might end up with a circular dependency which you could not easily detect using the "Application Usage" report.
The "Application Usage" report will give you usage of object from other applications but is Application A uses expressions from application B which uses expressions from application A you will not easily find this dependency thus allowing a transport dependency errors. (of course the circles can be with many applications..)
Off course in order to solve this you can create a report with all the the applications dependencies thus creating a "directed graph" and run Tarjan's strongly connected components algorithm to find the circles.
This would be a nice feature.
I must confess I haven't run into such complex cross applications scenarios.
May you please elaborate about the business use cases?
(Won't it be possible to use global/"shared" application for these shared expressions?)
When you have many processes, for each process you have a different application due to authorizations reasons or to able to search functions or expressions more easily.
Sometimes you can create a general application for mostly reused expressions or objects but sometime the reuse is between the processes.
Sometimes the reuse is done by different teams of rule writers which can't see the whole picture of all the applications used in the system.
A simple solution would be the ability to transport a whole function with deep selection of all the objects used by the function cross application and then transport it. Without the consideration of the application or the current change request the changes are written on.
Please contact me for more information.
One more wish would be the ability to create a "naming convention" i.e. when creating a data element - start with <username>+<date>. or when you have many data element with the same name (because of binding to same ddic) add (1) or (a) to allow differetiating.
sometimes you bind to different ddic of tables which use the same field thus causing to element with the same name.
Actually this is reason I suggested point 4 - "Structure Components - Add Structure Prefix".
I think it would be better than automatic numbering generation: (1) or (a).