SAP Integration Research

Date: 2026-04-17 Status: Research complete across five parallel streams (product landscape + middleware, S/4HANA Cloud APIs, ECC & on-premise, master data, Business One + ByDesign). Several items flagged "needs live verification" — see Unresolved Questions.


Table of Contents

  1. Summary
  2. Capability Matrix
  3. System Overview
  4. Integration Intermediaries & Middleware
  5. Authentication & Connectivity
  6. Invoice / Document Submission
  7. Master Data Access
  8. Historical Bookings / Journal Entries
  9. Status & Feedback
  10. Unresolved Questions
  11. Suggested Hands-On Testing Plan
  12. Dead Ends
  13. Sources
  14. Retractions

Summary

"SAP" is not a single integration target — it is a family of distinct ERP products with materially different APIs, authentication models, and deployment patterns. For AP automation the relevant products are SAP S/4HANA Cloud (public and private editions), SAP S/4HANA on-premise, SAP ECC 6.0 (legacy, mainstream support ends 2027-12-31, paid extended maintenance through 2030), SAP Business One (SMB), and SAP Business ByDesign (delisted for new customers from 2026-04-20, but existing customers continue). Each has its own supplier invoice API surface. S/4HANA exposes API_SUPPLIERINVOICE_PROCESS_SRV (OData v2); ECC requires classic BAPI (BAPI_INCOMINGINVOICE_CREATE) or IDoc (INVOIC02) over RFC/HTTP; Business One uses the Service Layer (OData v4) or DI API/DI Server; Business ByDesign uses ManageSupplierInvoiceIn A2X SOAP.

Middleware alert for Orcha. Maesn and Chift — the two European unified-API players most relevant to Orcha's existing DACH footprint — do not list any SAP product. SAP connectivity via middleware means Celigo, Workato, Boomi, or SAP's own Integration Suite / PI-PO — all of which require customer-side admin, licensing, and infrastructure involvement. No shortcut exists via existing Orcha intermediaries.

Attachments are always a second API call. Across all SAP products, uploading the PDF of the invoice is separate from creating the invoice record (API_CV_ATTACHMENT_SRV on S/4HANA, ArchiveLink / ARCHIV_CREATE_HTTP on ECC, Attachments2 on Business One, Document BO on ByDesign). Design for this.

Sandbox availability is limited. S/4HANA Cloud's public sandbox on api.sap.com is read-only. ECC has no public trial. Business One and ByDesign require SAP PartnerEdge partner status or a customer-provided tenant. Customer-by-customer onboarding is the realistic integration model.


Capability Matrix

Capabilities for invoice posting and master data read, per SAP product. "Available?" describes what's there, not yes/no.

Capability S/4HANA Cloud Public S/4HANA Cloud Private / On-prem SAP ECC 6.0 SAP Business One (HANA) SAP Business One (SQL) SAP Business ByDesign
Post supplier invoice (structured) OData v2 API_SUPPLIERINVOICE_PROCESS_SRV Same + SOAP A2X + BAPI/RFC/IDoc BAPI BAPI_INCOMINGINVOICE_CREATE, IDoc INVOIC02, SOAP enterprise services OData v4 PurchaseInvoices via Service Layer DI API (COM) or DI Server (SOAP) SOAP A2X ManageSupplierInvoiceIn; OData staging alternative
Park (draft) invoice Same API, parking variant Same BAPI_INCOMINGINVOICE_PARK (requires PO reference) Via Status field Same DataEntryProcessingStatusCode=2
PO-based vs non-PO Both, via to_SuplrInvcItemPurOrdRef / to_SupplierInvoiceItemGLAcct Same Both; non-PO parking needs workaround Both, via DocType item/service Same Create_SI_With_Reference (PO) vs Maintain_Bundle
Upload PDF attachment API_CV_ATTACHMENT_SRV (separate call, CSRF-protected, BusinessObjectTypeName=BUS2081) Same + ArchiveLink ArchiveLink (ARCHIV_CREATE_HTTP + ARCHIV_CONNECTION_INSERT); GOS alternative Attachments2 entity, multipart upload; network-share caveat Same via DI API Document BO, linked by UUID; or inline BLOB via staging OData
Read suppliers / business partners API_BUSINESS_PARTNER (OData v2) Same BAPI BAPI_VENDOR_GETDETAIL + LFA1/LFB1/LFBK tables; IDoc CREMAS BusinessPartners Via DI API khbusinesspartner custom OData; SOAP ManageSupplierIn
Read chart of accounts API_GLACCOUNTINCHARTOFACCOUNTS_SRV Same SKA1/SKB1 via BAPI_GL_ACC_GETLIST or RFC ChartOfAccounts Via DI API Custom OData (tenant-configurable)
Read cost centers API_COSTCENTER_SRV Same CSKS via BAPI_COSTCENTER_GETLIST CostingCodes / DistributionRules Via DI API khcostcentre custom OData
Read company codes API_COMPANYCODE_SRV Same T001 via RFC Per CompanyDB login Same Per-payload CompanyID
Read tax codes No released public OData API. Must expose I_TaxCode CDS view as custom OData Same workaround, or T007A via RFC T007A/T007S via RFC TaxGroups Via DI API Custom OData
Read payment terms No released public API (per 2024 SAP Community). Available as string on supplier Same T052 via RFC Via BusinessPartners Same Via BP
Change events (CDC) Enterprise Event Enablement → SAP Event Mesh (sap.s4.beh.businesspartner.v1.BusinessPartner.Changed.v1 confirmed; SupplierInvoice not verified) Same, or add-on for on-prem CREMAS change pointers (BD50/BD52/BD53 + RBDMIDOC) Via B1if middleware Same Not researched in depth
Historical journal entries API_GLACCOUNTLINEITEM_SRV Same BAPI_ACC_GETPOSTINGS, BKPF/BSEG via RFC JournalEntries endpoint Via DI API Custom OData
Idempotency for posting None documented; duplicate check via SupplierInvoiceIDByInvcgParty Same Same (SAP duplicate-check config) None documented; caller enforces Same None documented; enforce in staging BO
Response mode Synchronous (OData POST returns doc key) Same; SOAP variant sync, A2A async exists BAPI sync; IDoc async with ALEAUD feedback Synchronous Synchronous SOAP sync; A2A async for ManageSupplierInvoiceIn
Webhooks / push Event Mesh subscription (customer-licensed, not free) Same None native; PI/PO bridge B1if scenarios Same Not researched
Public sandbox for write testing Read-only on api.sap.com Customer tenant or CAL-deployed Fully Activated Appliance No public trial SAP PartnerEdge or partner-hosted trial Same PartnerEdge tenant only
Currency limitations None found None found None found Multi-currency via BP setup Same None found
Supported by Maesn No No No No No No
Supported by Chift No No No No No No
Supported by Celigo Yes (OData) Partially (OData if exposed) Not confirmed Yes (Service Layer) Not confirmed Yes (SOAP / Custom OData / Analytics OData)
Supported by Workato Yes (OData) Yes (OData; RFC connector) Yes (RFC + OData if Gateway) Yes (on-prem agent) Same Not confirmed
Supported by Boomi Yes (BAPI/RFC/IDoc/OData) Same Yes (certified ECC 750 / HANA 2021) No first-party connector Same Yes (SOAP + Basic)

