Kopiera data från en SAP-tabell med Azure Data Factory eller Azure Synapse Analytics

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

Den här artikeln beskriver hur du använder kopieringsaktiviteten i Azure Data Factory- och Azure Synapse Analytics-pipelines för att kopiera data från en SAP-tabell. Mer information finns i Översikt över kopieringsaktivitet.

Dricks

Information om det övergripande stödet för SAP-dataintegrering finns i SAP-dataintegrering med hjälp av Azure Data Factory white paper med detaljerad introduktion till varje SAP-anslutningsapp, jämförelse och vägledning.

Funktioner som stöds

Den här SAP-tabellanslutningsappen stöds för följande funktioner:

Funktioner som stöds IR
Kopieringsaktivitet (källa/-) (2)
Sökningsaktivitet (2)

(1) Azure Integration Runtime (2) Lokalt installerad integrationskörning

En lista över de datalager som stöds som källor eller mottagare av kopieringsaktiviteten finns i tabellen Datalager som stöds.

Mer specifikt stöder den här SAP-tabellanslutningsappen:

  • Kopiera data från en SAP-tabell i:

    • SAP ERP Central Component (SAP ECC) version 7.01 eller senare (i en nyligen publicerad SAP Support Package Stack efter 2015).
    • SAP Business Warehouse (SAP BW) version 7.01 eller senare (i en nyligen publicerad SAP Support Package Stack efter 2015).
    • SAP S/4HANA.
    • Andra produkter i SAP Business Suite version 7.01 eller senare (i en nyligen publicerad SAP Support Package Stack efter 2015).
  • Kopiera data från både en TRANSPARENT SAP-tabell, en pooltabell, en klustrad tabell och en vy.

  • Kopiera data med grundläggande autentisering eller SNC (Secure Network Communications), om SNC har konfigurerats.

  • Ansluta till en SAP-programserver eller SAP-meddelandeserver.

  • Hämtar data via standard eller anpassad RFC.

Version 7.01 eller senare refererar till SAP NetWeaver-versionen i stället för SAP ECC-versionen. Till exempel har SAP ECC 6.0 EHP 7 i allmänhet NetWeaver-version >=7.4. Om du är osäker på din miljö följer du stegen för att bekräfta versionen från DITT SAP-system:

  1. Använd SAP GUI för att ansluta till SAP-systemet.
  2. Gå till System ->Status.
  3. Kontrollera versionen av SAP_BASIS, se till att den är lika med eller större än 701.
    Kontrollera SAP_BASIS

Förutsättningar

Om du vill använda den här SAP-tabellanslutningsappen måste du:

  • Konfigurera en lokalt installerad integrationskörning (version 3.17 eller senare). Mer information finns i Skapa och konfigurera en lokalt installerad integrationskörning.

  • Ladda ned 64-bitars SAP Connector för Microsoft .NET 3.0 från SAP:s webbplats och installera den på den lokala integrationskörningsdatorn. Under installationen kontrollerar du att du väljer alternativet Installera sammansättningar till GAC i fönstret Valfria installationssteg .

    Installera SAP Connector för .NET

  • DEN SAP-användare som används i SAP-tabellanslutningen måste ha följande behörigheter:

    • Auktorisering för användning av RFC-mål (Remote Function Call).
    • Behörigheter till körningsaktiviteten för S_SDSAUTH-auktoriseringsobjektet. Du kan läsa SAP Note 460089 för de flesta auktoriseringsobjekt. Vissa RFC:er krävs av den underliggande NCo-anslutningsappen, till exempel RFC_FUNCTION_SEARCH.

Kom igång

Om du vill utföra kopieringsaktiviteten med en pipeline kan du använda något av följande verktyg eller SDK:er:

Skapa en länkad tjänst till en SAP-tabell med hjälp av användargränssnittet

