> ## Documentation Index
> Fetch the complete documentation index at: https://www.composer.id/llms.txt
> Use this file to discover all available pages before exploring further.

# SAP S/4HANA

> SAP S/4HANA (ERP): the API posture, publish target and field mapping composerID publishes a decision reference through.

This page records how composerID publishes into SAP S/4HANA: the vendor's API posture, the publish target and field mapping, and the documentation each claim rests on. It is for anyone evaluating the connection or building against it.

SAP S/4HANA is the ERP - the financial-commitment system of record and the anchor destination for the outsourced work-order channel. composerID publishes the decision as a Purchase Requisition (or a Purchase Order with Enhanced Limit items for services), carries the Intent ID in a Key User Extensibility custom field, and reconciles PO changes and Service Entry Sheets back onto the intent timeline.

<Info>
  Category: ERP. Coverage status: Specification mapped. Vendor documentation: public developer portal.
</Info>

## Integration path

How composerID connects to this destination, at a glance.

| Step                 | Detail                                                                                                                                                                                                                     |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Authentication       | Communication Management: a Communication Arrangement binds a Communication Scenario (e.g. SAP\_COM\_0102 Purchase Requisition Integration, SAP\_COM\_0053 Purchase Order) to a Communication System + Communication User. |
| composerID publishes | Purchase Requisition: POST A\_PurchaseRequisitionHeader (API\_PURCHASEREQ\_PROCESS\_SRV / OData V4)                                                                                                                        |
| Intent ID lands on   | `purchase_requisition` `YY1_IntentID`, written into the destination record                                                                                                                                                 |
| Back-sync            | Webhooks and polling: some lifecycle events are pushed, the rest are read on a schedule.                                                                                                                                   |

## Vendor documentation

<Columns cols={2}>
  <Card title="SAP Business Accelerator Hub - S/4HANA Cloud" icon="external-link" href="https://api.sap.com/products/SAPS4HANACloud" horizontal />

  <Card title="Purchase Requisition (OData V4)" icon="external-link" href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/bb9f1469daf04bd894ab2167f8132a1a/dad2402e2ff543e7971d788bf35b12c1.html" horizontal />

  <Card title="Purchase Order (OData V4)" icon="external-link" href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/bb9f1469daf04bd894ab2167f8132a1a/c89eec80ec2043d980cb7b8c89e0a00a.html" horizontal />

  <Card title="S/4HANA Cloud documentation" icon="external-link" href="https://help.sap.com/docs/SAP_S4HANA_CLOUD" horizontal />
</Columns>

## API posture

| Aspect         | Detail                                                                                                                                                                                                                                                                                                                                                                      |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Authentication | Communication Management: a Communication Arrangement binds a Communication Scenario (e.g. SAP\_COM\_0102 Purchase Requisition Integration, SAP\_COM\_0053 Purchase Order) to a Communication System + Communication User; Basic or OAuth 2.0 per scenario - OAuth recommended for production. Writes need a CSRF token (x-csrf-token: fetch on a GET, replay on the POST). |
| Style          | OData v4 (current) and OData v2 (legacy; the v2 Purchase Order API is deprecated); SOAP for selected scenarios; \$batch supported                                                                                                                                                                                                                                           |
| Base URL       | https\://\{tenant}-api.s4hana.ondemand.com/sap/opu/odata/sap/\{API\_NAME}  (also \*.s4hana.cloud.sap)                                                                                                                                                                                                                                                                       |
| Webhooks       | Business events via SAP Event Mesh / Advanced Event Mesh; otherwise poll with \$filter on LastChangeDateTime.                                                                                                                                                                                                                                                               |
| Events posture | Webhooks and polling                                                                                                                                                                                                                                                                                                                                                        |
| Rate limits    | Tenant-governed; OData paging defaults to 1000 with $top up to 5000 on PO reads; use $batch, and simulation mode (PurReqnDoOnlyValidation) as a free preflight.                                                                                                                                                                                                             |
| Objects        | A\_PurchaseRequisitionHeader/Item (+ account assignment, texts), Purchase Order (item categories incl. Standard, Subcontracting, Third-Party, Enhanced Limit for services), Service Entry Sheet (Lean Services), Business Partner / Supplier, cost centers                                                                                                                  |

## Publish target and field mapping

Each object below pairs the canonical intent fields with the destination's own fields and operations. The mapping is indicative until it is confirmed against a tenant at onboarding.

<AccordionGroup>
  <Accordion title="Purchase Requisition" icon="arrow-right-left" description="Raise the demand">
    | Mapping                  | Detail                                                                            |
    | ------------------------ | --------------------------------------------------------------------------------- |
    | Canonical to destination | description, service\_category, cost\_center, budget, dates                       |
    | Target                   | POST A\_PurchaseRequisitionHeader (API\_PURCHASEREQ\_PROCESS\_SRV / OData V4)     |
    | Requirement              | Required                                                                          |
    | Notes                    | PurReqnDoOnlyValidation=true validates without posting - use as mapping preflight |
  </Accordion>

  <Accordion title="Purchase Order" icon="arrow-right-left" description="Commit the spend">
    | Mapping                  | Detail                                                              |
    | ------------------------ | ------------------------------------------------------------------- |
    | Canonical to destination | supplier, amount, currency, dates; Enhanced Limit item for services |
    | Target                   | Purchase Order OData V4 API                                         |
    | Requirement              | Tenant                                                              |
    | Notes                    | Enhanced Limit items model outsourced work orders                   |
  </Accordion>

  <Accordion title="Intent ID + back-sync" icon="arrow-right-left" description="Correlate and reconcile">
    | Mapping                  | Detail                                                        |
    | ------------------------ | ------------------------------------------------------------- |
    | Canonical to destination | intent\_id (custom field); PO changes + Service Entry Sheets  |
    | Target                   | Key User Extensibility custom field + Event Mesh / delta poll |
    | Requirement              | Required                                                      |
    | Notes                    | Service Entry Sheets confirm delivered work against the PO    |
  </Accordion>
</AccordionGroup>

<Note>
  Nothing is callable until the matching Communication Scenario (e.g. SAP\_COM\_0102 / SAP\_COM\_0053) is bound to a Communication System and User in a Communication Arrangement - API access is switched on per tenant. Intent ID custom fields are added with Key User Extensibility (Custom Fields app, header/item business contexts). Target the OData V4 services (the v2 PO API is deprecated). On-premise S/4HANA differs: Gateway service activation instead of communication arrangements.
</Note>

## Next steps

<Columns cols={3}>
  <Card title="How composerID connects" icon="plug-zap" href="/guides/connect">
    The five ways composerID reaches a destination, and the minimum a destination must offer.
  </Card>

  <Card title="Publishing" icon="send" href="/concepts/publishing">
    Plan, preflight and publish: how a decision becomes a valid record in a destination.
  </Card>

  <Card title="All destinations" icon="plug" href="/destinations">
    Every destination composerID documents, with its category and coverage status.
  </Card>
</Columns>
