ml-connector
SAP ECCWorkday HCM

SAP ECC and Workday HCM integration

SAP ECC runs your on-premises finance, procurement, and operations. Workday HCM manages your workforce, payroll, and labor costs in the cloud. Connecting them keeps your ECC employee and cost center records in agreement with Workday, and automates the movement of payroll labor costs from Workday into your SAP general ledger every pay cycle. New hires and terminations in Workday flow into ECC so your headcount is always accurate, and the monthly GL posting from payroll no longer requires manual re-keying.

How SAP ECC works

SAP ECC exposes employees, cost centers, GL accounts, and purchase order data through BAPI function modules accessed via RFC (Remote Function Call), or through OData services published via SAP Gateway on the ECC instance. On-premises agents using SAP's .NET Connector or Java Connector initiate RFC calls, while OData calls use HTTP Basic Auth against a customer-specific hostname. ECC has no native webhook system, so records are read by polling with RFC_READ_TABLE or OData queries on a schedule you control. Key constraints include the 512-character row width limit on RFC_READ_TABLE for classic tables, the requirement that all write operations include explicit BAPI_TRANSACTION_COMMIT calls to avoid locked documents, and the need for BAPI_ACC_DOCUMENT_POST to include REF_DOC_NO fields to prevent duplicate GL postings on retry.

How Workday HCM works

Workday HCM exposes workers, cost centers, organizations, compensation, GL accounts, and supplier data through REST and SOAP APIs depending on the data type. REST API access uses OAuth2 bearer tokens with a 60-minute expiry and a non-expiring refresh token, while SOAP calls use WS-Security UsernameToken authentication via an Integration System User. Workday is polling-only with no native webhooks, and queries support date filtering for incremental pulls on most resources. Supplier_Invoices does not support delta extraction by date. Workday enforces rate limiting with HTTP 429 responses and a Retry-After header. API versions release twice per year, so integrations must track deprecations.

What moves between them

Worker records and cost center assignments flow from Workday into SAP ECC. After each payroll run, ml-connector reads Workday GL journals or compensation records and maps them to SAP ECC cost centers and GL accounts, then posts the combined labor cost entries via BAPI_ACC_DOCUMENT_POST. Employee records in ECC are kept in sync with Workday worker status so hires, terminations, and rehires are reflected in ECC headcount. The sync runs on a schedule tied to your payroll calendar. Direction is primarily Workday to SAP ECC; reference data such as cost centers and GL accounts are queried from both systems to ensure GL postings land on valid dimensions.

How ml-connector handles it

ml-connector maintains an on-premises agent connection pool to SAP ECC over RFC, and manages OAuth2 token refresh for Workday REST calls and SOAP WS-Security tokens for procurement and finance data. When reading Workday workers and cost allocations, it polls on a schedule and filters by date to pick up incremental changes. For each payroll period, it constructs a single GL document per cost center, maps Workday cost allocations to matching SAP ECC GL accounts, and posts the document with a REF_DOC_NO to prevent duplicate GL entries if a retry occurs. Write operations include explicit BAPI_TRANSACTION_COMMIT calls to release document locks. If RFC calls exceed safe throughput (roughly 10-50 concurrent calls), ml-connector backs off and retries. Workday rate limits (HTTP 429) trigger exponential backoff using the Retry-After header. Every record is audited and can be replayed if a downstream call fails.

A real-world example

A multinational manufacturer runs SAP ECC on-premises for operations and finance, and uses Workday HCM to manage a global workforce across multiple plants and regions. Previously, the accounting team extracted labor cost registers from Workday each month and manually re-entered totals into ECC by cost center, a process that took two days and frequently introduced errors when cost allocations changed mid-month. With Workday and SAP ECC connected, each payroll run's labor costs flow automatically into ECC's GL, allocated to the correct plant and department cost centers, and ECC employee headcount stays in sync with Workday hires and terminations. Month-end close now begins with labor accounts already reconciled, and the manual posting step is eliminated.

What you can do

  • Post Workday payroll labor costs into SAP ECC's general ledger by cost center after each payroll run, with automatic REF_DOC_NO deduplication.
  • Keep SAP ECC employee records and headcount aligned with Workday hires, terminations, and status changes.
  • Map Workday cost center and GL account data to SAP ECC cost center and GL account hierarchies so labor allocations land on valid dimensions.
  • Manage on-premises RFC connection pooling for SAP ECC, and OAuth2 token refresh and SOAP WS-Security authentication for Workday.
  • Poll on a schedule tied to your payroll calendar, with exponential backoff on rate limits, transaction commit validation, and a full audit trail on every record.

Questions

Does SAP ECC's on-premises requirement mean a special setup?
Yes. ml-connector requires an on-premises agent running SAP's .NET Connector or Java Connector on your network with access to the ECC instance. The agent initiates RFC calls to read employees and GL accounts, and posts GL documents via BAPI_ACC_DOCUMENT_POST. ml-connector manages the connection pool and call queuing so throughput stays safe.
How does ml-connector handle the different Workday API surfaces for HCM versus finance data?
Workday surfaces HCM data (workers, positions, cost centers) via REST API with OAuth2, and finance and procurement data (GL accounts, cost allocations, supplier invoices) via SOAP with WS-Security UsernameToken. ml-connector switches between REST and SOAP calls depending on the resource, manages both auth flows, and tracks token expiry so calls do not fail mid-flow.
What prevents duplicate GL postings in SAP ECC when ml-connector retries?
ml-connector includes the Workday payroll period identifier in the REF_DOC_NO field when posting GL documents via BAPI_ACC_DOCUMENT_POST. On retry, SAP ECC recognizes the REF_DOC_NO and skips the posting if the document already exists, preventing double-entry. This is the same deduplication used for manual GL corrections in ECC.

Related integrations

Connect SAP ECC and Workday HCM

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started