1. System Overview

1.1 SAP S/4HANA family

SAP's current strategic ERP, built on the HANA in-memory database, positioned as the successor to SAP ECC. Three deployment models that are materially different from an integration perspective:

S/4HANA Cloud, Public Edition. Multi-tenant SaaS, SAP-managed, quarterly upgrades, "fit-to-standard" processes. Limited customization through Key User Extensibility only. Upper mid-market to enterprise greenfield customers. Strategic product under the GROW with SAP programme.

S/4HANA Cloud, Private Edition. Single-tenant hosted on hyperscalers inside a customer VPC. SAP-managed as a service, but functionally a full S/4HANA stack — customer keeps ABAP development, industry add-ons, controlled upgrades. Typical destination for brownfield ECC conversions under RISE with SAP.

S/4HANA on-premise. Customer-managed. Large enterprises and regulated industries. Branded successor to on-prem SAP ECC. All classic integration surfaces available (OData, SOAP, BAPI/RFC, IDoc). SAP's "Any-Premise" branding is retired.

"SAP S/4HANA cloud public edition is a multi-tenant service ... The public edition has limited customization (mostly through extensibility layers) ... features quarterly automatic upgrades and limited customisation." — vendor explainer synthesis (Spinnaker, PIKON, Panaya)

"SAP S/4HANA cloud private edition is a single-tenant solution with services offered on a private and secure network ... provides full access to custom ABAP development, industry-specific modifications, and customer-controlled upgrade schedules." — same

1.2 SAP ECC / R/3

"Mainstream support for SAP ECC ends in 2027, specifically by December 31, 2027 ... extended maintenance is available until 2030 and provides continued support for ECC systems at approximately 9% additional cost." — Kellton / ERPResearch / Computer Weekly

On-premise only. Dominant installed base in DACH mid-market manufacturing. Integration surfaces: BAPIs (BAPI_INCOMINGINVOICE_CREATE, BAPI_ACC_DOCUMENT_POST), IDocs (INVOIC02), RFCs. OData only if SAP Gateway is installed. DACH mid-market AP integrations still frequently target ECC.

1.3 SAP Business One

"SAP Business One is an enterprise resource planning (ERP) application designed for small and medium-sized enterprises ... More than 83,000 customers and 1.2 million users across more than 170 countries rely on SAP Business One." — Wikipedia / SAP

"The DACH region (Germany, Austria, and Switzerland) represents a significant market for SAP Business One." — vendor material

Two distinct database variants with very different API stories:

Strategic; SAP directs new small-business customers here after the ByDesign delisting. Typically 10–250 users. Sold through partners.

1.4 SAP Business ByDesign

"SAP Business ByDesign will be delisted from the SAP pricelist for new customers starting April 20, 2026 ... SAP has confirmed there is no planned end date for maintenance. Existing contracts will be honoured, but SAP is no longer selling new ByDesign licenses." — ERP Research / Walldorf Consulting

"The company is directing new customers toward SAP S/4HANA Cloud and SAP Business One." — same

Multi-tenant SaaS, upper-SMB / mid-market. Commercially wound down; maintenance mode. Finite-lifetime integration target for Orcha.

1.5 SAP Ariba (context)

"SAP Ariba uses cXML (Commerce XML) as its messaging standard ... Invoices can be received from suppliers via Ariba network through InvoiceDetailRequest cXML message type. Supplier invoices received from suppliers via Ariba Network show up as draft invoices in the Supplier Invoices List app and can then be converted into complete supplier invoices." — SAP Help

Not an ERP — SAP's cloud procurement / supplier network. Sits in front of the ERP. In Ariba-enabled shops, a structured channel already exists for supplier-submitted e-invoices. Orcha is relevant for invoices arriving outside the Ariba Network (non-enrolled suppliers sending PDFs). Not itself an integration target for invoice posting.

1.6 Strategic succession (DACH mid-market lens)

A large share of active SAP AP integrations in DACH still hit ECC on-premise and Business One. S/4HANA is growing fast (the 2027 deadline drives brownfield conversions) but greenfield Public-Edition deployments are still the minority in the mid-market. Business One is disproportionately common in DACH SME.

Confidence: High for product descriptions and deprecation timelines (multiple sources).


2. Integration Intermediaries & Middleware

