sub-tract: ODBC- / JDBC-Adapter für SAP-Daten

Kurzübersicht

Auf die Tabellen von SAP S/4HANA oder NetWeaver 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 die Anwendung (Abap-Programme). Damit bleiben der Zugriff auf den vorgesehenen Mandanten beschränkt und die Standard-Berechtigungsprüfung auf Tabellenebene gewährleistet.

sub-tract stellt eine „Black-Box“ dar, sie sich nach außen wie ein Datenbankadapter SQL-Anweisungen versteht, im SAP ausführt und das Ergebnis zurückliefert. Der Zugriff auf die SAP-Daten gestaltet sich also fast identisch, als würde direkt auf die darunterliegende SQL-Datenbank zugegriffen werden.

Hintergrund

Häufig kommen im Umfeld von SAP-Installationen spezialisierte Lösungen anderer Hersteller zum Einsatz. Solche Produkte laufen häufig nicht im SAP-Technologie-Stack (Abap) und können somit auch nicht direkt auf die SAP-Daten zugreifen.

Egal ob es bei den einzelnen Lösungen nur um den Zugriff auf eine Handvoll Stammdaten oder um die Übertragung von Millionen von Bewegungsdaten in ein BI geht, in vielen Fällen erfolgt hierzu der Zugriff auf die Daten über einen standardisierten Datenbank-Adapter direkt auf die Datenbank-Tabellen des jeweiligen ERP-Systems. Im SAP ist das aus o.g. Gründen in aller Regel nicht möglich.

sub-tract

sub-tract stellt für solche Anwendungen einen standardisierten Datenbank-Adapter als ODBC- und als JDBC-Adapter bereit. Damit kann auf SAP-Daten genauso wie auf eine sonstige Datenbank zugegriffen werden. Der Adapter kann von damit praktisch von allen Software-Technologien und damit potentiell in jeder Applikation zum Einsatz gelangen.

sub-tract benötigt ein Stück Software auf dem SAP-Server (sub-tract Server in Abap) und auch auf einem Windows-System (sub-tract Client). Von letzterem ausgehend, werden die notwendigen Adapter für die unterschiedlichen Technologien bereitgestellt.

Der SAP-Standard sorgt für die Einschränkung der Daten auf den vorgesehenen Mandaten und überprüft ob die Tabellen überhaupt eingesehen werden dürfen. sub-tract erlaubt zudem weitere Einschränkungen des Zugriffs, wie einen Filter auf Feldebene, bspw. um den Zugriff auf einen vorgegebenen Buchungskreise einzuschränken.

sub-tract ist performant und erlaubt auch den Transfer von zig Millionen Datensätze, bspw. für spezialisierte BI-Systeme. Wo es auf optimalsten Durchsatz ankommt, bewährt sich der native Adapter von sub-tract. Auch hier werden die Daten weiterhin per SQL-Syntax angefordert, die Verarbeitung erfolgt aber per nativem API und damit einen Tick schneller.

Für Anwendungen die live auf ein paar SAP-Daten per REST / JSON zugreifen wollen, gibt es eine wesentlich schlankere Lösung. Hier kann auf den sub-tract Client verzichtet werden, es gibt hierzu einen passenden Adapter direkt im sub-tract Server.

Der Adapter unterstützt weitestgehend alle SELECT-Anweisungen wie von der Abap-Programmierung bekannt. Darüber hinaus werden einzelne, für SAP nicht gültige, aber gängige SQL-Schreibweisen unterstützt. Hier die Übersicht dazu “was alles geht”:

SELECT [TOP n] [DISCTINCT] * | field|func()|value  [&& field|func()|value]
            [CASE WHEN ... THEN ... [ELSE ...] END] [[AS] alias][, ...]
          FROM table [[AS] alias]
          [[INNER] JOIN | LEFT|RIGHT [OUTER] JOIN table [[AS] alias]
            ON field|func()|value operand field1|func()|value [AND|OR ...]
              [...]]
          [WHERE field|func()|value [NOT] operand field|func()|value |
          [NOT] EXISTS(SELECT ...) [AND|OR ...]]
          [GROUP BY field [, ...]]
          [HAVING [(] func(field) [NOT] operand value [)] [AND|OR ...]]
          [ORDER BY field[ASCENDING|ASC|DESCENDING|DESC][, ...]]
       func   : func()|CAST(field|func() AS type
                CONCAT|CONCAT_WITH_SPACE|INSTR|LEFT|LENGTH|LPAD|LTRIM|
                REPLACE|RIGHT|RPAD|RTRIM|SUBSTRING|
                ABS|CEIL|DIV|DIVISION|FLOOR|MOD|ROUND|
                AVG|MAX||MIN|SUM|COUNT
       field  : name qual.name qual~name alias (order only)
       alias  : tablename|fieldname|"FieldName"
       operand: = != <> < <= > >= IN
       value  : 1 12 123 'A' 'BB' 'CCC' (value [,...])
       &&     : && or ||
       CAST   : CAST(field|func() AS CHAR[(len)]|DEC[(len,[decimals])]

Weitere Informationen

Sicherlich sind auf dieser Informationsseite nicht alle für Sie spezifischen Fragestellungen beantwortet worden. Lassen Sie uns diese am besten in einem kurzen Telefonat klären.

Ihre Anwendung bewegt sich im Umfeld eines Microsoft SQL Server? Auch der kann über den ODBC-Adapter auf SAP-Daten zugreifen. Mehr Infos dazu hier

Ihre Anwendung kann mit JSON REST Webservices umgehen und braucht nicht mehr als 1.000 Datensätze in einem Rutsch? Hierfür gibt es auch eine leichtgewichtigere Lösung: sub-tract JSON