Ansicht
Dokumentation

ABENDDIC_DATABASE_VIEWS - DDIC DATABASE VIEWS

ABENDDIC_DATABASE_VIEWS - DDIC DATABASE VIEWS

PERFORM Short Reference   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Datenbank-Views

Eine DDIC-Datenbank-View ist eine allgemeine View für eine oder mehrere Basistabellen. Wenn es mehrere Basistabellen gibt, werden diese über einen inneren Join verknüpft. Auf der Datenbank wird bei der Aktivierung der View eine entsprechende SQL-View als Datenbankobjekt erzeugt. Auf den durch die View-Felder der Datenbank-View definierten Strukturtyp kann man sich in ABAP-Programmen mit TYPE beziehen. Auf eine Datenbank-View kann mit , mit AMDP, Native SQL, in CDS-Views und auch von außerhalb eines AS ABAP über die Programmierschnittstelle der Datenbank zugegriffen werden. Letzteres wird aber nicht empfohlen.

Hinweise

  • Eine DDIC-Datenbank-View kann im ABAP Dictionary aktiviert werden, ohne dass ihre Basistabellen bereits auf der Datenbank ausgeprägt sind. Die View wird dann ebenfalls noch nicht auf der Datenbank angelegt.
  • Die Mandantenabhängigkeit einer Datenbank-View wird wie bei einer DDIC-Datenbanktabelle durch eine erste Spalte vom eingebauten Dictionary-Typ CLNT bestimmt.
  • Für die modifikationsfreie Erweiterung der von SAP ausgelieferten Datenbank-Views des ABAP Dictionary gibt es DDIC-Append-Views.
  • Für Datenbank-Views können geeignete CDS-Views als Vertreterobjekte definiert werden. In einem solchen Fall greifen lesende Zugriffe in nicht mehr auf die Datenbank-Views sondern auf die Vertreterobjekte zu.

Basistabellen

Die Basistabellen von Datenbank-Views können transparente Tabellen und globale temporäre Tabellen sein.

Hinweis

Die Basistabellen von CDS-verwaltete DDIC-Views, die für CDS-Views generiert werden, können auch andere DDIC-Datenbank-Views sein.

View-Felder

Als View-Felder einer DDIC-Datenbank-View können einzelne Felder der Basistabellen, aber auch alle Felder einer Basistabelle über einen Include-Mechanismus verwendet werden. Bei der Verwendung einzelner Felder kann für ein View-Feld ein anderer Name als in den Basistabellen definiert werden. Dieser Name darf maximal 30-stellig sein, muss den Namenskonventionen für Komponentennamen von DDIC-Strukturen folgen und darf kein reservierter Name sein. Die verbotenen reservierten Namen sind in der Datenbanktabelle TRESE enthalten. Felder vom Typ CHAR dürfen maximal 1333 Zeichen lang sein. Felder der Typen LRAW oder LCHR müssen am Ende der View stehen. Es ist nur ein solches Feld pro View erlaubt. Außerdem muss direkt vor einem solchen Feld ein Feld vom Typ INT2 oder INT4 für die maximale Länge des Felds stehen.

Um alle Felder zu verwenden, wird statt des Feldnamens das Zeichen * verwendet. Wenn für einzelne Felder einer über * eingebundenen Basistabelle das Zeichen - verwendet wird, werden alle Felder bis auf die mit - angegebenen Felder zu View-Feldern. Wenn die Struktur einer DDIC-Datenbanktabelle, von der auf diese Weise alle Felder übernommen werden, geändert wird, ändert sich auch die Struktur des Views.

Hinweise

  • Wenn ein Fremdschlüsselfeld als View-Feld übernommen wird, behält es diese Eigenschaft und alle zusammengehörigen Fremdschlüsselfelder bilden die Fremdschlüssel der View.
  • Eine DDIC-Datenbank-View der Software-Komponente SAP_BASIS darf maximal 749 View-Felder enthalten und die Summe der Feldlängen (Anzahl von Bytes der nicht zeichenartigen Felder und der Anzahl der Zeichen der flachen zeichenartigen Felder) darf maximal 4096 sein. Eine Datenbank-View einer anderen Software-Komponente darf maximal 1500 View-Felder enthalten und die Summe der Feldlängen wird im ABAP Dictionary nicht überprüft.

Join-Bedingungen

Die Join-Bedingungen für den inneren Join können über Gleichheitsbeziehungen zwischen beliebigen Tabellenfeldern der Basistabellen formuliert werden. Der innere Join verknüpft die Zeilen der beteiligten Basistabellen zu einer Ergebnismenge, die alle Kombinationen von Zeilen enthält, deren Spalten die Join-Bedingungen gemeinsam erfüllen. Wenn es in den beteiligten Basistabellen keine Zeilen gibt, welche die Join-Bedingungen erfüllen, wird in der Ergebnismenge keine Zeile erzeugt. Falls zwischen zwei Basistabellen eine geeignete Fremdschlüsselbeziehung (inklusive generischer und konstanter Fremdschlüssel) besteht, kann diese im Werkzeug ABAP Dictionary als Vorschlagswert für die Definition von Join-Bedingungen verwendet werden.

