No matter how much one tries to minimize customization in an SAP system some volume of custom business logic is usually unavoidable. Historically this meant introducing custom ABAP syntax in various user-exists, enhancements, BAdI's and custom programs. Given the complex and interdependent nature of an SAP system, it becomes imperative to carefully manage such ABAP-based customization in order to ensure that business logic is in sync across various functional areas and is not duplicated. That's where SAP Business Rules Framework Plus (BRFplus) comes into play - a fairly new piece of functionality from SAP that makes it possible to manage all of your custom business logic in a single place and in a re-usable way.
In general, BRFplus functionality is available on any SAP NetWeaver based system at the appropriate enhancement pack level. To quickly check if it is available in your system simply try running the BRFplus Workbench application via transaction code BRFPLUS or BRF+. If you are presented with a web application in a new browser window, then you are basically set to utilize BRFplus in your environment.
It is worth noting that in 2013 SAP released a solution called Decision Service Management (DSM), which builds on top of BRFplus and adds some new capabilities. Most notably DSM allows central business rule management across many different SAP systems and instances. The following SAP document provides a great list of frequently asked questions in regards to DSM as well as DSM vs. BRFplus comparison. However, DSM requires additional licensing from SAP, whereas BRFplus is typically available for use with existing SAP licensing that is in place. We find that for most SAP customers DSM is a bit of an overkill and BRFplus is the way to go.
So now that you know a little about the history of BRFplus, what can you actually use it for? Here are some examples from the real world where we've utilized BRFplus to meet business requirements:
- Logo determination on output forms
- Default priority and deadline determination on service notification documents
- Default plant determination during sales order entry
- Custom carrier determination in SAP Transportation Management
From a technical point of view, the most common use case for BRFplus that we run into is the implementation of custom business logic in user-exits and enhancements. In fact, nowadays BRFplus is our default approach for implementing custom business logic in such context, which can be described at a high-level with 2 steps:
- Creating a function within BRFplus that takes certain inputs, processes them through the necessary business logic, and then produces the derived outputs
- Calling the BRFplus function created in prior step via ABAP in a user-exit, enhancement, BAdI, custom program, etc.
It is important to note that using the aforementioned approach you are still required to write some ABAP to make the call to a BRFplus function. The difference is that, generally speaking, the ABAP syntax is only responsible for making the call to BRFplus and no actual business logic is specified directly via ABAP. Why is this an advantage you might ask?
- BRFplus functions are easily re-usable, which greatly reduces the amount of duplicated business logic in your system.
- BRFplus contains a large library of expressions that greatly speed up the development process for mapping business rules, especially if those rules are complex. Something that might take you days or even weeks to write in ABAP from scratch can be quickly modeled within BRFplus using one of many expressions.
- All of your custom business logic can be seen in a single place - BRFplus transaction. You don't need to hunt around the vast number of programs, exits and enhancements to be able to make adjustments to existing business rules.
- Simple adjustments to existing business rules can be made by non-technical staff, without any need for ABAP changes.
The last point is worth elaborating on. SAP often likes to advertise BRFplus as a tool that will replace ABAP developers with business users that can maintain their own logic. That is a bit of an exaggeration (sorry, SAP). In reality, the actual creation of BRFplus elements (functions, expressions, etc.) is still a fairly technical exercise. Many SAP professionals without a technical background will more than likely find it challenging to learn all of the ins and outs of BRFplus. Understanding of such basic programming concepts as variables and loops becomes a huge advantage when working with BRFplus, even though you are creating those objects with a click of a mouse as opposed writing ABAP. But steep learning curve aside, with enough time and effort it is certainly possible for SAP functional analysts to become proficient in BRFplus, without having to depend on developers to build complex custom business logic. However, business users are another matter entirely. It is certainly possible for business users to do some trivial adjustments, such as changing values in an existing decision table. But the great majority of changes within BRFplus will need to be done by members of the IT team.
There are many great features within BRFplus that truly make it an excellent business rules framework.
In many ways expressions are what make BRFplus so appealing in the first place. These are pre-packaged logical objects that greatly speed up the modeling of business rules within the BRFplus environment. Although there are many different kinds of expressions supported in BRFplus, the one that seems to receive the most use is a Decision Table. For those of you familiar with the condition technique in SAP ECC, decision tables will have a familiar feel, although they actually provide much more extensive functionality. In addition to being able to search the table from top to bottom until a marching record is found, you can also maintain input values as ranges, sets of multiple values, leave them blank to represent any value, as well as use many other logical operators.
customizing and master data applications
One of the really neat features of BRFplus is ability to create both Customizing and Master Data applications. Customizing applications require the use of SAP transports in order to move the changes between SAP systems, whereas master data applications allow the changes to be made directly in each SAP system and client. This becomes especially useful when you have master data values, such as customer, material, vendor numbers, etc., as part of your business logic. Keep in mind that since in most cases BRFplus functions are called via ABAP, the functions themselves will need to reside under a customizing application. But these customizing-level functions are then able to utilize expressions (such as decision tables) that reside under other master data-level applications. In a nutshell, you are able to mix the use of customizing and master data BRFplus objects in a single business rule.
Most of the modeling within BRFplus is done via a "point and click" User Interface, accessible via transaction code BRFPLUS. You are able to create new objects by simply right-clicking on a node on the left side of the screen and choosing the appropriate item from the contextual menu.
You can also interact with BRFplus through an API. This means that not only can you create and update BRFplus object via transaction BRFPLUS but you can also do so via standard delivered ABAP classes and methods. For example, in one of the scenarios we needed to store the average price of diesel fuel in the US in a BRFplus decision table. We were able to create a custom ABAP program that looked up the price of diesel for the prior week via a public web services and updated the BRFplus decision table on our end via the BRFplus API.
BRFplus functions can be easily exposed as web services. This means that you can consume BRFplus business logic in both SAP and non-SAP applications.
BRFplus comes with a large number of tools that help you develop, export/import, check and troubleshoot BRFplus objects. Some of these tools are accessible from menus of the BRFPLUS transaction, but the easiest way to see all of them is by executing program FDT_HELPERS via transaction code SE38. You will save yourself a lot of time in the future, by getting familiar with these tools earlier on. For example, one of the tools available allows you to quickly identify and resolve most issues associated with transporting BRFplus objects between systems.
In summary, BRFplus is a tool that is available to the great majority of SAP customers without any additional licensing requirements. We encourage you to check it out and start using BRFplus for your custom business logic needs.