Investigated early because middleware coverage changes the integration approach for everything downstream.

2.1 Maesn

"[Supported systems:] DATEV Unternehmen Online, DATEV Rechnungswesen, Exact Online, Fortnox, Sage Active, Odoo, Xero, sevdesk, QuickBooks, Lexware Office, Xentral, bexio, Twinfield, Weclapp, BuchhaltungsButler, Visma e-conomic, FreshBooks, FreeAgent, Microsoft Dynamics 365 Business Central, Moneybird, Pennylane, SnelStart, Qonto, Holded by Visma, Sage Accounting, Visma eAccounting, Abacus." — maesn.com/integrations

Finding: Maesn does not list any SAP product in its supported connectors as of this research. The catalog is European accounting/ERP systems (DACH + Benelux + Nordics) anchored by DATEV and Business Central. Confidence: High — the full list is enumerated.

2.2 Chift

"[Connectors list (43):] ACD, AFAS Software, Cegid Loop, Cegid Quadra, Datev, Dynamics 365 Business Central, e-Boekhouden, eAccounting, Exact Online, Fiken, Fulll, Holded, Horus, Inqom, Lexoffice, Minox, Moneybird, MyUnisoft, Netsuite, Octopus, Odoo, Pennylane, QuickBooks Accounting, Reviso, Sage 50 FR, Sage 100 FR, Sage BOB 50, Sage Generation Expert, Sage Intacct, SnelStart, Tiime, Tripletex, Twinfield, Yuki, Winbooks, Xero, and sevdesk." — docs.chift.eu/unified-apis/accounting/connectors

Finding: No SAP product in Chift's catalog. Confidence: High.

2.3 Celigo

"Integrate SAP with supplier portals, procurement platforms, and financial systems to automate the procurement process, including purchase orders, supplier communications, and invoice processing." — celigo.com/integrations/sap

Three separate connector setup articles: S/4HANA Cloud, Business One, Business ByDesign.

"The Celigo SAP S4 HANA connector does not provide prebuilt RFC/BAPI/IDoc connectors ... targets the S/4HANA Cloud HTTP APIs (OData) and comes with prebuilt operations."

"Celigo connects to SAP Business One through the Service Layer (REST/OData over HTTPS). The SAP Business One connector does not use DI API or DI Server."

"You can use the SAP Business ByDesign connector to create SOAP, Custom OData, or Analytics OData connections."

Coverage: S/4HANA Cloud (OData), Business One (Service Layer, HANA only implied), ByDesign (SOAP/OData). No confirmed ECC on-prem coverage via Celigo. Customer-side licenses required (Communication Arrangement for S/4, Service Layer exposure for B1). Confidence: High for product coverage; Medium for AP operation depth.

2.4 Workato

"You can use the SAP OData connector to connect to on-premise SAP, SAP S/4HANA Cloud Private Edition, and SAP S/4HANA Cloud Public Edition, allowing you to work with hundreds of OData APIs out-of-the-box, enabling interaction with data sources that include purchase orders, requisitions, invoices, and products." — docs.workato.com/connectors/sap-odata.html

Additionally: SAP-certified RFC connector (for ECC / on-prem S/4HANA) and a dedicated Business One connector:

"The SAP Business One connector supports connecting through on-prem agents to support deployments behind the company firewall." — docs.workato.com/connectors/sap-business-one.html

Coverage: S/4HANA Public + Private + on-prem (OData), ECC (RFC + OData-if-Gateway), Business One (Service Layer via OPA). ByDesign not confirmed. Customer-side setup required (Communication Arrangement, OData activation, Service Layer exposure). Confidence: High for connector availability, Medium for out-of-the-box AP richness.

2.5 Boomi

"Extract, transform, and load SAP ECC, SAP S/4HANA, and SAP BW data. Reduce integration time & effort by 40% with unique SAP native integration to the application layer." — boomi.com/solutions/sap

"[Boomi SAP connector methods include] Table Services and Table Service Extract, SAP Events (CDC), Function Modules and BAPIs, IDocs, BW Data Extract." — same

Coverage: S/4HANA (on-prem + cloud via Gateway), ECC 6.0 (certified on 750/HANA 2021), ByDesign (SOAP over Basic). No first-party Business One connector (community-built only). Historically the deepest AP coverage in this set because it calls BAPI/RFC/IDoc directly. Customer-side: requires SAP Java Connector install and SAP user with broad ABAP authorisations. Confidence: High for ECC/S/4; Medium for ByDesign depth.

2.6 SAP Integration Suite / SAP Cloud Integration (CPI)

"SAP Cloud Platform Integration (CPI), now known as SAP Integration Suite, is a cloud-based integration platform-as-a-service (iPaaS)." — vendor / SAP

SAP's first-party iPaaS on SAP BTP. Connects to all SAP products (S/4HANA, ECC, Business One, ByDesign, Ariba, SuccessFactors, Concur). Prebuilt P2P packages (Ariba → S/4, external invoice providers → S/4). Customer must own a BTP subscription. Useful when a customer already licenses it; otherwise adds a SAP-owned cloud hop that Orcha could skip by talking to the ERP directly. Confidence: High.

2.7 SAP Process Integration / Process Orchestration (PI/PO)

"SAP Process Integration and SAP Process Orchestration maintenance will be extended in accordance with SAP NetWeaver 7.5, with mainstream maintenance until end of 2027 with option of extended maintenance until end of 2030." — Auritas

Legacy on-premise middleware. Adapter-driven (file, JDBC, JMS, SOAP, EDI, IDoc, RFC). In DACH, many existing AP integrations drop IDocs into ECC via PI/PO. Same 2027 cliff as ECC. Customers actively migrating to Integration Suite. Orcha may encounter PI/PO in the field but should not build new flows on top of it. Confidence: High.

