SAP OData Authorization Requirements
Applies to: S/4HANA Private Cloud Edition, OData V2 and V4, Basic authentication over HTTPS
This topic is intended for SAP Basis and IT administrators. It describes the authorization requirements for Process Runner to call an SAP OData service on a user's behalf using basic authentication over HTTPS.
Note: This guide does not apply to S/4HANA Public Cloud Edition, which uses Communication Arrangements and does not permit customer PFCG editing.
Authorization model
For Process Runner to call an SAP OData service, the SAP user requires authorizations at three layers. The following table describes each layer for OData V2 and V4.
| Layer | OData V2 | OData V4 |
|---|---|---|
| Service start authorization | S_SERVICE |
S_START (object type G4BA) |
| Application authorization object (same as underlying transaction or BAPI) | For example, M_BEST_BSA, EKG, EKO, WRK for purchase orders |
Same objects as V2 (SAP dispatches to the same ABAP code) |
| CDS access controls (DCL) | Not applicable | Applies to CDS/RAP-based services (most V4 services) |
Supported SAP user types
Process Runner supports all SAP user types, subject to the authorization restrictions imposed by your organization.
| User type | GUI logon | Password expiry | Notes |
|---|---|---|---|
| Communication (C) | No | Yes (general policy applies) | Assign SECPOL to suppress expiry (SAP KBA 3315955). |
| System (B) | No | No (excluded) | Supported if it follows company authorization policy. |
| Dialog (A) | Yes | Yes | Supported if it follows company authorization policy. |
| Service (S) | Yes | No | Supported if it follows company authorization policy. |
OData V2 authorization — S_SERVICE fields
SRV_NAME is a hash, not the service name. Populate S_SERVICE by adding the service to a PFCG role via the role menu as a TADIR Service. Profile Generator computes the hash from table USOBHASH automatically.
| Field | Value | How to set |
|---|---|---|
SRV_NAME |
Hash (auto-generated; not the human-readable name) | PFCG > role menu > Add > TADIR Service > Program ID R3TR, Object type IWSV (backend) + IWSG (frontend group) |
SRV_TYPE |
HT |
Set automatically when TADIR Service is used |
OData V4 authorization — S_START fields
OData V4 uses S_START (repository-object based) instead of S_SERVICE. AUTHOBJNAM is the service group name.
| Field | Value | Notes |
|---|---|---|
AUTHPGMID |
R3TR |
Fixed value |
AUTHOBJTYP |
G4BA |
OData V4 backend service group |
AUTHOBJNAM |
Service group name (for example, API_PURCHASEORDER_2) or * for all V4 |
Get from /IWFND/V4_ADMIN > Publish Service Groups |
ACTVT |
16 |
Execute |
Examples
Example A — OData V2: API_PURCHASEORDER_PROCESS_SRV
URL: /sap/opu/odata/sap/API_PURCHASEORDER_PROCESS_SRV/ | System alias: LOCAL (embedded)
Note: This V2 service is deprecated as of S/4HANA (SAP KBA 3502308) and is shown for illustration only.
| Authorization object | Fields | Values to grant | Purpose |
|---|---|---|---|
S_SERVICE |
SRV_NAME, SRV_TYPE
|
Auto via PFCG TADIR Service R3TR IWSV API_PURCHASEORDER_PROCESS_SRV + R3TR IWSG API_PURCHASEORDER_PROCESS_SRV_0001 | V2 start gate |
M_BEST_BSA |
ACTVT, BSART
|
01/02/03 (create/change/display); BSART=NB or * | Purchase order document type |
M_BEST_EKG |
ACTVT, EKGRP
|
01/02/03; specific EKGRP or * | Purchasing group |
M_BEST_EKO |
ACTVT, EKORG
|
01/02/03; specific EKORG or * | Purchasing org |
M_BEST_WRK |
ACTVT, WERKS
|
01/02/03; specific WERKS or * | Plant |
Example B — OData V4: API_PURCHASEORDER_2
URL: /sap/opu/odata4/sap/api_purchaseorder_2/srvd_a2x/sap/purchaseorder/0001/ | Service group: API_PURCHASEORDER_2
| Authorization object | Fields | Values to grant | Purpose |
|---|---|---|---|
S_START |
AUTHPGMID, AUTHOBJTYP, AUTHOBJNAM, ACTVT
|
R3TR, G4BA, API_PURCHASEORDER_2, 16 | V4 start gate |
M_BEST_BSA |
ACTVT, BSART
|
01/02/03; BSART=NB or * | Purchase order document type |
M_BEST_EKG/EKO/WRK |
As in Example A | As in Example A | Purchasing group, org, and plant |
| CDS access controls (DCL) | n/a | Grant read on underlying CDS entities (for example, R_PurchaseOrder) | Data-level filter for V4/RAP |
Identify authorization objects for any OData service
Use transaction SU24 as the source of truth for any OData service not covered by the examples above.
- Open transaction SU24 (customer view) or SU22 (SAP proposals).
- Set Type of Application to
IWSVfor OData V2 orG4BAfor OData V4. - Enter the service or service group name in the Object Name field. V4 names carry a version suffix, for example,
_0001. - Select Execute. The proposal lists the start object and every application authorization object the service checks, along with field defaults.
- If SU24 returns no results after an upgrade, run SU25 and, if needed, program
SU24_AUTO_REPAIR.
Note: An OData service enforces the same application authorization objects as the underlying transaction or BAPI, since both use the same ABAP code. OData only adds the start gate authorization.
Service activation prerequisites
The following prerequisites are owned by the Basis team and must be completed before Process Runner can connect to the OData service.
| Item | OData V2 | OData V4 |
|---|---|---|
| Activation transaction |
/n/IWFND/MAINT_SERVICE > Add Service > alias LOCAL > Add Selected Services |
/n/IWFND/V4_ADMIN > Publish Service Groups > alias LOCAL > Get > Publish |
| SICF node | /sap/opu/odata/sap/<service> |
/sap/opu/odata4/ (single node for all V4 services) |
| Catalog | Per-service (built-in) | Also publish V4 catalog service group /IWFND/CONFIG
|
| System alias (embedded) | LOCAL | LOCAL with "Local GW" flag enabled |
HTTPS/HTTP and basic authentication
Important: Verify the ICF node Logon Data settings before assuming basic authentication is enabled. Do not assume it is active by default.
- Basic authentication is accepted on
/sap/opu/odata/and/sap/opu/odata4/provided the ICF node is active and its Logon Data (SICF > Logon Data tab) permits credential-based logon — "Standard" or "Alternative Logon Procedure" (SAP KBA 3564503). - OData V4 has a single SICF node (
/sap/opu/odata4/). Per-service stored credentials via SICF are not available for V4 the way they are for V2. - HTTPS is required. A valid CA-signed server certificate must be installed on the SAP Web Dispatcher or ICM, TLS 1.2 or higher must be configured, and the Process Runner client must trust the server certificate chain.
- IMPORTANT: Process Runner currently supports basic authentication only. SAP recommends OAuth 2.0 as the more secure option; basic authentication is fully functional for S/4HANA Private Cloud Edition.
S/4HANA Private Cloud Edition (RISE) boundary
The following table describes what the customer and SAP Enterprise Cloud Services (ECS) each own in an S/4HANA Private Cloud Edition environment.
| Owner | Responsibilities |
|---|---|
| Customer | User administration (SU01), roles and authorizations (PFCG, SU24), passwords and SECPOL, and service activation via /IWFND/*. These responsibilities are the same as in an on-premises deployment. |
| SAP ECS | Infrastructure and base Basis operations. Some settings, such as SICF on managed nodes and global profile parameters, require a support ticket. |
Note: This guide does not apply to S/4HANA Public Cloud Edition, which uses Communication Arrangements and does not permit customer PFCG editing.
End-to-end validation checklist
- User: In SU01, confirm the user type, that the password is valid, that roles are assigned, and that the account is not locked. Use SU56 to view the authorization buffer.
-
Service reachable in SAP: Run
/n/IWFND/GW_CLIENT, enter the request URI, and select Execute. Expect HTTP 200 with metadata or entity data. -
Service reachable from Process Runner: Call
/sap/opu/odata/sap/<service>/$metadataor/sap/opu/odata4/<group>/$metadatafrom Process Runner over HTTPS. Expect HTTP 200 XML. - Business action test: Perform the smallest real operation, for example, GET one purchase order. If the operation fails with HTTP 403, see Troubleshooting authorization failures below.
Troubleshooting authorization failures
All transactions listed below are run by Basis or Security teams using SAP GUI. The end user only needs to supply the failing user ID and the timestamp of the failure.
Symptoms, likely causes, and where to look
| HTTP response or symptom | Likely cause | Where to look |
|---|---|---|
HTTP 403 with body /IWFND/CM_CONSUMER/101 "No authorization to access Service <name>" |
Missing start authorization (S_SERVICE for V2 or S_START for V4) |
SU53 immediately after the call; /IWFND/ERROR_LOG
|
| HTTP 401 Unauthorized | Wrong password, expired password, or user locked | SU01 (Valid Through, Password status); SM19/SM20 (Security Audit Log) |
| HTTP 403 only on specific entities or actions (metadata returns OK, but GET or POST fails) | Missing application authorization (for example, M_BEST_*) or missing CDS/DCL grant (V4) |
STAUTHTRACE (best for V4/CDS); SU53 |
| HTTP 500 cryptic error or empty response | Service not activated, SICF node inactive, or system alias missing |
/IWFND/MAINT_SERVICE (V2); /IWFND/V4_ADMIN (V4); SICF |
| Works in SAP GUI test but fails from Process Runner | HTTPS/TLS trust issue, wrong URL, or ICF Logon Data blocks basic authentication | SMICM (trace); SICF > Logon Data tab; network capture |
Transaction reference
| Transaction | Purpose | Typical use |
|---|---|---|
| SU53 | Last failed authorization check for a user | Run immediately after the failing OData call. Shows the hash for S_SERVICE. |
| STAUTHTRACE | System-wide authorization trace (pass and fail) | Filter by technical user > Errors only > reproduce > Evaluate. Best for V4/CDS — catches CDS entity checks that SU53 misses. |
| /IWFND/ERROR_LOG | SAP Gateway error log | Search by timestamp. For V4, shows failing check as R3TR G4BA <service group>. |
| /IWFND/GW_CLIENT | Test OData call from inside SAP | "No authorization to access Service" indicates a missing start object. |
| PFCG | Role maintenance | Add service via role menu (TADIR Service). Run User Comparison afterward. |
| SU01 / SU56 / SUIM | User administration, authorization buffer, and find role by service | SUIM: Roles > Search for Startable Applications in Roles, Application Type = SAP Gateway Service Group. |
| SE16N + USOBHASH | Resolve S_SERVICE hash to service name | SU53 shows the hash. Look it up in table USOBHASH using PGMID/OBJECT/OBJ_NAME. |
Standard fix workflow
- Capture the user ID and exact timestamp of the failing call.
- Run SU53 as that user, or select SU53 > Goto > Other User.
- If SU53 is not helpful, run STAUTHTRACE filtered on that user, reproduce the issue, and select Evaluate.
- Cross-check /IWFND/ERROR_LOG for the same timestamp.
- If a hash was shown, resolve it using USOBHASH (see Transaction reference above).
- Add the missing authorization object or field values to the PFCG role, regenerate the profile, run User Comparison, and retest.