Show TOC

HintergrundLogische Datenbanken mit verschiedenen Knotentypen Dieses Dokument in der Navigationsstruktur finden

 

Ab Release 4.0A besteht die Möglichkeit, die Knoten logischer Datenbanken auf verschiedene Art zu definieren:

  1. Knoten vom Typ T (Dictionary Tabelle), ab 4.5A Typ Datenbanktabelle Dies entspricht dem bis zu Release 4.0A einzig möglichen Knotentyp (flache Dictionary-Struktur).

  2. Knoten vom Typ S (Struktur aus dem ABAP Dictionary), ab 4.5A Typ Dictionary-Typ In den Release-Ständen 4.0A und 4.0B kann mit diesem Knotentyp erreicht werden, daß eine flache Dictionary-Struktur mit einem frei wählbaren Alias-Namen innerhalb der logischen Datenbank versehen wird. Dies ist notwendig, wenn der Name einer solchen Struktur länger als 14 Zeichen ist und damit die maximal mögliche Länge für Knotennamen überschreitet. Außerdem ermöglicht dieser Knotentyp, eine Dictionary-Struktur mehrfach unter verschiedenen Alias-Namen in die logische Datenbank aufzunehmen. Ab Release 4.5A können im Dictionary komplexe Typen, d.h. geschachtelte Strukturen und Tabellentypen definiert werden. Dieser Knotentyp gestattet die Verwendung von Knoten mit einem solchen komplexen Dictionary-Typ.

  3. Knoten vom Typ C (Komplexes Datenobjekt), ab 4.5A Typ Datentyp Knoten dieses Typs beziehen sich auf beliebig komplexe Typen, die in einem Type-Pool definiert sind. Solche Typen können ab Release 4.5A sinnvoller durch einen komplexen Dictionary-Typ abgebildet werden. Ihre Verwendung in logischen Datenbanken wird deshalb nicht mehr empfohlen, da sie zumindest bei Verwendung innerhalb der Query einige Nachteile aufweisen.

In den Release-Ständen 4.0A und 4.0B können bei der Definition von InfoSets nur die logischen Datenbanken verwendet werden, die ausschließlich Knoten vom Typ Datenbanktabelle (Typ T) enthielten. Ab Release 4.5A können auch die logischen Datenbanken verwendet werden, die Knoten der beiden anderen Typen enthalten. Dabei sind jedoch einige Einschränkungen zu beachten.

Bei einem Knoten mit komplexem Typ (Dictionary-Typ oder Datentyp) stellt die Query nur die Felder zur Auswertung zur Verfügung, die ausgehend von der obersten Ebene des Typs direkt angesprochen werden können. Enthält ein komplexer Typ eine Tabelle, so können die Bestandteile der Tabelle nicht angesprochen werden. Dies soll an dem folgenden Beispiel verdeutlicht werden.

Beispiel

Gegeben sei ein komplexer Typ der folgenden Art. Es wird die ABAP-Notation gewählt. Der gleiche Typ kann aber auch als Dictionary-Typ abgebildet werden.

Syntax Syntax

  1. TYPES: BEGIN OF person
    		name(20),
    		first_name(20),
    		birthday(10),
    	END OF person,
    	BEGIN OF address,
    		street(30),
    		number(6),
    		zipcode(10),
    		city(30),
    	END OF adress,
    	adress_table TYPE address OCCURS 0.
    
    TYPES: BEGIN OF personal_data,
    		person TYPE person,
    		first_adress TYPE address,
    		other_addresses TYPE
    address_table,
    	END OF personal_data.
Ende des Quelltextes.

Besitzt der Knoten PDATA einer logischen Datenbank den Typ PERSONAL_DATA so können folgende Felder dieses Knotens mit Hilfe der Query ausgewertet werden:

  • PDATA-PERSON-NAME

    PDATA-PERSON-FIRST_NAME

    PDATA-PERSON-BIRTHDAY

    PDATA-FIRST_ADDRESS-STREET

    PDATA-FIRST_ADDRESS-NUMBER

    PDATA-FIRST_ADDRESS-ZIPCODE

    PDATA-FIRST_ADDRESS-CITY

Die Felder mit Angaben über die weiteren Adressen (OTHER_ADRESSES) können nicht ausgewertet werden, da es sich hier um einen Tabellentyp handelt.

Einschränkungen

Bei Knoten vom Typ Datentyp (TYP C) sind weitere Einschränkungen zu beachten. Da diese Typen nicht als Dictionary-Typen definiert sind, existieren auch keine Texte (Langtext und Überschriften) für die Felder dieser Typen. Bei der Definition eines InfoSets können deshalb als Texte nur die technischen Namen der Felder (also z.B. PERSON-NAME) vorgeschlagen werden. Um zu dem bei anderen Datenbankknoten gewohnten Zustand zu gelangen, müssen deshalb alle Texte für solche Felder gepflegt werden.

Außerdem ist bei Knoten vom Typ Datentyp zu beachten, daß die Definition von Referenzfeldern generell nicht möglich ist, da dies nur bei Dictionary-Typen erlaubt ist. Deshalb ist die Query nicht in der Lage, innerhalb solcher Knoten Werte mit Einheiten (Währungsbeträge und Mengen) zu erkennen und bei der Auswertung entsprechend zu berücksichtigen.