Download as pdf or txt
Download as pdf or txt
You are on page 1of 20

Follow RSS feed Like

Community

Ask a Question Write a Blog Post Login / Sign

Faisal PC
January 29, 2015 5 minute read

BRF Plus-A real time example


50 Likes 83,292 Views 21 Comments

Hi All,

Here is a blog on BRF Plus for beginners.

What is BRF Plus:

“BRFplus (Business Rule Framework plus


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.

how you can create a simple BRF Application for the following use case.”

I believe the above definition would have confused you a bit. Being an SAPier, where and when we can use
a BRF Plus application. That is all we want to know. . Let’s come back to the real world where we have
lots of RULES to obey…And BRF is all about rules.

Consider an application to determine the salary of applicants to a job position where the salary and
designation of the applicant are getting calculated based on certain rules. And those rules are prone to
change
change. Meaning, in a year itself, there can be many rules for determining the salary. So it’s always
advisable to segregate rules from the code.

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.

I will show you how to create a normal BRF application for the above requirement. Our use case is,

Determine the salary for an employee based on the company he is coming from and years
of experience he has.

In this application, we will see the creation of,

1) Data Objects

2) Expressions

3) Functions

4) Rule sets

5) Actions

Let’s say that a company decides to recruit people from outside and the process of recruitment is already
done. But the salary discussion is yet to happen and they have a list of people from different companies
as applicants. So, they decide to create a BRF Plus application and it will run with input of company name
and years of experience.

For this purpose, they have a list of values relevant for this. I will categorize them as 3 tables as in the
picture.
As in the above picture, the rule is->If the applicant is belonging to a tier 1 company, then he has to have
the experience of 2 years to be an SE while for an applicant from tier 2 company needs 3 years. Also, the
salary for the tier 1 company applicant is more than the tier 2 company(Just for this example. May not be
true in real life. ).

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.
I am clicking on ‘Create application’.

Keep in mind that I have created as Local object. If we select the storage type dropdown, we can move
this across landscape. Following are the types.
System-> transportable objects which should not be changed in your system environment.

Customizing-> transportable objects which allow changes.

Master Data-> objects which are local by default and cannot be transported.

Click on save and activate. Then,

1) Creation of Data objects->Elements/Structures/Tables.

I am creating all data objects required for this example here.

I can either create elements one by one or can go with Elements(Mass creation).

Activate all the data elements. (I created an internal table also to hold the values from db table.).
2) Create expression required for the function.

As I mentioned at the beginning, we have 3 tables out of which 1 we will make as db table and other two
will be created as decision table. Just for showing their operations I am keeping so.

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.

I give the input and output of the decision table.


Save it and activate. Now the table is ready. Here we can insert the values to the table.

In the same way, create one more decision table called YEARS_TABLE with fields as Years of experience,
Tier and designation. Make the entries.
I already have a DB table created and it has the following values.

Now go with creation of DB lookup in the same way we created the decision table in expressions by
choosing Database Lookup.
Now we are done with the creation of expressions.

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.
Now go to tab ‘Assigned Rulesets’ and create a rule set. And then assign the rules to the rule sets.

Here I assign rules one by one. After all the assignment, the screen will look like.

This means, we have the salary available in the table ‘Salary table’.

Now go to Simulate function.


You have the result as follows.

These are nothing but the fields of my table ZSALARY. (The heading is coming like this since I kept the
data elements of fields as standard char20 and all).

Now you are done with the creation of a simple BRF application.

I will explain on how to send a mail from this application and how to execute it from an ABAP
program/BADI in the part 2 of this blog BRF Plus- A real time example – 2

Please let me know if you have any queries.


Thanks,

Faisal

Alert Moderator

Assigned tags

CRM WebClient UI | brf plus | brf+ | brfplus | brfplus function |

View more...
CRM WebClient UI | brf plus | brf+ | brfplus | brfplus function |

View more...

Related Blog Posts

BRF Plus- A real time example – 2


By Faisal PC , Jan 30, 2015

Fast Order Entry App (AJAX in WebUI example)


By Dmitrii Sharshatkin , Mar 15, 2016

An example to analyze WebClient UI empty screen issue


By Jerry Wang , Mar 20, 2017

Related Questions
What are the Labels for marketing.
By Former Member , Feb 08, 2006

Installation Base
By Former Member , Oct 30, 2007

Real time Broadcast messaging


By Former Member , Feb 02, 2008

21 Comments