2.8 Theobald ERPConnect & ERPConnect Services

"ERPConnect is the professional solution for .NET developers that require robust ERP interfaces to SAP." — theobald-software.com/en/erpconnect

"ERPConnect Services (ECS Core) allows you to create REST web services" wrapping standard BAPIs. — help.theobald-software.com

.NET-centric, certified for S/4HANA Cloud Private Edition 2023. Uses JCo underneath. Exposes BAPI/IDoc as REST. Deployed on customer premise. Plausible for customers already using it.

2.9 Middleware conclusion for Orcha


3. Authentication & Connectivity

3.1 S/4HANA Cloud (Public + Private Editions)

Communication Management — the core concept. No APIs are exposed by default. Three artefacts must exist in the tenant, set up by the customer's SAP admin:

Relevant scenarios for AP:

"OAuth 2.0 Client Credentials — for outbound connections only; OAuth 2.0 SAML Bearer Assertion — for inbound connections and principal propagation." — SAP-docs/btp-cloud-platform

Supported auth flows:

Public Edition constraint flagged: one SAP Community thread reports "the authentication method for communication scenarios is strictly limited to client credentials via HTTP Authorization Header (authentication_method = 1). The system does not support using form fields (authentication_method = 2)." Confidence: Medium (single source). Default to Authorization header.

Sandbox. api.sap.com sandbox is live, protected by an apikey header any SAP ID user can generate. Critical: it allows only read operations. "The SAP S/4HANA Cloud sandbox system for API Business Hub can only be used for testing purposes and not for productive application development or use cases, and allows only read operations with write operations not allowed against the sandbox system." For supplier invoice POST validation, a customer tenant or a PartnerEdge test system is required.

Rate limits. No published hard rate limits per OData service in productive tenants. Sandbox has apikey-level throttling, numbers not published. Confidence: Low (absence of evidence).

3.2 S/4HANA on-premise and SAP ECC

Auth methods available to external callers:

Method Transport Typical use
Basic auth (user + password) HTTP/HTTPS & RFC (JCo) Default
SAP Logon Ticket (MYSAPSSO2) HTTP cookie SSO
X.509 client certificates HTTPS, RFC + SNC Preferred for production
SNC (Secure Network Communication) RFC Mutual auth + encryption over RFC
Kerberos / SPNEGO HTTP, RFC + SNC Windows domains
OAuth 2.0 HTTP (NetWeaver Gateway / ICF ≥ 7.40 SP08) OData services; not RFC

SAP Cloud Connector (SCC). SAP's reverse tunnel for reaching on-prem ABAP from BTP / Integration Suite.

"With the 5.25.x/6.17.x release, SAP Cloud Integration provides support of Principal Propagation for the RFC adapter." — blogs.sap.com 2021

"Principal Propagation is supported by receiver adapter types including OData V2, HTTP, IDoc, SOAP (1.x), and XI." — SAP KBA 3657871

Typical connectivity for reaching on-prem ECC from cloud:

  1. Customer site-to-site VPN from Orcha VPC → customer DMZ → SAP gateway.
  2. SAP Cloud Connector installed by customer (awkward for non-BTP callers).
  3. PI/PO DMZ exposure — piggyback on existing B2B gateway.
  4. Vendor iPaaS on-prem agent (Workato OPA, Boomi Molecule, Theobald) inside customer perimeter.

Sandbox. The SAP Cloud Appliance Library (CAL) deploys the S/4HANA Fully Activated Appliance to AWS/Azure/GCP in ~2 hours; 30-day license waiver, hosting cost ≈ USD 30–80/day on an m5.xlarge-class instance. No free ECC 6.0 trial exists. Realistic research happens on customer sandboxes or a CAL-deployed S/4HANA on-prem instance (which preserves the legacy BAPIs/IDocs).

3.3 SAP Business One

Service Layer auth is session-based:

POST https://<host>:50000/b1s/v2/Login
{
  "CompanyDB": "DemoDB",
  "UserName": "manager",
  "Password": "1234abce!"
}

Response sets SessionId and ROUTEID cookies. Sessions last 30 minutes idle by default. ROUTEID pins the session to one Service Layer node in a cluster — must be preserved across requests. Logout via GET /b1s/v2/Logout returning 204.

Key integration nuance: one Service Layer instance can front multiple company databases (CompanyDB selects which). Customers with multiple legal entities will have multiple values.

3.4 SAP Business ByDesign

"SAP Business ByDesign OData services support two authentication protocols: Basic Authentication (user/password) and OAuth 2.0 SAML Bearer authentication." — SAP Community

Customer sets up a Communication Arrangement in the tenant (work center "Application and User Management" → "Communication Arrangements"), chooses authentication (Basic / SSL Client Certificate / OAuth SAML Bearer), and ByD provisions a technical Communication User whose credentials Orcha uses. Services not explicitly assigned to the arrangement return 401.

For AP posting: technical user with Basic Auth over HTTPS is the standard path. OAuth SAML Bearer is only relevant for user-context principal propagation from SAP BTP.


4. Invoice / Document Submission

4.1 S/4HANA Cloud — API_SUPPLIERINVOICE_PROCESS_SRV

OData v2, service technical name API_SUPPLIERINVOICE_PROCESS_SRV. No OData v4 replacement at time of research.

Tenant endpoint pattern: https://<tenant-host>/sap/opu/odata/sap/API_SUPPLIERINVOICE_PROCESS_SRV/A_SupplierInvoice.

A SOAP A2X variant (SUPPLIERINVOICES4REQUEST_IN) ships in the same SAP_COM_0057 scenario. Some docs note it "does not support mixed invoices containing both debit and credit items." For new integrations, OData is the right default.

Entity model (confirmed via SAP Cloud SDK javadoc):

