
Ein Datenobjekt beschreibt Daten und dient im Kontext oder Ergebnis von Ausdrücken oder Aktionen als Datenträger. Datenobjekte können über ihren Typ näher beschrieben werden. Die möglichen Datenobjekttypen sind Element, Struktur und Tabelle.
Für Datenobjekte vom Typ Element können Sie die Menge an Vergleichsoperationen definieren, die von einem bestimmten Datenobjekt unterstützt werden. Dies ist hilfreich, wenn ein Datenobjekt in einem Vergleich mit einem Bereichsausdruck verwendet wird. Wenn ein Datenobjekt die entsprechende Vergleichsoperation nicht unterstützt, kann das System diese Diskrepanz bereits bei der Modellierung feststellen und möglichen Problemen zur Laufzeit vorbeugen.
Ein Element-Datenobjekt muss einen der folgenden Untertypen aufweisen:
Elementtyp |
Text (Beschreibung) |
|---|---|
Text |
Zeichenkette (maximal 255 Zeichen) Hinweis
Die Maximallänge von Text-Datenobjekten ist auf die maximale Länge von Zeichenketten zurückzuführen, die in der Datenbank gespeichert werden können. Trotz dieser Beschränkungen für persistente Zeichenketten können Sie wesentlich längere Zeichenketten verwenden, solange diese nur für interne Berechnungen während einer BRFplus-Session eingesetzt werden. So können Sie beispielsweise in einer BRFplus-Formel mehrere Zeichenketten zu einer langen Zeichenkette verketten, anschließend diese Zeichenkette nach einem bestimmten Muster durchsuchen und schließlich ein Formelergebnis zurückliefern (zum Beispiel wie häufig das Muster in der langen Zeichenkette vorkommt). |
Zahl |
Zahl mit Dezimalstellen Wenn ein Datenobjekt an ein ABAP-Dictionary-Datenelement des Typs NUMC gebunden ist, wird der Typ des Datenobjekts automatisch auf Text statt auf Zahl gesetzt. Weitere Informationen finden Sie im Abschnitt Typableitung in Datenbindung. |
Boolesch |
Boolescher Wert |
Betrag |
Zahl und Währung Hinweis
Die Anzahl an Dezimalstellen des Zahl-Teils eines Betrags beträgt immer zehn und kann vom Benutzer nicht geändert werden. Dies liegt daran, dass diese Einstellung nur aus formalen Gründen vorhanden ist. Zur Laufzeit wird die eigentliche Anzahl der verwendeten Dezimalstellen von den zentralen Währungstabellen im Backend abgeleitet. Die Anzahl der Dezimalstellen ist somit währungsabhängig. Aus diesem Grund können Sie diese formale Einstellung in der Personalisierungsfunktion der BRFplus-Workbench ausblenden, indem Sie die Option verwenden. |
Menge |
Zahl und Mengeneinheit Zusätzlich zur obligatorischen Definition der Mengeneinheit zur Laufzeit können Sie optional während der Modellierung die Mengendimension angeben (beispielsweise Länge, Masse, Zeit). Diese Angabe hat folgende Auswirkungen:
Hinweis
Selbst wenn es in der zentralen Dimensionstabelle eine vordefinierte Anzahl an anzuzeigenden Dezimalstellen für eine bestimmte Mengeneinheit gibt, hat die vom Benutzer angegebene Anzahl an Dezimalstellen für das Datenelement Vorrang vor diesem Systemstandard. Dadurch wird die Transparenz mengenbasierter Entscheidungen sichergestellt. Andernfalls könnten Situationen auftreten, in denen zwei Werte mit leicht unterschiedlichen Dezimalstellen nach dem Runden mit gleichen Dezimalzahlen angezeigt werden. Dies könnte die Frage aufwerfen, warum bei der Regelauswertung gerade diesen Wert verwendet. Um solche Mehrdeutigkeiten zu vermeiden, und aufgrund der Tatsache, dass BRFplus ein generisches Werkzeug ist, das nicht an die Bedürfnisse eines bestimmten Geschäftsszenarios angepasst ist, werden in BRFplus Mengen immer mit der benutzerdefinierten Anzahl an Dezimalstellen angezeigt. |
Zeitpunkt |
Hinweis
Bei den ersten drei der oben aufgelisteten Zeitpunktarten handelt es sich um abstrakte Werte, die keine expliziten Informationen zur Zeitzone enthalten. Wenn Sie genaue und Eindeutige Informationen zu Datum und Uhrzeit benötigen, verwenden Sie die beiden UTC-basierten Zeitpunktarten. Bei einem Zeitpunkt-Datenobjekt ist es nicht notwendig, die Zeitpunktart des Objekts zur Design-Zeit festzulegen. Sie können diesen Teil der Objektdefinition offen lassen. Dadurch kann das Objekt beliebige, gültige Daten zu Datum und Uhrzeit enthalten. Dies ist für Szenarios hilfreich, bei denen die genaue Zeitpunktart einer eingehenden Datums-/Uhrzeitangabe unbekannt ist. Wenn Sie die Zeitpunktart-Einstellung undefiniert lassen, müssen Sie jedoch die Objekte, die das Zeitpunkt-Element verwenden, besonders beachten, da für Zeitpunkte ohne angegebene Zeitpunktart keine typspezifischen Konsistenzprüfungen möglich sind. |
Statt explizit den Typ eines Element-Datenobjekts zu definieren, können Objekte den Typ und die Objekteigenschaften auch von einem anderen Objekt erben. Dieses andere Objekt kann entweder im BRFplus-Repository vorhanden sein oder in einem anderen Repository im Backend-System. Weitere Informationen finden Sie unter Datenbindung.
In der folgenden Tabelle sind die strukturellen Beziehungen zwischen den verschiedenen Datenobjekttypen aufgelistet:
Datenobjekttyp |
Besteht aus |
|---|---|
Element |
Vordefinierte Datentypen (siehe Tabelle oben) |
Struktur |
Element (0..n) Struktur (0..n) Tabelle (0..n) |
Tabelle |
Element (0..1) Struktur (0..1) |
Für ein besseres Verständnis dieser Beziehungen ist es hilfreich zu wissen, wie die verschiedenen Datenobjekttypen aufeinander aufgebaut sind:
Ein Element ist ein vordefinierter, elementarer Datentyp, der weder in kleinere Teile aufgeteilt noch in irgendeiner Form erweitert werden kann.
Eine Struktur ist eine Kombination aus beliebig vielen Elementen und/oder Strukturen. Vor allem die Tatsache, dass eine Struktur aus anderen Strukturen bestehen kann (die wiederum ebenfalls aus Strukturen bestehen können), ermöglicht es Ihnen, Datenstrukturen von beliebiger hierarchischer Komplexität zu modellieren.
Auch wenn es aus architektonischer Sicht theoretisch keine Grenzen für die Komplexität von Strukturen gibt, müssen Sie folgende Beschränkungen für die praktische Verwendung beachten: In tief verschachtelten Strukturen mit mehreren Ebenen kann es beim Adressieren von bestimmten Feldern über ihren Namen dazu kommen, dass dieser vollständige Name eine lange Folge von verketteten Zeichenketten ist. Wenn der vollständige Name über 255 Zeichen lang ist, kann er nicht mehr von der Werkzeug-Infrastruktur des ABAP-Backend-Systems verarbeitet werden. Bei Überschreitung dieser Zeichenlänge ist die Codegenerierung für ein solches Objekt nicht mehr möglich.
Die Felder in Tabellen werden definiert, indem entweder genau ein Element oder genau eine Struktur der Tabelle zugeordnet wird. Dies bedeutet, dass die Feldstruktur einer Tabelle nicht implizit aufgebaut wird, indem ein Feld nach dem anderen der Tabelle hinzugefügt wird. Vielmehr kann die Tabelle nur die Felder eines Struktur-Datenobjekts annehmen, das vorher angelegt wurde. Wenn Sie der Tabelle hingegen ein Element-Datenobjekt zuordnen, wird das Ergebnis eine Tabelle mit einer Spalte sein (also eine einfache Liste).