Der folgende Abschnitt beschreibt die Anwendung des Integrationstyps SAP Table and Views.

Warnung! Fehlende Berechtigungen Um die Table Komponente zu verwenden, muss der Zugriff auf die entsprechenden Berechtigungsobjekte (RFC) in SAP verfügbar sein. Weitere Informationen finden Sie im Knowledge-Base-Artikel SAP Zugriffsrechte: Table.

Eine SAP Tabelle oder View finden #

  1. Legen Sie einen neuen Service vom Typ SAP Table and Views an.
  2. Klicken Sie auf [Save and edit]. Das Search SAP Table or View Menü öffnet sich.
  3. Geben Sie den Namen einer Tabelle oder View in das Feld Search by name (1) ein oder suchen Sie nach einer Tabellenbeschreibung. Verwenden Sie Wildcards ( * ), falls notwendig.
    SAP-Table-or-Views
  4. Klicken Sie auf [Search] (2), um alle Suchergebnisse anzuzeigen.
  5. Wählen Sie einen Eintrag aus der Liste der Suchergebnisse aus (3). Die Extraktionseinstellungen für SAP Tabelle und Ansichten öffnen sich automatisch.

Einstellungen #

Das SAP Table and Views Menü ist in folgende Unterabschnitte unterteilt:

  • Table or View (4) zeigt den Namen und die Beschreibung der gewählten SAP Tabelle oder View an.
  • Advanced Settings (5) definieren, wie Daten aus SAP extrahiert werden.
  • Output Columns (6) definieren, welche Spalten extrahiert werden.
  • WHERE Clause und WHERE Clause Editor (7) definieren, welche Zeilen extrahiert werden.
  • Joins (8) Verbindet zwei oder mehr Tabellen und extrahiert das Ergebnis der Verknüpfung.

yunIO-table

Table or View #

Der Name und die Beschreibung der gewählten Tabelle oder View werden im Abschnitt Table or View angezeigt.

  • Klicken Sie auf add um dem Service eine Tabelle oder ein View hinzuzufügen.
  • Klicken Sie auf add um eine Tabelle oder ein View vom Service zu entfernen.

Advanced Settings #

Function Name

Bezeichnet den Namen des verwendeten Funktionsbausteins für die Datenextraktion. Dieses Feld wird automatisch befüllt in Abhängigkeit davon, welche Funktionsbausteine auf Ihrem SAP System vorhanden sind. Folgende Funktionsbausteine können zur Extraktion von Tabellen verwendet werden:

  • RFC_READ_TABLE (TAB512)
  • /BODS/RFC_READ_TABLE (TAB2048)
  • /SAPDS/RFC_READ_TABLE (TAB2048)
  • /BODS/RFC_READ_TABLE2
  • /SAPDS/RFC_READ_TABLE2
  • Z_THEO_READ_TABLE
  • THEO/READ_TABLE

Warnung! Duplikate in der Zielumgebung!
Die SAP-Standardbausteine für Tabellenextraktion besitzen keine Pointer-Logik in Tabellenfeldern. Das führt bei großen Tabellen zu schlechter Performance und ggf. zu Duplikaten. Wir empfehlen daher die Verwendung des Funktionsbausteins THEO/READ_TABLE von Theobald Software.

Berücksichtigen Sie die notwendige Berechtigung der SAP-Tabelle:

S_TABU_NAM ACTVT=03; TABLE=ENLFDIR

Row limit

Gibt die maximale Anzahl der extrahierten Datensätze an. 0 extrahiert die komplette Tabelle.

Rows per Package

Gibt die Anzahl der Datensätze an, die pro Datenpaket extrahiert werden. Optimale Werte können durch Ausprobieren gefunden werden. Der Standardwert ist 50000 Zeilen.
Eine Paketgröße (Package Size) zwischen 20000 und 50000 ist sinnvoll für große Datenmengen. 0 bedeutet, es findet keine Pakettierung statt. Keine Pakettierung kann bei Extraktionen großer Datenmengen zu einem RFC-Timeout führen.

