Open SQL-Anweisungen und Cluster-Datenbanken Dokument im Navigationsbaum lokalisieren

Cluster-Datenbanken sind im ABAP-Dictionary definierte relationale Datenbanken, die von ABAP auf eine spezielle Art und Weise benutzt werden. Deshalb können Sie prinzipiell auch mit Open SQL-Anweisungen auf Cluster-Datenbanken zugreifen.

Um mit Open SQL-Anweisungen sinnvoll mit Cluster-Datenbanktabellen zu arbeiten, müssen Sie die spezielle Struktur dieser Datenbanktabellen beachten (siehe Struktur von Cluster-Datenbanken).

Zum Beispiel macht es wenig Sinn die Felder CLUSTR und CLUSTID über die Anweisung SELECT zu lesen oder über die Anweisung UPDATE zu ändern. Diese Felder enthalten das vom System kodierte Daten-Cluster und können nur durch die Anweisungen EXPORT TO DATABASE und IMPORT FROM DATABASE richtig behandelt werden.

Die ändernden Open SQL-Anweisungen UPDATE, MODIFY und DELETE sollten Sie nur dann verwenden, wenn entsprechende Kombinationen der Anweisungen für Daten-Cluster zu lange Laufzeiten ergeben. Die Open SQL-Anweisung INSERT sollten Sie in Cluster-Datenbanken überhaupt nicht verwenden.

Sie können Open SQL-Anweisungen für bestimmte Wartungs- und Pflegearbeiten Ihrer Cluster-Datenbank einsetzen. Beispielsweise können Sie mit SELECT-Anweisungen die Cluster-Datenbanktabelle gezielt nach bestimmten Daten-Clustern durchsuchen, wobei Sie auch Informationen der Benutzerdatenfelder verwenden können (siehe Beispiel unter Datenobjekte in Cluster-Datenbanken speichern). Dazu ist die IMPORT FROM DATABASE-Anweisung nicht geeignet.

Beispiel

REPORT demo_data_ext_cluster_open_1.

DATA count TYPE i VALUE 0.

DATA wa_indx TYPE indx.

SELECT *
FROM  indx
INTO  wa_indx
WHERE relid = 'HK' AND
       srtf2 = 0 AND
       usera = sy-uname.

  DELETE FROM DATABASE indx(hk) ID indx-srtfd.

  IF sy-subrc = 0.
    count = count + 1.
  ENDIF.

ENDSELECT.

WRITE: / count, 'Cluster(s) deleted'.

Dieses Beispielprogramm löscht alle Daten-Cluster des Bereichs "HK" aus der Tabelle INDX, die im Feld USERA den Namen des aktuellen Programmbenutzers enthalten. Durch die SELECT-Anweisung wird das Feld SRTFD des Tabellenarbeitsbereichs INDX gefüllt und in der DELETE-Anweisung verwendet. Durch die Spezifizierung von SRTF2 = 0 in der WHERE-Klausel wird sichergestellt, daß jedes Daten-Cluster nur einmal behandelt wird.

Achtung

Verwechseln Sie nicht die DELETE-Anweisung des Open SQL-Befehlssatzes mit der DELETE-Anweisung für Daten-Cluster (siehe Daten-Cluster in Cluster-Datenbanken löschen). Löschen Sie nie nur bestimmte Zeilen eines Daten-Clusters, sondern immer alle Zeilen.

Das folgende Besipiel demonstriert Ihnen, wie Sie die Bezeichnung und den Bereich eines Daten-Clusters in einer Datenbanktabelle über die Open SQL-Anweisung UPDATE ändern können. Die Lösung dieser Aufgabe wäre mit den Cluster-Anweisungen EXPORT, IMPORT und DELETE erheblich aufwendiger gewesen.

Beispiel

REPORT demo_data_ext_cluster_open_2.

DATA: dirtab TYPE TABLE OF  cdir,
      wa_dirtab LIKE LINE OF dirtab.

UPDATE indx SET relid = 'NW'
            srtfd = 'Internal'
                               WHERE relid = 'HK'
                               AND   srtfd = 'Table'.

WRITE: / 'UPDATE:',
       / 'SY-SUBRC:', sy-subrc,
       / 'SY-DBCNT:', sy-dbcnt.

IMPORT DIRECTORY INTO dirtab FROM DATABASE
                                  indx(nw) ID 'Internal'.

WRITE: / 'IMPORT:',
       / 'SY-SUBRC:', sy-subrc.

Dieses Programm ändert das mit dem Beispielprogramm unter Datenobjekte in Cluster-Datenbanken speichern abgespeicherte Daten-Cluster. Falls das Daten-Cluster bei Programmstart vorhanden ist, und in der UPDATE-Anweisung sonst keine Fehler auftreten, sieht die Ausgabe so aus:

UPDATE:

SY-SUBRC: 0

SY-DBCNT: 6

IMPORT:

SY-SUBRC: 0

Die UPDATE-Anweisung ändert die sechs zum spezifizierten Daten-Cluster gehörigen Zeilen der Datenbanktabelle INDX. Danach findet die Anweisung IMPORT DIRECTORY das Daten-Cluster im Bereich "NW" unter der Bezeichnung "Internal".

 

 

 

 

 

Ende des Inhaltsbereichs