Anfang des Inhaltsbereichs

Datenbankzugriffe im R/3-System Dokument im Navigationsbaum lokalisieren

Im R/3-System werden langlebige Daten in einer zentralen relationalen Datenbanktabelle gespeichert. Im relationalen Datenmodell wird die reale Welt durch Tabellen abgebildet. Eine Tabelle ist eine zweidimensionale Matrix, die aus Zeilen und Spalten (Felder) besteht. Jede kleinstmögliche Kombination von Feldern, die jede Zeile einer Tabelle eindeutig identifizieren kann heißt Schlüssel. Für jede Tabelle muß es mindestens einen Schlüssel geben und pro Tabelle wird ein Schlüssel als Primärschlüssel festgelegt. Die Beziehungen zwischen Tabellen werden durch Fremdschlüssel realisiert.

Standard SQL

SQL (Structured Query Language ) ist eine weitgehend standardisierte Sprache für den Zugriff auf relationale Datenbanken. Standard SQL läßt sich in drei Anteile unterteilen:

Anweisungen zum Lesen und Ändern von Daten in Datenbanktabellen.

Anweisungen zum Anlegen und Verwalten von Datenbanktabellen.

Anweisungen für Berechtigungsüberprüfungen und Konsistenzkontrolle.

Zu jeder Datenbank gehört eine Programmierschnittstelle, die den Zugriff auf die Datenbank über SQL-Anweisungen erlaubt. Die SQL-Anweisungen dieser Programmierschnittstellen sind nicht vollständig einheitlich, sondern weisen herstellerspezifische Eigenheiten auf. Um auf ein bestimmtes Datenbanksystem zugreifen zu können, muß man auf die Dokumentation dieses Systems zurückgreifen, um eine Liste der vorhandenen SQL-Anweisungen und ihrer Syntax zu erhalten.

Die Datenbankschnittstelle

Um Unverträglichkeiten zwischen verschiedenen Datenbanktabellen zu vermeiden und das R/3-System unabhängig vom verwendeten Datenbanksystem zu machen, enthält jeder Workprozess auf einem Applikationsserver eine Datenbankschnittstelle. Das R/3-System kommuniziert ausschließlich über die Datenbankschnittstelle mit der Datenbank. Die Datenbankschnittstelle verwandelt alle Anforderungen des R/3-Systems in herstellerspezifische Standard SQL-Anweisungen. Hierfür enthält die Datenbankschnittstelle eine datenbankabhängige Komponente, welche die Unterschiede zwischen den Datenbanksystemen vor dem Rest der Datenbankschnittstelle verbirgt. Diese Komponente wird bei der Installation des R/3-Systems entsprechend der verwendeten Datenbank ausgewählt.

Diese Grafik wird im zugehörigen Text erklärt

Die Programme des R/3-Systems haben zwei Möglichkeiten auf die Datenbankschnittstelle zuzugreifen, nämlich Open SQL und Native SQL.

Open SQL

Die Anweisungen von Open SQL sind eine vollständig in ABAP integrierte Untermenge von Standard SQL. Sie erlauben dem ABAP-Programmen einen einheitlichen Zugriff auf Daten, unabhängig vom installierten Datenbanksystem. Open SQL umfaßt den DML-Anteil (Data Manipulation Language) des Standards, erlaubt es also Daten zu lesen (SELECT) und zu verändern (INSERT, UPDATE, DELETE).

Open SQL geht aber auch über den Standard hinaus, indem es einige Anweisungen anbietet, die im Zusammenhang mit den übrigen ABAP-Elementen, bestimmte Zugriffe vereinfachen oder beschleunigen können. Zusätzlich bietet Open SQL die Möglichkeit, bestimmte Tabellen auf dem Applikationsserver zu puffern und dadurch Datenbankzugriffe einzusparen. Dabei übernimmt die Datenbankschnittstelle die Kontrolle über die Abgleichung der Puffer mit der Datenbank. Die Puffer sind teilweise im Arbeitsspeicher des aktuellen Workprozesses und teilweise im gemeinsamen Speicher aller Workprozesse eines Anwendungsservers abgelegt. Bei R/3-Systemen die auf mehrere Anwendungsserver verteilt sind, werden die Daten in den verschiedenen Puffern durch das Puffer-Management in festgelegten Zeitabschnitten synchronisiert. Bei der Datenbankpufferung muß man also in Kauf nehmen, daß die Daten in den Puffern nicht immer aktuell sind. Deshalb wendet man Datenbankpufferung eher bei wenig veränderlichen Daten an. Ob eine Tabelle gepuffert wird, wird im ABAP Dictionary bei ihrer Definition festgelegt.

Native SQL

Native SQL ist nur sehr lose in ABAP eingebunden und erlaubt Zugriff auf den gesamten Umfang der Funktionalität, der von der Programmierschnittstelle des Datenbanksystems zur Verfügung gestellt wird. Native SQL Anweisungen werden im Gegensatz zu Open SQL nicht geprüft und übersetzt, sondern direkt an das Datenbanksystem gereicht. Im Falle von Native SQL ist die Funktionalität der datenbankabhängigen Schicht nur minimal. Ein Programm, das Native SQL verwendet, ist abhängig vom installierten Datenbanksystem. Bei der Entwicklung von allgemeingültigen R/3-Anwendungen sollte auf den Einsatz von Native SQL weitestgehend verzichtet werden.In einigen Basis-Komponenten des R/3-Systems wird Native SQL verwendet, z.B.: im ABAP Dictionary zum Anlegen oder Ändern von Tabellen.

Das ABAP Dictionary

Das Werkzeug ABAP Dictionary der ABAP Workbench dient dem Anlegen und Verwalten von Datenbanktabellen. Die Anweisungen von Open SQL enthalten nicht den DDL-Anteil von Standard SQL. Normale Anwendungsprogramme sollen keine Datenbanktabellen anlegen oder die Struktur von Datenbanktabellen ändern.

Das Werkzeug ABAP Dictionary erzeugt bzw. ändert Datenbanktabellen über Native SQL-Anweisungen (DDL-Anteil). Gleichzeitig verwaltet das Werkzeug ABAP Dictionary das gleichnamige ABAP Dictionary auf der Datenbank. Das ABAP Dictionary enthält eine zentrale Metabeschreibung aller Datenbanktabellen des R/3-Systems. Nur Datenbanktabellen, die mit dem Werkzeug ABAP Dictionary erzeugt werden, sind im ABAP Dictionary eingetragen und Open SQL-Anweisungen können nur auf solche Datenbanktabellen zugreifen.

Berechtigungen und Konsistenzprüfungen

Der DCL-Anteil von Standard SQL spielt in R/3-Programmen keine Rolle. Die Workprozesse des R/3-Systems sind als Benutzer mit allen Berechtigungen beim Datenbanksystem angemeldet. Die Berechtigungen von Programme oder Programmbenutzern, Datenbanktabellen zu lesen oder zu ändern werden innerhalb des R/3-Systems durch das R/3- Berechtigungskonzept gehandhabt. Ebenso müssen Transaktionen mit Hilfe des R/3-Sperrkonzepts selbst für konsistente Daten auf der Datenbank sorgen. Mehr Informationen dazu finden sich unter Datenbankänderungen programmieren.

Ende des Inhaltsbereichs