Entity Purpose
A_SupplierInvoice Header, key (SupplierInvoice, FiscalYear)
A_SupplierInvoiceItemGLAcct Non-PO G/L item
A_SuplrInvcItemPurOrdRef PO-reference item
A_SupplierInvoiceTax Header-level tax lines
A_SuplrInvcHeaderWhldgTax Withholding tax at header

Item shell for a header must sum to InvoiceGrossAmount minus tax, via one or more of: to_SupplierInvoiceItemGLAcct, to_SuplrInvcItemPurOrdRef, to_SuplrInvcItemAsset, plus to_SupplierInvoiceTax when TaxIsCalculatedAutomatically = false.

Commonly required header fields (this is "commonly required in practice", not a certified SAP list — validate against live $metadata):

Field Type Notes
CompanyCode 4-char Required
DocumentDate Edm.DateTime Vendor invoice date
PostingDate Edm.DateTime FI posting date
InvoicingParty 10-char Supplier BP number
SupplierInvoiceIDByInvcgParty ≤16 Vendor's invoice number — duplicate-check key
DocumentCurrency 5-char ISO Required
InvoiceGrossAmount Edm.Decimal Header total incl. tax
DocumentType 2-char e.g. RE invoice, KR credit memo
BusinessPlace Optional Required in BR, IN, PH
TaxIsCalculatedAutomatically Boolean Changes required fields

Park vs Post. POST /A_SupplierInvoice with valid data creates a posted invoice by default. Parking is a variant of Create; the API title is "Supplier Invoice - Create, Read, Release, Reverse". Parking header-only is error-prone (SAP KBA 3095839). Function imports:

Tax and multi-currency. Tax codes on A_SupplierInvoiceTax or on items (TaxCode, 2-char, FTXP-resolved). TaxIsCalculatedAutomatically=true triggers server calculation. Multi-currency: header DocumentCurrency + ExchangeRate / DirectQuotedExchangeRate (else pulled from TCURR at posting date). Withholding tax on A_SuplrInvcHeaderWhldgTax at header level; per-item WHT not exposed on the public API (Confidence: Medium).

Attachments — separate API. Use API_CV_ATTACHMENT_SRV:

  1. Post the invoice first, capture SupplierInvoice + FiscalYear.
  2. GET the attachment service with x-csrf-token: fetch to get a CSRF token + session cookie.
  3. POST /sap/opu/odata/sap/API_CV_ATTACHMENT_SRV/AttachmentContentSet with:

Known pitfall: sending through the SAP Cloud Integration OData adapter JSON-wraps the content and corrupts the PDF; use the HTTP adapter or a direct HTTP client.

Custom/extension fields. Public Edition supports Key User Extensibility via extensible CDS views (e.g., I_SupplierInvoiceAPI01). Custom fields flow into released OData $metadata. Private Edition additionally supports ABAP Cloud on-stack extensions.

4.2 SAP ECC — BAPI, IDoc, SOAP

BAPI_INCOMINGINVOICE_CREATE (synchronous, RFC-callable)

"BAPI_INCOMINGINVOICE_CREATE ... has the same functionality as transaction MIRO." — multiple SAP Community sources

Parameter Kind Purpose
HEADERDATA Import struct Company code, dates, currency, vendor, gross, INVOIC_IND (X=invoice, blank=credit memo), reference, doc type
ADDRESSDATA Import struct One-time vendor / alternative payee
ITEMDATA Table PO-referenced items
ACCOUNTINGDATA Table Account assignment splits (CC, WBS)
GLACCOUNTDATA Table Direct G/L (non-PO)
MATERIALDATA, TAXDATA, WITHTAXDATA, VENDORITEMSPLITDATA Tables Each per name
EXTENSIONIN / EXTENSIONOUT Table Customer/CI_ include fields (SAP KBA 2149315)
RETURN Export table Messages
INVOICEDOCNUMBER, FISCALYEAR Export Posted document key

"When passing on the header data, the INVOIC_IND field is used to determine whether the system posts a credit memo or an invoice. If an X is entered, the system posts an invoice." — sapmm.wordpress.com

Commit required: call BAPI_TRANSACTION_COMMIT after — the BAPI does not commit internally.

BAPI_INCOMINGINVOICE_PARK caveat: "requires a PO reference as part of its validation and does not work for parking invoices without referring to a PO." For non-PO parking, use BAPI_ACC_INVOICE_RECEIPT_POST (FI side) or custom BTE/BAdI.

How external systems call BAPIs:

JCo is SAP proprietary; redistribution is forbidden. Bundling products link to SAP download; customer accepts license.

IDoc INVOIC02 (basic type for inbound AP)

Inbound handler: IDOC_INPUT_INVOIC_MRM (MM logistics invoice verification, triggers MIRO). Also IDOC_INPUT_INVOIC_FI for FI-only variant.

Key segments:

Segment Purpose
E1EDK01 Header general data (currency, exchange rate, totals)
E1EDKA1 Header partner (supplier PARVW=LI)
E1EDK03 Header dates (doc date, posting date, baseline)
E1EDK04 Header tax (codes, jurisdiction)
E1EDK14 Org data (company code, purch. org.)
E1EDKT1 / E1EDKT2 Header text IDs / lines
E1EDP01 Line-item general data
E1EDP02 Item reference (PO, delivery note, supplier doc)
E1EDP04 Item tax
E1EDP19 Item object ID (material number)
E1EDS01 Summary/totals

Transmission options: ALE/tRFC (partner profile WE20 → SM59 RFC destination), file port, HTTP port (ICF /sap/bc/idoc_xml), PI/PO IDoc adapter.

