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:

yunIO-table

Table or View #

Der Name und die Beschreibung der gewählten Tabelle oder View werden im Abschnitt Table or View angezeigt.
Um eine neue Tabelle oder View auszuwählen, klicken Sie auf Select in der oberen rechten Ecke des Abschnitts.

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

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 Z_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 Z_THEO_READ_TABLE ab 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 #

Verwenden Sie eine WHERE-Bedingung, um Ihre Daten zu filtern.

Syntaxregeln

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

  • Setzten Sie die 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 (YYYYYPPP)
    • 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) BETWEEN Wahr, wenn der Inhalt des Operanden operand (nicht) zwischen den Werten der Operanden operand1 und operand2 liegt.

Weitere Informationen über die OpenSQL-Syntax erhalten Sie auf der SAP Helpseite - Select WHERE.

Die WHERE Clause im Swagger Inspector verwenden

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

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. 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 SQL-Anweisung hinzu.
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.
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.

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.

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.

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 Z_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 Z_THEO_READ_TABLE.

Installation von Z_THEO_READ_TABLE #

Ein SAP-Transportauftrag für die Installation des Funktionsbausteins wird im Installationsverzeichnis der Software mitgeliefert: C:\ProgramFiles\[XtractProduct]\ABAP\.
Es gibt zwei Transportaufträge, einen für SAP-Systeme ab Version 7.40 SP05 (* Z_THEO_READ_TABLE-transport.zip), und einen für Systeme mit einer niedrigeren Version ( Z_THEO_READ_TABLE-transport-before-740SP05.zip*).

  • Z_THEO_READ_TABLE-transport.zip enthält die Version 2.x von Z_THEO_READ_TABLE - den benutzerdefinierten Funktionsbaustein, eine Reihe von ABAP-Klassen und andere DDIC-Objekte.
  • Z_THEO_READ_TABLE-transport-before-740SP05.zip enthält die Version 1.x (bis 1.11) von Z_THEO_READ_TABLE - den benutzerdefinierten Funktionsbaustein. Z_THEO_READ_TABLE_SE80

Hinweis: Lesen Sie die README.pdf, die sich im Installationsornder (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
Der Funktionsbaustein Z_THEO_READ_TABLE kann aufgrund seiner Callback-Funktionalität nur von Theobald-Produkten gestartet werden. Das Testen des Bausteins in einem SAP-System ist daher nicht möglich.