Ingo Biermann
7. November 2012

BRF+: Ein smarter Weg Businesslogiken zu designen

Geschäftlogik wird in den meisten Fällen direkt im ABAP Code realisiert. Wenn sich hin und wieder etwas an den Parametern ändert, werden diese Werte in einer Customizing-Tabelle gefplegt und im ABAP-Code ausgelesen und verarbeitet.

Sehen wir uns dazu ein kleines Beispiel an. Nehmen wir an, wir wollen zu einem Jahresgehalt die anfallenden Steuern berechnen.

Zum jetzigen Zeitpunkt wird der Steuerbetrag folgendermaßen berechnet:

Gehalt < 25.000€ Steuerbetrag = Gehalt * 0,1
Gehalt >= 25.000€ Steuerbetrag = ( 25000€ * 0,1 ) + (( Gehalt – 25.000€ ) * 0,2 )

Im ABAP Code könnte diese Geschäftsregel z.B. folgendermaßen aussehen:

Geschäftsregel im ABAP Code

Geschäftsregel im ABAP Code

Wenn man nun diese Geschäftsregel konfigurierbar halten möchte, kann man die Konstanten in eine Customizing-Tabelle auslagern, und vor der Berechnung auslesen. In diesem einfachen Beispiel müsste dann eine Customizing Tabelle inklusive Pflegedialog für drei Parameter(25.000, 0,1, 0,2) erstellt werden.

Die Steuerberechnung funktioniert nun für eine Weile einwandfrei. Die Gehaltsgrenze lässt sich auch bequem über die Customizing-Tabelle anpassen, so dass kein Entwickler nötig ist, um Werteänerungen an der Geschäftslogik vorzunehmen. Nun änderen sich die Vorschriften und in Zukunft müssen die Steuern in drei verschiedenen Gehaltsstufen berechnet werden:

Gehalt < 25.000€ Steuerbetrag = Gehalt * 0,1
25.000€ < Gehalt < 100.000€ Steuerbetrag = ( 25000€ * 0,1 ) + (( Gehalt – 25.000€ ) * 0,2 )
Gehalt >= 100.000€ Steuerbetrag = ( 25000€ * 0,1 ) + (( Gehalt – 25.000€ ) * 0,2 ) + (( Gehalt – 100.000€ ) * 0,3 )

Nun muss ein Entwickler bezahlt werden um die Funktionalität der Geschäftslogik zu erweitern. Wäre es nicht schöner, wenn man Anpassungen an der Geschäftslogik vornehmen könnte ohne dafür Änderungen am ABAP-Quellcode vornehmen zu müssen? Und wäre es nicht viel praktischer, die Geschäftslogik, komplett aus dem ABAP-Quellcode rauszulösen, so dass Verhalten und Werte, ohne ABAP- bzw. Programmierkenntnisse , z.B. von der Betriebsführung verwaltet und gepflegt werden können?

Im Quellcode sähe dies dann folgendermaßen aus:

Das Verhalten der Funktion calculate_tax wird dann in einer grafischen Konfigurationsoberfläche gepflegt, ohne dass dafür ABAP oder Programmierkenntnisse nötig sind.

Mit dem NetWeaver 7.0 EHP 2 hat die SAP das Business Rule Framework Plus (BRF+) herausgebracht mit dem genau so etwas möglich ist.

Die Konfigurationsoberfläche lässt sich über die Transaktion BRF+ oder BRFPLUS starten. Sie basiert auf WebDynpro für ABAP:

Transaktion BRF+

Transaktion BRF+

In BRF+ gibt es verschiedene Entitäten, mit denen Geschäftslogik modeliert werden kann. Das Bindeglied zwischen BRF+ und dem Applikationscode ist die BRF+-Entität Function. Dort wird unter anderem die Signatur der Geschäftsregel definiert. Bei der Signatur handelt es sich um die Ein- und Ausgabeparameter, mit der die Geschäftsregel aufgerufen werden kann. In unserem Beispiel haben wir als Eingabeparameter das Gehalt und als Ausgabeparameter den Steuerbetrag:

Eingabeparameter das Gehalt und als Ausgabeparameter den Steuerbetrag

Eingabeparameter das Gehalt und als Ausgabeparameter den Steuerbetrag

Diese Function wird dann im ABAP-Code eingebunden und aufgerufen. Solange sich an der Signatur der Function nichts ändert, kann das Verhalten der Geschäftsregel beliebig verändert werden, ohne dass dafür Änderungen am ABAP-Quellcode nötig werden. Dabei sei anzumerken, dass BRF+ auch im Stande ist, Daten aus externen Quellen zu lesen, wie z.B. Datenbanktabellen, Funktionsbausteinen oder statischen Klassenmethoden.

Nachdem die Signatur definiert wurde, können wir die Geschäftslogik modellieren. Zuerst erstellen wir drei Formeln, in denen die Steuerberechnung vorgenommen wird:
Steuerberechnung für hohes Gehalt (>=100.000)

E-Book: SAP ABAP- und Fiori-Entwicklungsrichtlinien

Richtlinien zur Programmierung und Praxistipps zum Thema ABAP-Entwicklung.

Modellieren der Geschäftslogik

Modellieren der Geschäftslogik

Steuerberechnung für mittleres Gehalt (>= 25.000)

Steuerberechnung für mittleres Gehalt

Steuerberechnung für mittleres Gehalt

Steuerberechnung für niedriges Gehalt ( < 25.000)



Im nächsten Schritt modellieren wir mit einem Entscheidungsbaum, wann welche Rechenregel ausgeführt werden kann:

Entscheidungsbaum

Entscheidungsbaum

Im letzten Schritt weisen wir der Funktion den Entscheidungsbaum als Top-Expression zu und können unsere Regel direkt in der Oberfläche testen:

Entscheidungsbaum als Top-Expression

Entscheidungsbaum als Top-Expression

Ein richtig super Feature ist die Möglichkeit, gesamten Regelprozess auszugeben:

Regelprozess auszugeben lassen

Regelprozess auszugeben lassen

Es besteht auch die Möglichkeit, diesen Trace in der Applikation auszulesen, und beispielsweise in der eigenen Applikations-UI anzuzeigen, oder zu Archivierungszwecken zu persistieren. Allerdings bietet BRF+ Versionierung und die Möglichkeit die Regel zu einem anderen Zeitpunkt auszuführen, so dass man auch noch nach Änderungen die Berechnungen mit einem alten Datenstand durchführen kann.

Ingo Biermann

Ingo Biermann

Als Management- und Technologieberater unterstütze ich seit mehr als 15 Jahren große und mittelständische Unternehmen in Fragen der IT-Strategie und bin unterwegs in unterschiedlichen SAP-Themen wie SAP S/4HANA, User Experience und SAP Entwicklung.

Sie haben Fragen? Kontaktieren Sie mich!



Das könnte Sie auch interessieren

In SAP das eigene Passwort rund um die Uhr zurücksetzen können? Was so einfach im SAP Standard nicht möglich ist, haben wir mit unserem Password Self-Service (PSS) Tool realisiert und bereits […]

weiterlesen

Wie gehe ich die Entwicklungen von SAP-Erweiterungen an? Lege ich einfach los oder schreibe ich einen Plan? Wie plane ich den Prozess? Wie helfen Prozessmodelle dabei? All diese Überlegungen wurden […]

weiterlesen

Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.





Kontaktieren Sie uns!
Alexander Koessner-Maier
Alexander Kössner-Maier Kundenservice