Warnung! RFC_ERROR_SYSTEM_FAILURE - No more storage space available for extending an internal table: Um einen Speicherüberlauf auf dem SAP-Quellsystem und einen großen Overhead zu vermeiden, wählen Sie eine für Ihre Speichergröße angemessene Paketgröße.

Run in background job

Durch das Ankreuzen der Checkbox wird die Tabellenextraktion als Hintergrund-Job in SAP ausgeführt. Diese Einstellung ist optional und wird in Kombination mit dem Baustein THEO/READ_TABLE oder Z_THEO_READ_TABLE Version 2.0 unterstützt. Aktivieren Sie diese Einstellung für zeitintensive Extraktionen mit großen Datenmengen, die im Vordergrundmodus in einen Timeout-Fehler (“Time limit exceeded”) laufen können.

Tipp: Die Extraktionsjobs befinden sich im SAP JobLog (SM37) unter dem JobName theo_read_table.

Output Columns #

Sie können entweder alle oder nur einzelne Spalten für die Extraktion auswählen.
Standardmäßig sind alle Spalten für die Tabellenextraktion ausgewählt. Deaktivieren Sie die Felder, die Sie nicht extrahieren möchten.

WHERE Clause #

Mit einer WHERE-Bedingung können Tabelleneinträge gefiltert werden, siehe SAP ABAP Dokumentation: SELECT-WHERE. Geben Sie die WHERE-Bedingung entweder über die manuelle Texteingabe oder über den WHERE Clause Editor ein.

Syntaxregeln

  • Geben Sie ein Leerzeichen vor und nach dem Gleichheitszeichen ein:
    Korrekt: JAHR = ‘1999’
    Falsch: JAHR= ‘1999 ‘, JAHR =’1999’ oder JAHR=’1999’

  • Setzten Sie Fließkommazahlen in einfache Anführungszeichen:
    Korrekt: KMENG > ‘10.3’
    Falsch KMENG > 10.3

Hinweis: Die WHERE-Bedingung benötigt keinen Zeilenumbruch (Return-Taste).

  • Die Werte müssen der internen SAP-Darstellung entsprechen:
    • Das Datum 01.01.1999 hat die interne Darstellung 19990101 (JJJJMMTT)
    • Die Jahresperiode 001.1999 hat die interne Darstellung 1999001 (JJJJPPP)
    • Zahlen müssen führende Nullen enthalten, z.B. hat die Kundennummer 1000 die interne Darstellung 0000001000.
Operator Bedeutung
=, EQ Wahr, wenn der Inhalt von operand1 gleich dem Inhalt von operand2 ist
<>, NE Wahr, wenn der Inhalt von operand1 ungleich dem Inhalt von operand2 ist
<, LT Wahr, wenn der Inhalt von operand1 kleiner als der Inhalt von operand2 ist
>, GT Wahr, wenn der Inhalt von operand1 größer als der Inhalt von operand2 ist
<=, LE Wahr, wenn der Inhalt von operand1 kleiner oder gleich dem Inhalt von operand2 ist
>=, GE Wahr, wenn der Inhalt von operand1 größer oder gleich dem Inhalt von operand2 ist
(NOT) LIKE Wahr, wenn der Wert des Operanden operand1 mit dem Muster im Operanden operand2 übereinstimmt (nicht übereinstimmt).
(NOT) IN Wahr, wenn der Inhalt von operand1 (nicht) Teil des Inhalts von operand2 ist. Operand2 muss vom Typ LIST oder SQL sein.

Für mehr Informationen über die OpenSQL-Syntax, siehe SAP Help: Select WHERE.

Tipp: Um die Leistung beim Extrahieren zu erhöhen, stellen Sie sicher, dass Sie die indizierten Felder als erste Auswahlfilteroperation in der WHERE-Bedingung platzieren.

Die WHERE Clause im SwaggerHub verwenden

Die WHERE-Clause kann im Request Body des Services parametrisiert werden. Beispiel:
WHERE-Clause in SwaggerHub

