Gegevens uit een SAP-tabel kopiëren met behulp van Azure Data Factory of Azure Synapse Analytics

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

In dit artikel wordt beschreven hoe u de kopieeractiviteit in Azure Data Factory- en Azure Synapse Analytics-pijplijnen gebruikt om gegevens uit een SAP-tabel te kopiëren. Zie Copy-activiteit overzicht voor meer informatie.

Tip

Zie sap-gegevensintegratie met behulp van een technisch document over Azure Data Factory voor meer informatie over de algemene ondersteuning voor SAP-gegevensintegratiescenario's, met gedetailleerde inleiding over elke SAP-connector, vergelijking en richtlijnen.

Ondersteunde mogelijkheden

Deze SAP-tabelconnector wordt ondersteund voor de volgende mogelijkheden:

Ondersteunde mogelijkheden IR
Copy-activiteit (bron/-)
Activiteit Lookup

(1) Azure Integration Runtime (2) Zelf-hostende Integration Runtime

Zie de tabel Ondersteunde gegevensarchieven voor een lijst met gegevensarchieven die worden ondersteund als bronnen of sinks door de kopieeractiviteit.

Deze SAP-tabelconnector ondersteunt met name:

  • Gegevens uit een SAP-tabel kopiëren in:

    • SAP ERP Central Component (SAP ECC) versie 7.01 of hoger (in een recente SAP Support Package Stack uitgebracht na 2015).
    • SAP Business Warehouse (SAP BW) versie 7.01 of hoger (in een recente SAP-ondersteuningspakketstack uitgebracht na 2015).
    • SAP S/4HANA.
    • Andere producten in SAP Business Suite versie 7.01 of hoger (in een recente SAP-ondersteuningspakketstack uitgebracht na 2015).
  • Gegevens kopiëren uit een transparante SAP-tabel, een gegroepeerde tabel, een gegroepeerde tabel en een weergave.

  • Gegevens kopiëren met behulp van basisverificatie of SNC (Secure Network Communications), als SNC is geconfigureerd.

  • Verbinding maken naar een SAP-toepassingsserver of SAP-berichtserver.

  • Gegevens ophalen via standaard of aangepaste RFC.

Versie 7.01 of hoger verwijst naar sap NetWeaver-versie in plaats van sap ECC-versie. SAP ECC 6.0 EHP 7 in het algemeen heeft bijvoorbeeld NetWeaver versie >=7.4. Als u niet zeker weet wat uw omgeving is, volgt u de stappen om de versie van uw SAP-systeem te bevestigen:

  1. Gebruik de SAP-GUI om verbinding te maken met het SAP-systeem.
  2. Ga naar System ->Status.
  3. Controleer de release van de SAP_BASIS, zorg ervoor dat deze gelijk is aan of groter is dan 701.
    Check SAP_BASIS

Vereisten

Als u deze SAP-tabelconnector wilt gebruiken, moet u het volgende doen:

  • Een zelf-hostende Integration Runtime instellen (versie 3.17 of hoger). Zie Een zelf-hostende Integration Runtime maken en configureren voor meer informatie.

  • Download de 64-bits SAP-Verbinding maken or voor Microsoft .NET 3.0 vanaf de website van SAP en installeer deze op de zelf-hostende Integration Runtime-machine. Zorg ervoor dat u tijdens de installatie de optie Assembly's installeren naar GAC selecteert in het venster Optionele installatiestappen .

    Install SAP Connector for .NET

  • De SAP-gebruiker die wordt gebruikt in de SAP-tabelconnector, moet de volgende machtigingen hebben:

    • Autorisatie voor het gebruik van RFC-bestemmingen (Remote Function Call).
    • Machtigingen voor de uitvoeractiviteit van het S_SDSAUTH-autorisatieobject. U kunt verwijzen naar SAP-notitie 460089 over de meeste autorisatieobjecten. Bepaalde RFC's zijn vereist voor de onderliggende NCo-connector, bijvoorbeeld RFC_FUNCTION_SEARCH.

Aan de slag

Als u de kopieeractiviteit wilt uitvoeren met een pijplijn, kunt u een van de volgende hulpprogramma's of SDK's gebruiken:

Een gekoppelde service maken voor een SAP-tabel met behulp van de gebruikersinterface

Gebruik de volgende stappen om een gekoppelde service te maken voor een SAP-tabel in de gebruikersinterface van Azure Portal.

  1. Blader naar het tabblad Beheren in uw Azure Data Factory- of Synapse-werkruimte en selecteer Gekoppelde services en klik vervolgens op Nieuw:

  2. Zoek naar SAP en selecteer de SAP-tabelconnector.

    Screenshot of the SAP table connector.

  3. Configureer de servicedetails, test de verbinding en maak de nieuwe gekoppelde service.

    Screenshot of configuration for an SAP table linked service.

