- 7. November 2012
  1 Kommentar

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.

Wir sind Ihr Dienstleister für die Entwicklung, die Ihr SAP noch besser macht.
Schon in der Ideenphase unterstützen wir Sie bei der Definition der Anforderungen. Die Konzeption und Umsetzung erfolgt durch unsere SAP Experten.

Sie erhalten die Komplettlösung – Ihr Projekt machen wir zu unserem Projekt. Mit professionellem Projektmanagement sicheren wir den Projekterfolg.

Gerne spreche ich mit Ihnen über Ihre Ausgangslage und zeige Lösungsmöglichkeiten auf. Auf Wunsch unterbreite ich Ihnen im Anschluss ein unverbindliches Angebot.

Kontaktieren Sie mich: Telefon 0211.9462 8572-16 oder per E-Mail info@erlebe-software.de
Ingo Biermann, Fachbereichsleiter

 

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)

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.


SHARE


Ein Kommentar zu "BRF+: Ein smarter Weg Businesslogiken zu designen"

Schreiben Sie einen Kommentar

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