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

S4hana Create Service Entry Sheet

skill-ilia-inovaflow-s4hana-create-record-skills-s4hana-create-service-entry-sheet · by ilia-inovaflow

Create Service Entry Sheets (SES) in SAP S/4HANA Cloud Public or on-prem private edition via OData V2 A_ServiceEntrySheet deep-insert at API_SERVICE_ENTRY_SHEET_SRV (Lean Services model). Use whenever the user wants to create, post, add, generate, seed, enter, or confirm service entry sheets on S/4HANA — phrases like "create SES for PO X", "make me a few service entries", "confirm services render…

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

Install

$ agentstack add skill-ilia-inovaflow-s4hana-create-record-skills-s4hana-create-service-entry-sheet

✓ 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-service-entry-sheet)

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 Service Entry Sheet? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

s4hana-create-service-entry-sheet

Create Service Entry Sheets on SAP S/4HANA Cloud Public (Lean Services). Verified end-to-end against SAP S/4HANA Cloud Public Edition 2026-05-12 — SES 1, 2, 3 posted via API.

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.

When to trigger

Verbs: create / post / add / generate / seed / enter / confirm Objects: SES, service entry sheet(s), service 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).
  2. The referenced PO must be a SERVICE PO (cat 0 + SERV material + AAC=K). Use s4hana-create-po with the service-PO recipe first if none exist.
  3. SES references the service line (cat 0), NOT the limit item (cat A) if the PO has one.
  4. Scripts go in /.s4hana-tmp/create-ses-/. Never commit, never modify .env.
  5. POSTs are sequential with 200ms delay; halt on 3 consecutive failures (but auto-retry once on MM_PUR_SES/119: PO not released after a 2-second wait — transient backend async).

Endpoint

  • Service path: /sap/opu/odata/sap/API_SERVICE_ENTRY_SHEET_SRV
  • Entity sets: A_ServiceEntrySheet, A_ServiceEntrySheetItem, A_SrvcEntrShtAcctAssignment
  • Method: POST (deep-insert with to_ServiceEntrySheetItem)
  • Communication scenario: SAP_COM_0146 — "Service Entry Sheet Integration" (must be added to comm user — common gap on fresh tenants)

There's also an OData V4 variant at /sap/opu/odata4/sap/api_serviceentrysheet/srvd_a2x/sap/serviceentrysheet/0001/ — same data, different protocol. Use V2 for now (this skill targets V2).

Phases

Phase 1 — Parse & gather input

For each SES, required:

| Field | Notes | |---|---| | PurchaseOrder (header + item) | A service PO that exists and is released | | PurchaseOrderItem (item) | The cat-0 service line on that PO (NOT cat-A limit line) | | ConfirmedQuantity | Amount of service performed (typically partial — 25%-100% of order qty) | | QuantityUnit | Match the PO line unit (e.g. AU) | | NetPriceAmount | Match the PO line price | | Plant, Currency | From the PO line | | PostingDate | Must be in open MM posting period (often different from FI periods — typically 2-3 months back) | | ServicePerformanceDate / EndDate | Must be within the PO line's allowed performance window — typically must equal or follow the PO creation date | | ServiceEntrySheetName | Free text, 40 char max |

If the user said "auto", pull eligible PO lines from A_PurchaseOrderItem?$filter=ProductType eq '2' and PurchaseOrderItemCategory eq '0' and IsFinallyInvoiced eq false.

Phase 2 — Preflight checks

Before bulk:

  1. Confirm the comm arrangement for SAP_COM_0146 is active (probe A_ServiceEntrySheet?$top=1 — 403 HTML = missing arrangement).
  2. Find an open MM posting period via either a probe (try to post with today's date, read M7/053 error for allowed periods) or T_T001B-equivalent OData if accessible. Cache result.
  3. For each candidate PO line, fetch performance window (Item.NetPriceQuantity, Item.PurchaseOrderDate etc.) so SES dates are valid.

Phase 3 — Build payload

Minimal working envelope (verified):

{
 "ServiceEntrySheetName": "",
 "PurchaseOrder": "",
 "PostingDate": "/Date()/",
 "Currency": "EUR",
 "to_ServiceEntrySheetItem": [
 {
 "ServiceEntrySheetItem": "10",
 "PurchaseOrder": "",
 "PurchaseOrderItem": "",
 "ConfirmedQuantity": "",
 "QuantityUnit": "AU",
 "NetPriceAmount": "",
 "Currency": "EUR",
 "Plant": "1010",
 "ServiceEntrySheetItemDesc": "",
 "ServicePerformanceDate": "/Date()/",
 "ServicePerformanceEndDate": "/Date()/"
 }
 ]
}

Do NOT include to_AccountAssignment unless the user explicitly wants a different cost center than what's on the PO — SES auto-inherits the PO line's AAC/CostCenter/GLAccount, and explicit deep-insert often triggers MM_PUR_SES/128: accounting lines not numbered consecutively.

Phase 4 — CSRF + POST

Same CSRF flow as the other OData V2 services in this collection — see ../s4hana-create-po/references/csrf-flow.md.

If response is MM_PUR_SES/119: Purchase order X is not released. for a PO created in the same session/seconds ago → wait 2s and retry once (transient backend async). The PO IS released; the SES backend just hasn't refreshed its cache yet.

Phase 5 — Verify & report

After all POSTs, $expand=to_ServiceEntrySheetItem on 2-3 random SES to confirm. Show user: total created, SES ID range, supplier/PO distribution, any failures.

Output structure

/.s4hana-tmp/create-ses-/
├── eligible-po-lines.json # candidate POs after filtering
├── create-log.jsonl # one line per attempt
├── results.json # final summary
└── verify-sample.json

Reference files

  • references/envelope-template.md — full schema with all optional fields
  • references/known-errors.md — error catalog (MMPURSES/006, /015, /119, /128, M7/053, etc.)
  • references/po-not-released-retry.md — the transient async pattern + retry algorithm
  • scripts/bulk-ses-poster.mjs — reference implementation

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.