Pflegestatus

Die Einstellung Zugriff des Pflegestatus einer DDIC-Datenbank-View kann folgende Werte annehmen:

  • Nur lesen
Über die Datenbank-View können Daten mit nur gelesen werden.
  • Lesen, ändern, löschen und einfügen
Falls die Datenbank-View nur eine einzige Basistabelle enthält, können Daten mit geändert werden.

Auf einen Datenbank-View mit mehreren Basistabellen kann mit nur lesend zugegriffen werden. Enthält eine Datenbank-View nur eine einzelne Tabelle, so können Daten über die View mit den-Anweisungen INSERT oder MODIFY in diese Tabelle eingefügt werden. Für den Inhalt der nicht in der View enthaltenen Tabellenfelder gibt es folgende Möglichkeiten:

  • Ist das Tabellenfeld auf der Datenbank mit NOT NULL definiert, wird das Feld mit dem entsprechenden Initialwert gefüllt.
  • Ist das Tabellenfeld auf der Datenbank mit NOT NULL definiert, ohne dass es einen Initialwert gibt, ist ein Einfügen nicht möglich und es kommt zu einem Datenbankfehler und der entsprechenden Ausnahme.
  • Ist bei dem Tabellenfeld auf der Datenbank nicht mit NOT NULL definiert, wird das Feld mit dem Null-Wert gefüllt.

Hinweise

  • Über eine DDIC-Datenbank-View sollten nur dann Daten in die Tabelle eingefügt werden, falls für alle nicht in der View enthaltenen Tabellenfelder das Kennzeichen für Initialwerte gesetzt ist.
  • Das Verändern von bereits vorhandenen Datensätzen über eine Datenbank-View ist unkritisch, falls die Datenbank-View alle Schlüsselfelder der Tabelle enthält.
  • Der Pflegestatus einer DDIC-Datenbank-View hat wie eine Datenbanktabelle zusätzlich zur Einstellung Zugriff auch die Einstellung zur Anzeige und Pflege. Die Einstellung muss zum Zugriff passen. Bei Datenbank-Views, die mehrere Basistabellen enthalten ist nur die Einstellung Anzeige/Pflege nicht erlaubt möglich.

Pufferung von Tabellen

Für eine Datenbank-View kann genau wie für eine DDIC-Datenbanktabelle gesteuert werden, ob die Daten im Tabellenpuffer gepuffert werden. Es können die gleichen Pufferungsarten definiert werden und die Behandlung der Tabellenpufferung in ist für Views wie für DDIC-Datenbanktabellen mit dem Unterschied, dass bei der Puffersynchronisation unabhängig von der Pufferungsart der gesamte Puffer invalidiert wird, wenn Daten in einer der Basistabellen der View verändert wurden. Bei DDIC-Datenbanktabellen sind die Einstellungen für die Pufferung getrennte technische Einstellungen, die unabhängig von der View transportiert werden können.

Damit eine DDIC-Datenbank-View gepuffert werden kann, müssen folgende Voraussetzungen erfüllt sein:

  • Eine Basistabelle kann in maximal 9 gepufferten Datenbank-Views vorkommen.
  • Wenn alle Felder der Datenbank-View Schlüsselfelder sind, müssen diese Felder auch Schlüsselfelder der Basistabellen sein.
  • Eine View, auf deren Daten schreibend mit zugegriffen werden kann, darf kein Vertreterobjekt haben.

Hinweis

Für eine bestehende gepufferte View, auf deren Daten schreibend mit zugegriffen werden kann, kann kein Vertreterobjekt angelegt werden.

Beispiel

Die DDIC-Datenbank-View DEMO_SCARR_SPFLI enthält Felder der Tabellen SCARR und SPFLI. Diesen sind in der View andere Namen zugeordnet.

Das zugehörige Datenbankobjekt sieht beispielsweise wie folgt aus:

CREATE VIEW DEMO_SCARR_SPFLI
   (CLIENT,
   ID,
   CARRIER,
   FLIGHT,
   DEPARTURE,
   DESTINATION )
AS SELECT
   T1."MANDT",
   T2."CARRID",
   T1."CARRNAME",
   T2."CONNID",
   T2."CITYFROM",
   T2."CITYTO"
FROM
    "SCARR" T1,
    "SPFLI" T2
WHERE
    T1."MANDT"  = T2."MANDT" AND
    T1."CARRID" = T2."CARRID"

Mit kann auf die View etwa wie folgt zugegriffen werden:






TXBHW - Original Tax Base Amount in Local Currency   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 13975 Date: 20240523 Time: 170734     sap01-206 ( 190 ms )