configuratiedetails Verbinding maken or

De volgende secties bevatten details over eigenschappen die worden gebruikt om de entiteiten te definiëren die specifiek zijn voor de SAP-tabelconnector.

Eigenschappen van gekoppelde service

De volgende eigenschappen worden ondersteund voor de gekoppelde SAP BW Open Hub-service:

Eigenschappen Beschrijving Vereist
type De type eigenschap moet worden ingesteld op SapTable. Ja
server De naam van de server waarop het SAP-exemplaar zich bevindt.
Gebruik dit om verbinding te maken met een SAP-toepassingsserver.
Nee
systemNumber Het systeemnummer van het SAP-systeem.
Gebruik dit om verbinding te maken met een SAP-toepassingsserver.
Toegestane waarde: Een decimaal getal van twee cijfers dat wordt weergegeven als een tekenreeks.
Nee
messageServer De hostnaam van de SAP-berichtserver.
Gebruik dit om verbinding te maken met een SAP-berichtserver.
Nee
messageServerService De servicenaam of het poortnummer van de berichtserver.
Gebruik dit om verbinding te maken met een SAP-berichtserver.
Nee
systemId De id van het SAP-systeem waar de tabel zich bevindt.
Gebruik dit om verbinding te maken met een SAP-berichtserver.
Nee
logonGroup De aanmeldingsgroep voor het SAP-systeem.
Gebruik dit om verbinding te maken met een SAP-berichtserver.
Nee
clientId De id van de client in het SAP-systeem.
Toegestane waarde: Een decimaal getal van drie cijfers dat wordt weergegeven als een tekenreeks.
Ja
language De taal die het SAP-systeem gebruikt.
De standaardwaarde is EN.
Nee
userName De naam van de gebruiker die toegang heeft tot de SAP-server. Ja
password Het wachtwoord voor de gebruiker. Markeer dit veld met het SecureString type om het veilig op te slaan of verwijs naar een geheim dat is opgeslagen in Azure Key Vault. Ja
sncMode De SNC-activeringsindicator voor toegang tot de SAP-server waar de tabel zich bevindt.
Gebruik deze optie als u SNC wilt gebruiken om verbinding te maken met de SAP-server.
Toegestane waarden zijn 0 (uit, de standaardinstelling) of 1 (aan).
Nee
sncMyName De SNC-naam van de initiator voor toegang tot de SAP-server waar de tabel zich bevindt.
Is van toepassing wanneer sncMode deze is ingeschakeld.
Nee
sncPartnerName De SNC-naam van de communicatiepartner voor toegang tot de SAP-server waar de tabel zich bevindt.
Is van toepassing wanneer sncMode deze is ingeschakeld.
Nee
sncLibraryPath De bibliotheek van het externe beveiligingsproduct voor toegang tot de SAP-server waar de tabel zich bevindt.
Is van toepassing wanneer sncMode deze is ingeschakeld.
Nee
sncQop Het SNC Quality of Protection-niveau dat moet worden toegepast.
Is van toepassing wanneer sncMode is ingeschakeld.
Toegestane waarden zijn 1 (verificatie), 2 (integriteit), 3 (privacy), 8 (standaard), 9 (maximum).
Nee
connectVia De Integration Runtime die moet worden gebruikt om verbinding te maken met het gegevensarchief. Een zelf-hostende Integration Runtime is vereist, zoals eerder vermeld in Vereisten. Ja

Voorbeeld 1: Verbinding maken naar een SAP-toepassingsserver

{
    "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"
        }
    }
}

Voorbeeld 2: Verbinding maken naar een SAP-berichtserver

{
    "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"
        }
    }
}

Voorbeeld 3: Verbinding maken met behulp van 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"
        }
    }
}

Eigenschappen van gegevensset

Zie Gegevenssets voor een volledige lijst met secties en eigenschappen voor het definiëren van gegevenssets. De volgende sectie bevat een lijst met de eigenschappen die worden ondersteund door de SAP-tabelgegevensset.

Als u gegevens wilt kopiëren van en naar de gekoppelde SAP BW Open Hub-service, worden de volgende eigenschappen ondersteund:

Eigenschappen Beschrijving Vereist
type De type eigenschap moet worden ingesteld op SapTableResource. Ja
tableName De naam van de SAP-tabel waaruit u gegevens wilt kopiëren. Ja

Opmerking

{
    "name": "SAPTableDataset",
    "properties": {
        "type": "SapTableResource",
        "typeProperties": {
            "tableName": "<SAP table name>"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<SAP table linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Eigenschappen van de kopieeractiviteit

Zie Pijplijnen voor een volledige lijst met secties en eigenschappen voor het definiëren van activiteiten. De volgende sectie bevat een lijst met de eigenschappen die worden ondersteund door de BRON van de SAP-tabel.

SAP-tabel als bron

Als u gegevens uit een SAP-tabel wilt kopiëren, worden de volgende eigenschappen ondersteund:

Eigenschappen Beschrijving Vereist
type De type eigenschap moet worden ingesteld op SapTableSource. Ja
rowCount Het aantal rijen dat moet worden opgehaald. Nee
rfcTableFields De velden (kolommen) die u uit de SAP-tabel wilt kopiëren. Bijvoorbeeld column0, column1. Nee
rfcTableOptions De opties voor het filteren van de rijen in een SAP-tabel. Bijvoorbeeld COLUMN0 EQ 'SOMEVALUE'. Zie ook de tabel sap-queryoperator verderop in dit artikel. Nee
customRfcReadTableFunctionModule Een aangepaste RFC-functiemodule die kan worden gebruikt om gegevens uit een SAP-tabel te lezen.
U kunt een aangepaste RFC-functiemodule gebruiken om te definiëren hoe de gegevens worden opgehaald uit uw SAP-systeem en worden geretourneerd naar de service. De aangepaste functiemodule moet een interface hebben geïmplementeerd (importeren, exporteren, tabellen) die vergelijkbaar is met /SAPDS/RFC_READ_TABLE2, wat de standaardinterface is die door de service wordt gebruikt.
Nee
partitionOption Het partitiemechanisme dat moet worden gelezen uit een SAP-tabel. De ondersteunde opties zijn onder andere:
  • None
  • PartitionOnInt (normale waarden voor gehele getallen of gehele getallen met nul opvulling aan de linkerkant, zoals 0000012345)
  • PartitionOnCalendarYear (4 cijfers in de notatie "JJJJ")
  • PartitionOnCalendarMonth (6 cijfers in de notatie "JJJJMM")
  • PartitionOnCalendarDate (8 cijfers in de notatie "JJJJMMDD")
  • PartitionOntime (6 cijfers in de notatie "HHMMSS", zoals 235959)
Nee
partitionColumnName De naam van de kolom die wordt gebruikt om de gegevens te partitioneren. Nee
partitionUpperBound De maximumwaarde van de kolom die in partitionColumnName die kolom is opgegeven, wordt gebruikt om door te gaan met partitioneren. Nee
partitionLowerBound De minimumwaarde van de kolom die in partitionColumnName die kolom wordt opgegeven, wordt gebruikt om door te gaan met partitioneren. (Opmerking: partitionLowerBound kan niet '0' zijn als partitieoptie is PartitionOnInt) Nee
maxPartitionsNumber Het maximum aantal partities om de gegevens in te splitsen. De standaardwaarde is 1. Nee
sapDataColumnDelimiter Het enkele teken dat wordt gebruikt als scheidingsteken dat wordt doorgegeven aan SAP RFC om de uitvoergegevens te splitsen. Nee

Tip

Als uw SAP-tabel een grote hoeveelheid gegevens bevat, zoals enkele miljarden rijen, gebruikt partitionOption u deze en partitionSetting splitst u de gegevens op in kleinere partities. In dit geval worden de gegevens per partitie gelezen en wordt elke gegevenspartitie opgehaald van uw SAP-server via één RFC-aanroep.

Als partitionOption voorbeeld wordt het aantal rijen in elke partitie berekend met deze formule: (totaalrijen tussen partitionUpperBound en partitionLowerBound)/maxPartitionsNumber.partitionOnInt

Als u gegevenspartities parallel wilt laden om het kopiëren te versnellen, wordt de parallelle graad bepaald door de parallelCopies instelling voor de kopieeractiviteit. Als u bijvoorbeeld instelt op parallelCopies vier, genereert de service gelijktijdig vier query's en voert deze uit op basis van de opgegeven partitieoptie en -instellingen en haalt elke query een deel van de gegevens op uit uw SAP-tabel. We raden u ten zeerste aan om een veelvoud van de waarde van de parallelCopies eigenschap te makenmaxPartitionsNumber. Wanneer u gegevens kopieert naar een bestandsgegevensarchief, wordt u ook gevraagd om naar een map te schrijven als meerdere bestanden (alleen mapnaam opgeven), in welk geval de prestaties beter zijn dan schrijven naar één bestand.

Tip

De BASXML functie is standaard ingeschakeld voor deze SAP Table-connector binnen de service.

In rfcTableOptionskunt u de volgende algemene SAP-queryoperators gebruiken om de rijen te filteren:

Operator Beschrijving
EQ Gelijk aan
NE Niet gelijk aan
LT Kleiner dan
LE Kleiner dan of gelijk aan
GT Groter dan
GE Groter dan of gelijk aan
IN Zoals in TABCLASS IN ('TRANSP', 'INTTAB')
LIKE Zoals in LIKE 'Emma%'

Opmerking

"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
        }
    }
]

