Ingo Biermann
17. Januar 2014

BOPF Property Concept: Eine Einführung

Das Property Concept des Business Object Processing Frameworks (BOPF) unterscheidet zwischen statischen und dynamischen Properties. In diesem Beitrag werden Ihnen beide Arten vorgestellt und der Unterschied erklärt.

Unser E-Book zum Thema SAP Entwicklung

E-Book: SAP Entwicklung

Wir erklären Ihnen im E-Book die 3 wichtigsten Frameworks und zeigen Ihnen weitere Erfolgsbooster, die wir selbst einsetzen.

Wozu Properties in BOPF?

Properties sind eine Möglichkeit, um die Eingabe- bzw. Interaktionsmöglichkeiten eines Benutzers mit einer Anwendung einzuschränken. In BOPF können über sie die Interaktion mit diversen Elementen gesteuert werden. Dazu gehört es beispielsweise, Attribute durch die Eigenschaft “Enabled” für den Consumer sichtbar zu machen, sie bei Bedarf auf Read-Only zu setzen oder als Pflichtfeld zu markieren. Dies kann unter anderem in der GUI Erstellung mit einer FPM UI genutzt werden, um dort Felder zu sperren oder auszublenden. Dieser Fall tritt zum Beispiel bei Schlüsselfeldern, die automatisch vergeben werden oder bei einigen transienten Feldern ein.

Properties können auch genutzt werden um die weitere Bearbeitung des Business Objects zu beeinflussen. So kann beispielsweise verhindert werden, dass bei einer bereits verschickten Rechnung weitere Artikel hinzugefügt werden können. Die Properties sind dabei nicht nur auf die Attribute eines Geschäftsobjektes beschränkt. Sie können auch für Aktionen und weitere Entitäten genutzt werden.

Dynamische oder Statische Properties, wo ist der Unterschied?

Properties können in BOPF entweder dynamisch oder statisch gesetzt werden.

Statische Properties können nur zur Design-Zeit gesetzt und können von dynamischen Properties überschrieben werden. Um das Überschreiben zu verhindern ist es möglich, Properties als final zu kennzeichnen.

Dynamische Properties können dagegen zur Laufzeit verändert werden und sind somit auch nur zur Laufzeit gültig. Sie beziehen sich immer auf genau eine Instanz und können damit, zum Beispiel in Abhängigkeit von Benutzereingaben, Felder auf Read-Only oder Mandatory setzen. Setzt also ein Nutzer eine Rechnung auf den Status “bezahlt”,  finden keine weiteren Änderungen an der Rechnung statt. Über dynamische Properties können bei einer Änderung des Status alle weiteren Felder auf Read-Only gesetzt werden.

Setzen von statischen Properties

Properties können für verschiedene Entitäten festgelegt werden. Alle Einstellungen erfolgen in der entsprechenden Pflegetransaktion für BOPF. Dort ist zunächst ein Business Object auszuwählen. Unter dem Knoten “Node Elements” ist der gewünschte Knoten auszuwählen. Dort befinden sich der Knoten “Node Categories”. Innerhalb des Knotens können dann die Einstellungen vorgenommen werden. Abbildung 1 zeigt, wie die Properties für Attribute gesetzt werden können.

Abbildung 1: Statische Propertys in BOPF

Setzen von dynamischen Properties

Das Setzen der dynamischen Properties ist etwas aufwändiger im Vergleich zu statischen Properties. Im Falle der dynamischen Properties werden sogenannte Property Determinations genutzt, die für den betroffenen Knoten angelegt werden. In der Determination wird die Property Node bei Request Nodes genutzt.

Abbildung 2: Property Node

In diesem Fall werden keine Trigger ausgewählt. Beim Node Category Assignment wird “Before Retrieve” als Zeitpunkt für die Determination ausgewählt. Zusätzlich muss noch die Determination Klasse implementiert werden. In dieser Klasse wird die Helferklasse /bobf/cl_lib_h_set_property genutzt um die gewünschten Properties zu setzen.

DATA lo_set_property  TYPE REF TO   /bobf/cl_lib_h_set_property.
” create service object for dynamic properties
  CREATE OBJECT lo_set_property
    EXPORTING
      is_context is_ctx
io_modify  = io_modify.

Eine ausführliche Auflistung aller möglichen Methoden zum Setzen der Properties finden sich auf den Seiten der SAP.

Um eine Action zu deaktivieren kann der folgende Codeausschnitt genutzt werden. Der Wert für if_action_key kann dabei aus dem Interface des Business Objects bezogen werden.

lo_set_property->set_action_enabled(
  EXPORTING
    iv_key        ls_rootkey
    if_action_key /bobf/if_invoice_c=>sc_actionrootinvoice_issued
    iv_value      abap_false
).

Um ein Feld auf Read-Only zu setzen kann folgender Code genutzt werden.

lo_set_property->set_attribute_read_only(
  EXPORTING
     iv_attribute_name /mind2/if_map_conf_c=>sc_node_attributerootbo_name
     iv_key            ls_rootkey
     iv_value          abap_true
).

Auch alle weiteren Methoden können auf die gleiche Art genutzt werden.

Wie Sie sehen, ist das Property Concept von BOPF sehr flexibel und bietet viele Möglichkeiten. Gleichzeitig ist durch die Einstellung der Eigenschaften im Geschäftsobjekt auch sichergestellt, dass alle Consumer die gleichen Eigenschaften für das Geschäftsobjekt haben.

Abschließend interessiert mich natürlich: Welche Erfahrungen haben Sie bereits mit BOPF im Allgemeinen und dessen Property Concept im speziellen gemacht? Ich freue mich auf Ihre Kommentare.

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

BOPF ist ein modernes Framework mit dem Anwendungen auf dem ABAP-Stack entwickelt werden können. Ich habe es hier schon vorgestellt. Ein Delegated Object (DO) in BOPF ist eine elegante Möglichkeit, […]

weiterlesen

Für die Verwendung von Nummernkreisen im Business Object Processing Framework (BOPF) gibt es eine Library Klasse /BOFU/CL_D_DRAW_NUMBER. Diese Klasse zieht Nummern aus einem angegebenen Nummernkreis, die dann für ein Business […]

weiterlesen

In vielen zentralen Bereichen des SAP-Systems wird die Menge der erzeugten Belegen oder sonstigen Bewegungsdaten schnell so groß, dass die Systemlast bei Datenabfragen signifikant ansteigt. Im etablierten SAP-Standard ist dafür das […]

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