sub-tract

Kurzübersicht

Auf die Tabellen eines SAP/3 kann man natürlich über den Datenbankadapter der darunterliegenden SQL Datenbank zugreifen – in aller Regel ist dies aber, u.a. wegen damit fehlender Berechtigungsprüfung, tabu.

sub-tract erlaubt den Zugriff auf die SAP Daten über RFC-Aufrufe (Abap-Programme). Damit bleibt eine Berechtigungsprüfung gewährleistet.

sub-tract stellt eine „Black-Box“ dar, sie sich nach außen wie ein üblicher Datenbankadapter SQL-Anweisungen versteht und Ergebnismengen zurückliefert. Hierin unterscheidet sich sub-tract deutlich im Komfort von vielen anderen RFC-Lösungen am Markt.

Hintergrund

Für die Zusammenführung der Daten aus den verschiedensten Tabellen im SAP zu einem Data Warehouse gibt es im SAP (NetWeaver, R/3) das Modul BW.

Oftmals ergibt sich die Anforderung, gerade in heterogenen Umgebungen, die Daten nicht innerhalb des SAP mit BW zu verdichten, sondern das Data Warehouse außerhalb der SAP-Umgebung aufzubauen.

Für ein solches Szenario müssen logischerweise Massendaten aus dem SAP gelesen und in das Zielsystem übertragen werden. Keine leichte Aufgabe, denn der Zugriff auf SAP Daten (Tabellen) erfolgt nicht über einen Datenbankadapter (Sicherheitsproblem), vielmehr sind Abap Programme per Remote-Function-Call (RFC) aufzurufen um die notwendigen Daten zu beschaffen.

Dieser Umweg erlaubt zum einen nicht die Verwendung üblicher SQL-Abfragen und ist zum anderen, insbesondere bei einer Übertragung einer großer Menge von Datensätze, nicht performand.

sub-tract

sub-tract löst die Probleme des Datenbankzugriffs über RFC. Ein interner Cache puffert die zu beschaffenden Daten und erlaubt damit auch die Übertragung von Millionen von Sätzen ohne die sonstigen (teils dramatischen) Performance-Engpässe.

Einfache Lösungen die auf den von der SAP zur Verfügung gestellten RFC-Baustein RFC_READ_TABLE basieren arbeiten zuverlässig bei der Beschaffung einiger tausend Datensätze. Bei einer Übertragung von bspw. 800.000 Datensätze sind diese in der Realität nicht wirklich einsetzbar, es werden 1,5 Stunden für die Beschaffung der Daten benötigt – gegenüber 2,5 Minuten mit sub-tract!

Als weiteren Komfort bietet sub-tract die Möglichkeit, die Datenabfragen per üblicher SQL Anfragen zu steuern. Die SQL Statements werden dabei von einem Parser analysiert und in die notwendige Bestückung der Parameter des Funktionsbausteins übersetzt. Geliefert werden die Ergebnisse der Abfrage, sowie deren Metadaten, ebenfalls in einer für SQL üblichen Verfahrensweise.

Unter Java steht sogar eine JDBC-Adapter zur Verfügung, der letztlich den Zugriff auf die SAP Daten über RFC-Aufrufe genauso wie eine Abfragen auf alle üblichen SQL Datenbanken darstellt.

Last, not least, erlaubt sub-tract die Verwendung von Joins. Damit können mit einer Abfrage die zusammengehörigen Ergebnisse aus mehreren Tabellen zurückgeliefert werden. Diese Vorgehensweise erlaubt ein weiteres Plus an Performance gegenüber den ansonsten notwendigen mehrfachen Abfragen.

sub-tract erlaubt die folgenden SQL Abfragen:

SELECT [TOP n] [DISCTINCT] *|feld [AS alias][, ...]
 FROM table [[AS] alias]
 [[LEFT|RIGHT] [INNER|OUTER] JOIN table [[AS] alias]
 ON field1 operand [field2|value] [AND...]
 [...]]
 [WHERE [(] field [NOT] operand value [)] [AND|OR ...]
 [ORDER BY field [ASCENDING|ASC|DESCENDING|DESC][, ...]]

SELECT COUNT(*) FROM table

field: name qual.name qual~name alias (order only)
operand: = != <> < <= > >= IN
value: 1 12 123 'A' 'BB' 'CCC' field (value[ ,...])

Weitere Informationen

Sicherlich sind auf dieser Informationsseite nicht alle für Sie spezifischen Fragestellungen beantwortet worden.