SOAP Enterprise Services. The Enterprise Services Bundle for ERP includes SupplierInvoiceERPCreateRequestConfirmation_In, SupplierInvoiceERPCancelRequestConfirmation_In, and SupplierInvoiceERPByIDQueryResponse_In. Confidence: Medium — primary docs are on help.sap.com (JS-rendered) and could not be re-verified this run. Validate per customer via SOAMANAGER.

Attachments on ECC — ArchiveLink, not GOS.

"ArchiveLink is a service that links archived documents (usually stored on an external content server) to SAP business objects, typically used for high-volume scenarios like incoming PDF invoices that are scanned and automatically attached to accounting documents." — SAP Integration Hub / SAP Community

Pattern for Orcha:

  1. Post the invoice → BELNR + GJAHR.
  2. ARCHIV_CREATE_HTTP uploads PDF bytes to customer's Content Server → returns ARC_DOC_ID.
  3. ARCHIV_CONNECTION_INSERT links ARC_DOC_ID to SAP object BKPF-BUKRS+BELNR+GJAHR, object type BKPF, document type (e.g., FIIINVOICE).

Customer-specific: many DACH customers use Kofax or OpenText VIM (Vendor Invoice Management) as the PDF + metadata front door, which handles ArchiveLink plumbing itself. For those customers Orcha may hand off to VIM rather than posting directly.

4.3 SAP Business One — PurchaseInvoices (Service Layer)

Minimal POST body:

POST /b1s/v2/PurchaseInvoices
{
  "CardCode": "c001",
  "DocumentLines": [
    { "ItemCode": "i001", "Quantity": "100", "TaxCode": "T1", "UnitPrice": "50" }
  ]
}

Key fields:

DI API equivalent on SQL Server deployments: COM oPurchaseInvoices with same object model.

Attachments — Attachments2.

"The Attachment2 entity supports file types: .pdf, .doc, .docx, .jpg, .jpeg, .png, .txt, .xls, .ppt. It can handle an attachment size up to 50 MB."

Upload flow: POST /b1s/v2/Attachments2 (multipart) → response AbsoluteEntry → set on invoice's AttachmentEntry.

Operational concern: B1 stores attachments on a network share configured in General Settings, not in the DB. Remote Service Layer uploads have had path-translation quirks (community reports files needing manual copy to the share). Must validate per customer deployment.

4.4 SAP Business ByDesign — ManageSupplierInvoiceIn (A2X SOAP)

Namespace http://sap.com/xi/A1S/Global. Operations: Check_Maintain_Bundle, Maintain_Bundle, Read_SI, Create_SI_With_Reference (PO follow-on).

Mandatory fields:

OData alternative exists as a staging BO pattern:

"Creates supplier invoicing staging object ... Updates supplier invoicing staging object with BLOB ... Processes supplier invoice staging object using XSLT transformation to create relevant supplier invoice." — SAP-samples/byd-api-samples Postman collection

Staging is attractive because it bundles attachment + invoice in fewer round-trips, but requires the staging BO to be active in the tenant.

Attachments on ManageSupplierInvoiceIn do not sit on the invoice payload directly; post to the Document BO separately and link via the invoice's UUID. Additional round-trip. The OData staging path attaches inline via BLOB update.

Recommended default: ManageSupplierInvoiceIn A2X SOAP. OData staging where available.


5. Master Data Access

5.1 Business Partner / Supplier / Vendor

S/4HANA (all editions): API_BUSINESS_PARTNER (OData v2, scenario SAP_COM_0008).

Entity tree: A_BusinessPartner root, navigations to A_BusinessPartnerAddress, A_BusinessPartnerBank, A_BusinessPartnerTaxNumber, A_BusinessPartnerRole, A_Supplier, A_SupplierCompany (company-code-specific data), A_Customer.

Confirmed field samples (Cloud SDK javadoc):

Entity Field Notes
A_BusinessPartner BusinessPartner (10) Primary key
A_BusinessPartner BusinessPartnerCategory (1) 1=Person, 2=Organization, 3=Group
A_BusinessPartner OrganizationBPName1 Org name
A_BusinessPartnerBank BankIdentification (4), BankControlKey (2), BankAccount (18), IBAN (34), SWIFTCode
A_SupplierCompany PaymentTerms (4), ReconciliationAccount (10), PaymentMethodsList (10) Nullable fields

Base path /sap/opu/odata/sap/API_BUSINESS_PARTNER/, metadata at $metadata.

ECC: BAPIs + tables.

Primary tables:

BAPIs: BAPI_VENDOR_GETDETAIL, BAPI_VENDOR_FIND, BAPI_VENDOR_CREATE, BAPI_VENDOR_EDIT. RFC_READ_TABLE for generic table reads.

RFC_READ_TABLE has a 512-byte total column width limit. Reading LFA1 in one call typically exceeds it; customers commonly deploy a custom Z-RFC (e.g., Z_RFC_READ_TABLE) to circumvent. Theobald, CData, and UiPath-SAP ship their own.

IDoc path: message type CREMAS (vendor master). Segments E1LFA1M, E1LFB1M, E1LFBKM, E1LFM1M, E1WYT3M. Reduced message types via BD53; change-pointer fields via BD52; generation via MASTER_IDOC_CREMAS_SMD / program RBDMIDOC.

5.2 Chart of Accounts

S/4HANA: API_GLACCOUNTINCHARTOFACCOUNTS_SRV. Entity A_GLAccountInChartOfAccounts, composite key (ChartOfAccounts, GLAccount). GLAccountType values: X balance sheet, N non-op P&L, P primary cost P&L, S secondary cost. Full field list not verified — pull $metadata. Exposed via SAP_COM_0087 (SAP Business Objects Cloud Planning Integration) per Cloud SDK docs. Related: API_GLACCOUNTLINEITEM_SRV for transactional line items.

ECC: tables SKA1 (chart-level), SKB1 (company code), SKAT (texts). BAPIs BAPI_GL_ACC_GETLIST, BAPI_GL_ACC_GETDETAIL.

