Kostenloses Tool um Daten aus der SAP Transaktion SE16 per BULK INSERT in den Microsoft SQL Server importieren

Für schnelle Instant-Reportings, die praktisch auf „Knopfdruck“ benötigt werden, besteht in großen Unternehmen durch Restriktionen der IT oft nicht die Möglichkeit über SAP Standardschnittstellen auf Funktionsbausteine oder BAPIs zuzugreifen. Benötigt man die Versorgung von SAP Stammdaten einer Nicht-SAP-Lösung, welche mit vorrübergehenden Inkonsistenzen betrieben werden kann, lassen sich Stammdaten über die Transaktion SE16 besorgen. Diese können anschließend in den Microsoft SQL Server übertragen werden.

Die Vorteile von replizierten Daten liegen auf der Hand:

  • Keine Belastung des SAP Systems. Der SQL Server übernimmt die Anfragelast.
  • Höhere Performance (vorhersehbare Leistungseinbrüche führen nicht zum Wegbrechen der Datenquelle, deshalb…)
  • Höhere Verfügbarkeit der Daten
  • Unsichere Daten (z.B. Personalinformationen) können von Stammdaten getrennt werden
  • Ein fachkundiger Anwender kann entscheiden ob bestimmte Daten, die z.B. für Kanbanzwecke/Lieferantenreportings (VMI)/… benötigt werden, im Internet verfügbar sein dürfen. Diese Daten könnten auf einen einfachen MS SQL Server in der DMZ repliziert werden.
  • Die Daten können über eine Web-Anwendung und eine beliebige Web-Technologie eingelesen werden. Ein Web-Entwickler hat die volle Kontrolle auf relationaler Ebene und kann genau bestimmen, was  mit den Daten geschieht (keine Seiteneffekte durch unbekannte Logik in den SAP-Funktionsbausteinen).

Herunterladen von SAP Stammdaten aus der Transaktion SE16

Als Anmeldesprache bitte Sicherheitshalber „DE“ benutzen

Schritt 1: Tabelle wählen

Schritt 1: Tabelle wählen

Zweiter Bildschirm SE16

Zweites Bild: Tabellen anzeigen mit SE16 (hier bitte die maximale Trefferzahl auf 9999999 erhöhen)

Schritt 3: Download im Kontextmenü

Schritt 3: Download im Kontextmenü

Schritt 4: Unkovertiert auswählen und Dateiname angeben

Schritt 4: Unkovertiert auswählen und Dateiname angeben

Hierfür wird die Transaktion SE16 zunächst aufgerufen (Berechtigungen müssen vorhanden sein) und die entsprechende Stammdatentabelle selektiert.

Interessante Tabellen für den Materialstamm sind:

  • MAKT (Materialtexte)
  • MARA
  • MARC
  • MARD
  • MPOP
  • ….

Nachdem die Liste angezeigt wird, öffnet man mit einem Rechtsklick auf der Tabelle das Kontext-Menü und wählt die Option „Download“.

Für einen schnellen Download wählen wir die Option „unkonvertiert“. Die Option „Tabellenkalkulation“ ist aufgrund älterer Office-Versionen nur für eine Datensatzmenge von 65000 Einträgen interessant.

Als Download-Ort nehmen wir C:\Temp\mattexte.txt . Öffnet man die Heruntergeladenen Daten erhält man ein scheinbar unmögliches Format der Form:

Tabelle:        MAKT
Angezeigte Felder:  5 von  5  Feststehende Führungsspalten:  3  Listbreite 0250
----------------------------------------------------------------------------------------------------------------------
| |MANDT|MATNR               |SPRAS|MAKTX                                   |MAKTG                                   |
----------------------------------------------------------------------------------------------------------------------
| |100  |00022837            |E    |Stoßdämpfer      3.8.01758              |Stossdaempfer    3.8.01758              |
| |100  |0-275-W-5-0-NAG     |E    |Wagenständer      275CM                 |Wagenstaender 275CM                     |

Durchforstet man die runtergeladene Datei, stellt man fest das der Header-Anteil öfter vorkommt, je mehr Datensätze man runtergeladen hat. Bei einer Menge ab 1000000 Stück wiederholt sich der Header regelmäßig und scheinbar willkürlich, so dass es schwer erscheint ein Import-Tool dafür zu implementieren.

Doch dieses Format lässt sich ohne Probleme mit dem vorgestelltem .NET-Programm in einer hohen Geschwindigkeit (1.000.000 Datensätze in 1 Minute)  in den Microsoft SQL Server importieren. Hierbei wird das „BULK INSERT“-Verfahren verwendet. Dabei wird nicht 1.000.000 Mal ein INSERT-Statement ausgeführt, sondern die Datei binär zum Server übertragen.

Hochladen der SAP-Stammdaten in den MS SQL Server

Schritt 1: Unkovertierte Datei aus SE16 wählen^

Schritt 1: Unkovertierte Datei aus SE16 wählen

Schritt 2: Datenbankverbindung einrichten, testen und Zieltabellenname wählen (Create Statement wird automatisch anhand des Headers in der Textdatei generiert)

Schritt 2: Datenbankverbindung einrichten, testen und Zieltabellenname wählen (Create Statement wird automatisch anhand des Headers in der Textdatei generiert)

Schritt 3: Weiter klicken für hochladen

Schritt 3: Weiter klicken für hochladen

DOWNLOAD DES KOSTENLOSES IMPORTERS VON SE16 ZU MS SQL SERVER

Über Björn Karpenstein

Diplom Informatiker, Programmierer, Musikbegeisterter
Dieser Beitrag wurde unter SAP veröffentlicht. Setze ein Lesezeichen auf den Permalink.

2 Responses to Kostenloses Tool um Daten aus der SAP Transaktion SE16 per BULK INSERT in den Microsoft SQL Server importieren

  1. Rainer Martens sagt:

    Hab das Tool in unserer Firma mal ausprobiert funktionert echt gut. Danke dafür!

  2. Pingback: MS SQL Server und C#.NET: Textdatei per SQL Bulk Insert | Capri-Soft Knowledge database

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.