Skip to content

CDC

This section shows how to set up a reusable SAP Table CDC extraction.

The Table CDC extraction type loads incremental data from SAP Tables. Unlike a full data load that transfers all records, CDC captures only data that has changed since the last load.

Note

Table CDC is an Add-On that requires a separate license. For more information, contact Theobald Software's sales team at sales@theobald-software.com.

About Table CDC

Change Data Capture (CDC) is a method to keep track of data changes such as insert, update and delete in SAP tables. The Table CDC extraction type creates a log table in SAP that records any changes made to a selected table. The content of the log table is cleared after every successful run of the extraction. Data that was not extracted is not cleared from the log table.

For a detailed overview of this process, refer to the Knowledge Base Article: Delta Mechanism of TableCDC.

Note

Clusters, pool tables and views are not supported by the Table CDC extraction type.

General workflow for Table CDC extractions:

  1. Define a Table CDC extraction type that contains the following:
    • The SAP Table you want to track.
    • Filters (optional), e.g., a column selection and/or WHERE Clause.
  2. Run the Table CDC extraction type once to initialize tracking:
    • Creates a log table and DB triggers in SAP.
    • Loads the initial data of the SAP Table (optional).
  3. Run the Table CDC extraction type regularly to load data changes.

System Requirements

  • The Table CDC extraction type is compatible with SAP ECC 5.0 and higher
  • Supported databases:
    • HANA
    • SQL Server
    • ASE (SAP Adaptive Server Enterprise, formerly Sybase)
    • Oracle
    • IBM Db2
    • IBM for i (Db4)
    • IBM for z/os (Db6)
    • MaxDB

Prerequisites

Tip

You can fetch the names and descriptions of tables in your SAP source system using the Xtract Core API.

Create CDC Extractions

Use the following endpoint to create a new table extraction:

POST /v1/extractions/tablecdc/{name}
POST /v1/extractions/tablecdc/maraCDC HTTP/1.1
Host: localhost:1337
Content-Type: application/json
Content-Length: 453

{
"Table": "MARA",
"Where": "MATNR = 000000000001",
"Source": "s4hana",
"Destination": "azure",
"Columns": [
    [
    "MATNR",
    "MANDT"
    ]
],
"ExtractTableOnFirstExtraction": true,
"LogTableRowLimit": 10,
"FolderPath": "abcdefgh-1234-ijkl-5679-ijklmnopqrst/SOMETABLE/year=2025/month=12/day=19",
"ResultName": "materials",
"ColumnNameStyle": "PrefixedCode",
"BackgroundJobMode": "InitBackgroundDeltaDialog",
"BackgroundJobTimeout": 60
}
curl -X POST \
     -d '"Table": "MARA", "Where": "MATNR = 000000000001", "Source": "s4hana", "Destination": "azure", "Columns": ["MATNR", "MANDT"], "ExtractTableOnFirstExtraction": true, "LogTableRowLimit": 10, "FolderPath": "abcdefgh-1234-ijkl-5679-ijklmnopqrst/SOMETABLE/year=2025/month=12/day=19", "ResultName": "materials", "BackgroundJobMode": "InitBackgroundDeltaDialog", "BackgroundJobTimeout": 60' \
     'http://localhost:1337/v1/extractions/tablecdc/maraCDC'
fetch('http://localhost:1337/v1/extractions/tablecdc/maraCDC', {
  "method": "POST",
  "body": JSON.stringify("Table": "MARA", "Where": "MATNR = 000000000001", "Source": "s4hana", "Destination": "azure", "Columns": ["MATNR", "MANDT"], "ExtractTableOnFirstExtraction": true, "LogTableRowLimit": 10, "FolderPath": "abcdefgh-1234-ijkl-5679-ijklmnopqrst/SOMETABLE/year=2025/month=12/day=19", "ResultName": "materials", "BackgroundJobMode": "InitBackgroundDeltaDialog", "BackgroundJobTimeout": 60)"
});

Tip

The Content-Length property in the header represents the byte size of the JSON string in the request body. When using curl, the Content-Length can be determined automatically. The -v (verbose) option returns the request details, including Content-Length.

For more information about mandatory and optional parameters, refer to the API Reference: Table CDC Extraction.


Last update: December 19, 2025