Release identity
SHA-256 of the pack file bytes: f09ccc5a0440012f54c0943256b634baa95e15cc009ab8f45db85af8a9a3c9b4
Not in the distributable release manifest. The binary carries a digest-bound manifest of the distributable library; a pack whose bytes differ from its manifest entry — endpoint, tier, allowlist, or credential edited, with provider, version, and review block preserved — fails the digest check, loses distributability, and renders MODIFIED rather than as the shipped reviewed artifact. Review state and artifact status are different facts: the first is a documentation-review declaration, the second is the identity of the exact bytes.
Capabilities (5)
sap.businesspartner.read v1.0.0R0
- Action
- read
- Endpoint
GET https://sap-instance.invalid/sap/opu/odata/sap/API_BUSINESS_PARTNER/A_BusinessPartner- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-sap-s4-communication-user- Data class
- pii
Read the A_BusinessPartner collection of the Business Partner (A2X) OData service: business partner, customer and supplier master records with names, addresses and contact data, which are personal data. The registered path covers the collection read only — single-record reads (A_BusinessPartner('...')) and the related address, bank and role entity sets are not registered by this pack. The host is a reserved placeholder: substitute the customer's tenant host before enabling.
sap.supplierinvoice.read v1.0.0R0
- Action
- read
- Endpoint
GET https://sap-instance.invalid/sap/opu/odata/sap/API_SUPPLIERINVOICE_PROCESS_SRV/A_SupplierInvoice- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-sap-s4-communication-user- Data class
- financial
Read the A_SupplierInvoice collection of the Supplier Invoice OData service: supplier invoice headers with amounts, currencies, suppliers and payment data, registered at the financial class. The registered path covers the collection read only — the single-invoice read (A_SupplierInvoice(SupplierInvoice='...',FiscalYear='...')) and the documented create and release operations are not registered by this pack. The host is a reserved placeholder: substitute the customer's tenant host before enabling.
sap.purchaseorder.read v1.0.0R0
- Action
- read
- Endpoint
GET https://sap-instance.invalid/sap/opu/odata4/sap/api_purchaseorder_2/srvd_a2x/sap/purchaseorder/0001/PurchaseOrder- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-sap-s4-communication-user- Data class
- financial
Read the PurchaseOrder entity set of the OData V4 Purchase Order API (service group api_purchaseorder_2, repository srvd_a2x, service purchaseorder, version 0001): purchase order headers with suppliers, amounts and currencies, registered at the financial class. The registered path covers the collection read only — single-record reads (PurchaseOrder(PurchaseOrder='...')) and the item, schedule-line and partner entity sets are not registered by this pack. The host is a reserved placeholder: substitute the customer's tenant host before enabling.
sap.purchaseorder.create v1.0.0R3
- Actions
- create, send
- Endpoint
POST https://sap-instance.invalid/sap/opu/odata4/sap/api_purchaseorder_2/srvd_a2x/sap/purchaseorder/0001/PurchaseOrder- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-sap-s4-communication-user- Data class
- financial
Create one purchase order through the OData V4 Purchase Order API; SAP documents the service as enabling create, read, update and delete of purchase orders from a source system outside SAP S/4HANA Cloud — this pack registers create (and, separately, read) only. This capability declares send alongside create at the send floor of R3. SAP's release documentation states that a purchase order subject to a release procedure cannot be outputted — printed or transmitted directly to the vendor — before it is approved (released); but output management is tenant configuration, and where the tenant determines and dispatches purchase order output immediately on save and no release procedure applies, creation can transmit the order to the supplier. Which behavior applies is the tenant's output-control and release configuration, which this registration does not constrain, so the irreversible send effect is declared rather than assumed away. This pack does not register the release, approval, update or delete operations — a non-registration statement about this pack's endpoints, not a claim about what a created order can trigger on the tenant. SAP Gateway requires an X-CSRF-Token on modifying requests; the deployment's adapter must fetch one against this service root before the POST. The host is a reserved placeholder: substitute the customer's tenant host before enabling.
sap.journalentryitem.read v1.0.0R0
- Action
- read
- Endpoint
GET https://sap-instance.invalid/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV/A_JournalEntryItemBasic- Connector
- http
- Custody
- customer_vault
- Credential ref
secret-ref-sap-s4-communication-user- Data class
- financial
Read the A_JournalEntryItemBasic collection of the Journal Entry Item - Read (A2X) OData service: posted journal entry items with company code, G/L account, amounts and currencies, registered at the financial class. The service is read-only; the registered path covers the collection read only — keyed single-item reads are not registered by this pack. The host is a reserved placeholder: substitute the customer's tenant host before enabling.
Credential reference
The pack names a reference, never a secret. Installing a pack registers capabilities and makes them governable; registration is not connectivity. The credential is created at the provider and held in the client's own secret manager under the reference the pack names, and deployment testing is still required to show the credential path works and cannot be bypassed.
- Reference
secret-ref-sap-s4-communication-user- Custody
- customer_vault
- Injection
- header (Authorization)
Credentials of an inbound communication user on the customer's own S/4HANA Cloud tenant, held in the client's own secret manager. The stored material must be the complete Authorization header value (scheme included): 'Basic', one separating space, then the base64 of 'user:password' — 'Basic <base64>'. An external deployment process creates the communication user and the Communication Arrangements that publish these services (for example SAP_COM_0008 for the business partner service), rotates the password, and stores the renewed header value; the executor injects the stored value verbatim and performs no credential lifecycle itself. customer_vault is the only generally-supported production custody model here — identity_federation and customer_broker are refused at startup and inline is lab-only. Passwords expire under the tenant's password policy and a communication user can be locked or deleted at any time, which revokes access; an expired or revoked value fails closed. Least privilege: assign the user only the communication scenarios that publish the services this pack registers, and nothing more. Authorization granularity: a communication scenario publishes its services to the assigned inbound user, and the operation-level authority the user then holds is whatever the scenario's business catalogs and authorization objects grant — scenario assignment alone does not deny individual CRUD or release operations inside a published service. The deployment must therefore verify the residual authority of the assigned scenarios (for example, whether the purchase order scenario also authorizes the update and delete operations this pack does not register) rather than assume exclusion by registration; residual authority the scenario cannot remove is a reviewed deployment risk, not a pack control. This registration stores a Basic header; certificate-based or OAuth 2.0 inbound authentication, where the deployment supports it, is a separately reviewed authentication change, not an interchangeable alternative to this credential contract. Review rotation cadence before enabling. Executor hygiene: the value must live only in executor memory for the lifetime of a call, must never be written to logs, traces or diagnostics, and must not appear in crash dumps; a deployment that cannot meet that bar must not enable the pack.
Resources
sap-s4-businesspartners(api, pii):https://sap-instance.invalid/sap/opu/odata/sap/API_BUSINESS_PARTNER/A_BusinessPartnersap-s4-supplierinvoices(api, financial):https://sap-instance.invalid/sap/opu/odata/sap/API_SUPPLIERINVOICE_PROCESS_SRV/A_SupplierInvoicesap-s4-purchaseorders(api, financial):https://sap-instance.invalid/sap/opu/odata4/sap/api_purchaseorder_2/srvd_a2x/sap/purchaseorder/0001/PurchaseOrdersap-s4-journalentries(api, financial):https://sap-instance.invalid/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV/A_JournalEntryItemBasic
Pack notes and exclusions
The endpoint host 'sap-instance.invalid' is a reserved non-production placeholder (an RFC 2606 reserved TLD): substitute the customer's own S/4HANA Cloud tenant host before enabling, in every endpoint, in every resource locator and in every egress allowlist entry. The allowlist matches exactly, so endpoints and allowlist must be substituted together, and substitution is a required deployment step — the reserved host being allowlisted does not make an unsubstituted pack safe to enable. This pack registers only endpoints SAP's official documentation for SAP S/4HANA Cloud describes: the OData V4 Purchase Order API (service group api_purchaseorder_2, repository srvd_a2x, service purchaseorder, version 0001) for purchase order read and create, and the OData V2 services SAP documents for business partners (API_BUSINESS_PARTNER), supplier invoices (API_SUPPLIERINVOICE_PROCESS_SRV) and journal entry items (API_JOURNALENTRYITEMBASIC_SRV). SAP deprecated the OData V2 purchase order API in favour of the OData V4 service, which is why the purchase order capabilities register the V4 path; this pack makes no claim that OData V4 equivalents of the other three objects do not exist — it registers the services SAP documents for them. All reads are collection reads only: single-record reads (A_BusinessPartner('...'), A_SupplierInvoice(SupplierInvoice='...',FiscalYear='...'), PurchaseOrder(PurchaseOrder='...')) exist in the APIs and are deliberately not registered. Documented exclusions, framed as what this pack does not register: business partner create, update and delete (the Business Partner (A2X) service documents full CRUD); supplier invoice create, release and the single-invoice deep read (the Supplier Invoice service is documented as Create, Read, Release with POST on A_SupplierInvoice); purchase order update and delete (SAP documents the V4 service as create, read, update and delete — this pack registers create and read only); journal entry posting (the SOAP service JournalEntryBulkCreationRequest_In and any other posting API); and every other OData service on the tenant. The services are exposed through Communication Arrangements on the tenant, and each arrangement's inbound communication user carries only the authorizations of the scenarios it is assigned: the registration records the endpoint, not the tenant's authorization decision — a capability works only if the communication user is permitted the operation. Modifying requests against SAP Gateway require an X-CSRF-Token: the deployment's HTTP adapter must fetch one (x-csrf-token: Fetch) against the same service root before issuing the registered POST, and that adapter wiring is a deployment step, not something this pack performs. Tiering rationale: the collection reads sit at the R0 floor of read. The purchase order create is registered at R3 declaring create and send: SAP documents that a purchase order subject to a release procedure cannot be outputted (printed or transmitted directly to the vendor) before release, but output determination and dispatch timing are tenant configuration, so on a tenant whose output management dispatches immediately on save with no release procedure the create can transmit the order to the supplier — the send effect is declared rather than assumed away.
Review record
Draft review record dated 2026-09-21 · Reviewer: aaes-eng (an opaque id that resolves internally to the responsible reviewer)
- https://help.sap.com/docs/SAP_S4HANA_CLOUD/bb9f1469daf04bd894ab2167f8132a1a/649d14483a984b788f3753ac88b37810.html (retrieved 2026-09-21)
- https://help.sap.com/docs/SAP_S4HANA_CLOUD/bb9f1469daf04bd894ab2167f8132a1a/c89eec80ec2043d980cb7b8c89e0a00a.html (retrieved 2026-09-21)
- https://help.sap.com/docs/SAP_S4HANA_CLOUD/bb9f1469daf04bd894ab2167f8132a1a/807238156726425dbd7f7ff8afc24da1.html (retrieved 2026-09-21)
- https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/8a57feade137489098f59374c06f1e0e/cf06b753128eb44ce10000000a174cb4.html (retrieved 2026-09-21)
- https://help.sap.com/docs/SAP_S4HANA_CLOUD/0e602d466b99490187fcbb30d1dc897c/0dd23a5023d14ddd9e1aa520db1ce141.html (retrieved 2026-09-21)
- https://help.sap.com/doc/ce01d82756b947a1a043a5d5a3204226/2302.500/en-US/WN_CE2302_EN.pdf (retrieved 2026-09-21)
- https://help.sap.com/doc/b870b6ebcd2e4b5890f16f4b06827064/2023.000/en-US/WN_OP2023_EN.pdf (retrieved 2026-09-21)
- https://help.sap.com/docs/SAP_S4HANA_CLOUD/bb9f1469daf04bd894ab2167f8132a1a/d8b16ace9227447c8c66086bc045a937.html (retrieved 2026-09-21)
- https://help.sap.com/docs/SAP_S4HANA_CLOUD/bb9f1469daf04bd894ab2167f8132a1a/7bc52558ef790a02e10000000a44147b.html (retrieved 2026-09-21)
- https://help.sap.com/docs/SAP_S4HANA_CLOUD/b978f98fc5884ff2aeb10c8fdeb8a43b/8aa29c6ac8234f9a9b975b3900aa002d.html (retrieved 2026-09-21)
- https://help.sap.com/docs/SAP_S4HANA_CLOUD/3c916ef10fc240c9afc594b346ffaf77/85043858ea0f9244e10000000a4450e5.html (retrieved 2026-09-21)
- https://userapps.support.sap.com/sap/support/knowledge/en/3492316 (retrieved 2026-09-21)
- https://github.com/SAP-samples/btp-kyma-multitenant-extension/blob/main/documentation/appendix/enable-odata-of-s4hana/README.md (retrieved 2026-09-21)
A pack review is not a vendor or examiner attestation. A retrieval date says when a source page was read; it does not by itself establish what the page said then. No pack is vendor-endorsed, and none has been connectivity-tested against a live vendor tenant.
