ml-connector
SAP ECCBasware

SAP ECC and Basware integration

SAP ECC runs manufacturing and finance on-premises. Basware runs AP automation and e-invoicing in the cloud. Connecting the two keeps your vendor master data aligned, purchase orders synchronized, and invoices posted to the general ledger without re-keying. ml-connector handles the different transports on each side and moves records on a schedule you control.

How SAP ECC works

SAP ECC exposes vendors, purchase orders, invoices, GL accounts, cost centers, and materials through RFC/BAPI function modules and OData v2 REST services. Clients authenticate with HTTP Basic Auth against an on-premises or hosted SAP Gateway instance. Write operations require explicit BAPI_TRANSACTION_COMMIT calls to finalize documents. SAP ECC has no native webhook system for cloud connectors, so records are read by polling via RFC_READ_TABLE or OData GET requests on a scheduled interval. An on-premises agent running SAP .NET Connector or Java Connector is required to originate RFC calls.

How Basware works

Basware exposes vendors, purchase orders, contracts, and accounting documents through a REST API with regional endpoints. Clients authenticate via OAuth2 Client Credentials, and each API token defaults to one hour validity. Basware can push webhook notifications for accounting documents and purchase orders, reducing polling overhead, but Network and Data Access APIs are pull-only. Manual vendor edits in the UI are overwritten on the next API import, so API-driven vendor management must be authoritative. Payment initiation is not supported; payment confirmations flow back to Basware via a separate paymentResponses mechanism.

What moves between them

The integration synchronizes bidirectionally. Vendor records and purchase orders flow from SAP ECC into Basware to populate the vendor master and contract data, using OAuth2 authentication and regional endpoint routing. Basware accounting documents flow back into SAP ECC on a polling schedule, mapped to SAP GL accounts and cost centers, and are posted to the GL using BAPI_ACC_DOCUMENT_POST with an explicit transaction commit. The REF_DOC_NO field in SAP GL documents acts as an idempotency key to prevent duplicate posts on retry.

How ml-connector handles it

ml-connector runs an on-premises agent or connects directly to SAP Gateway for OData polling, storing both credential sets encrypted. On the SAP side, it polls vendors via BAPI_VENDOR_GETLIST and purchase orders via BAPI_PO_GETDETAIL1 on a defined schedule. Vendor and PO records are normalized and posted to Basware via OAuth2 authenticated REST calls, with the regional endpoint determined by customer configuration. On the return path, ml-connector polls Basware's accountingDocuments endpoint or receives webhook push notifications, maps invoice lines to SAP GL accounts and cost centers, and posts them to the GL using BAPI_ACC_DOCUMENT_POST followed by BAPI_TRANSACTION_COMMIT. The RFC_READ_TABLE operation respects SAP's 512-character row width limit, and Basware OAuth2 tokens are refreshed before expiry to avoid mid-request failures. Every record carries an audit trail and can be replayed if a downstream call fails.

A real-world example

A mid-sized manufacturing company runs SAP ECC on-premises for production planning and finance, and uses Basware in the cloud for AP automation and vendor management. Before the integration, the AP team manually entered invoice data from Basware into SAP GL each week, and the procurement team kept vendor master data in sync by hand. With SAP ECC and Basware connected, vendors created in Basware populate SAP automatically on the next sync cycle, purchase orders from SAP ECC populate Basware contracts, and invoices posted in Basware flow into SAP GL without re-keying. Month-end close and invoice reconciliation are now automated, and the finance team spends less time on manual data entry.

What you can do

  • Poll vendors and purchase orders from SAP ECC and post them to Basware as vendor records and contracts.
  • Receive Basware accounting documents via webhook or polling and post them to the SAP GL with the correct cost center allocation.
  • Authenticate SAP ECC with HTTP Basic Auth and RFC/BAPI, and Basware with OAuth2, managing token refresh and regional endpoint routing.
  • Prevent duplicate GL posts by using the REF_DOC_NO idempotency key and explicit BAPI_TRANSACTION_COMMIT calls.
  • Track every vendor sync, PO mapping, and GL post in a full audit trail for compliance and troubleshooting.

Questions

Which direction does data move between SAP ECC and Basware?
Vendors and purchase orders flow from SAP ECC into Basware to populate the vendor master and contract data. Basware accounting documents flow back into SAP ECC and are posted to the GL using BAPI_ACC_DOCUMENT_POST with cost center allocation. Manual vendor edits in the Basware UI will be overwritten on the next API sync, so vendor management must be authoritative in SAP ECC.
How does ml-connector handle SAP ECC's on-premises agent requirement and Basware's regional endpoints?
ml-connector runs or connects to an on-premises agent that uses SAP .NET Connector or Java Connector to originate RFC and BAPI calls. For Basware, ml-connector determines the regional endpoint at connection time based on customer configuration, routing API calls to the correct region (EU, US, AU, or CA) and refreshing OAuth2 tokens before they expire.
What happens if a GL post to SAP ECC fails after Basware has already processed the invoice?
ml-connector stores both credential sets encrypted and tracks every GL post attempt in the audit log. If a BAPI_ACC_DOCUMENT_POST call fails, the record is marked for replay, and the next retry uses the same REF_DOC_NO to prevent a duplicate post once the issue is resolved. The full audit trail shows which invoices have been attempted and the status of each transaction.

Related integrations

Connect SAP ECC and Basware

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

Get started