In SAP Data Services bestaan diverse mogelijkheden om gegevens uit een SAP-systeem te ontsluiten; denk bijvoorbeeld aan direct table reads(al dan niet via een ABAP dataflow) of IDocs (voor data transfers van business transacties). Er bestaat echter ook de mogelijkheid om een standaard in SAP aanwezige ODP extractor te gebruiken. Extractors beschikken over een delta-mechanisme. Dit maakt ze bijvoorbeeld geschikt om zeer grote tabellen dagelijks snel bij te laden, of voorkomt dat je zelf moet onderzoeken welke bronvelden geschikt zijn voor delta-bepaling.
Het gebruiken van een extractor in Data Services is niet heel ingewikkeld. Allereerst is een ‘SAP Applications’ datastore benodigd. Onder ODP (Operational Data Provisioning) objects kunnen vervolgens extractors worden gedefinieerd; in dit geval zijn er twee toegevoegd:
De nieuw aangemaakte extractor – bijvoorbeeld 2LIS_11_VAHDR voor kopgegevens van verkoopdocumenten – kan als source worden gebruikt in een dataflow:
De data die de extractor oplevert is hoofdzakelijk afkomstig uit de tabel VBAK; hier is de naam van de doeltabel dan ook naar vernoemd. Op hetSAP Help Portal kan worden bekeken welke brongegevens de extractor 2LIS_11_VAHDR precies aanspreekt.
Door de configuratie van de extractor aan te passen kan worden bepaald dat slechts de delta’s (oftewel gewijzigde records) worden opgevraagd:
Met de instellingen die hierboven in rood zijn omlijnd geeft de extractor alleen de wijzigingen door, aangezien Initial Load op ‘No’ staat. Er worden alleen gewijzigde records opgehaald ten opzichte van de datetime waarde achter Extract from datetime. Waarde $p_Delta_Datum verwijst naar een zelf gedefinieerde parameter en bevat de datum en het tijdstip van de vorige delta-verwerking, gebaseerd op een stuurtabel met historie van eerdere runs van de job. Alle overige instellingen worden standaard met default waarden gevuld.
In de output-velden in bovenstaand screenshot zijn er twee groen omlijnd; deze geven cruciale informatie om de extractor als deltamechanisme te kunnen gebruiken. Het veld DI_SEQUENCE_NUMBER geeft de volgorde waarin veranderingen hebben plaatsgevonden; DI_OPERATION_TYPE bevat de waarde ‘I’ of ‘D’ om aan te geven of een record een insertion of een deletion betreft. Een wijziging (update) kent geen aparte status, maar is simpelweg een deletion van het oude record, gevolgd door een insertion van het nieuwe.
Het is ook mogelijk om een volledige extractie van VBAK op te vragen, simpelweg door de configuratie aan te passen:
Voor de duidelijkheid is ditmaal geen datum + tijd ingevuld bij de instelling Extract datetime from. Deze zou wel ingevuld kunnen worden, maar heeft geen effect wanneer de Initial Load op ‘Yes’ staat.
Standaard extractors in SAP kunnen in bepaalde situaties prima worden ingezet, vanwege het ingebouwde deltamechanisme in combinatie met een goede performance. Echter, een extractor bevat mogelijk niet alle velden die je nodig hebt (nu of in de toekomst), waardoor de voorkeur uitgaat naar het gebruiken van direct table reads.