You must be Logged on to comment or reply to a post.

Former Member

February 11, 2015 at 12:22 pm

Thanks for Nice writeUp.

Like(0)

Carsten Ziegler

February 18, 2015 at 4:59 pm

Only found this blog today.

Excellent work, thumbs up!

Like(0)

Faisal PC | Post author

February 19, 2015 at 4:34 am

Hi Carsten,

Thanks for the feedback.

Thanks,

Faisal
Like(0)

Former Member

March 18, 2015 at 8:51 am

Hi Faisal,

Great article.It would be great if you could also mention how to use the same or how the integration is
done .

Thanks,

Saurav

Like(0)

el mekki ennoury

March 18, 2015 at 9:00 am

Great post.

Like(0)

Faisal PC | Post author

March 18, 2015 at 9:31 am

Hi Saurav,

How to use the BRF Plus application in code(reports/methods/BADIs etc) and running actions are
mentioned in the next blog BRF Plus- A real time example - 2 . Please refer the same.

Thanks,

Faisal

Like(0)

Former Member

March 26, 2015 at 7:24 am

Nice Article
Like(0)

Kumar Gaurav

April 6, 2015 at 6:24 am

Great work faisal...

Thanks

Kumar

Like(0)

Arijit Das

January 25, 2016 at 7:08 am

Hi Faisal

Great work on the blog! Well done!

One question: how do you cater for a multi-line element in the Ruleset?

If Data Object X is not initial; then change value of multi line element (derived via an expression)?

The Expression works - it returns multiple lines. However it doesn't work with a Ruleset (in a Function).
Any ideas on this?

Thanks in advance

Arijit

Like(0)

Former Member

August 12, 2016 at 12:36 pm

Hi Failsal,

I am finding one issue. It is very strange issue with Database Lookup. While creating Database Lookup expression, I am
expecting "With Condition" should allow me to provide condition but it is not giving me any option from where I can choose
/ create condition.
Please see the below screen for reference. You can observe that I am not getting button itself to
choose.

Like(0)

Nagendra u

March 17, 2017 at 6:48 am

Hi Faisal,

Appreciate your effort, I have question. Whatever you have shown in this it can be done with Views also.
What is the specialty of BRF + here?

Like(0)

Faisal PC | Post author

March 30, 2017 at 11:28 am

Hi Nagendra,

You are right. All these things can be done via table entries as well. But SAP has given a standard
framework where you have a lot of inbuilt options. You don't need to create multiple tables and make
their relations. If you just explore BRF+, you will get to know that it's more than what we imagine. Lot of
options are there which helps us in achieving the requirements and is less error prone.

Thanks,

Faisal

Like(0)

Former Member

March 25, 2017 at 12:12 pm

Hi Faisal,

how do you create the rule Fetch Tier after If statement line 'If Tier is not initial'? : 'change Tier after
processing Tier Table'? I could not find the right expression for this.

Like(0)

Faisal PC | Post author

March 30, 2017 at 11:31 am

Hi,

This picture has it.


Thanks,

Faisal

Like(0)

Reethimanth K

April 6, 2017 at 10:46 am

Hi Faisal,

Thank you for writing this blog,

Good work, easy to understand for beginners like me.

I appreciate it.

Here, I have one doubt, how to configure decision table with respect t0 the Condition Columns and Result
Columns under Table settings.

Regards,
Reeth.

Like(0)
Sam Gemini

July 7, 2017 at 11:27 am

Very Nice ...keep it up.

Like(0)

Former Member

July 25, 2017 at 10:20 am

thalaiva you are greaat

Like(0)

Former Member

January 12, 2018 at 10:53 am

Excellent blog. Nicely explained... Need some more explanation on Rules with different inputs

Like(0)

Swapnil Mhadlekar

July 16, 2018 at 11:08 am

Hi Faisal,

I am getting following error while creating decision table.

500 SAP Internal Server Error the assert condition was violated. (termination rabax_state) .

what can be the Issue?

Like(0)

Faisal PC | Post author

July 25, 2018 at 7:48 am

This seems to be some Basis issue as 500 internal server error comes when the server is not reachable.
However, could you please post the screenshot here?.

Like(0)

Abhilash KM

August 6, 2019 at 9:33 am

Very nice blog. Appreciate your work

Like(0)

Find us on

Privacy Terms of Use

Legal Disclosure Copyright

Trademark Cookie PreferencesCookie Preferences

Newsletter Support

You might also like