Für mehr Informationen über die Parametrisierung von Services, siehe folgende Knowledge Base Artikel:

WHERE Clause Editor #

Der WHERE Clause Editor stellt ein Toolkit zur Verfügung, mit dem WHERE-Bedingungen auch ohne nähere Kenntnisse über die Syntax erstellt werden können. Wechseln Sie zum Editor mode, um den WHERE Clause Editor zu öffnen.
WHERE-Clause-Builder-01

Es gibt 2 Optionen, um der WHERE-Bedingung neue Kriterien hinzuzufügen:

  • [Add Criteria] fügt ein einzelnes Kriterium hinzu.
    • Der Standardaufbau für ein Kriterium mit statischen Werten ist [Spalte][Operator][Wert], z.B. MARC~WERKS = 1000.
  • [Add Criteria Group] fügt eine Gruppe hinzu, die mehrere Kriterien beinhaltet.
    • Der Standardaufbau für eine Kriteriengruppe ist ([Spalte1][Operator1][Wert1][Logik][Spalte2][Operator2][Wert2]), z.B. (MARC~PSTAT = ‘L’ OR MARC~PSTAT = ‘LB’).

Tipp: Kombinieren Sie einzelne Kriterien mit Kriteriengruppen, um komplexe Filter zu erstellen.
Beispiel: MARC~WERKS = 1000 AND (MARC~PSTAT = ‘L’ OR MARC~PSTAT = ‘LB’) extrahiert nur Daten, bei denen die Spalte WERKS einen Wert von 1000 hat und die Spalte PSTAT entweder den Wert ‘L’ oder ‘LB’ hat.

Komponenten des WHERE Clause Editors

WHERE-Clause-Builder-Example

Folgende Komponenten stehen im Editor zur Verfügung:

Symbol Komponente Funktion
WHERE-Clause-Builder-Example Delete row löscht ein Kriterium.
WHERE-Clause-Builder-Example Move row up ändert die Reihenfolge der Kriterien. Das ausgewählte Kriterium wird um 1 nach oben verschoben.
Die Reihenfolge der Kriterien kann auch per Drag&Drop bearbeitet werden.
WHERE-Clause-Builder-Example Move row down ändert die Reihenfolge der Kriterien. Das ausgewählte Kriterium wird um 1 nach unten verschoben.
Die Reihenfolge der Kriterien kann auch per Drag&Drop bearbeitet werden.
WHERE-Clause-Builder-Example Column fügt die Spalte einer Tabelle hinzu. Klicken Sie auf die Komponente, um eine Spalte aus den verfügbaren Tabellen auszuwählen.
WHERE-Clause-Builder-Example SQL fügt eine Open SQL-Anweisung hinzu, siehe SAP Dokumentation: Open SQL.
WHERE-Clause-Builder-Example Operator fügt einen Operator hinzu, z.B. =, <, >, etc.
WHERE-Clause-Builder-Example Value fügt einen statischen Wert vom Typ String, Number, Flag oder List hinzu. List bietet einen separaten Editor, um Listen vom Typ String, Number oder Select zu erstellen. Select ermöglicht die Eingabe einer SELECT-Anweisung. Mehr Informationen zu Listen, finden Sie im Knowledge Base Artikel Working with Lists in the WHERE-Clause Editor.
WHERE-Clause-Builder-Example Criteria fügt der WHERE-Bedingung ein neues Kriterium hinzu.
WHERE-Clause-Builder-Example Group fügt der WHERE-Bedingung eine neue Gruppe hinzu.

Hinweis: Wenn neue Kriterien hinzugefügt oder bearbeitet werden, werden nur relevante Komponenten angezeigt. Beispiel: Operator ist nur verfügbar, wenn eine Spalte oder eine SQL-Anweisung existiert, auf die ein Operator angewendet werden kann.

Komponenten Bearbeiten und Löschen

  • Klicken Sie auf eine vorhandene Komponente, um sie zu bearbeiten. Alle grün markierten Flächen können bearbeitet werden.
  • Klicken Sie auf das WHERE-Clause-Builder-Example Icon, das eingeblendet wird, wenn Sie über die Komponente hovern, um die Komponente zu löschen.

