- 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.

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.

Nutzen Sie unser BOPF Knowhow!
Mit den Business Object Processing Framework (BOPF) läuft Ihre ABAP Entwicklung schneller und günstiger. Unsere Experten wissen wie. - Ingo Biermann, Fachbereichsleiter

Als idealer Einstieg in BOPF Thema gilt unser Kickstarter Angebot

Unsere Lösung für Projekte im SAP Transportation Manangement ist die TM Datenmigration mit BOPF

Gerne spreche ich mit Ihnen auch im Detail ü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

 

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.


SHARE



Schreiben Sie einen Kommentar

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