> ## Documentation Index
> Fetch the complete documentation index at: https://docs.datazone.co/llms.txt
> Use this file to discover all available pages before exploring further.

# SAP S/4HANA

> Connect to SAP S/4HANA systems via the Datazone CloudFeed SAP Connector.

# Overview

Datazone connects to SAP S/4HANA via the **Datazone CloudFeed SAP Connector**, an HTTP adapter installed on your SAP system. It provides access to SAP tables, CDS views, and function modules without requiring a direct database connection.

## Prerequisites

The **Datazone CloudFeed SAP Connector** must be installed on your SAP environment before creating this source. Contact your SAP administrator to confirm the connector is active.

## Connection Parameters

Set on the source when you create it. Names match the API and CLI payload.

<ParamField path="name" type="string" required>
  **Name** — a unique identifier for your SAP S/4HANA source.
</ParamField>

<ParamField path="base_url" type="string" required>
  **Base URL** — base URL of the SAP system running the CloudFeed connector, for example `https://your-s4hana-host:8080`.
</ParamField>

<ParamField path="username" type="string" required>
  **Username** — SAP technical user username.
</ParamField>

<ParamField path="password" type="string" required>
  **Password** — password for the specified user. Stored encrypted.
</ParamField>

## Extract Parameters

Set per extract, in `source_parameters`. See [Shared Extract Parameters](/reference/sources/overview#shared-extract-parameters) for `mode`, `replication_key`, and `schema_mapping`.

<ParamField path="table_name" type="string" required>
  **Table Name** — the table or CDS view to extract, for example `I_BusinessPartner`.
</ParamField>

<ParamField path="package_size" type="integer" default="50000">
  Rows SAP puts in each extraction package. Packages are streamed rather than buffered whole, so this bounds peak memory. Lower it for very wide objects.
</ParamField>

<ParamField path="batch_size" type="integer" default="50000">
  Rows written per batch on the Datazone side.
</ParamField>

<ParamField path="parallel_fetch" type="boolean" default="true">
  Fetch ready packages concurrently instead of one at a time. Turn it off to minimise load on the SAP system.
</ParamField>

<ParamField path="parallel_task_count" type="integer" default="4">
  Number of concurrent package fetches when `parallel_fetch` is on. Peak memory scales with this multiplied by `package_size`, so raise the two together with care.
</ParamField>

<ParamField path="timeout" type="integer" default="60">
  Per-request timeout in seconds when talking to the CloudFeed connector.
</ParamField>

<ParamField path="filters" type="object[]">
  SAP range-table filters, evaluated inside SAP before any data leaves the system. Each entry takes `FIELDNAME`, `SIGN` (`I` to include, `E` to exclude), `OPTION` (`EQ`, `NE`, `GT`, `GE`, `LT`, `LE`, `BT`, `CP`), `LOW`, and `HIGH` (upper bound, for `BT`).

  ```json theme={null}
  [{ "FIELDNAME": "MTART", "SIGN": "I", "OPTION": "EQ", "LOW": "FERT", "HIGH": "" }]
  ```
</ParamField>

<ParamField path="delta_settings" type="object">
  Delta configuration, **required** when `mode` is `append`. Delta state is held server-side by SAP against `ID`, not tracked by Datazone, and is committed only after the extraction succeeds.

  ```json theme={null}
  {
    "ID": "unique-extraction-id",
    "TYPE": "MULTI",
    "OPERATOR": "GE",
    "COLUMNS": ["LAEDA"]
  }
  ```

  `ID` identifies the delta stream and must stay stable across runs; `TYPE` is `SINGLE` or `MULTI` column; `OPERATOR` is the comparison applied to `COLUMNS`.
</ParamField>

<ParamField path="select_clause" type="string" default="*">
  Columns to read, as a comma-separated list.
</ParamField>

<ParamField path="filter_clause" type="string">
  Row filter applied to the extracted rows, written without the `WHERE` keyword. For filtering inside SAP, prefer `filters`.
</ParamField>

<Note>
  `extraction_timeout` (default 7200 seconds) and `check_interval` (default 5 seconds) govern how long Datazone waits for SAP to finish an extraction job and how often it polls. Neither is read from `source_parameters` — set them through the extract's `custom_reader_config` if you need to change them.
</Note>

## Required Permissions

Assign the following roles to the SAP technical user:

| Role | Description |
| - | - |
| `/CLF/BASE` | CloudFeed Base Service Role |
| `/CLF/TABLE_ALL` | All Table Access |
| `/CLF/WRITEBACK_ALL` | All Writeback Access |

## How It Works

Datazone communicates with SAP S/4HANA via the Datazone CloudFeed SAP Connector over HTTP installed on the SAP system. No direct database port needs to be open — all data flows over HTTPS and SAP's own authorization model is enforced.

## SAP HANA vs SAP S/4HANA

| | SAP HANA | SAP S/4HANA |
| - | - | - |
| **Connection type** | Direct JDBC (host + port) | HTTP via CloudFeed connector |
| **Use case** | Direct SQL access to HANA database | ERP business data via SAP application layer |
| **Auth model** | Database user | SAP application user |

## Limitations

* Maximum payload size per request: 10 MB
* Supported versions: SAP S/4HANA 1610 and above

## Next Steps

1. Create extracts to specify which tables or CDS views to ingest
2. Configure scheduling for recurring extracts
3. Integrate the source into your data pipelines


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.