Seminar PIiii

Werbung
Seminarvortrag
Datenbankauswertungsmöglichkeiten moderner ERP - Systeme am
Beispiel SAP R/3
Vergleich ABAP vs. Quick View
Sven Adolph
Vorgelegt bei
Prof. Dr. Guido Moerkotte
Lehrstuhl Praktische Informatik III
Vorgelegt von Diplom-Wirtschaftsinformatiker
Sven Adolph
Aus Reilingen
Inhaltsverzeichnis:
1. Einleitung..................................................................................................................................1
1.1 Motivation ...........................................................................................................................1
1.2 Aufbau der Arbeit .................................................................................................................2
2. Die betriebliche Standardsoftware SAP R/3 .................................................................................3
2.1 Technischer Aufbau..............................................................................................................3
2.2 Datenbankzugriffe in R/3 ......................................................................................................5
3. ABAP und Quick View ..............................................................................................................7
3.1 Die Programmiersprache ABAP ............................................................................................7
3.2 SAP Quick View ..................................................................................................................8
4. Fallbeispiel................................................................................................................................9
4.1 Einleitung ............................................................................................................................9
4.2 Datenmodel..........................................................................................................................9
4.3 SQL - Anweisungen und deren Umsetzung auf ABAP Open SQL .........................................10
4.4 SQL - Anweisungen und deren Umsetzung auf Quick Views.................................................14
5. Abschließender Vergleich.........................................................................................................16
ii
1. Einleitung
1.1 Motivation
Der Erfolg betriebliche r Standardanwendungssysteme in den vergangenen Jahren ist
vor allem auf die zunehmende Globalisierung zurückzuführen. Durch den Anstieg
länderübergreifender, betriebswirtschaftlicher Aktivitäten, beispielsweise durch den
Zukauf von Unternehmen im Ausland, entstand ein Bedarf an weltweit vernetzten,
integrierten Systemen. Ein zusätzlicher Wartungsdruck resultierte aus der Jahr-2000
Problematik und der Einführung des Euro. Durch die Auswahl eines mächtigen ERP
- Systems (Enterprise Ressource Planning) erhoffte man eine Verbesserung der
globalen Prozess- und Datenqualität zu erreichen.
Die Eigenentwicklung solcher Systeme gestaltet sich im Hinblick auf die
unterschiedlichen länderspezifischen Anforderungen sehr schwierig. Beim Einsatz
eines Standardanwendungssystems hingegen, wird bereits ein Grossteil der lokal
benötigten Funktionalität "frei Haus" mitgeliefert.
Um die durch den Standard nicht abgedeckten Anforderungen erfüllen zu können,
besitzen heutige ERP-Systeme unterschiedliche Schnittstellen zur Erstellung
benutzerdefinierter Berichte. Der folgend e Beitrag vergleicht am Beispiel SAP R/3
die Auswertungsmöglichkeiten von ABAP (Advanced Business Application
Programming) und die sogenannter Quick Views. Untersucht wurden dabei die
folgenden Aspekte:
•
Mächtigkeit
•
Performance
•
Wartbarkeit
•
Benutzerfreundlichkeit
1
1.2 Aufbau der Arbeit
Im Anschluss an die Einleitung wird in Kapitel zwei die Architektur der
betrieblichen Standardsoftware R/3 vorgestellt. Hierbei wird sich lediglich auf die
Bereiche beschränkt, die für das weitere Verständnis der Arbeit notwendig sind.
Hierzu gehört der dreistufige Client-Server Aufbau, das Transportwesen und die
SQL
Unterstützung.
Daran
anschließend
wird
in
Kapitel
drei
in
die
Programmiersprache ABAP eingeführt. Die elementare Syntax wird beschrieben, die
Entwicklungsumgebung wird vorgestellt und der generelle Ablauf beim Erstellen
von Reports skizziert. Im zweiten Teil dieses Kapitels werden kurz die Quick Views
vorgestellt. Beide Techniken werden dann ausführlich anhand einer konkreten
Implementierung in Kapitel vier beschrieben. Hierbei wird anhand des Datenmodells
eines Flugplans eine vorgegebene SQL - Abfrage mit Hilfe beider Techniken
generiert. Abschließend werden in Kapitel fünf die gewonnenen Ergebnisse
diskutiert und die wichtigsten Unterschiede beider Welten dargelegt.
2
2. Die betriebliche Standardsoftware SAP R/3
2.1 Technischer Aufbau
SAP R/3 stellt ein Client-Server System dar, welches dreistufig aufgebaut ist:
Abb. 1: Schichten des R/3 Systems
Präsentationsschicht
Die Präsentationsschicht enthält Software-Komponenten die R/3-spezifisch SAP
GUI (Graphical User Interface) genannt werden. Die Präsentationsschicht bildet die
Schnittstelle zu den Benutzern. Durch ihre SAP GUI-Komponenten bietet sie eine
intuitiv bedienbare grafische Oberfläche, über die Benutzer Daten eingeben oder
Antworten in Form von Texten oder Grafiken erhalten. Die Präsentationsschicht
sendet diese Daten an die Applikationsschicht bzw. empfängt sie von dieser. Eine
SAP GUI Komponente ist während ihrer Laufzeit immer fest mit einer
Benutzeranmeldung an das R/3-System verknüpft.
Applikationsschicht
Die Softwarekomponenten der Applikationsschicht bestehen aus einem oder
mehreren Applikationsservern und ein Message Server. Jeder Applikationsserver
stellt eine Reihe von Diensten zum Betrieb des R/3-Systems zur Verfügung. Im
3
Prinzip genügt ein einziger Applikationsserver, um ein R/3-System zu betreiben. In
der Praxis werden die Dienste meistens auf mehrere Applikationsserver verteilt, so
dass nicht jeder Applikationsserver jeden Dienst zur Verfügung stellt. Der Message
Server realisiert die Kommunikation zwischen den Applikationsservern. Über den
Message Server können Aufträge zwischen den Applikationsservern innerhalb eines
R/3-Systems weitergeleitetet werden. Weiterhin enthält der Message Server
Informationen über die Gruppierung von Applikationsservern und die aktuelle
Lastverteilung innerhalb der Gruppen und kann so die Anmeldung von Benutzern
entsprechend beeinflussen.
Datenbankschicht
Ein zentrales Datenbanksystem, das alle Daten des R/3-Systems verwaltet, bildet die
Datenbankschicht. Das zentrale Datenbanksystem besteht aus den Komponenten
Datenbank Management System (DBMS) und der eigentlichen Datenbank
(Datenbestand). SAP stellt selbst kein eigenes Datenbanksystem zur Verfügung1 .
Die Datenbank enthält nicht nur die betriebswirtschaftlichen Daten (Stammdaten und
Bewegungsdaten) der Anwendungsprogramme, sondern ist die zentrale Datenablage
für das gesamte R/3-System. Insbesondere enthält die Datenbank also auch
Steuerungs- und Customizingdaten, die das Verhalten des R/3-Systems festlegen,
sowie die Anwendungsprogramme selbst. Anwendungsprogramme bestehen aus
Programmtexten, Bildschirmdefinitionen, Menüs, Funktionsbausteinen usw. Diese
Komponenten werden in einem speziellen Teil der Datenbank abgespeichert, der
R/3-Repository genannt wird, und heißen deshalb auch Repository-Objekte.
Repository-Objekte werden mit der ABAP Workbench bearbeitet.
1
Das R/3-System unterstützt stattdessen folgende Datenbanksysteme anderer Hersteller: ADABAS D,
DB2/400 (auf AS/400), DB2/Common Server, DB2/MVS,INFORMIX, Microsoft SQL Server,
ORACLE und ORACLE Parallel Server.
4
2.2 Datenbankzugriffe in R/3
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/3Systems in herstellerspezifische Standard SQL-Anweisungen. Hierfür enthält die
Datenbankschnittstelle
Unterschiede
eine
zwischen
datenbankabhängige
den
Komponente,
Datenbanksystemen
vor
welche
die
Rest
der
dem
Datenbankschnittstelle verbirgt. Diese Komponente wird bei der Installation des R/3Systems entsprechend der verwendeten Datenbank ausgewählt.
Abb. 2: Datenbankzugriff im R/3
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.
5
Open SQL umfasst 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 PufferManagement
in
festgelegten
Zeitabschnitten
synchronisiert.
Bei
der
Datenbankpufferung muss man also in Kauf nehmen, dass 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 vo n 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.
6
3. ABAP und Quick View
Wie bereits erwähnt, erfolgen die Zugriffe auf die Datenbank ausschließlich über
ABAP Programme. Direkte SQL - Statements können innerhalb R/3 nicht ausgeführt
werden. Hierdurch entstünde die Möglichkeit, das interne Berechtigungskonzept zu
umgehen.
Für
das
Erstellen
solcher
Abfragen
(REPORTS)
steht
die
Programmiersprache ABAP (Advanced Business Application Programming) zur
Verfügung. Bedingt durch die dreistufige Client-Server Architektur werden zudem
die Daten nie direkt von der Datenbank and das GUI übermittelt. Vielmehr werden
die
Anfrageergebnisse
auf
dem
Applikationsserver
in
internen
Tabellen
zwischengespeichert. Um dies zu ermöglichen, müssen diese interne Tabellen im
Programm definiert werden.
Je nach Einstellungen des User Interface werden die gespeicherten Daten dann auf
einmal oder in Schüben zu dem Anwender übertragen.
Quick Views setzen auf dieser Struktur auf. In Verbindung mit einer grafische n
Benutzeroberfläche können per Drag & Drop einfache Berichte erzeugt werden. Auf
beide Techniken wird im Folgenden genauer eingegangen.
3.1 Die Programmiersprache ABAP
Ein einfaches ABAP Programm zur Datenbankabfrage 2 besitzt folgende Struktur:
•
Datendefinition
•
Datenbankabfrage
•
Ausgaberoutine
In der Datendefinition werden die interne n Tabellen definiert, die die Daten, die über
eine SQL Anweisung von der Datenbank geholt werden, zwischenspeichern. Diese
Daten befinden sich dann im Speicher des Applikationsservers. Die Datendefinition
2
ABAP Programme gehen weit über reine Datenbankabfragen hinaus. Es ist möglich komplette
Applikationen (incl. Masken, Berechtigungen, komplexe Berechnungen) zu implementieren, die keine
einzige Datenbankabfrage besitzen.
7
sorgt auch dafür, dass genügend Arbeitsspeicher für die zu empfangenden Daten
reserviert wird.
Im zweiten Teil des ABAP Programms erfolgt der Zugriff auf die Datenbank. Hierzu
steht sowohl die Open SQL, als auch die native SQL Syntax zur Verfügung.
Nachdem die Daten auf dem Applikationsserver nun zur Verfügung stehen, können
sie an den Benutzer übermittelt werden. Der dritte Teil des ABAP Programms
definiert die Art und Weise, wie die Daten auf dem Bildschirm dargestellt werden.
Neben der Darstellung kann auch eine komplette Programmlogik definiert werden,
die Daten basierend auf weiteren Benutzereingaben verändert.
Um den laufenden Betrieb einer SAP R/3 Anwendung im produktiven System durch
fehlerhafte Programme nicht zu beeinträchtigen, werden in der Regel mehrere
Instanzen eines R/3 Systems implementiert. Ein System zum Erstellen der
Programme (Entwicklungssystem), ein Integrationssystem (zum Testen) und das
eigentliche Produktionssystem. Die im Entwicklungssystem erstellten Programme
werden über ein sogenanntes Transportsystem zunächst in das Testsystem und nach
erfolgreichem Test in das Produktionssystem eingecheckt.
3.2 SAP Quick View
Im Unterschied zu der Programmiersprache ABAP wird bei den Quick Views nicht
ein
Programm
mittels
Zeileneditors sondern
mit
Hilfe
einer
grafischen
Benutzeroberfläche erstellt. Über Auswahlboxen können per Drag & Drop einfache
Berichte erzeugt werden. Die aufgezeichneten Benutzeraktionen werden dann vom
System in ABAP - Code umgewandelt. Dieser Code ist zwar innerhalb der
Entwicklungsumgebung von R/3 zugänglich, sollte aber nicht manuell editiert
werden, da sonst die Administration und Pflege des Quick Views nicht mehr möglich
ist. Quick Views sind primär für einmalige ad hoc Abfragen gedacht. Sie werden
meist direkt im Produktionssystem vom Endanwender generiert.
Das folgende Kapitel vergleicht beide Techniken exemplarisch anhand eines
konkreten Beispiels.
8
4. Fallbeispiel
4.1 Einleitung
Um
die Reportingmöglichkeiten von ABAP REPORTS und SAP Quick Views
anschaulich vergleichen zu können, soll das Vorgehen beider Werkzeuge an einer
Beispielimplementierung erläutert werden. Benutzt wird dazu das Datenmodel eines
Flugplans. Annhand der verwendeten Tabellen werden dann Reports mit Hilfe von
ABAP und SAP Quick Views erstellt. Abschließend erfolgt eine Gegenüberstellung
beider Werkzeuge.
4.2 Datenmodel
Das Flugdatenmodel besteht aus drei Tabellen:
•
Flugplan (SPFLI), indem die möglichen Verbindungen eingetragen sind
•
Flüge (SFLIGHT), indem die tatsächlich stattfindenden Füge ausgeprägt
sind
•
und die Tabelle Flugbuchung (SBOOK) in der die Passagierinformationen für
die auf SFLIGHT referenzierenden Flüge stehen
Abb. 3: Flugdatenmodell
9
4.3 SQL - Anweisungen und deren Umsetzung auf ABAP Open SQL
Anhand des oben vorgestellten Datenmodells soll nun die folgende SQL Abfrage und
deren Umsetzung in Open SQL betrachtet werden:
SELECT FLDATE, CITYFROM,CITYTO
FROM SPFLI, SFLIGHT
WHERE SPFLI.CARRID = SFLIGHT.CARRID
AND SFLI.CONNID = SFLIGHT.CONNID
AND SPFLI.CITYFROM = 'FRANKFURT"
Die obige SQL Anweisung liefert alle stattfindenden Flüge vom Airport Frankfurt
zurück. Um diese Informationen im SAP R/3 zu extrahieren, muss hierzu zunächst
ein ABAP Programm angelegt werden:
Abb.4: Fallbeispiel: ABAP Report
10
Zu Beginn eines jeden Programms sollte der Programmierer mit Hilfe von
Kommentaren einige Angaben zur Aufgabe des Programms machen. Danach wird
mit Hilfe des Schlüsselworts REPORT der nachfolgende Text als Pogrammcode
bekannt gemacht.
Daran anschließend werden globale Daten deklariert 3 . Für unsere Abfrage benötigen
wir eine interne Tabelle, die aus 3 Spalten der Datenbanktabelle SPFLI und einer
Spalte der Datenbanktabelle SFLIGHT besteht. Durch das Schlüsselwort LIKE kann
die Datenstruktur von bestehenden Feldern übernommen werden.
Der dem Datenteil folgende Programmteil enthält die SAP R/3 Open SQL Anfrage.
Der in SQL übliche Punkt, der Attribute mit Hilfe der zugehörigen Tabelle
vollständig qualifiziert, wird in ABAP durch eine Tilde realisiert.
Die durch den SQL Ausdruck von der Datenbank zurückgelieferten Ergebnisse
werden auf dem Applikationsserver im Hauptspeicher gehalten. Für die
Übermittlung an das GUI stehen Standardausgaben zur Verfügung. In unserem
Beispiel sorgt die LOOP Schleife für das seque ntielle Lesen der internen Tabelle und
die Übermittlung der Daten an den Benutzer. Wird das Programm ausgeführt erhält
man folgende Ausgabe:
Abb. 5: Standardlistenausgabe
3
ABAP bietet die Möglichkeit innerhalb von Programmblöcken lokale Daten mit verkürzter
Lebensdauer zu definieren. Auf diese Technik wird im folgenden nicht näher eingegangen.
11
In der Praxis ist ein solcher Bericht recht unflexibel, da die Selektionsbedingungen
(Auswahl des Abflughafens) hart im Programm codiert sind. Der Benutzer möchte
oftmals die relevanten Kriterien selbst bestimmen. Eine Abänderung des Programms
ist mit Hilfe der von SAP bereitgestellten Entwicklungsumgebung möglich.
Zusätzlich wird bei Programmänderungen eine Versionsverwaltung genutzt. Somit
lassen
sich
Änderungen
leicht
zurücksetzen,
ohne
mit
unterschiedlichen
Programmnamen arbeiten zu müssen. Im folgenden wird das Programm so
abgeändert, dass der Abflughafe n und der Maximalpreis vom Endbenutzer selbst
definiert werden kann. Zusätzlich soll über ein Icon die Platzverfügbarkeit grafisch
angezeigt
werden.
Die
Einbindung
solcher
Symbole
erfolgt
über
eine
Grafikbibliothek, die mittels eines INCLUDE geladen wird. Die notwendige
Anzeigelogik wird im Ausgabeteil implementiert.
Um Selektionskriterien zur Laufzeit des Programms eingeben zu können müssen
lediglich
Variablen
vom
Typ
PARAMETER
definiert
werden.
Die
Laufzeitumgebung stellt dann Standardeingabemasken zur Verfügung, die auf den
jeweils gültigen Wertevorrat der Daten gegenprüfen. Hierdurch können nur Werte
ausgewählt werden die sich tatsächlich in der Datenbasis befinden. Abb. 6 zeigt die
von SAP zur Verfügung gestellte Entwicklungsumgebung und den geänderten
Programmcode:
Abb. 6: ABAP Entwicklungsumgebung und Quellcode
12
Nach Programmstart wird zunächst ein Standardeingabefenster generiert, um die
Selektionsparameter eingeben zu können:
Abb. 7: Standardeingabefenster
Das Ergebnis der Abfrage erscheint entsprechend der Programmänderungen:
Abb. 8: Modifizierte Standardausgabe
Um die Kosten der SQL Abfrage abzuschätzen stellt die R/3 Entwicklungsumgebung
die
Möglichkeit
eines
Datenbanktrace zur
Verfügung.
Hierzu
wird
vor
Programmstart der Trace aktiviert, das Programm wird ausgeführt und der Trace
wird ausgelesen:
Abb. 9: SQL Trace
13
Der Trace misst den Aufwand der Abfrage auf der Datenbank . Somit können bei
langen Laufzeiten Informationen über die Ursachen angezeigt werden. Diese können
dann eventuell durch Umformulierung der SQL - Abfrage oder durch einen
zusätzlich angelegten Index beseitigt werden.
4.4 SQL - Anweisungen und deren Umsetzung auf Quick Views
Die bereits in 4.3 SQL - Abfrage soll nun analog mit Hilfe eines Quick Views
realisiert werden:
SELECT FLDATE, CITYFROM,CITYTO
FROM SPFLI, SFLIGHT
WHERE SPFLI.CARRID = SFLIGHT.CARRID
AND SFLI.CONNID = SFLIGHT.CONNID
AND SPFLI.CITYFROM = 'FRANKFURT'
Mit Hilfe der grafischen Benutzeroberfläche der Entwicklungsumgebung ist dies sehr
intuitiv möglich. Zunächst werden die Tabellen aus dem ABAP eingefügt. R/3
erkennt automatisch die Schlüsselbeziehungen und zeigt diese an:
Abb. 10: Quick View Entwicklungsumgebung / Join
14
Über die Eigenschaften des Joins werden dann sowohl die Selektionsfelder als auch
die Ausgabefelder ausgewählt:
Abb. 11: Quick View Entwicklungsumgebung / Feldauswahl
Nachdem alle Felder grafisch ausgewählt wurden, kann der Quick View
abgespeichert werden. Nachträglich kann der Quick View um weitere Felder
erweitert werden. Eine Versionierung ist nicht möglich. Hierzu muss man mit
unterschiedlichen Quick View Namen arbeiten. Die Implementierung einer
speziellen Applikationslogik, wie in Abb. 7 dargestellt, ist mit Quick Views nicht
möglich. Im Gegensatz zu ABAP können mit Hilfe von Quick Views auch nur inner
Joins implementiert werden.
15
5. Abschließender Vergleich
Die vorliegende Arbeit untersuchte anhand eines Fallbeispiels die Möglichkeit mit
Hilfe der betriebswirtschaftlichen Anwendungssoftware SAP R/3 eigene SQL
Abfragen zu implementieren. Betrachtet wurden die Programmiersprache ABAP und
die Quick Views.
Mit der Programmiersprache ABAP und den Quick Views stellt die SAP R/3
Umgebung Werkzeuge zur Erstellung benutzerdefinierter Berichte zur Verfügung.
Beide Möglichkeiten wurden für unterschiedliche Anforderungen implementiert. Die
Programmiersprache ABAP stellt die Bausteine zur Verfügung aus denen 95% des
R/3 Systems bestehen. Dementsprechend vielfältig sind die Anwendungsmöglichkeiten. Die Entwicklungsumgebung von ABAP erlaubt Versionierung, Performance
Trace und stellt zahlreiche Bibliotheken zur Verfügung. Programmiert werden kann
allerdings erst effizient nach einem längeren ABAP Kurs.
ABAP Berichte sind demnach ausgelegt auf die Erstellung zentraler Auswertungen
die im Standardsystem nicht Verfügbar sind. Diese Berichte werden von mehreren
Personen benutzt und müssen demnach vom Programmierer optimiert werden.
Im Unterschied dazu werden die Quick Views intuitiv über eine grafische
Benutzeroberfläche per drag and drop erstellt. Quick Views erlauben nur einfache
Join Bedingungen. Es ist bei den Quick Views nicht möglich eine erweiterte
Anwendungslogik wie etwa bei ABAP hinzuzufügen. Allerdings sind mit Hilfe von
Quick Views sehr schnell Abfragen zu implementieren. Problematisch bei den Quick
Views ist vor allem die mangelnde Optimiermöglichkeit. Für den Endbenutzer, der
den Quick View erstellt, sind die Kosten seiner Abfrage nicht transparent. Quick
Views sollten deshalb nur in Ausnahmenfällen oder nur zu einmalig benötigten "ad
hoc" Abfragen benutzt werden.
16
Herunterladen