Verwendung von SAP Systemfeldern #

Hinweis: Systemfelder können nur mit SAP NW 7.4 SP5 oder höher und mit den Funktionsbausteinen Z_THEO_READ_TABLE oder /THEO/READ_TABLE verwendet werden.

Sie können SAP Systemfelder für Datum und Zeit verwenden.

Beispiel:

  1. Im WHERE-Clause-Editor wählen Sie eine Spalte vom Typ Datum aus hier: BUDAT. img-01
  2. Löschen Sie das Kriterium “Value” und verwenden Sie das Kriterium “SQL”. img-02
  3. Innerhalb des Kriteriums “SQL” verwenden Sie die unterstützten Systemfelder für Datum und Zeit mit einem vorangestellten “@”-Zeichen, hier: @sy-datum. img-03
  4. Klicken Sie auf [Load Live Preview], um das Ergebnis zu überprüfen.
  5. Führen Sie eine Extraktion aus.

Hinweis: Die WHERE-Bedingung wird überschrieben, wenn eine WHERE-Bedingung manuell in das dafür vorgesehene Textfeld eingetragen wird, bzw. wenn beim Aufruf des Service’ eine WHERE-Bedingung in dem Body der Service-Definition übergeben wird.

Joins #

Die Join-Funktionalität ermöglicht das Verknüpfen von zwei oder mehr Tabellen und das Extrahieren des Verknüpfungsergebnisses. Um die Extraktion durchzuführen, wird der entsprechende SQL-Befehl dynamisch generiert und der Join auf dem SAP-Server ausgeführt.

Mögliche Szenarien sind die Verknüpfung von Tabellen für Kopf- und Positionsdaten oder Tabellen für Stammdaten und Texte.

Unterstützte Join-Typen:

  • Inner Join
  • Left Outer Join, auch als Left Join bezeichnet.

Weitere Informationen über Join-Typen finden Sie in der SAP-Online-Help.

Note: Um die Join-Funktionalität zu verwenden, muss der Funktionsbaustein /THEO/READ_TABLE in SAP verfügbar sein.

Hinweis: Das Joinen von Cluster- oder Pool-Tabellen wird nicht unterstützt. Cluster- und Pool-Tabellen müssen einzeln extrahiert und im Datenziel miteinander verknüpft (gejoint) werden.

Tabellen Joinen

Das folgende Beispiel zeigt, wie die Tabellen KNA1 und KNVV verknüpft werden.

  1. Suchen Sie mit Hilfe von Look up (1) nach Tabellen, die Sie joinen möchten,z.B. KNA1 und KNVV.
    table-joins
  2. Definieren Sie die Spalten für die Extraktion Output Columns (2) für beide Tabellen.
  3. Optional:Definieren Sie eine WHERE-Bedingung für die Tabellen.
  4. Klicken Sie auf [Add join] (3). Der Join Editor wird geöffnet.
    join-editor 5.Ändern Sie bei Bedarf die Standardwerte von Left Table, Right Table und Join Type.
  5. Klicke Sie auf [Join/Add]. Dem Join wird eine neue Join-Bedingung hinzugefügt.
  6. Wählen Sie im Feld Left Table und im Feld Right Table eine Tabellenspalte aus, um den Tabelleninhalt abzubilden. Es ist möglich, mehrere Join-Bedingungen hinzuzufügen.
  7. Klicken Sie auf [OK], um die Verknüpfung zu speichern.

Empfehlung: Um Performance-Probleme zu vermeiden, joinen Sie nicht mehr als fünf Tabellen.

Tipp: Verschiedene Tabellen können identische Feldnamen haben. Die Definition einer Join-Bedingung auf der Grundlage der identischen Feldnamen liefert nicht immer das erwartete Ergebnis (z.B. VBAK~VBELN <> LIPS~VBELN). Stellen Sie sicher, dass die Felder, die Sie in einer Join-Bedingung verwenden, den gleichen Inhalt/die gleichen Daten enthalten.

