BRF+ is an ABAP based framework and part of the NetWeaver stack. BRF+ stands for Business Rule Framework Plus and it provides a comprehensive application programming interface and user interface for defining business rules. It enables you to define business rules without the need of wiring ABAP code. The generated Business Rules can be incorporated into other SAP programs or Substitution/Validation rules.
Further technical and functional detail about BRF+ is available at SAP help via this link.
There are many uses cases for BRF+, I will give you two Finance specific use cases further on in this blog.
BRF+ is not new and even not directly related to S/4HANA, but with the release of S/4HANA 1610, BRF+ gained more attention since it is launched as the go-to solution for some business processes. The most important ones are the changes in output management for Billing and Purchasing. For the form determination rules BRF+ functionality is used in S/4HANA. Details can be found in the simplification list of S/4HANA 1610 and 1709.
In the next chapter I will explain and show two Finance related use cases were BRF+ can come in very handy. The same logic can be applied to many more use cases. You just need to get used to the way BRF+ can be incorporated into SAP.
Simple use cases to show you how BRF+ can be applied in the area of finance. I assume that you all are familiar with how SAP works with account determination for Sales and Inventory accounting. The way how sales account determination (VKOA) works is not fully comparable with how Inventory Account Determination (OBYC) works.
In some projects I came across Business Requirements where customers want to determine inventory consumption accounts in the same way as they determine revenue accounts. Not very straight forward in SAP.
When the requirement occurs that companies would like to report their revenues on different GL accounts based on the account assignment group of the customers we can easily configure this in transaction VKOA. But when companies would like to differentiate the Cost of Goods Sold in the same way, based on the same logic we face the limitations of SAP. Unfortunately, SAP does not support any differentiation based on customer account group in account assignment for inventory postings.
You can face the same limitations when your customers want to differentiate consumption accounts based on order types (Maintenance/Production).
I have faced these requirements and thought that the functionality provided in BRF+ can be helpful without the need of hardcore programming or changing standard SAP functionality.
So, let’s see how BRF+ can work for both business requirements. In this example you can see how I differentiate the consumption GL account at the moment of Goods Issue based on Customer Account Assignment Group.
Basically, the same logic as how the revenue accounts are determined in VKOA. I will explain how BRF+ needs to be configured and how you incorporate the business rule in SAP.
First of all, check if BRF+ framework is activated in your system. In order to use BRF+ the following services need to be activated through transaction SICF:
Now I will show how BRF+ needs to be configured, tested and integrated in SAP. The steps in the BRF+ UI will consist of the follow steps:
I highly recommend adding a text in the documentation field containing the purpose of the logic and the point of the user exit. Otherwise it can be very hard to relate back to the program where the user exit is used.
First create a data object element. By right clicking on the application, a menu will appear where you can create the data object element.
In this particular case we need the following 2 data elements:
Under the domain values you will see all possible values which are coming from the customizing tables:
In the same way create a Data object element for GL Accounts. Make sure to create it from DDIC object HKONT!
In the domain values you will again see all possible HKONT entries in the system:
At the time you are creating a Function, the Expression is not yet created. So don’t be confused after seeing this printscreen. Currently you only need to assign the Component ‘Account Assignment Group’ and the Result Data Object ‘GL’.
The Function will be created and will generate a unique ID. We will need this ID at a later point when creating the user exit in SAP.
Now we can create a decision table where we define the input and output parameters. In this use case the Account assignment group is used as an input. Based on the group the decision table will return a GL account accordingly.
The rule set will be assigned to the function we have created in the first step. As you can see the set contains a rule that change the GL account after processing decision HKONT.
It is possible and recommended to simulate the Rule Set to see if your function is working fine. Go to the Function and navigate to the simulation screen:
Check if the output is in line with your decision table and expectations. In this case the function is successfully tested. Output is as expected.
After we have finalized the configuration in BRF+ we need to call up the business rules somewhere from a program in SAP. The business rules in BRF+ can be called up from any program in SAP depending on the business requirement. In this use case I will create an substitution with user exit.
The user exit in function pool ZRGGBS000 will be handled in the next chapter.
I will create a user exit in the function pool for the substitution I have defined.
Which Substitution function pool is used in your system depend on your configuration. You can check which function pool is assigned to substitutions in transaction GCX2.
I select the Account Assignment Group (KTGRD) from table Sales Document: Business Data (VBKD).
In the BRF+ Configuration steps I have mentioned the ID in the Function which is generated by BRF+. Now I need the number from the rule set to include in the ABAP code.
Program GBTAMFIJ is a Generated module pool for substitution output. In most cases this pool is preventing you from substituting BSEG-HKONT. Even adding BSEG-HKONT to the substitutable fields in customizing, will not help without enhancing this function pool.
In standard system BSEG-HKONT is excluded from substitution. In transaction SM30 you can maintain table GB01 with maintenance view VWTYGB01. In the below entries uncheck the ‘exclude’ box.
Check function pool GBTAMFIJ for substitution output if BSEG-HKONT is included in the list. If not implement the below enhancement to include BSEG-HKONT here.
I hope you have enjoyed this post and looking forward to read about your toughs or possible use cases with BRF+ in the comments section.
Calling BRF Plus Functions | BRF+ Connection from ABAP | SAP BRF+
So, the rules are set and we know what needs to be done. Now we can go to BRF workbench with tcode BRF+ or BRFPlus or FDT_Workbench.
3) Create functions->This will be the one we will use in our ABAP program/buttons/BADIs etc. It’s very similar to FM or methods of a class.
We can still go with normal IF ELSE conditions. But when the frequency of change in rules if high, let’s leave that to a separate application where even a lay man can manage the rules.
“BRFplus (Business Rule Framework plus) is a business rules management system (BRMS) offered by SAP AG. BRFplus is part of the SAP NetWeaver ABAP stack. Therefore, all SAP applications that are based on SAP NetWeaver can access BRFplus within the boundaries of an SAP system.
So, here we need 2 decision tables and 1 db table. For fetching data from DB table, we would need to create a DB lookup also.
At least with evolution of SAP S/4HANA , BRF+ has got more prominence and SAP has already started using BRF+ in some standard applications for decision making purpose.
So ,even in some standard application or programs SAP is still following the above approaches. But , now SAP is thinking to overcome the approaches mentioned above , by the framework which is known as SAP BRF+/BRFplus.
Note : This is just a high level steps for creating BRF+ – as its just an overview & step by step creation of BRF+ will be covered in another blog post.
How do we call BRF+ in programs , after its being maintained all necessary decision checks ?
Simple use cases to show you how BRF+ can be applied in the area of finance. I assume that you all are familiar with how SAP works with account determination for Sales and Inventory accounting. The way how sales account determination (VKOA) works is not fully comparable with how Inventory Account Determination (OBYC) works.
The rule set will be assigned to the function we have created in the first step. As you can see the set contains a rule that change the GL account after processing decision HKONT.
I hope you have enjoyed this post and looking forward to read about your toughs or possible use cases with BRF+ in the comments section.
So, let’s see how BRF+ can work for both business requirements. In this example you can see how I differentiate the consumption GL account at the moment of Goods Issue based on Customer Account Assignment Group.
In the next chapter I will explain and show two Finance related use cases were BRF+ can come in very handy. The same logic can be applied to many more use cases. You just need to get used to the way BRF+ can be incorporated into SAP.
When BP is Person and Lang. is German
Rules for BP as Person and language as German
FAQ
What is BRF rule in SAP?
How do you check BRF in SAP?
- Call the Business Rule Framework initial screen. To do so, enter transaction code BRF . If you are already working in the BRF workbench, enter transaction code /nBRF .
- Under BRF Objects, enter the application class whose objects you want to check.
- Choose . The system displays the results log.
What is difference between BRF and BRFplus in SAP?