AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

S4hana Create Po Confirmation

skill-ilia-inovaflow-s4hana-create-record-skills-s4hana-create-po-confirmation · by ilia-inovaflow

Create supplier (PO) confirmations in SAP S/4HANA Cloud Public or on-prem private edition via the SOAP A2X "SupplierConfirmationRequest" service. Use whenever the user wants to create, post, add, generate, seed, simulate, or record supplier acknowledgements / order confirmations / vendor confirmations on S/4HANA — phrases like "confirm these POs", "acknowledge order receipt", "post a supplier con…

No reviews yet
0 installs
25 views
0.0% view→install

Install

$ agentstack add skill-ilia-inovaflow-s4hana-create-record-skills-s4hana-create-po-confirmation

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-ilia-inovaflow-s4hana-create-record-skills-s4hana-create-po-confirmation)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of S4hana Create Po Confirmation? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

s4hana-create-po-confirmation

Create supplier order confirmations on SAP S/4HANA Cloud Public via the SOAP A2X service. Verified end-to-end against SAP S/4HANA Cloud Public Edition 2026-05-12 — confirmation visible in Fiori "Supplier Confirmation" tab on PO 4500000020/10 (Sequential 1, Category AB, qty 50 PC, delivery 05/25/2026).

When to trigger

Verbs: create / post / add / generate / seed / confirm / acknowledge / simulate Objects: PO confirmation(s), supplier confirmation(s), order acknowledgement(s), vendor confirmation(s) Counts: 1 to ~50 records.

Hard rules (never violate)

  1. Always do a 1-record live POST as a probe before bulk (≥3 records), and verify in Fiori that the confirmation actually appeared (the service is one-way async; HTTP 202 means accepted, not committed).
  2. PO line must have SupplierConfirmationControlKey set before posting confirmations. If empty (default on this tenant), PATCH it via OData first.
  3. WS-Addressing headers are required — without wsa:Action, wsa:To, wsa:MessageID, wsa:ReplyTo, the service returns 500 "Web service processing error" with no diagnostic detail.
  4. Scripts go in mcp-server/src/sap/.tmp/-/create-po-confirmations/. Never commit, never modify .env.
  5. POSTs are sequential with 200ms delay; halt on 3 consecutive non-202 responses.

Endpoint

  • Service path: /sap/bc/srt/scs_ext/sap/supplierconfirmationrequest_i1
  • SOAP action: http://sap.com/xi/Procurement/SupplierConfirmationRequest_In/SupplierConfirmationRequest_InRequest
  • Communication scenario: SAP_COM_0827 — "Supplier Confirmation Process Integration"
  • Style: SOAP 1.1, document/literal, WS-Addressing required, response: HTTP 202 (one-way async)

Phase 0 — Setup check (MANDATORY, no exceptions)