5.3 Cost Centers

S/4HANA: API_COSTCENTER_SRV. Keys (ControllingArea, CostCenter, ValidityEndDate) (time-dependent). Confirmed fields: ValidityStartDate, CompanyCode, BusinessArea, CostCenterCategory, Department, FunctionalArea, ProfitCenter, plus posting-block booleans and audit fields.

ECC: table CSKS (keyed KOKRS + KOSTL + DATBI), CSKT (texts). BAPIs BAPI_COSTCENTER_GETLIST, BAPI_COSTCENTER_GETDETAIL1.

5.4 Company Codes

S/4HANA: API_COMPANYCODE_SRV. Read-only. Fields: CompanyCode (4), CompanyCodeName, City, Country, Currency, ChartOfAccounts, FiscalYearVariant, Company, CreditControlArea.

ECC: table T001; no single canonical BAPI. Typically RFC_READ_TABLE or SQ01 extract.

5.5 Tax Codes — no released public OData API

"Table 'Tax Code Names' (T007S), the recommended CDS Views are: I_TaxCode, I_TaxCodeText and I_TaxCodeValueHelp." — SAP Community (S/4HANA Public Cloud)

"The I_TaxCode CDS view is available as a data source that can be added to custom CDS views in SAP S/4HANA Cloud ... These APIs are always read-only."

Practical options:

Rates live in the condition technique (KONP/KONH) keyed by country, jurisdiction, tax code. Messy to read externally. SAP's recommendation: post with tax code and let the system calculate.

5.6 Payment Terms

"The CDS View for your scenario are I_PaymentTerms & I_PaymentTermsConditions which are not yet released." — SAP Community, 2024

No released public OData API. On ECC / on-prem: tables T052 (terms), T052U (texts), T052S (installments). Workaround: the PaymentTerms key appears as a string attribute on A_SupplierCompany so callers can see which terms are in use, even without the full catalog.

5.7 Business One master data (Service Layer)

5.8 ByDesign master data

5.9 Change events (CDC)

S/4HANA Cloud — Enterprise Event Enablement + SAP Event Mesh.

"The topic name of the outbound event is: sap/s4/beh/businesspartner/v1/BusinessPartner/Changed/v1." — SAP Community

Topic pattern: sap.s4.beh.<object>.v1.<ObjectName>.<Created|Changed|Deleted>.v1 (dotted on S/4, forward-slash variant on Event Mesh). BusinessPartner.Created, BusinessPartner.Changed, BusinessPartner.Deleted confirmed.

"Standard S/4HANA events cover approximately 40% of typical business processes ... 60% of their integrations had no corresponding standard events." — Khomyk, Medium

SupplierInvoice events: existence not verified against api.sap.com (catalog requires JavaScript). Naming convention predicts sap.s4.beh.supplierinvoice.v1.SupplierInvoice.Created.v1verify against Business Accelerator Hub before committing.

Events carry IDs, not full records — consumer must call API_BUSINESS_PARTNER etc. to hydrate.

ECC / on-prem: change pointers. BD50 activates per message type, BD52 per field, BD53 reduces segments per receiver; RBDMIDOC scheduled to process. Near-real-time push to systems registered in ALE distribution model.

5.10 Middleware for master data — MDI and MDG

SAP Master Data Integration (MDI) — BTP-based hub. Customers with MDI across multiple SAP systems may prefer subscribing there rather than per-tenant. Primarily SOAP today, moving toward REST/OData.

SAP Master Data Governance (MDG) — governance/workflow layer; exposes its own services for approved golden records. Customers with MDG-centric master data typically prefer integration at MDG level.


6. Historical Bookings / Journal Entries

Less-researched area this round; headline findings:

Confidence: Medium — each deserves dedicated deep research if Orcha needs to read historical bookings as a feature.


7. Status & Feedback

7.1 S/4HANA Cloud (OData sync)

OData POST A_SupplierInvoice is synchronous. Success: HTTP 201, Location header, response body with SupplierInvoice + FiscalYear.

Error envelope (OData v2):

{
  "error": {
    "code": "M8476",
    "message": { "lang": "en", "value": "Item 00001: ..." },
    "innererror": { "errordetails": [{ "code": "...", "message": "...", "severity": "error" }] }
  }
}

Typical status codes: 400 validation, 403 missing scope/role, 404 referenced PO/supplier not found, 500 gateway exception, 503/429 throttling (not formally documented).

Idempotency — not built in. No idempotency header. Duplicate protection relies on SAP's native duplicate check (CompanyCode, InvoicingParty, DocumentCurrency, SupplierInvoiceIDByInvcgParty, optionally DocumentDate).

Implication: Orcha must build its own idempotency (local hash → (SupplierInvoice, FiscalYear) mapping) because a 500 could mean "posted but response lost." Always populate SupplierInvoiceIDByInvcgParty with the extracted vendor invoice number.

7.2 SAP ECC (BAPI sync, IDoc async)

BAPI path — synchronous. RETURN table with TYPE=S/W/E/A/I plus INVOICEDOCNUMBER + FISCALYEAR.

IDoc path — async with ALEAUD.

Outbound IDoc statuses: 03 passed to port, 12 dispatched, 16 functional ack positive, 17 functional ack negative, 41 application doc posted in receiver. Inbound: 51 error, 52 partial, 53 posted OK, 64 ready, 68 no further processing. Transactions: WE02 (list), WE05 (monitor), BD87 (manual reprocess), SLG1 (app log).

"ALEAUD is a standard message type ... the status of the IDoc should have been changed to 41 (Final Status of any Outbound IDoc) as the IDoc has been posted successfully in the target system." — SAP Wiki