Använd följande steg för att skapa en länkad tjänst till en SAP-tabell i Användargränssnittet för Azure-portalen.

  1. Bläddra till fliken Hantera i Din Azure Data Factory- eller Synapse-arbetsyta och välj Länkade tjänster och klicka sedan på Ny:

  2. Sök efter SAP och välj SAP-tabellanslutningen.

    Skärmbild av SAP-tabellanslutningsappen.

  3. Konfigurera tjänstinformationen, testa anslutningen och skapa den nya länkade tjänsten.

    Skärmbild av konfigurationen för en länkad SAP-tabelltjänst.

Konfigurationsinformation för anslutningsprogram

Följande avsnitt innehåller information om egenskaper som används för att definiera de entiteter som är specifika för SAP-tabellanslutningen.

Länkade tjänstegenskaper

Följande egenskaper stöds för den länkade SAP BW Open Hub-tjänsten:

Property Beskrivning Obligatoriskt
type Egenskapen type måste vara inställd på SapTable. Ja
server Namnet på servern där SAP-instansen finns.
Använd för att ansluta till en SAP-programserver.
Nej
systemNumber Systemnumret för SAP-systemet.
Använd för att ansluta till en SAP-programserver.
Tillåtet värde: Ett tvåsiffrigt decimaltal som representeras som en sträng.
Nej
messageServer Värdnamnet för SAP-meddelandeservern.
Använd för att ansluta till en SAP-meddelandeserver.
Nej
messageServerService Meddelandeserverns tjänstnamn eller portnummer.
Använd för att ansluta till en SAP-meddelandeserver.
Nej
systemId ID:t för SAP-systemet där tabellen finns.
Använd för att ansluta till en SAP-meddelandeserver.
Nej
logonGroup Inloggningsgruppen för SAP-systemet.
Använd för att ansluta till en SAP-meddelandeserver.
Nej
clientId ID:t för klienten i SAP-systemet.
Tillåtet värde: Ett tresiffrigt decimaltal som representeras som en sträng.
Ja
language Det språk som SAP-systemet använder.
Standardvärdet är EN.
Nej
userName Namnet på den användare som har åtkomst till SAP-servern. Ja
password Ange lösenordet för användaren. Markera det här fältet med typen SecureString för att lagra det på ett säkert sätt eller referera till en hemlighet som lagras i Azure Key Vault. Ja
sncMode SNC-aktiveringsindikatorn för åtkomst till SAP-servern där tabellen finns.
Använd om du vill använda SNC för att ansluta till SAP-servern.
Tillåtna värden är 0 (av, standardvärdet) eller 1 (på).
Nej
sncMyName Initierarens SNC-namn för att komma åt SAP-servern där tabellen finns.
Gäller när sncMode är på.
Nej
sncPartnerName Kommunikationspartnerns SNC-namn för åtkomst till SAP-servern där tabellen finns.
Gäller när sncMode är på.
Nej
sncLibraryPath Den externa säkerhetsproduktens bibliotek för åtkomst till SAP-servern där tabellen finns.
Gäller när sncMode är på.
Nej
sncQop Den SNC-skyddsnivå som ska tillämpas.
Gäller när sncMode är på.
Tillåtna värden är 1 (autentisering), 2 (integritet), 3 (sekretess), 8 (standard), 9 (högsta).
Nej
connectVia Den integrationskörning som ska användas för att ansluta till datalagret. En lokalt installerad integrationskörning krävs, som tidigare nämnts i Krav. Ja

Exempel 1: Ansluta till en SAP-programserver

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

Exempel 2: Ansluta till en SAP-meddelandeserver

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

Exempel 3: Anslut med hjälp av 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"
        }
    }
}

Egenskaper för datauppsättning

En fullständig lista över avsnitt och egenskaper för att definiera datauppsättningar finns i Datauppsättningar. Följande avsnitt innehåller en lista över de egenskaper som stöds av SAP-tabelldatauppsättningen.

Följande egenskaper stöds för att kopiera data från och till den länkade SAP BW Open Hub-tjänsten:

Property Beskrivning Obligatoriskt
type Egenskapen type måste vara inställd på SapTableResource. Ja
tableName Namnet på DEN SAP-tabell som data ska kopieras från. Ja

Exempel

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

Kopiera egenskaper för aktivitet

En fullständig lista över avsnitt och egenskaper för att definiera aktiviteter finns i Pipelines. Följande avsnitt innehåller en lista över de egenskaper som stöds av SAP-tabellkällan.

SAP-tabell som källa

Följande egenskaper stöds för att kopiera data från en SAP-tabell:

Property Beskrivning Obligatoriskt
type Egenskapen type måste vara inställd på SapTableSource. Ja
rowCount Antalet rader som ska hämtas. Nej
rfcTableFields Fälten (kolumner) som ska kopieras från SAP-tabellen. Exempel: column0, column1 Nej
rfcTableOptions Alternativen för att filtrera raderna i en SAP-tabell. Exempel: COLUMN0 EQ 'SOMEVALUE' Se även sap-frågeoperatortabellen senare i den här artikeln. Nej
customRfcReadTableFunctionModule En anpassad RFC-funktionsmodul som kan användas för att läsa data från en SAP-tabell.
Du kan använda en anpassad RFC-funktionsmodul för att definiera hur data hämtas från DITT SAP-system och returneras till tjänsten. Den anpassade funktionsmodulen måste ha ett gränssnitt implementerat (import, export, tabeller) som liknar /SAPDS/RFC_READ_TABLE2, vilket är standardgränssnittet som används av tjänsten.
Nej
partitionOption Partitionsmekanismen som ska läsas från en SAP-tabell. Alternativen som stöds är:
  • None
  • PartitionOnInt (normala heltals- eller heltalsvärden med noll utfyllnad till vänster, till exempel 0000012345)
  • PartitionOnCalendarYear (4 siffror i formatet "ÅÅÅÅ")
  • PartitionOnCalendarMonth (6 siffror i formatet "ÅÅÅÅÅMM")
  • PartitionOnCalendarDate (8 siffror i formatet "ÅÅÅÅÅMMDD")
  • PartitionOntime (6 siffror i formatet "HHMMSS", till exempel 235959)
Nej
partitionColumnName Namnet på kolumnen som används för att partitionera data. Nej
partitionUpperBound Det maximala värdet för den kolumn som anges i partitionColumnName som ska användas för att fortsätta med partitionering. Nej
partitionLowerBound Det minsta värdet för den kolumn som anges i partitionColumnName som ska användas för att fortsätta med partitionering. (Obs! partitionLowerBound får inte vara "0" när partitionsalternativet är PartitionOnInt) Nej
maxPartitionsNumber Det maximala antalet partitioner som data ska delas upp i. Standardvärdet är 1. Nej
sapDataColumnDelimiter Det enda tecken som används som avgränsare som skickas till SAP RFC för att dela upp utdata. Nej

Dricks

Om SAP-tabellen har en stor mängd data, till exempel flera miljarder rader, använder partitionOption du och partitionSetting delar upp data i mindre partitioner. I det här fallet läss data per partition och varje datapartition hämtas från SAP-servern via ett enda RFC-anrop.

Som partitionOption exempel beräknas antalet rader i varje partition med den här formeln: (totalt antal rader som partitionOnInt faller mellan partitionUpperBound och partitionLowerBound)/maxPartitionsNumber.

Om du vill läsa in datapartitioner parallellt för att påskynda kopieringen styrs den parallella graden av parallelCopies inställningen för kopieringsaktiviteten. Om du till exempel anger parallelCopies till fyra genererar och kör tjänsten samtidigt fyra frågor baserat på det angivna partitionsalternativet och inställningarna, och varje fråga hämtar en del av data från SAP-tabellen. Vi rekommenderar starkt att du gör maxPartitionsNumber en multipel av värdet för parallelCopies egenskapen. När du kopierar data till ett filbaserat datalager rekommenderas det också att skriva till en mapp som flera filer (ange endast mappnamn), vilket innebär att prestandan är bättre än att skriva till en enda fil.

Dricks

BASXML Är aktiverat som standard för den här SAP Table-anslutningsappen i tjänsten.

I rfcTableOptionskan du använda följande vanliga SAP-frågeoperatorer för att filtrera raderna:

Operatör beskrivning
EQ Lika med
NE Inte lika med
LT Mindre än
LE Mindre än eller lika med
GT Större än
GE Större än eller lika med
IN Som i TABCLASS IN ('TRANSP', 'INTTAB')
LIKE Som i LIKE 'Emma%'

Exempel

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

Ansluta TILL SAP-tabeller

För närvarande stöder SAP Table Connector endast en enskild tabell med standardfunktionsmodulen. Om du vill hämta anslutna data för flera tabeller kan du använda egenskapen customRfcReadTableFunctionModule i SAP Table Connector genom att följa stegen nedan:

  • Skriv en anpassad funktionsmodul som kan ta en fråga som ALTERNATIV och använda din egen logik för att hämta data.
  • För modulen "Anpassad funktion" anger du namnet på din anpassade funktionsmodul.
  • För "RFC-tabellalternativ" anger du tabellkopplingssatsen för att mata in i funktionsmodulen som ALTERNATIV, till exempel "<TABLE1> INRE KOPPLING <TABLE2> PÅ COLUMN0".

Nedan visas ett exempel:

Sap Table Join

Dricks

Du kan också överväga att aggregera anslutna data i VIEW, som stöds av SAP Table Connector. Du kan också prova att extrahera relaterade tabeller för att komma ombord på Azure (t.ex. Azure Storage, Azure SQL Database) och sedan använda Data Flow för att fortsätta med ytterligare koppling eller filter.

Skapa en anpassad funktionsmodul

För SAP-tabellen stöder vi för närvarande egenskapen customRfcReadTableFunctionModule i kopieringskällan, vilket gör att du kan använda din egen logik och processdata.

Som en snabb vägledning, här är några krav för att komma igång med "Anpassad funktionsmodul":

  • Definition:

    Definition

  • Exportera data till en av tabellerna nedan:

    Exportera tabell 1

    Exportera tabell 2

Nedan visas illustrationer av hur SAP Table Connector fungerar med modulen anpassad funktion:

  1. Skapa anslutning med SAP-servern via SAP NCO.

  2. Anropa "Anpassad funktionsmodul" med parametrarna som anges nedan:

    • QUERY_TABLE: tabellnamnet som du angav i SAP Table-datauppsättningen.
    • Avgränsare: avgränsare som du angav i SAP-tabellkällan.
    • ROWCOUNT/Option/Fields: rowcount/aggregated option/fields som du angav i tabellkällan.
  3. Hämta resultatet och parsa data på följande sätt:

    1. Parsa värdet i tabellen Fält för att hämta scheman.

      Parsa värden i Fält

    2. Hämta värdena för utdatatabellen för att se vilken tabell som innehåller dessa värden.

      Hämta värden i utdatatabellen

    3. Hämta värdena i OUT_TABLE, parsa data och skriv dem sedan till mottagaren.

Datatypsmappningar för en SAP-tabell

När du kopierar data från en SAP-tabell används följande mappningar från SAP-tabelldatatyperna till mellanliggande datatyper som används i tjänsten. Information om hur kopieringsaktiviteten mappar källschemat och datatypen till mottagaren finns i Schema- och datatypmappningar.

SAP ABAP-typ Tjänst interimsdatatyp
C (Sträng) String
I (Heltal) Int32
F (Flyttal) Double
D (Datum) String
T (Tid) String
P (BCD Packed, Currency, Decimal, Qty) Decimal
N (Numeriskt) String
X (Binär och rå) String

Egenskaper för uppslagsaktivitet

Mer information om egenskaperna finns i Sökningsaktivitet.

En lista över de datalager som stöds som källor och mottagare av kopieringsaktiviteten finns i Datalager som stöds.