SAP Customizing #

Hinweis: Anpassungen im SAP-System sind optional. Die Installation des Funktionsbausteins /THEO/READ_TABLE ist empfohlen.

Einschränkungen von RFC_READ_TABLE #

Insbesondere bei älteren SAP Releases bestehen einige Einschränkungen bei der Extraktion von Tabellen wenn der SAP Standardfunktionsbaustein (RFC_READ_TABLE) verwendet wird:

  • Die Gesamtbreite der zu extrahierenden Spalten darf 512 Bytes nicht überschreiten.
  • Andere Einschränkungen existieren abhängig von der SAP-Version. Fehler können auftreten bei der Extraktion von Tabellen, die eine oder mehrere Spalten vom Typ f (FLTP, floating point), DEC (Decimal und Prozentzahl z.B.) oder x (RAW, LRAW) haben.
  • Schlechte Extraktionsperformance bei Extraktion großer Tabellen.

Um die o.g. Einschränkungen zu umgehen, installieren Sie den Z-Funktionsbaustein /THEO/READ_TABLE von Theobald Software auf Ihrem SAP-System.

Warnung! Error while converting value ‘*.0’ of row 1530, column 3
Der SAP-Standardbaustein RFC_READ_TABLE zur Tabellenextraktion kann den ABAP-Datentyp DEC nur bedingt extrahieren. Dies führt zu dem genannten Beispielfehler bei der Extraktion. Verwenden Sie den Funktionsbaustein von Theobald Software /THEO/READ_TABLE.

Installation von /THEO/READ_TABLE #

Ein SAP-Transportauftrag für die Installation des Funktionsbausteins wird im Installationsverzeichnis der Software mitgeliefert: C:\Program Files\Theobald Software\yunIO\ABAP\.
Der Transportauftrag muss von Ihrem SAP-Basis-Team in SAP importiert werden.

Es gibt zwei Funktionsbausteine für Tabellen-Extraktionen:

  • /THEO/READ_TABLE
  • Z_THEO_READ_TABLE

Wir empfehlen die Installation des aktuellen Funktionsbausteins THEO/READ_TABLE:

  • THEO_READ_TABLE_740SP05.zip - kompatibel mit ABAP Version 7.40 SP05 und höher
  • THEO_READ_TABLE_710.zip - kompatibel mit ABAP Version 7.10 und höher
  • THEO_READ_TABLE_640.zip - kompatibel mit ABAP Versionen von 6.40 bis 7.03
  • THEO_READ_TABLE_46C.zip - kompatibel mit ABAP Versionen von 4.6C bis 6.40

Hinweis: Lesen Sie die README.pdf, die sich im Installationsordner (z.B.C:\Program Files\XtractProduct\ABAP\README.pdf) befindet, bevor Sie den Z-Funktionsbaustein installieren.

Beim Einspielen der Z_THEO_READ_TABLE-transport-before-740SP05 auf älteren SAP-Releases kann ein Syntaxfehler auftreten. Wenden Sie sich an den Theobald Support und senden Sie die dedizierte Fehlermeldung.

Testen des Bausteins in SAP

Warnung! Erzeugung von Short Dumps
Die Funktionsbausteine /THEO/READ_TABLE und Z_THEO_READ_TABLE können wegen ihrer Callback-Funktionalität nur von Theobald-Produkten gestartet werden. Das Testen der Bausteine in einem SAP-System ist daher nicht möglich.

Unterstützte Funktionen #

Unterstützte Funktionen THEO_READ_TABLE_740SP05 THEO_READ_TABLE_710 THEO_READ_TABLE_640 THEO_READ_TABLE_46C
WHERE Bedingung x x x x
HAVING Bedingung x x x -
INNER JOIN x x x x
LEFT OUTER JOIN x x x x
Konvertierungs-Exits x x x x
Aggregatfunktionen x x x x
SQL Ausdrücke (Subqueries) x - - -
Hintergrundjobs x x - -