Connection to SAP RFC

The SAP RFC connector reads explicitly selected transparent tables, DDIC database views and CDS view entities from an SAP system through the SAP application server (AS ABAP). It needs no database login. DQC requires the S_TABU_NAM display authorization for each source, SAP's DDIC display authorization check applies to tables and database views, and CDS access controls remain effective.

The SAP RFC connector is available on request and is not enabled by default. It needs a DQC environment with the SAP RFC runtime, a network route to your application server and the DQC ABAP component in your SAP system. Contact us to check availability for your DQC environment and to plan the setup.

For an overview of all ways to bring SAP data into DQC, see Connecting to SAP systems.


How it works

The DQC Platform runs outside SAP. It opens an RFC client connection to one application server, logs on with a dedicated communication user and calls exactly these function modules:

Function module

Type

Purpose

RFC_PING

SAP standard

Connection test

RFC_SYSTEM_INFO

SAP standard

Confirms which system and client answered

RFC_METADATA_GET

SAP standard

Reads the function interfaces before the first call (used by the SAP NetWeaver RFC SDK)

Z_DQC_PING

DQC, remote-enabled

Checks the component version, system ID and client

Z_DQC_SEARCH_TABLES

DQC, remote-enabled

Searches authorized sources by technical-name prefix

Z_DQC_GET_CAPABILITY

DQC, remote-enabled

Returns fields, keys and a schema fingerprint of one approved source

Z_DQC_FETCH

DQC, remote-enabled

Returns one bounded block of rows after a given key

What this means for your SAP system:

  • Only approved sources. DQC reads only sources that your data owner has approved by exact technical name and that are granted in the communication user's role. DQC never lists the whole Dictionary: a search reads only the Dictionary entries that start with the prefix you enter and returns only sources the user may read. There is no full-system extraction.

  • Only selected columns. Within each source, DQC reads the columns you select, plus the key fields it needs to read in blocks. If you select no columns, DQC reads all supported columns.

  • Bounded load. Rows are read in compressed blocks of at most 5,000 rows per call (default). An optional execution window per source (for example 22:00-04:00 Europe/Berlin) stops further reads when it closes. An interrupted extraction resumes from its last saved block where possible.

  • When DQC reads from SAP. DQC keeps the last complete extraction of each source and reuses it for up to 24 hours (default). A refresh or a check after that period reads the source again in full; there are no delta loads. Before DQC uses a source, it checks the source's authorization and structure in SAP with one short call, also outside the execution window. Outside the execution window DQC reads no rows and keeps using the last complete extraction.

  • Where the data is kept. The DQC component creates no tables and holds no data in SAP. DQC stores the extracted columns in the DQC Platform, where the rules run on them. Each new extraction replaces the previous one, and deleting the connector deletes the stored data.


Prerequisites in SAP

Requirement

Detail

Application Server ABAP

On-premise or private cloud

SAP_BASIS 7.54 or higher

In practice S/4HANA 1909 or later. SAP ECC 6.0 (up to EHP 8, SAP_BASIS 7.50) and S/4HANA 1809 and earlier (SAP_BASIS 7.53 and lower) are not supported. The development system needs the same release floor

Unicode system

Only Unicode systems are supported (every SAP_BASIS 7.54 system is Unicode)

One client per connector

DQC reads only in the logon client; cross-client reads are disabled by design

Development system

An ABAP development system in the same transport landscape, to create and transport the DQC component

Approved source list

The exact technical names of the first sources, approved by your data owner. They are needed to build the role

Supported sources are active transparent tables, DDIC database views and CDS view entities without parameters, with supported field types and a usable key for reading in blocks. CDS view entities require ABAP 7.55 or later.


Step 1: Install the DQC ABAP component

DQC delivers the ABAP source code with a machine-readable manifest, checksums and an installation and acceptance guide. DQC does not deliver a transport request: your SAP team creates the objects in its own development system and moves them through its normal change process.

