SAP ECC and Fishbowl integration
SAP ECC runs procurement and inventory planning in your enterprise. Fishbowl Advanced runs inventory tracking and purchase order management on premises. Connecting the two keeps your procurement source and your inventory system in sync. Purchase orders created or changed in SAP ECC flow into Fishbowl, mapped to the correct vendors and parts. Vendors and material masters are aligned in both directions so order lines always reference valid Fishbowl parts and suppliers.
What moves between them
The main flow is from SAP ECC into Fishbowl Advanced. Purchase order headers and line items created or updated in SAP ECC are detected via RFC_READ_TABLE polling, then pushed into Fishbowl as Purchase-Order records. Vendor masters from SAP (LFA1 table) and material masters (MARA table) are synced into Fishbowl Vendor and Part records on a schedule. If a purchase order line in SAP references a vendor or material that does not yet exist in Fishbowl, ml-connector creates the vendor or part first. Updates to existing orders (quantity, delivery date, status) flow from SAP into Fishbowl. GL account references in SAP cost centers are kept as metadata tags in Fishbowl for traceability.
How ml-connector handles it
ml-connector stores SAP RFC credentials (username and password) encrypted and uses them to authenticate RFC_READ_TABLE calls through the on-premises agent. It polls EKKO (purchase order headers) and EKPO (line items) on a schedule, typically every 15 minutes or tied to your procurement cycle. For each new or changed order, it retrieves the full details via BAPI_PO_GETDETAIL1 to get vendor, material, and cost center mappings. On the Fishbowl side, ml-connector posts a login request to obtain a session token, then uses that token for all subsequent API calls. Before posting a purchase order to Fishbowl, it checks whether the SAP vendor exists as a Fishbowl Vendor by querying GET /api/data-query with the SAP vendor number; if not, it creates the vendor first by calling the Vendor endpoint. The same check happens for materials mapped to Fishbowl parts. Each order line is matched by SAP PO number and line number to prevent duplicates. SAP ECC has no built-in idempotency key for BAPI calls, so ml-connector uses the REF_DOC_NO field to detect duplicates on retry. Fishbowl has no documented rate limit and no published webhook signature scheme, so ml-connector tracks which orders have been synced and handles retries with exponential backoff if a Fishbowl API call returns 500 or times out. Because both systems are on-premises, network connectivity is a shared risk; if the SAP agent is unreachable or Fishbowl server goes down, ml-connector backs off and retries until the service is available again.
A real-world example
A mid-sized discrete manufacturer runs SAP ECC for enterprise procurement and finance, and uses Fishbowl Advanced on-premises for inventory tracking and shop-floor visibility. The procurement team creates purchase orders in SAP for materials and outsourced parts, but the shop floor uses Fishbowl to monitor inbound inventory and production schedules. Before the integration, SAP purchase order data was exported to CSV each week and manually uploaded into Fishbowl, causing delays and data entry errors. With SAP ECC and Fishbowl connected, each new PO automatically appears in Fishbowl within minutes. When a vendor or material code changes, both systems stay aligned. Shop-floor staff see purchase order status in Fishbowl without waiting for a manual sync, and the procurement team can track Fishbowl inventory receipts back to SAP PO numbers for month-end close.
What you can do
- Sync purchase orders from SAP ECC into Fishbowl Advanced on a configurable schedule, mapped to the correct vendors and parts.
- Detect new and updated purchase orders in SAP by polling RFC_READ_TABLE on EKKO and EKPO tables, then push them into Fishbowl.
- Create vendors and parts in Fishbowl on demand if they do not exist, using SAP vendor masters and material masters as the source.
- Authenticate SAP ECC via RFC Basic Auth through an on-premises agent, and Fishbowl via session token over REST.
- Handle retries and duplicate detection using SAP REF_DOC_NO fields and Fishbowl PO number deduplication, with a full audit trail of every sync.
Questions
- How does ml-connector detect changes in SAP ECC if there are no webhooks?
- ml-connector polls SAP ECC by calling RFC_READ_TABLE on the EKKO and EKPO tables at a scheduled interval, typically every 15 minutes. It retrieves purchase orders modified since the last sync date and fetches full details via BAPI_PO_GETDETAIL1 to map vendors, materials, and cost centers. Because SAP ECC has no native webhook registry, polling is the standard method to detect procurement changes.
- Does the integration require the SAP on-premises agent to be running?
- Yes. RFC and BAPI calls must originate from an on-premises agent (SAP .NET Connector or Java Connector) that runs on the customer network with network access to the SAP ECC system. Alternatively, if the customer has activated OData services via TCODE SICF in SAP Basis, ml-connector can use OData v2 REST instead, which still requires HTTP Basic Auth but avoids the RFC agent dependency.
- What happens if a purchase order in SAP references a vendor or material that does not exist in Fishbowl yet?
- ml-connector checks whether the vendor and material exist in Fishbowl before posting the order. If either is missing, ml-connector creates the vendor or part record first by syncing from SAP vendor masters (LFA1 table) and material masters (MARA table). The order is then posted with the correct references. This ensures Fishbowl always has valid vendor and part links for every purchase order.
Related integrations
More SAP ECC integrations
Other systems that connect to Fishbowl
Connect SAP ECC and Fishbowl
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started