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

S4hana Create Business Partner

skill-ilia-inovaflow-s4hana-create-record-skills-s4hana-create-business-partner · by ilia-inovaflow

Create business partners (BPs) in SAP S/4HANA Cloud Public or on-prem private edition via OData V2 A_BusinessPartner deep-insert at API_BUSINESS_PARTNER. Supports suppliers (vendors with FLVN00/FLVN01 roles), customers (FLCU00/FLCU01 roles), AND combined customer+supplier BPs (sells AND buys) in a single POST. Use whenever the user wants to create, post, add, generate, seed, onboard, or clone bus…

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

Install

$ agentstack add skill-ilia-inovaflow-s4hana-create-record-skills-s4hana-create-business-partner

✓ 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-business-partner)

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

About

s4hana-create-business-partner

Create business partners on SAP S/4HANA — suppliers, customers, or combined. Verified production-ready against SAP S/4HANA Cloud Public Edition 2026-05-12: BP 1000080 (supplier), 1000081 (customer), 1000082 (combined customer+supplier), plus 73 prior bulk-migrated suppliers.

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 / onboard / clone Objects: BP(s), business partner(s), supplier(s), vendor(s), customer(s), debtor(s), creditor(s), trading partner(s) Counts: 1 to ~100 records.

Hard rules (never violate)

  1. Always do a 1-record live POST per BP type as a probe before bulk (≥3 records).
  2. Never invent master data IDs — verify CompanyCode, PurchOrg, SalesOrg, recon accounts, GLAccount exist in target.
  3. If a required field has no sensible default and the user didn't specify → ask once, then auto-pick.
  4. Scripts go in /.s4hana-tmp/create-bps-/. Never commit, never modify .env.
  5. POSTs are sequential with 200ms delay; halt on 3 consecutive failures.

Endpoint

  • Service path: /sap/opu/odata/sap/API_BUSINESS_PARTNER/A_BusinessPartner
  • Method: POST (deep-insert with nested Address, Role, Customer, Supplier and their sub-entities)
  • Communication scenario: SAP_COM_0008 — "Business Partner Replication"

Phases

Phase 1 — Parse: what kind of BP?

| Want | Roles | Sub-entities | |---|---|---| | Supplier only | FLVN00 (vendor) + FLVN01 (vendor extended) | to_Supplier (with to_SupplierPurchasingOrg + to_SupplierCompany) | | Customer only | FLCU00 (FI customer) + FLCU01 (extended) | to_Customer (with to_CustomerSalesArea + to_CustomerCompany) | | Combined (sells AND buys) | All four roles | Both to_Supplier and to_Customer blocks |

User intent maps:

  • "vendor" / "supplier" → supplier
  • "customer" / "debtor" / "client" → customer
  • "trading partner" / "both customer and supplier" → combined

Phase 2 — Tenant defaults

Cache via tenant memory. For ``:

| Setting | Value | |---|---| | BP grouping (internal numbering, 7-digit IDs) | BP02 | | BP grouping (external numbering, manual ID required) | BP03 | | Supplier recon account | 21100000 (Payables Domestic) | | Customer recon account | 12100000 (Receivables) | | Default payment terms | 0004 | | Customer Group | 01 | | Sales Organization | 1010 · DistributionChannel 10 · Division 00 | | Purchasing Organization | 1010 · PurchGroup 001 | | Company Code | 1010 · GLAccount expense 11001040 | | Languages on address | EN or DE |

Use BP02 by default — internal numbering means the system auto-assigns the BP number (next 7-digit ID like 1000083). If user wants a specific 8-digit ID like 20500001, use BP03 and supply BusinessPartner explicitly.

Phase 3 — Build payload

Supplier-only (verified)
{
 "BusinessPartnerCategory": "2",
 "BusinessPartnerGrouping": "BP02",
 "OrganizationBPName1": "",
 "to_BusinessPartnerAddress": {
 "results": [{ "Country": "DE", "CityName": "...", "PostalCode": "...", "StreetName": "..." }]
 },
 "to_BusinessPartnerRole": {
 "results": [{ "BusinessPartnerRole": "FLVN00" }, { "BusinessPartnerRole": "FLVN01" }]
 },
 "to_Supplier": {
 "to_SupplierPurchasingOrg": {
 "results": [{ "PurchasingOrganization": "1010", "PurchaseOrderCurrency": "EUR", "PaymentTerms": "0004" }]
 },
 "to_SupplierCompany": {
 "results": [{ "CompanyCode": "1010", "ReconciliationAccount": "21100000", "PaymentTerms": "0004" }]
 }
 }
}
Customer-only (verified)
{
 "BusinessPartnerCategory": "2",
 "BusinessPartnerGrouping": "BP02",
 "OrganizationBPName1": "",
 "to_BusinessPartnerAddress": {
 "results": [{ "Country": "DE", "Language": "EN", "CityName": "...", "PostalCode": "...", "StreetName": "..." }]
 },
 "to_BusinessPartnerRole": {
 "results": [{ "BusinessPartnerRole": "FLCU00" }, { "BusinessPartnerRole": "FLCU01" }]
 },
 "to_Customer": {
 "to_CustomerSalesArea": {
 "results": [{ "SalesOrganization": "1010", "DistributionChannel": "10", "Division": "00", "CustomerGroup": "01", "CustomerPaymentTerms": "0004", "Currency": "EUR" }]
 },
 "to_CustomerCompany": {
 "results": [{ "CompanyCode": "1010", "ReconciliationAccount": "12100000", "PaymentTerms": "0004" }]
 }
 }
}

Customer-specific required fields you'd miss otherwise:

  • Language on to_BusinessPartnerAddress — error FSBP_ECC/030: Standard address doesn't have a language, needed for customer
  • Currency on to_CustomerSalesArea — error CVI_API/003: Currency (KNVV-WAERS) is a required entry field
Combined customer + supplier (verified)

Same as customer-only but ALSO include the supplier blocks. Both deep-inserts go through in one POST.

Phase 4 — POST

Standard CSRF flow — see ../s4hana-create-po/references/csrf-flow.md. Single POST creates BP + Address + Roles + Customer + Supplier + their org/company assignments — typically 10-15 child entities in one transaction.

Phase 5 — Verify

$expand=to_BusinessPartnerAddress,to_BusinessPartnerRole,to_Customer,to_Supplier on the new BP to confirm structure.

Cross-tenant migration notes

  • Source IDs do NOT carry forward — Cloud auto-assigns with BP02. Build a source-ID → target-ID mapping CSV.
  • Country distribution and BP-name patterns can be preserved.
  • For customers, propagate language preferences from source addresses.

Cleanup quirks (Cloud-specific)

  • A_BusinessPartner DELETE is blocked (CI_DRAFTBP_MESSAGE/032). To retire a test BP: PATCH BusinessPartnerIsBlocked=true + rename OrganizationBPName1=_TEST_DELETE_ME.
  • A_Product POST is blocked on Cloud (API_PRD_MSG/009). For migrations involving new materials, reuse the existing HAWA/FERT/SERV pool — don't try to clone materials.

Output structure

/.s4hana-tmp/create-bps-/
├── payloads.json
├── create-log.jsonl
├── results.json
├── source-target-mapping.csv # for cross-tenant migrations
└── verify-sample.json

Reference files

  • references/bp-roles-and-groupings.md — full role catalog (FLCU/FLVN/BUP/etc.), grouping conventions, numbering policies
  • references/customer-vs-supplier.md — side-by-side comparison of required fields per role type
  • references/cross-tenant-migration.md — the pattern for cloning BPs from on-prem to Cloud with ID remapping
  • scripts/bulk-bp-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.