The component consists of 13 objects in the customer namespace:

  • Function group Z_DQC_RFC with the four remote-enabled function modules Z_DQC_PING, Z_DQC_GET_CAPABILITY, Z_DQC_SEARCH_TABLES and Z_DQC_FETCH

  • Eight DDIC structures (ZDQC_S_*). They are structures, not database tables

Important:

  • Keep the object names. The DQC Platform calls the modules by name and the role grants the function group by name

  • Put nothing else into function group Z_DQC_RFC: the role grants the whole group

  • Transport all 13 objects together. A partly imported component passes the connection test and fails when data is read

  • Run ATC with your usual check variant for classic ABAP. The installation guide lists the expected findings and their background


Step 2: Create the communication user and role

All steps take place in the target client.

  1. User (SU01): create a dedicated user of type Communication (for example DQCRFC), one per DQC environment that connects to this system (for example one for test and one for production). Never a dialog user, never SAP* or DDIC, never shared with another integration. Hand the password over through your secret process; it is entered once into the encrypted DQC connector configuration.

  2. Role (PFCG): create exactly one single role (for example Z_DQC_RFC_READ) with manually maintained authorization data, no menu and no transactions. The authorization values are listed in the table below. Assign no other role or profile to the user.

  3. Profile and user master comparison: generate the profile, assign the role to the user and perform the user master comparison. A generated but uncompared profile is not effective at runtime; this is the most common cause of "the role looks right, but the call fails".

#

Authorization object

Field

Value

1

S_RFC

ACTVT

16

RFC_TYPE

FUGR

RFC_NAME

Z_DQC_RFC

2

S_RFC

ACTVT

16

RFC_TYPE

FUNC

RFC_NAME

RFC_PING, RFC_SYSTEM_INFO, RFC_METADATA_GET

3

S_TABU_NAM

ACTVT

03

TABLE

One exact technical name per approved source, upper case, no wildcard

Two details that are often set up incorrectly:

  • The two S_RFC entries must be separate authorizations. One authorization with both RFC_TYPE values would grant every combination of both lists

  • S_TABU_NAM is the allowlist the whole model rests on. S_TABU_DIS cannot replace it. Do not grant S_TABU_DIS with *, S_TABU_CLI, S_DEVELOP, SAP_ALL or SAP_NEW

Not needed: no SM59 destination, no gateway reginfo or secinfo entry, and no authorizations for the Dictionary function groups (SDIFRUNTIME, SDIF, SVIW) or the tables DD02L, DD03L, DD25L or DDDDLSRC. If Unified Connectivity (UCON) is active in the target client, add the four Z_DQC_* function modules and, where not already assigned, RFC_PING, RFC_SYSTEM_INFO and RFC_METADATA_GET to the responsible communication assembly.

To add a source later, add its exact name to S_TABU_NAM, regenerate the profile, perform the user master comparison and select the source in DQC. No new ABAP code is needed.


Step 3: Provide a network route

DQC connects to the application server on the RFC gateway port 33<NN>, where <NN> is the instance number (for example 3300 for instance 00). The connection uses the application server directly; message server load balancing (logon groups), SAProuter and SNC are currently not supported. Without SNC, SAP does not encrypt the RFC connection, so the route must be an encrypted private connection.

  • Direct private route: DQC connects through an encrypted private connection (for example an IPsec VPN) from a small, fixed set of source IP addresses that DQC provides during setup. Allow exactly these addresses on TCP 33<NN> to the application server, and make the application server's logical host name resolvable on that path.

  • DQC in your private cloud or on-premise: the DQC Platform runs inside your network and reaches the application server directly. See Private cloud & on-premises deployments.

SAP RFC through the DQC Proxy is not available yet. If your network only allows outbound connections, contact us.


Step 4: Create the connector in DQC

Go to the Data Connectors screen, choose SAP RFC and fill in:

Field

Example

Description

Name

S/4HANA production

Any internal name for this connection

SAP application server

sapprd01.customer.internal

