Kopieren von Daten aus einer SAP-Tabelle mit Azure Data Factory oder Azure Synapse Analytics
GILT FÜR: Azure Data Factory
Azure Synapse Analytics
Tipp
Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!
In diesem Artikel wird beschrieben, wie Sie die Copy-Aktivität in Azure Data Factory- und Azure Synapse Analytics-Pipelines verwenden, um Daten aus SAP-Tabellen zu kopieren. Weitere Informationen finden Sie im Artikel Übersicht über die Kopieraktivität.
Tipp
Informationen zur allgemeinen Unterstützung des SAP-Datenintegrationsszenarios finden Sie im Whitepaper zur SAP-Datenintegration mit Azure Data Factory. Dort finden Sie auch eine detaillierte Einführung in jeden SAP-Connector, einen Vergleich und Leitfäden.
Unterstützte Funktionen
Dieser SAP-Tabellen-Connector wird für die folgenden Funktionen unterstützt:
Unterstützte Funktionen | IR |
---|---|
Kopieraktivität (Quelle/-) | 0 |
Lookup-Aktivität | 0 |
① Azure Integration Runtime ② Selbstgehostete Integration Runtime
Eine Liste der Datenspeicher, die als Quellen oder Senken für die Kopieraktivität unterstützt werden, finden Sie in der Tabelle Unterstützte Datenspeicher.
Dieser SAP-Tabellenconnector unterstützt insbesondere Folgendes:
Kopieren von Daten aus einer SAP-Tabelle in:
- SAP ERP Central Component (SAP ECC), Version 7.01 oder höher (in einem aktuellen SAP Support Package Stack, das nach 2015 veröffentlicht wurde).
- SAP Business Warehouse (SAP BW), Version 7.01 oder höher (in einem aktuellen SAP Support Package Stack, das nach 2015 veröffentlicht wurde).
- SAP S/4HANA.
- Andere Produkte in SAP Business Suite, Version 7.01 oder höher (in einem aktuellen SAP Support Package Stack, das nach 2015 veröffentlicht wurde).
Kopieren von Daten aus einer transparenten SAP-Tabelle, einer in einem Pool zusammengefassten Tabelle, einer gruppierten Tabelle und einer Sicht.
Kopieren von Daten mithilfe von Standardauthentifizierung oder Secure Network Communications (SNC), falls SNC konfiguriert ist.
Herstellen einer Verbindung mit einem SAP-Anwendungsserver oder einem SAP-Nachrichtenserver.
Abrufen von Daten über die standardmäßige oder benutzerdefinierte RFC.
Die Version 7.01 oder höher verweist auf die SAP NetWeaver-Version statt auf die SAP ECC-Version. Beispielsweise verfügt SAP ECC 6.0 EHP 7 im Allgemeinen über die NetWeaver-Version >=7.4. Falls Sie sich bezüglich Ihrer Umgebung unsicher sind, finden Sie hier die Schritte zur Bestätigung der Version aus Ihrem SAP-System:
- Stellen Sie per SAP GUI eine Verbindung mit dem SAP-System her.
- Wechseln Sie zu System –>Status.
- Überprüfen Sie die Version von SAP_BASIS, und stellen Sie sicher, dass sie mindestens 701 ist.
Voraussetzungen
Zum Verwenden dieses SAP-Tabellenconnectors müssen Sie folgende Schritte ausführen:
Richten Sie eine selbstgehostete Integration Runtime (Version 3.17 oder höher) ein. Weitere Informationen finden Sie unter Erstellen und Konfigurieren einer selbstgehosteten Integration Runtime.
Laden Sie den SAP Connector für Microsoft .NET 3.0 (64 Bit) von der SAP-Website herunter, und installieren Sie ihn auf dem Computer mit der selbstgehosteten Integration Runtime. Während der Installation müssen Sie im Fenster Optionale Einrichtungsschritte die Option Assemblys in GAC installieren auswählen.
Der SAP-Benutzer, der im SAP-Tabellenconnector verwendet wird, muss über die folgenden Berechtigungen verfügen:
- Autorisierung für die Verwendung von RFC-Zielen (Remote Function Call).
- Berechtigungen für die Aktivität „Execute“ des Autorisierungsobjekts „S_SDSAUTH“. Informationen zu den meisten Autorisierungsobjekten finden Sie in SAP-Hinweis 460089. Bestimmte RFCs werden vom zugrunde liegenden NCo-Connector benötigt, z. B. RFC_FUNCTION_SEARCH.
Erste Schritte
Sie können eines der folgenden Tools oder SDKs verwenden, um die Kopieraktivität mit einer Pipeline zu verwenden:
- Das Tool „Daten kopieren“
- Azure-Portal
- Das .NET SDK
- Das Python SDK
- Azure PowerShell
- Die REST-API
- Die Azure Resource Manager-Vorlage
Erstellen eines verknüpften Diensts für SAP-Tabellen über die Benutzeroberfläche
Führen Sie die folgenden Schritte aus, um über die Benutzeroberfläche des Azure-Portals einen verknüpften Dienst für SAP-Tabellen zu erstellen.
Navigieren Sie in Ihrem Azure Data Factory- oder Synapse-Arbeitsbereich zur Registerkarte „Verwalten“, wählen Sie „Verknüpfte Dienste“ aus, und klicken Sie dann auf „Neu“:
Suchen Sie nach SAP, und wählen Sie den SAP-Tabellenconnector aus.
Konfigurieren Sie die Dienstdetails, testen Sie die Verbindung, und erstellen Sie den neuen verknüpften Dienst.
Details zur Connector-Konfiguration
In den folgenden Abschnitten finden Sie Details zu den Eigenschaften, die zum Definieren der für den SAP-Tabellenconnector spezifischen Entitäten verwendet werden.
Eigenschaften des verknüpften Diensts
Folgende Eigenschaften werden für den mit SAP BW Open Hub verknüpften Dienst unterstützt:
Eigenschaft | Beschreibung | Erforderlich |
---|---|---|
type |
Die type -Eigenschaft muss auf SapTable festgelegt werden. |
Ja |
server |
Der Name des Servers, auf dem sich die SAP-Instanz befindet. Verwenden Sie sie zum Herstellen einer Verbindung mit einem SAP-Anwendungsserver. |
Nein |
systemNumber |
Die Systemnummer des SAP-Systems. Verwenden Sie sie zum Herstellen einer Verbindung mit einem SAP-Anwendungsserver. Zulässiger Wert: Eine zweistellige Dezimalzahl, die als Zeichenfolge angegeben wird. |
Nein |
messageServer |
Der Hostname des SAP-Nachrichtenservers. Verwenden Sie sie zum Herstellen einer Verbindung mit einem SAP-Nachrichtenserver. |
Nein |
messageServerService |
Der Dienstname oder die Portnummer des Nachrichtenservers. Verwenden Sie sie zum Herstellen einer Verbindung mit einem SAP-Nachrichtenserver. |
Nein |
systemId |
Die ID des SAP-Systems, in dem sich die Tabelle befindet. Verwenden Sie sie zum Herstellen einer Verbindung mit einem SAP-Nachrichtenserver. |
Nein |
logonGroup |
Die Anmeldegruppe für das SAP-System. Verwenden Sie sie zum Herstellen einer Verbindung mit einem SAP-Nachrichtenserver. |
Nein |
clientId |
Die ID des Clients im SAP-System. Zulässiger Wert: Eine dreistellige Dezimalzahl, die als Zeichenfolge angegeben wird. |
Ja |
language |
Die Sprache, die das SAP-System verwendet. Der Standardwert ist EN . |
Nein |
userName |
Der Name des Benutzers, der Zugriff auf den SAP-Server hat. | Ja |
password |
Das Kennwort für den Benutzer. Markieren Sie dieses Feld mit dem Typ SecureString , um es sicher zu speichern, oder verweisen Sie auf ein in Azure Key Vault gespeichertes Geheimnis. |
Ja |
sncMode |
Der SNC-Aktivierungsindikator für den Zugriff auf den SAP-Server, auf dem sich die Tabelle befindet. Verwenden Sie ihn, wenn Sie mithilfe von SNC eine Verbindung zum SAP-Server herstellen möchten. Zulässige Werte sind 0 („off“, der Standardwert) oder 1 („on“). |
Nein |
sncMyName |
Der SNC-Name des+ Initiators für den Zugriff auf den SAP-Server, auf dem sich die Tabelle befindet. Gilt, wenn sncMode „on“ ist. |
Nein |
sncPartnerName |
Der SNC-Name des Kommunikationspartners für den Zugriff auf den SAP-Server, auf dem sich die Tabelle befindet. Gilt, wenn sncMode „on“ ist. |
Nein |
sncLibraryPath |
Die Bibliothek des externen Sicherheitsprodukts für den Zugriff auf den SAP-Server, auf dem sich die Tabelle befindet. Gilt, wenn sncMode „on“ ist. |
Nein |
sncQop |
Die anzuwendende Ebene von „Quality of Protection für SNC“. Gilt, wenn sncMode „on“ ist. Zulässige Werte sind 1 (Authentifizierung), 2 (Integrität), 3 (Datenschutz), 8 (Standard), 9 (Maximum). |
Nein |
connectVia |
Die Integration Runtime, die zum Herstellen einer Verbindung mit dem Datenspeicher verwendet werden soll. Eine selbstgehostete Integration Runtime ist erforderlich, wie weiter oben unter Voraussetzungen erwähnt wurde. | Ja |
Beispiel 1: Herstellen einer Verbindung mit einem SAP-Anwendungsserver
{
"name": "SapTableLinkedService",
"properties": {
"type": "SapTable",
"typeProperties": {
"server": "<server name>",
"systemNumber": "<system number>",
"clientId": "<client ID>",
"userName": "<SAP user>",
"password": {
"type": "SecureString",
"value": "<Password for SAP user>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Beispiel 2: Herstellen einer Verbindung mit einem SAP-Nachrichtenserver
{
"name": "SapTableLinkedService",
"properties": {
"type": "SapTable",
"typeProperties": {
"messageServer": "<message server name>",
"messageServerService": "<service name or port>",
"systemId": "<system ID>",
"logonGroup": "<logon group>",
"clientId": "<client ID>",
"userName": "<SAP user>",
"password": {
"type": "SecureString",
"value": "<Password for SAP user>"
}
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Beispiel 3: Herstellen einer Verbindung mithilfe von SNC
{
"name": "SapTableLinkedService",
"properties": {
"type": "SapTable",
"typeProperties": {
"server": "<server name>",
"systemNumber": "<system number>",
"clientId": "<client ID>",
"userName": "<SAP user>",
"password": {
"type": "SecureString",
"value": "<Password for SAP user>"
},
"sncMode": 1,
"sncMyName": "<SNC myname>",
"sncPartnerName": "<SNC partner name>",
"sncLibraryPath": "<SNC library path>",
"sncQop": "8"
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Dataset-Eigenschaften
Eine vollständige Liste der Abschnitte und Eigenschaften zum Definieren von Datasets finden Sie unter Datasets. Der folgende Abschnitt enthält eine Liste der Eigenschaften, die vom SAP-Tabellen-Dataset unterstützt werden.
Wenn Sie Daten aus oder in den verknüpften SAP BW Open Hub-Dienst kopieren möchten, werden die folgenden Eigenschaften unterstützt:
Eigenschaft | Beschreibung | Erforderlich |
---|---|---|
type |
Die type -Eigenschaft muss auf SapTableResource festgelegt werden. |
Ja |
tableName |
Der Name der SAP-Tabelle, aus der Daten kopiert werden sollen. | Ja |
Beispiel
{
"name": "SAPTableDataset",
"properties": {
"type": "SapTableResource",
"typeProperties": {
"tableName": "<SAP table name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<SAP table linked service name>",
"type": "LinkedServiceReference"
}
}
}
Eigenschaften der Kopieraktivität
Eine vollständige Liste der Abschnitte und Eigenschaften zum Definieren von Aktivitäten finden Sie unter Pipelines. Der folgende Abschnitt enthält eine Liste der Eigenschaften, die von der SAP-Tabellenquelle unterstützt werden.
SAP-Tabelle als Quelle
Beim Kopieren von Daten aus einer SAP-Tabelle werden die folgenden Eigenschaften unterstützt:
Eigenschaft | Beschreibung | Erforderlich |
---|---|---|
type |
Die type -Eigenschaft muss auf SapTableSource festgelegt werden. |
Ja |
rowCount |
Die Anzahl der Zeilen, die abgerufen werden sollen. | Nein |
rfcTableFields |
Die Felder (Spalten), die aus der SAP-Tabelle kopiert werden sollen. Beispiel: column0, column1 . |
Nein |
rfcTableOptions |
Die Optionen zum Filtern der Zeilen in einer SAP-Tabelle. Beispiel: COLUMN0 EQ 'SOMEVALUE' . Sehen Sie sich dazu auch die Tabelle „SAP-Abfrageoperator“ weiter unten in diesem Artikel an. |
Nein |
customRfcReadTableFunctionModule |
Ein benutzerdefiniertes RFC-Funktionsmodul, das zum Lesen von Daten aus einer SAP-Tabelle verwendet werden kann. Mit einem benutzerdefinierten RFC-Funktionsmodul können Sie festlegen, wie die Daten aus Ihrem SAP-System abgerufen und an den Dienst zurückgegeben werden sollen. Beim benutzerdefinierten Funktionsmodul muss eine Schnittstelle (für Import, Export, Tabellen) implementiert sein, die mit /SAPDS/RFC_READ_TABLE2 vergleichbar ist. Dabei handelt es sich um die vom Dienst verwendete Standardschnittstelle. |
Nein |
partitionOption |
Der Partitionsmechanismus, der zum Lesen aus einer SAP-Tabelle verwendet wird. Folgende Optionen werden unterstützt:
|
Nein |
partitionColumnName |
Der Name der Spalte, die zum Partitionieren der Daten verwendet wird. | Nein |
partitionUpperBound |
Der Höchstwert der in partitionColumnName angegebenen Spalte, der zum Fortsetzen der Partitionierung verwendet wird. |
Nein |
partitionLowerBound |
Der Mindestwert der in partitionColumnName angegebenen Spalte, der zum Fortsetzen der Partitionierung verwendet wird. (Hinweis: partitionLowerBound kann nicht „0“ sein, wenn die Partitionsoption PartitionOnInt lautet.) |
Nein |
maxPartitionsNumber |
Die maximale Anzahl von Partitionen, in welche die Daten aufgeteilt werden können. Der Standardwert ist 1. | Nein |
sapDataColumnDelimiter |
Das als Trennzeichen verwendete einzelne Zeichen, das an SAP RFC übergeben wird, um die Ausgabedaten aufzuteilen. | Nein |
Tipp
Wenn Ihre SAP-Tabelle eine große Menge an Daten enthält, z.B. mehrere Milliarden Zeilen, verwenden Sie partitionOption
und partitionSetting
, um die Daten in kleinere Partitionen aufzuteilen. In diesem Fall werden die Daten pro Partition gelesen, und jede Datenpartition wird über einen einzelnen RFC-Aufruf von Ihrem SAP-Server abgerufen.
Bei dem Beispiel von partitionOption
als partitionOnInt
wird die Anzahl der Zeilen in jeder Partition mit dieser Formel berechnet: (Gesamtzahl der Zeilen zwischen partitionUpperBound
und partitionLowerBound
)/maxPartitionsNumber
.
Wenn Sie Datenpartitionen parallel laden möchten, um den Kopiervorgang zu beschleunigen, wird der Parallelitätsgrad durch die Einstellung parallelCopies
in der Kopieraktivität gesteuert. Wenn Sie z. B. parallelCopies
auf vier (4) festlegen, generiert der Dienst gleichzeitig vier Abfragen auf der Grundlage der von Ihnen angegebenen Partitionsoption und -einstellungen und führt sie aus. Dabei ruft jede Abfrage einen Teil der Daten aus Ihrer SAP-Tabelle ab. Es wird dringend empfohlen, maxPartitionsNumber
als Vielfaches des Werts der parallelCopies
-Eigenschaft anzugeben. Beim Kopieren von Daten in einen dateibasierten Datenspeicher wird außerdem empfohlen, unter Verwendung von „Mehrere Dateien“ in einen Ordner zu schreiben (Sie müssen nur den Ordnernamen angeben). In diesem Fall ist die Leistung besser als beim Schreiben in eine einzelne Datei.
Tipp
BASXML
ist für diesen SAP-Tabellenconnector standardmäßig für den Dienst aktiviert.
In rfcTableOptions
können Sie die folgenden allgemeinen SAP-Abfrageoperatoren zum Filtern von Zeilen verwenden:
Operator | BESCHREIBUNG |
---|---|
EQ |
Gleich |
NE |
Ungleich |
LT |
Kleiner als |
LE |
Kleiner als oder gleich |
GT |
Größer als |
GE |
Größer als oder gleich |
IN |
Wie in TABCLASS IN ('TRANSP', 'INTTAB') |
LIKE |
Wie in LIKE 'Emma%' |
Beispiel
"activities":[
{
"name": "CopyFromSAPTable",
"type": "Copy",
"inputs": [
{
"referenceName": "<SAP table input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SapTableSource",
"partitionOption": "PartitionOnInt",
"partitionSettings": {
"partitionColumnName": "<partition column name>",
"partitionUpperBound": "2000",
"partitionLowerBound": "1",
"maxPartitionsNumber": 500
}
},
"sink": {
"type": "<sink type>"
},
"parallelCopies": 4
}
}
]
Verknüpfen von SAP-Tabellen
Der SAP-Tabellenconnector unterstützt derzeit nur eine einzige Tabelle mit dem Standardfunktionsmodul. Um die verknüpften Daten mehrerer Tabellen zu erhalten, können Sie die customRfcReadTableFunctionModule-Eigenschaft im SAP-Tabellenconnector in den folgenden Schritten verwenden:
- Schreiben Sie ein benutzerdefiniertes Funktionsmodul, das eine Abfrage in Form von Optionen übernehmen und Ihre eigene Logik zum Abrufen der Daten anwenden kann.
- Geben Sie für „Benutzerdefiniertes Funktionsmodul“ den Namen Ihres benutzerdefinierten Funktionsmoduls ein.
- Legen Sie als „RFC-Tabellenoptionen“ die join-Anweisung für die Tabellen fest, die als Optionen an das Funktionsmodul übergeben werden soll, z. B. „
<TABLE1>
INNER JOIN<TABLE2>
ON COLUMN0“.
Unten ist ein Beispiel aufgeführt:
Tipp
Sie können die verknüpften Daten auch in der Sicht aggregieren. Dies wird vom SAP-Tabellenconnector unterstützt. Außerdem können Sie versuchen, die verknüpfte Tabellen zu extrahieren, um sie in Azure zu integrieren (z. B. in Azure Storage, Azure SQL-Datenbank). Anschließend können Sie mit einem Datenfluss die weitere Verarbeitung mit Joins oder Filtern durchführen.
Erstellen des benutzerdefinierten Funktionsmoduls
Für SAP-Tabellen wird derzeit die customRfcReadTableFunctionModule-Eigenschaft in der Kopierquelle unterstützt. Mit dieser können Sie Ihre eigene Logik nutzen und Daten verarbeiten.
Im Folgenden finden Sie einen kurzen Leitfaden mit den Anforderungen für die ersten Schritte mit dem benutzerdefinierten Funktionsmodul:
Definition:
Exportieren Sie die Daten in eine der folgenden Tabellen:
Im Folgenden finden Sie Abbildungen der Funktionsweise des SAP-Tabellenconnectors mit dem benutzerdefinierten Funktionsmodul:
Stellen Sie über SAP NCO eine Verbindung mit dem SAP-Server her.
Rufen Sie das benutzerdefinierte Funktionsmodul mit den wie folgt festgelegten Parametern auf:
- QUERY_TABLE: der im Dataset für die SAP-Tabelle festgelegte Tabellenname
- Trennzeichen: das für die SAP-Tabellenquelle festgelegte Trennzeichen
- ROWCOUNT/Option/Felder: die in der Tabellenquelle festgelegten Werte für „RowCount“, die Option „Aggregiert“ und die Felder
Rufen Sie das Ergebnis ab, und analysieren Sie die Daten auf folgende Weise:
Analysieren Sie den Wert in der Tabelle „Fields“ (Felder), um die Schemas abzurufen.
Rufen Sie die Werte der Ausgabetabelle ab, um festzustellen, welche Tabelle diese Werte enthält.
Rufen Sie die Werte aus „OUT_TABLE“ ab, analysieren Sie die Daten, und schreiben Sie sie dann in die Senke.
Datentypzuordnungen für eine SAP-Tabelle
Wenn Sie Daten aus einer SAP-Tabelle kopieren, werden die folgenden Zuordnungen zwischen den Datentypen der SAP-Tabelle und den Zwischendatentypen im Dienst verwendet. Informationen dazu, wie die Kopieraktivität das Quellschema und den Datentyp zur Senke zuordnet, finden Sie unter Schema- und Datentypzuordnungen.
SAP ABAP-Typ | Zwischendatentyp des Diensts |
---|---|
C (Zeichenfolge) |
String |
I (Integer) |
Int32 |
F (Float) |
Double |
D (Date) |
String |
T (Time) |
String |
P (BCD Packed, Currency, Decimal, Qty) |
Decimal |
N (Numeric) |
String |
X (Binary und Raw) |
String |
Eigenschaften der Lookup-Aktivität
Ausführliche Informationen zu den Eigenschaften finden Sie unter Lookup-Aktivität.
Zugehöriger Inhalt
Eine Liste der Datenspeicher, die als Quellen und Senken für die Copy-Aktivität unterstützt werden, finden Sie unter Unterstützte Datenspeicher.