SAP-tabellen samenvoegen

Momenteel ondersteunt sap-tabelconnector slechts één tabel met de standaardfunctiemodule. Als u de samengevoegde gegevens van meerdere tabellen wilt ophalen, kunt u gebruikmaken van de eigenschap customRfcReadTableFunctionModule in de SAP Table-connector door de onderstaande stappen te volgen:

  • Schrijf een aangepaste functiemodule, die een query als OPTIONS kan uitvoeren en uw eigen logica kan toepassen om de gegevens op te halen.
  • Voer voor de aangepaste functiemodule de naam van uw aangepaste functiemodule in.
  • Geef voor de 'RFC-tabelopties' de tabeldeelnameinstructie op die moet worden ingevoerd in uw functiemodule als OPTIONS, zoals INNER<TABLE1> JOIN <TABLE2> ON COLUMN0.

Hieronder ziet u een voorbeeld:

Sap Table Join

Tip

U kunt ook overwegen om de samengevoegde gegevens samen te voegen in de VIEW, die wordt ondersteund door de SAP Table-connector. U kunt ook gerelateerde tabellen extraheren om onboarding naar Azure te krijgen (bijvoorbeeld Azure Storage, Azure SQL Database) en vervolgens Gegevensstroom gebruiken om verder te gaan met samenvoegen of filteren.

Aangepaste functiemodule maken

Voor SAP-tabel ondersteunen we momenteel de eigenschap customRfcReadTableFunctionModule in de kopieerbron, waarmee u uw eigen logica en procesgegevens kunt gebruiken.

Hier volgen enkele vereisten om aan de slag te gaan met de 'Aangepaste functiemodule':

  • Definition:

    Definition

  • Gegevens exporteren naar een van de onderstaande tabellen:

    Export table 1

    Export table 2

Hieronder ziet u een afbeelding van de werking van de SAP-tabelconnector met een aangepaste functiemodule:

  1. Verbinding maken met SAP-server via SAP NCO.

  2. Roep 'Aangepaste functiemodule' aan met de parameters die zijn ingesteld als hieronder:

    • QUERY_TABLE: de tabelnaam die u hebt ingesteld in de SAP-tabelgegevensset;
    • Scheidingsteken: het scheidingsteken dat u instelt in de SAP-tabelbron;
    • ROWCOUNT/Option/Fields: de rowcount/aggregated Option/Fields die u hebt ingesteld in de tabelbron.
  3. Haal het resultaat op en parseert de gegevens op onderstaande manieren:

    1. Parseert de waarde in de tabel Velden om de schema's op te halen.

      Parse values in Fields

    2. Haal de waarden van de uitvoertabel op om te zien welke tabel deze waarden bevat.

      Get values in output table

    3. Haal de waarden op in de OUT_TABLE, parseert de gegevens en schrijf deze vervolgens naar de sink.

Toewijzingen van gegevenstypen voor een SAP-tabel

Wanneer u gegevens kopieert uit een SAP-tabel, worden de volgende toewijzingen uit de SAP-tabelgegevenstypen gebruikt voor tussentijdse gegevenstypen die in de service worden gebruikt. Zie Schema- en gegevenstypetoewijzingen voor meer informatie over hoe de kopieeractiviteit het bronschema en het gegevenstype toewijst aan de sink.

SAP ABAP-type Tussentijdse servicegegevenstype
C (Tekenreeks) String
I (Geheel getal) Int32
F (Float) Double
D (Datum) String
T (Tijd) String
P (BCD packed, currency, decimal, qty) Decimal
N (Numeriek) String
X (Binair en onbewerkt) String

Eigenschappen van opzoekactiviteit

Als u meer wilt weten over de eigenschappen, controleert u de lookup-activiteit.

Zie Ondersteunde gegevensarchieven voor een lijst met gegevensarchieven die worden ondersteund als bronnen en sinks door de kopieeractiviteit.