Before any API call, before any tool use, do this check. Even if you already know credentials from earlier in the conversation — IGNORE that knowledge and re-check from scratch each invocation.

  1. Announce: tell the user "Checking for SAP credentials in ``..."
  2. Check ONLY these two sources:
  • A .env file at ./.env (in the current working directory — NOT parent dirs, NOT ~/.env, NOT any memory file)
  • Shell-exported env vars: SAP_HOST AND SAP_AUTH_MODE both present
  1. If neither: auto-create ./.env from the bundled template (curl from https://raw.githubusercontent.com/ilia-inovaflow/s4hana-create-record-skills/main/.env.example), append .env to .gitignore if not already there, tell the user clearly what to fill in (auth mode + host + creds), and wait for them to say "ready" before making any API call. Never overwrite an existing .env.
  2. If credentials are present: report back to the user: "✓ Loaded credentials for ` in ` mode. Proceeding with [task]."

Never use credentials from conversation memory, from another project's .env, or from any tenant the user previously worked with in a different session. Each project gets its own .env. See [shared/setup-check.md](../../shared/setup-check.md) for the full rationale and edge cases.

Phases

Phase 1 — Parse & gather input

Per confirmation:

| Field | Notes | |---|---| | PurchaseOrderID | The PO being confirmed | | PurchaseOrderItemID | The line being confirmed | | ConfirmedDeliveryDate | Date supplier promises (YYYY-MM-DD ISO) | | ConfirmedQuantity | Quantity confirmed (with unitCode — use ISO codes: PCE, KGM, H87...) | | SuplrConfExternalReference | External reference (35-char free text) | | SupplierOrderAcknNumber | Optional — supplier's own acknowledgement number |

If user said "auto", pull eligible PO lines:

GET /sap/opu/odata/sap/API_PURCHASEORDER_PROCESS_SRV/A_PurchaseOrderItem?$filter=ProductType eq '1' and PurchaseOrderItemCategory eq '0' and IsCompletelyDelivered eq false&$select=PurchaseOrder,PurchaseOrderItem,Material,Plant,OrderQuantity,PurchaseOrderQuantityUnit,SupplierConfirmationControlKey

Phase 2 — Prerequisite check: PO line must have a Confirmation Control Key

This tenant defaults SupplierConfirmationControlKey to empty on all PO lines. Confirmations sent against an empty-CCK line are silently accepted (HTTP 202) but never commit. Set it via OData PATCH before posting:

PATCH /sap/opu/odata/sap/API_PURCHASEORDER_PROCESS_SRV/A_PurchaseOrderItem(PurchaseOrder='',PurchaseOrderItem='')?sap-client=
X-CSRF-Token: 
Cookie: 
Content-Type: application/json

{"SupplierConfirmationControlKey": "0001"}

Valid key on a Cloud Public tenant: 0001. Returns HTTP 204 on success. After this, confirmations against that PO line will commit.

If you're seeding many confirmations: PATCH all eligible PO lines first (one OData call each), then start posting confirmations.

Phase 3 — Build SOAP envelope

Verified working envelope:


 
 http://sap.com/xi/Procurement/SupplierConfirmationRequest_In/SupplierConfirmationRequest_InRequest
 {{full endpoint url}}
 urn:uuid:{{guid}}
 http://www.w3.org/2005/08/addressing/anonymous
 
 
 
 
 {{ISO datetime}}
 
 
 01
 {{free text, max 35 chars}}
 {{po number}}
 
 {{po item, e.g. 10}}
 
 {{YYYY-MM-DD}}
 {{qty}}
 
 
 
 
 

ActionCode enum (from WSDL — only 3 values allowed):

| Code | Meaning | Verification | |---|---|---| | 01 | Create | ✅ Verified end-to-end — creates category AB (Order Acknowledgement) | | 02 | Update | ⚠️ Accepted (202) but outcome requires Fiori verification — likely requires SupplierConfirmation ID to identify which existing one to update | | 03 | Delete | ⚠️ Accepted (202) but outcome requires Fiori verification — likely requires SupplierConfirmation ID |

Skill default: use ActionCode 01. Update/delete are exposed but treated as advanced — confirm with user before using them and require user to verify in Fiori after.

Phase 4 — POST

POST /sap/bc/srt/scs_ext/sap/supplierconfirmationrequest_i1?sap-client=
Authorization: Basic 
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://sap.com/xi/Procurement/SupplierConfirmationRequest_In/SupplierConfirmationRequest_InRequest"
Accept: text/xml

Expected response: HTTP 202 (Accepted, no body). This is normal for one-way async services.

If response is HTTP 500 with fault Wrong SOAP Version → you used application/soap+xml Content-Type. Switch to text/xml.

If response is HTTP 500 with fault Web service processing error... details in the web service error log on provider side → WS-Addressing headers missing OR malformed. Re-check wsa:Action, wsa:To, wsa:MessageID, wsa:ReplyTo.

Phase 5 — Verify (manual)

The service is one-way async. HTTP 202 doesn't guarantee commit. To verify:

Via Fiori: Open PO in "Manage Purchase Orders" → item → Supplier Confirmation tab. The confirmation should appear with:

  • Confirm. Category = AB (Order Acknowledgement) for ActionCode 01
  • Delivery Date / Time / Quantity matching what you sent
  • Sequential number assigned automatically (1, 2, 3, ...)

Via API: Not possible on this tenant — to_ScheduleLine shows the original PO schedule, not confirmations. The confirmation data lives in EKES (table) which isn't exposed via OData V2 in the standard PO service.

For bulk runs: spot-check 2–3 records in Fiori after the batch completes.

Output structure

mcp-server/src/sap/.tmp/-/create-po-confirmations/
├── eligible-po-lines.json
├── cck-patches.jsonl # log of which PO lines we PATCHed with confirmation control key
├── create-log.jsonl # one line per SOAP attempt
├── results.json # summary
└── verify-checklist.md # printable list of POs to spot-check in Fiori

Reference files

  • references/soap-envelope-template.md — full XML template with WS-A headers + ActionCode notes
  • references/known-quirks.md — the 3 gotchas (WS-A required, CCKey prerequisite, async-202-doesn't-mean-success)
  • scripts/bulk-poc-poster.mjs — reference implementation with PATCH-then-POST flow

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.