ml-connector
SAP ECCGoogle Sheets

SAP ECC and Google Sheets integration

SAP ECC runs your on-premises finance and procurement. Google Sheets is your operational reference and audit layer. Connecting the two lets finance and procurement teams keep a live Sheets view of vendors, purchase orders, invoices, and GL accounts, updated on a schedule you control. No more manual exports, no stale data in your operational snapshots, and no re-keying into Sheets by hand.

How SAP ECC works

SAP ECC exposes vendors, customers, purchase orders, supplier invoices, GL accounts, cost centers, materials, and employees through RFC/BAPI function modules, OData v2 via SAP Gateway at a customer-specific hostname and port, or SOAP/WSDL. Older SAP Basis setups may also support outbound IDoc XML delivery via a customer-configured HTTP port. All calls require HTTP Basic Auth with a valid SAP username and password, and RFC/BAPI calls must route through an on-premises SAP .NET Connector or Java Connector agent that runs on the customer network with direct access to the SAP system. SAP ECC has no native webhook registry, so data is read by polling against RFC_READ_TABLE, specific BAPIs, or OData feeds on a scheduled interval. Write operations like creating or posting documents require an explicit BAPI_TRANSACTION_COMMIT call to avoid locked states.

How Google Sheets works

Google Sheets is a cloud-based spreadsheet with a REST API v4 that reads and writes cell data into tabs you define. Sheets uses OAuth 2.0 for access, allowing either user-delegated authorization or a Service Account credential for server-to-server calls without user interaction. Sheets exposes data through Named Ranges and A1 notation cell ranges across multiple tabs within a single spreadsheet, but it has no native ERP entity definitions - the schema is whatever columns and tabs you create. Google Drive watch channels can push notifications when a sheet changes, but these channels expire hourly and do not auto-renew, making polling every 5 to 15 minutes the more reliable approach. Sheets is a general-purpose spreadsheet, not purpose-built for finance or procurement, so custom schemas are required.

What moves between them

Data flows from SAP ECC into Google Sheets. ml-connector polls SAP ECC on a schedule (typically daily or weekly depending on your business cycle) and reads vendor master records, purchase orders, invoices, GL accounts, and cost centers. It maps each SAP table or BAPI result into corresponding Sheets tabs that you configure (e.g., Vendors, POs, Invoices, GL). New or updated records in SAP ECC are written into Sheets as new rows or updates to existing rows, so your Sheets always reflect the latest state from SAP. Deletions or archiving in SAP ECC can optionally be marked in Sheets as inactive. No data flows back from Sheets into SAP ECC.

How ml-connector handles it

ml-connector requires the customer to provide the SAP ECC hostname, port, and a valid RFC-enabled username and password. Because SAP ECC is on-premises and RFC/BAPI calls cannot originate directly from the cloud, ml-connector uses the customer's on-premises SAP .NET Connector or Java Connector agent to route calls through the customer network and SAP system. OData calls can bypass the agent and use HTTP Basic Auth directly if the Basis team has activated the required OData service via TCODE SICF, but this requires a one-time setup step. ml-connector polls RFC_READ_TABLE or specific BAPIs on your schedule (e.g., daily or weekly) and maps each row or result into the appropriate Sheets tab, respecting the column headers you define. The Sheets OAuth2 credential is stored encrypted and refreshed when necessary. SAP has no rate-limit headers, but typical safe throughput is 10 to 50 concurrent RFC calls; ml-connector backs off and retries on SAP SYSTEM_FAILURE or COMMUNICATION_FAILURE exceptions. Because SAP RFC_READ_TABLE has a 512-character row width limit for classic deployments, wide tables may require BBP_RFC_READ_TABLE or multiple polled queries. Every record carries a full audit trail and can be replayed if a downstream Sheets write fails.

A real-world example

A mid-sized manufacturing company runs SAP ECC on-premises for purchasing, accounts payable, and GL management. The procurement team tracks POs and invoices in a Sheets file for daily visibility and compliance audits, and the GL team maintains Sheets snapshots of cost centers and GL accounts for budget tracking. Before the integration, a member of each team manually exported data from SAP ECC daily and pasted it into Sheets, a process that took 30 minutes and was prone to errors when the data was stale or incorrectly mapped. With SAP ECC and Google Sheets connected, the Sheets files update automatically on a daily schedule, reflecting the latest vendors, POs, invoices, and GL state from SAP ECC. The procurement and GL teams now have current data in Sheets, audit trails are complete, and manual export-and-paste work is eliminated.

What you can do

  • Sync vendor master records, customer master records, purchase orders, and supplier invoices from SAP ECC into Sheets tabs on a schedule you define.
  • Map SAP ECC GL accounts and cost centers into Sheets for budget tracking and period-end reconciliation.
  • Poll SAP ECC via RFC/BAPI and OData, routing through the customer's on-premises SAP .NET Connector or Java Connector agent.
  • Handle SAP Basic Auth, RFC exceptions and retries, and manage wide-table row width limits for RFC_READ_TABLE.
  • Write updated records into Sheets without re-keying, and maintain a full audit trail of every sync.

Questions

Does ml-connector require the customer to set up an on-premises SAP .NET Connector or Java Connector agent?
Yes, for RFC/BAPI calls. SAP ECC is on-premises and RFC calls cannot originate directly from the cloud, so ml-connector must route calls through the customer's SAP .NET Connector or Java Connector agent running on the customer network with direct access to SAP ECC. OData calls can bypass the agent if the Basis team has activated the OData service in TCODE SICF and enabled HTTP Basic Auth, but this requires a one-time setup step and is not always available.
What happens if SAP ECC returns a SYSTEM_FAILURE or COMMUNICATION_FAILURE when polling?
ml-connector backs off and retries the call, since these exceptions are transient. SAP ECC has no published rate limit, but typical safe throughput is 10 to 50 concurrent RFC calls. If retries are exhausted, the failed record is logged in the audit trail and can be manually replayed once the SAP system recovers.
Which SAP ECC tables and BAPIs does ml-connector support?
ml-connector supports common tables and BAPIs including vendors (LFA1, LFB1, BAPI_VENDOR_GETLIST, BAPI_VENDOR_GETDETAIL), purchase orders (EKKO, EKPO, BAPI_PO_GETDETAIL1), supplier invoices (BAPI_ACC_DOCUMENT_POST), GL accounts (BAPI_GL_ACC_GETLIST), and cost centers (BAPI_COSTCENTER_GETLIST). The exact set of fields to sync is configured per customer depending on Sheets columns and business requirements.

Related integrations

Connect SAP ECC and Google Sheets

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

Get started