SAP ECC Component
Send SOAP requests, call BAPIs, and manage IDocs in SAP ECC.
Component key: sap-ecc
Description
SAP ECC is an enterprise resource planning (ERP) system from SAP for managing core business processes. This component allows sending SOAP requests, call BAPIs via RFC, send and track IDocs, and receive change notifications from SAP ECC systems.
API Documentation
This component was built using the SAP ECC SOAP/RFC Interface
Connections
On-Premise Connection
key: sapEccConnects to an on-premises SAP ECC server through an on-prem agent using basic authentication. Create a connection of type On-Premise Connection to get started.
Prerequisites
- An SAP ECC system accessible from the on-prem agent
- An on-prem agent deployed and configured within the network that has access to the SAP server
- SAP user credentials with appropriate permissions for the required operations
Setup Steps
- Deploy and configure an on-prem agent within the network that has access to the SAP ECC server.
- The Host and Port fields are controlled by the on-prem agent configuration and are set on the agent side.
- In the connection configuration, enter the SAP Client, Username, and Password values.
Configure the Connection
- Host: The hostname or IP address of the SAP ECC server (e.g.,
sap-ecc.internal). Controlled by the on-prem agent. - Port: The HTTPS port of the SAP ECC server (default:
44300). Controlled by the on-prem agent. - SAP Client: The SAP client number to connect to (e.g.,
100). This value is sent as thesap-clientquery parameter. - Username: The SAP username for authentication.
- Password: The SAP password for authentication.
On-prem enabled: this connection can be configured to connect to an on-prem resource on a private network. Learn more.
| Input | Notes | Example |
|---|---|---|
| Host | The hostname or IP address of the SAP ECC server (e.g., sap-ecc.internal). | sap-ecc.internal |
| Password | The SAP password for authentication. | |
| Port | The HTTPS port of the SAP ECC server. | 44300 |
| SAP Client | The SAP client number to connect to (e.g., 100). This is sent as the sap-client query parameter. | 100 |
| Username | The SAP username for authentication. |
Triggers
New IDocs
Checks for new IDocs in the SAP EDIDC table on a configured schedule, using the DOCNUM field as a cursor. | key: pollIdocTrigger
| Input | Notes | Example |
|---|---|---|
| Connection | The SAP ECC connection to use. | |
| Direction | Optional IDoc direction filter (DIRECT). | |
| Endpoint | The SAP SOAP endpoint path. | /sap/bc/soap/rfc |
| Message Type | Optional IDoc message type filter (MESTYP). Only IDocs matching this type will be returned. | ORDERS |
| Row Count | Maximum number of IDocs to return per poll cycle. | 50 |
| Starting DOCNUM | Used only on the very first poll when no cursor state exists yet. Once polling begins and state is saved, this value is ignored. Set this to the last known DOCNUM in your SAP system to avoid processing historical records. | 0000000000012345 |
Checks for new IDocs in the SAP EDIDC table on a configured schedule using the DOCNUM field as a high-water-mark cursor. Unlike date-based polling, it relies solely on document number ordering to detect new IDocs since the last poll. Only new IDocs are detected — updates to existing IDocs are not captured.
How It Works
- The trigger runs on the configured schedule.
- On the first execution it reads the Starting DOCNUM input (or defaults to
0000000000000000) to seed the cursor. - It calls
RFC_READ_TABLEvia SOAP/RFC, querying EDIDC for rows whereDOCNUM > lastDocnum, applying any optional Message Type or Direction filters. - The highest DOCNUM in the result set becomes the new cursor, which is persisted in polling state.
- Subsequent executions repeat from step 3 using the stored cursor, ignoring the Starting DOCNUM input.
Configuration (6 inputs)
| Input | Required | Default | Description |
|---|---|---|---|
| Connection | Yes | — | The SAP ECC connection to use. |
| Endpoint | Yes | /sap/bc/soap/rfc | The SAP SOAP endpoint path. |
| Row Count | No | 50 | Maximum number of IDocs to return per poll cycle. |
| Message Type | No | — | Optional IDoc message type filter (MESTYP). Only IDocs matching this type are returned (e.g., ORDERS). |
| Direction | No | — | Optional IDoc direction filter (DIRECT). 1 = Outbound, 2 = Inbound. |
| Starting DOCNUM | No | 0000000000000000 | Cursor seed for the very first poll when no state exists yet. Set this to the last known DOCNUM to avoid processing historical records. Ignored after the first successful poll. |
Returned Data
The trigger returns an object containing the matched IDoc records, a count, and the updated cursor value.
Example Payload
{
"records": [
{
"idocNumber": "0000000000000025",
"status": "53",
"messageType": "ORDERS",
"idocType": "ORDERS05",
"createdDate": "20260311",
"createdTime": "104530",
"direction": "2"
},
{
"idocNumber": "0000000000000026",
"status": "53",
"messageType": "ORDERS",
"idocType": "ORDERS05",
"createdDate": "20260311",
"createdTime": "104535",
"direction": "2"
}
],
"recordCount": 2,
"lastDocnum": "0000000000000026"
}
| Field | Description |
|---|---|
records | Array of IDoc records matching the query filters. |
recordCount | Number of records returned in this poll cycle. |
lastDocnum | The highest DOCNUM seen, used as the cursor for the next poll. |
State Management
- The highest DOCNUM from each poll cycle is persisted as the cursor for the next execution.
- On the first execution, the Starting DOCNUM input seeds the cursor. After the first successful poll, the persisted cursor is used and Starting DOCNUM is ignored.
- If a SOAP call fails, the error is logged and the cursor is preserved so the next poll retries from the same position.
- When no new IDocs are found, the trigger signals
polledNoChangesso the platform can skip downstream processing. - The Row Count input caps the number of rows returned per cycle. In high-volume environments, consider lowering the poll interval or increasing this value to avoid falling behind.
{
"payload": {
"headers": {},
"queryParameters": {},
"pathFragment": "",
"webhookUrls": {},
"webhookApiKeys": {},
"invokeUrl": "",
"executionId": "",
"integration": {
"id": "",
"name": "",
"versionSequenceId": "0",
"externalVersion": ""
},
"flow": {
"id": "",
"name": ""
},
"startedAt": "",
"globalDebug": false,
"customer": {
"id": "",
"externalId": "",
"name": ""
},
"instance": {
"id": "",
"name": ""
},
"user": {
"id": "",
"email": "",
"name": "",
"externalId": ""
},
"body": {
"data": {
"records": [
{
"idocNumber": "0000000000000025",
"status": "53",
"messageType": "ORDERS",
"idocType": "ORDERS05",
"createdDate": "20260311",
"createdTime": "104530",
"direction": "2"
},
{
"idocNumber": "0000000000000026",
"status": "53",
"messageType": "ORDERS",
"idocType": "ORDERS05",
"createdDate": "20260311",
"createdTime": "104535",
"direction": "2"
}
],
"recordCount": 2,
"lastDocnum": "0000000000000026"
}
},
"rawBody": {
"data": "<data (2 bytes)>"
}
}
}
Data Sources
Select BAPI
Search for available BAPIs/RFC function modules in SAP. Use a search pattern to filter results. | key: selectBapi | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The SAP ECC connection to use. | |
| Endpoint | The SAP SOAP endpoint path. | /sap/bc/soap/rfc |
| Search Pattern | ABAP LIKE pattern to filter function module names. Use '%' as wildcard. Defaults to all BAPIs. | BAPI_CUSTOMER% |
{
"result": [
{
"label": "BAPI_CUSTOMER_GETLIST",
"key": "BAPI_CUSTOMER_GETLIST"
},
{
"label": "BAPI_CUSTOMER_GETDETAIL2",
"key": "BAPI_CUSTOMER_GETDETAIL2"
},
{
"label": "BAPI_MATERIAL_GETLIST",
"key": "BAPI_MATERIAL_GETLIST"
},
{
"label": "BAPI_COMPANYCODE_GETLIST",
"key": "BAPI_COMPANYCODE_GETLIST"
},
{
"label": "BAPI_SALESORDER_CREATEFROMDAT2",
"key": "BAPI_SALESORDER_CREATEFROMDAT2"
}
]
}
Actions
Call BAPI
Call any SAP BAPI or RFC function module by name with XML parameters. | key: callBapi
| Input | Notes | Example |
|---|---|---|
| BAPI Name | The BAPI or RFC function module name to call. | BAPI_COMPANYCODE_GETLIST |
| BAPI Parameters | XML parameters to pass to the BAPI. These are placed inside the SOAP envelope body for the function call. | |
| Commit Transaction | When true, automatically calls BAPI_TRANSACTION_COMMIT after the BAPI call succeeds, using the same HTTP session. | false |
| Connection | The SAP ECC connection to use. | |
| Endpoint | The SAP SOAP endpoint path. | /sap/bc/soap/rfc |
| Wait on Commit | When true, passes WAIT='X' to BAPI_TRANSACTION_COMMIT, which waits for the update task to complete before returning. | false |
{
"data": {
"bapiResponse": {
"RETURN": {
"TYPE": "",
"MESSAGE": ""
}
},
"commitResponse": {
"RETURN": {
"TYPE": "",
"MESSAGE": ""
}
}
}
}
Get IDoc Status
Retrieve the processing status of an IDoc by reading the EDIDS status table via RFC_READ_TABLE. | key: getIdocStatus
| Input | Notes | Example |
|---|---|---|
| Connection | The SAP ECC connection to use. | |
| Endpoint | The SAP SOAP endpoint path. | /sap/bc/soap/rfc |
| IDoc Number | The IDoc number to retrieve status for. | 0000000001234567 |
{
"data": {
"rows": [
{
"DOCNUM": "0000000001234567",
"STATUS": "53",
"STACOD": "",
"STATXT": "Application document posted",
"CREDAT": "20260304",
"CRETIM": "143000"
}
],
"rowCount": 1
}
}
Read Table
Read data from any SAP table using RFC_READ_TABLE. Supports field selection, row limits, and WHERE clause filtering. | key: readTable
| Input | Notes | Example |
|---|---|---|
| Connection | The SAP ECC connection to use. | |
| Endpoint | The SAP SOAP endpoint path. | /sap/bc/soap/rfc |
| Fields | Comma-separated list of field names to return. If empty, all fields are returned. | MANDT,MTEXT,ORT01 |
| Row Count | Maximum number of rows to return. Leave empty for all rows. | 100 |
| Row Skips | Number of rows to skip before returning results. | 10 |
| Table Name | The SAP table name to read from. | T000 |
| Where Clause | ABAP WHERE clause to filter rows. Each condition must fit within 72 characters. | MATNR EQ '000000000001' |
{
"data": {
"rows": [
{
"MATNR": "000000000001",
"MTART": "RAW1",
"MAKTX": "Raw Material 1"
},
{
"MATNR": "000000000002",
"MTART": "FIN1",
"MAKTX": "Finished Product 1"
}
],
"rowCount": 2
}
}
Send IDoc
Send an IDoc XML payload to SAP ECC for inbound processing via IDOC_INBOUND_ASYNCHRONOUS. | key: sendIdoc
| Input | Notes | Example |
|---|---|---|
| Connection | The SAP ECC connection to use. | |
| Endpoint | The SAP IDoc inbound endpoint path. | /sap/bc/idoc_xml/inbound |
| IDoc XML Data | The full IDoc XML payload to send to SAP. |
{
"data": "IDoc-XML-inbound ok"
}
Send SOAP Request
Send a SOAP XML request to an SAP ECC RFC endpoint and return the raw XML response. | key: sendSoapRequest
| Input | Notes | Example |
|---|---|---|
| Commit Transaction | When true, automatically calls BAPI_TRANSACTION_COMMIT after the SOAP request succeeds, using the same HTTP session. | false |
| Connection | The SAP ECC connection to use. | |
| Endpoint | The SAP SOAP endpoint path. | /sap/bc/soap/rfc |
| Response as JSON | When true, the XML response will be parsed and returned as JSON. | false |
| SOAP Action | The SOAP Action header value, typically the RFC function module name. | urn:sap-com:document:sap:rfc:functions:STFC_CONNECTION |
| SOAP Body | The full SOAP XML envelope to send in the request body. Must be a valid SOAP 1.1 or 1.2 envelope. | |
| Wait on Commit | When true, passes WAIT='X' to BAPI_TRANSACTION_COMMIT, which waits for the update task to complete before returning. | false |
{
"data": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n <soap:Body>\n <RFC_READ_TABLE.Response xmlns=\"urn:sap-com:document:sap:rfc:functions\">\n <DATA>\n <item>\n <WA>001|Material A|Active</WA>\n </item>\n <item>\n <WA>002|Material B|Active</WA>\n </item>\n </DATA>\n <FIELDS>\n <item>\n <FIELDNAME>MATNR</FIELDNAME>\n <OFFSET>000</OFFSET>\n <LENGTH>003</LENGTH>\n <TYPE>C</TYPE>\n <FIELDTEXT>Material Number</FIELDTEXT>\n </item>\n </FIELDS>\n </RFC_READ_TABLE.Response>\n </soap:Body>\n</soap:Envelope>"
}
Changelog
2026-03-20
Added initial SAP ECC component:
- Send SOAP Request action to send SOAP requests to SAP ECC
- Call BAPI action with session-aware transaction support
- Commit Transaction toggle on Call BAPI and Send SOAP Request actions, which calls
BAPI_TRANSACTION_COMMITon the same HTTP session after the primary request succeeds - Improved connection labels, input descriptions, and placeholder text for clarity