ml-connector
SAP ECCTableau

SAP ECC and Tableau integration

SAP ECC holds your core business data: vendors, customers, materials, purchase orders, GL accounts, and cost centers. Tableau turns that data into dashboards and reports your teams depend on. Connecting the two keeps your analytics layer in sync with the source of truth. New vendors and customers, updated materials and prices, GL account hierarchies, and cost center assignments automatically refresh in Tableau data sources and power your dashboards without re-keying. ml-connector handles the on-premises RFC agent, the different auth methods, and the data movement on a schedule you control.

How SAP ECC works

SAP ECC exposes data through RFC/BAPI function modules executed via an on-premises agent (SAP .NET Connector or Java Connector), OData v2 REST services via SAP Gateway at http://<host>:<port>/sap/opu/odata/<namespace>/<service>/, or SOAP web services. Authentication is HTTP Basic Auth for OData and IDoc, or RFC Basic Auth for BAPI calls through the agent. Key entities include vendor masters, customer masters, materials, purchase orders, GL accounts, cost centers, and employee records. Because SAP ECC is on-premises and has no native webhook registry, ml-connector polls the data on demand or on a scheduled interval using RFC_READ_TABLE or dedicated BAPI calls, though outbound IDoc push is available if the customer configures it in WE21/WE20/SM59.

How Tableau works

Tableau exposes workbooks, data sources, views, projects, users, groups, schedules, and permissions through REST API in both Tableau Cloud and Tableau Server deployments. Authentication is via Personal Access Token with a session token exchange, Connected App with JWT, or username and password. Tableau emits 24 webhook event types including datasource-created, datasource-updated, datasource-deleted, workbook-refresh-succeeded, user-deleted, and others when objects change. Views are read-only derived objects from workbooks and cannot be published or updated. The API is site-scoped, so operations require a site ID in the path.

What moves between them

Master and transactional records flow from SAP ECC into Tableau data sources. Vendors, customers, materials, GL accounts, cost centers, and purchase order headers and line items are extracted from SAP ECC via RFC polling or OData REST queries and loaded into Tableau data sources, which are then available for reporting and dashboard visualization. The refresh frequency is controlled by the ml-connector schedule and tied to your business cycle. Because Tableau is read-mostly, ml-connector does not write data back to SAP ECC from Tableau.

How ml-connector handles it

ml-connector stores the SAP RFC agent connection details and OData HTTP Basic Auth credentials encrypted, and mounts the agent on the customer's network to execute RFC_READ_TABLE and BAPI queries. It caches and refreshes the Tableau Personal Access Token before the 240-minute session expiry window, converts SAP ECC records to JSON payload, and publishes them to Tableau data sources via the REST API. The integration detects duplicate records across polling cycles using a combination of SAP document numbers, timestamps, and a local deduplication key to ensure idempotency. It handles character encoding for non-ASCII data, respects SAP's 512-character RFC_READ_TABLE row width limit, and backs off on SYSTEM_FAILURE or COMMUNICATION_FAILURE exceptions from the RFC layer. Because RFC_READ_TABLE has no signature verification and SAP ECC is not a webhook source, polling is the primary sync mechanism, and the integration tracks the last-read timestamp to minimize volume on each cycle.

A real-world example

A multinational manufacturing company runs SAP ECC at their on-premises data center and uses Tableau Cloud for dashboards accessed by 200+ users across supply chain, finance, and operations teams. Before the integration, the BI team exported monthly snapshots of vendor, material, and GL account master data from SAP ECC via a manual SQL query on the database layer, loaded them into Tableau data sources by hand, and published the refreshed workbooks. When a new vendor onboarded or a material price changed in SAP ECC, the dashboards showed stale data until the next manual export cycle. With SAP ECC connected to Tableau, masters flow into the data sources automatically on a nightly schedule, the dashboards always reflect current vendor status and material pricing, and the BI team spends no time on manual refreshes.

What you can do

  • Extract vendor, customer, and material master records from SAP ECC via RFC_READ_TABLE and BAPI calls and load them into Tableau data sources for reporting.
  • Sync purchase order headers and line items from SAP ECC into Tableau to power supply chain and procurement dashboards.
  • Refresh GL account hierarchies and cost center assignments in Tableau so finance dashboards reflect the current organizational structure.
  • Authenticate SAP ECC with HTTP Basic Auth for OData and RFC Basic Auth for BAPI calls through the on-premises agent, and authenticate Tableau with Personal Access Token.
  • Poll SAP ECC on a schedule tied to your business cycle, deduplicate records across cycles, and handle RFC character encoding and row width constraints.

Questions

Does ml-connector require an on-premises RFC agent to run SAP ECC queries?
Yes. SAP ECC RFC and BAPI calls cannot originate directly from the cloud; the agent must run on the customer's network with SAP .NET Connector or Java Connector installed. ml-connector stores the agent connection details encrypted and executes queries through it. Alternatively, if the customer has SAP Gateway OData services activated in TCODE SICF, ml-connector can pull data via REST calls instead, though RFC is the primary mechanism.
How does the integration handle SAP ECC's lack of webhooks and Tableau's webhook-only events?
SAP ECC has no native webhook registry, so ml-connector polls SAP ECC on a schedule you define (daily, weekly, after month-end close) using RFC_READ_TABLE or dedicated BAPI queries. Tableau emits webhooks for data source and workbook refresh events, but the integration is primarily push-only from SAP ECC to Tableau, so Tableau events are for monitoring refresh success, not for triggering pulls from SAP ECC.
What happens if a Tableau Personal Access Token expires or my on-premises RFC agent goes offline?
Tableau PAT tokens default to 240-minute session expiry; ml-connector refreshes the session token before expiry to avoid outages. The RFC agent is under your control; if it goes offline, polling pauses until the agent is back online. ml-connector retries failed RFC queries with exponential backoff and surfaces alerts when the agent is unavailable.

Related integrations

Connect SAP ECC and Tableau

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

Get started