Logical host name of the application server

System number

00

Instance number of the application server

Expected system ID

PRD

SAP system ID. DQC stops if a different system answers

Client

100

The client DQC logs on to and reads from

User

DQCRFC

The communication user from step 2

Password

Password of the communication user

Logon language

EN

Language of the logon session

Then add the sources:

  1. Enter at least two leading characters of a technical name (for example MARA) and load the matching sources. DQC only finds sources that the communication user is authorized to read. If more than 100 sources match, DQC asks for a longer prefix.

  2. Select a source and preview its extraction plan; the preview loads the available columns. Select the columns to extract and set the agreed row ceiling, rows per RFC call and execution window. By default a source may have at most 1,000,000 rows. A source with more rows than its ceiling fails instead of being loaded partially; contact DQC if a source needs a higher ceiling.

  3. Optionally enter the expected number of rows to get estimated call and data volume figures (the preview does not count the rows in SAP). Preview the plan again after changing settings, review the limits and save.

When the connector is saved and before every refresh, DQC checks each selected source again. If a source is no longer authorized or available, the refresh stops before any data in DQC is changed.


Step 5: Verify the setup

  1. Run the connection test. It checks the logon, the system ID and client, and the DQC component version.

  2. Search for a source that is not in the role. It must not appear.

  3. Preview the extraction plan of an approved source and run the first load inside the agreed execution window.


Troubleshooting

Error code

Meaning

What to check

SAP_RFC_UNREACHABLE

The application server could not be reached

Host, system number, TCP 33<NN>, DNS and firewall, SAP system status

SAP_RFC_LOGON_REJECTED

SAP rejected the logon

Client, user and password, lock status and validity in SU01

SAP_RFC_IDENTITY_MISMATCH

A different system or client answered

Expected system ID and client against the reached system

SAP_RFC_FUNCTION_NOT_AUTHORIZED

A required function module may not be called

The S_RFC entries of the role, profile generation and user master comparison; SU53 for the communication user

SAP_RFC_SOURCE_NOT_AUTHORIZED

A source may not be read

The exact source name in S_TABU_NAM with ACTVT 03

SAP_RFC_NO_AUTHORIZED_SOURCES

No supported source is authorized

At least one exact source name in S_TABU_NAM

SAP_RFC_SOURCE_NOT_FOUND

The source does not exist or is inactive

The name and active version in SE11 or ADT

SAP_RFC_SOURCE_UNSUPPORTED

The source type is not supported

Use a transparent table, a DDIC database view or a CDS view entity without parameters

SAP_RFC_SOURCE_NO_LONGER_AVAILABLE

A selected source is no longer available

Role, profile, user master comparison, object activation and CDS access control changes

SAP_RFC_DISCOVERY_LIMIT_EXCEEDED

The search matched too many sources

Enter a longer technical-name prefix

SAP_RFC_LIMIT_EXCEEDED

An extraction exceeded a safety limit, for example the row ceiling of a source

Expected rows and row ceiling of the source, number of selected columns; contact DQC if the source needs a higher ceiling

SAP_RFC_EXECUTION_WINDOW_CLOSED

DQC stopped reading because the execution window of the source is closed

Execution window and time zone of the source; start the refresh inside the window

SAP_RFC_UNSUPPORTED_RELEASE

The SAP system reports a release below SAP_BASIS 7.54

SAP_BASIS release (System, Status); the connector needs 7.54 or higher

SAP_RFC_PROTOCOL_ERROR

SAP returned an unexpected response

All 13 DQC objects are active and identical to the delivered sources, and Z_DQC_PING reports the expected version; then contact DQC support

SAP_RFC_NOT_CONFIGURED

SAP RFC is not enabled in this DQC environment

Contact DQC support

If SU53 names RFC_GET_FUNCTION_INTERFACE or DDIF_FIELDINFO_GET, do not add them to the role. The DQC connector reads function metadata through RFC_METADATA_GET; contact DQC support instead.


Notes