Expect 15-minute to hourly lag for ALEAUD feedback depending on RBDSTATE job schedule. This is the only standard async posted/failed feedback path for INVOIC02 — factor into Orcha's UX.

7.3 Business One

Synchronous; Service Layer returns the created entity body with DocEntry + DocNum. Error body is JSON with error code + message.

7.4 ByDesign

ManageSupplierInvoiceIn is a synchronous A2X service (per SAP's help.sap.com page title). An async A2A variant exists for inter-SAP flows, callback-based.

7.5 Event-based notifications


Unresolved Questions

Question Why It Matters What Was Tried Next Step
Does sap.s4.beh.supplierinvoice.v1.SupplierInvoice.Created.v1 exist as a published Event Mesh topic? Determines whether Orcha can subscribe to invoice-lifecycle events versus polling Searched community and help pages; couldn't verify against api.sap.com SAPS4HANABusinessEvents catalog (JS-rendered) Log into Business Accelerator Hub with an SAP ID and inspect the live event catalog, or query an active S/4 Cloud tenant's Event Enablement config
Exact LinkedSAPObjectKey format for attachments on supplier invoice Gets PDF linked to the correct invoice the first time Community examples are inconsistent Test both <SupplierInvoice> (10 digits) and <SupplierInvoice><FiscalYear> against a customer-provided tenant
Is authentication_method = 2 (form-field client secret) really forbidden in Public Edition? Affects every Orcha OAuth client configuration Single SAP Community thread flags it; SAP docs silent Default to Authorization header and test form-field against a sandbox tenant during first customer onboarding
Whether BAPI_VENDOR_GETDETAIL is deprecated in S/4HANA on-prem 2023+ releases Chooses master-data read path for customers on recent on-prem SAP notes imply newer function modules; not confirmed Read SAP Note search in a customer support portal, or test live on CAL-deployed S/4HANA FAA
Is I_PaymentTerms CDS view released as a standard API in 2026 releases? Would remove the need for custom CDS view per tenant Latest community signal (2024) says "not yet released" Check api.sap.com for API_PAYMENTTERMS* publications, or on-tenant check in Custom CDS View app
Does Boomi or any other iPaaS provide a first-party Business One connector? Would reduce Orcha's direct implementation for B1 Celigo, Workato confirmed; Boomi confirmed absent; others not exhausted Check MuleSoft, Tray.io, n8n, Make.com connector libraries
Are attachments via Service Layer multipart actually reliable on partner-hosted B1 Cloud? Network-share caveat is a known source of field problems Community reports mixed; official docs claim it works Schedule a partner-hosted B1 demo tenant test with a real PDF upload on Service Layer /b1s/v2/Attachments2
Does SAP Business One have an official sandbox for Service Layer via SAP PartnerEdge? Dev-time validation for B1 integration Multiple partner-hosted trials exist; SAP's own self-service trial not found Apply to SAP PartnerEdge or contact an SAP partner (e.g., Ingold, Cloudiax) for a time-boxed Service Layer tenant

Suggested Hands-On Testing Plan

S/4HANA Cloud public sandbox is read-only; Business One and ByDesign require partner/customer tenants. Realistic hands-on plan:

Phase 1: Read-only exploration on api.sap.com (no cost, immediate)

  1. Register an SAP ID, obtain apikey on Business Accelerator Hub.
  2. For API_SUPPLIERINVOICE_PROCESS_SRV: GET /$metadata, GET /A_SupplierInvoice?$top=10&$expand=to_SupplierInvoiceItemGLAcct,to_SuplrInvcItemPurOrdRef,to_SupplierInvoiceTax to inspect real entity shapes and field nullabilities.
  3. For API_BUSINESS_PARTNER, API_COSTCENTER_SRV, API_GLACCOUNTINCHARTOFACCOUNTS_SRV, API_COMPANYCODE_SRV: pull $metadata and sample payloads.
  4. Inspect SAPS4HANABusinessEvents catalog for supplier-invoice event topics.

Phase 2: Write-path validation on S/4HANA FAA via CAL

  1. Deploy S/4HANA Fully Activated Appliance via SAP Cloud Appliance Library (~USD 30–80/day hosting, 30-day license waiver).
  2. Configure Communication Arrangement for SAP_COM_0057 (Supplier Invoice) with a test Communication User.
  3. Post a minimal invoice (non-PO, single GL item, gross amount matches line sum) — capture returned keys.
  4. Upload a PDF via API_CV_ATTACHMENT_SRV with BusinessObjectTypeName=BUS2081. Test both LinkedSAPObjectKey formats.
  5. Exercise Release function import on a parked invoice; Cancel on a posted one.

Phase 3: Business One Service Layer on a partner demo tenant

  1. Obtain a demo B1-on-HANA tenant (Cloudiax 14-day or Ingold 30-day trial).
  2. Login via /b1s/v2/Login, preserve SessionId + ROUTEID cookies.
  3. Post a minimal PurchaseInvoices (service-type line with AccountCode) and an item-type with ItemCode + BaseEntry referencing an existing PO.
  4. Test Attachments2 multipart upload and link via AttachmentEntry.

Phase 4: ECC validation

  1. No public ECC 6.0 trial exists. Either piggyback on an existing customer sandbox or use the S/4HANA FAA (which preserves legacy BAPIs unchanged) to exercise BAPI_INCOMINGINVOICE_CREATE via JCo.
  2. Verify ALEAUD feedback by sending an INVOIC02 via file port and watching status transition 03 → 12 → 53 → 41.

Dead Ends


Sources

SAP-owned primary

SAP Community and community blogs

Middleware / intermediary vendor pages

Timing / deprecation


Retractions

No claims retracted during self-audit. Several fields and behaviours are explicitly marked as Medium or Low confidence or "not verified" rather than retracted — these are signals to validate against a live tenant before building on them, not removed from the report.

The most important are: