JournalEntryCreateRequestConfirmation_In (bulk). Display name “SAP Post Journal Entry”. Off by default. This is the only SAP tool that uses SOAP rather than OData, so it needs a direct S/4HANA connection — a SAP Integration Suite (iflow) connection does not expose the SOAP endpoint and is refused with a clear message.
Authentication and enablement
Requires a workspace SAP integration.base_url, authorization and sap_client are injected. Two configured-tool bindings (editable in the tool’s configuration, not LLM arguments) control the rest:
journal_entry_create_soap_path— the endpoint path (after the host) of the Journal Entry Create binding configured in SOAMANAGER. Leave blank to use the standard binding for the connection’s SAP client — the client is a segment of the SRT URL, so the default is built fromsap_clientrather than hard-coded (a fixed client would post to the wrong client on a non-100 system). Override it only if your system publishes the service under a non-standard binding.created_by_user— the SAP user recorded as the document creator (structurally required by the service); no default.
Inputs
test_run(boolean, required) —truesimulates/validates only (no document committed);falseposts a real document and returns its number. There is no default: the model must state its intent on every call.entries(required) — one or more journal entries. Each entry:company_code,posting_date(required), optionaldocument_date,document_type(defaultSA),business_transaction_type(defaultRFBU),document_header_text, andreversal_reason+reversal_datefor a planned reversal.document_reference_id(XBLNR, ≤16 chars) is required for a real post (test_run=false) — it is the idempotency key a duplicate check and the post-timeout recovery rely on; a simulate does not need one. This tool does not perform the duplicate check itself.- Each entry’s
items(≥2) carrygl_account, a positiveamount,currency,debit_credit_code(S= debit,H= credit), optionaldocument_item_text,assignment_reference, and account assignment (cost_center,profit_center,segment,order_id,wbs_element,functional_area).
amount with more decimal places than its currency allows is rejected rather than silently rounded.
The tool applies the SAP sign convention (debit positive, credit negative) from debit_credit_code, and rejects an entry that does not balance before sending. The balance check is per currency and at the precision actually posted (each amount is formatted to the currency’s decimals — 2 for EUR/USD, 0 for JPY, 3 for KWD), so an entry that only balances as raw floats, or only across currencies, is caught. Numeric G/L / cost-centre / profit-centre codes are zero-padded to SAP’s field width before sending.
Batch
Severalentries post in one call. Each entry commits independently, so a batch can partially succeed — give each entry a unique document_reference_id and run a duplicate check first so a re-run is safe. When a batch partially fails, the error text lists each entry’s committed document number (not just the first error), so a retry re-posts only the entries that did not commit. If SAP never confirms the outcome (timeout, gateway 502/504), the tool reports the document may already exist and tells the agent to check with the duplicate read rather than resend — it never replays a write.
Output
structuredContent carries status (posted / simulated / error), test_run, and confirmations. Each confirmation has accounting_document, company_code, fiscal_year, severity and log messages, plus a document object — the posted entry’s header (document type, business transaction type, dates, header text, created-by, planned reversal) and line items (G/L, debit/credit, signed amount, account assignment, text) — so the review card renders the complete document for both a simulate and a commit. A real post also includes a sap_url deep link. A SOAP fault or a severity-3 log sets IsError: true.
Validation Status
Provisional. The SOAP message format and the standard EUR / client-100 path are verified live against s4h-2022 through the worker — a real commit returned a new accounting document and the duplicate read then found it. Not yet exercised against SAP: the client-derived path on a non-100 system, non-EUR currency precision (JPY 0-decimal, KWD 3-decimal), code padding, and the Integration Suite refusal. Not yet validated against a customer production connection.Errors
IsError: true is set for: a missing integration; a SAP Integration Suite connection (SOAP is not exposed there); no SOAP path and no sap_client to derive one from; a missing created_by_user; a missing document_reference_id on a real post; an invalid or incomplete date (a planned reversal needs both reason and date); an amount with too many decimals for its currency; an unbalanced entry; a SOAP fault; a severity-3 SAP log (e.g. closed posting period); a commit confirmation with no document number; a non-2xx response without a fault; or a response that is neither a fault nor a confirmation (never counted as a successful post). A batch whose confirmation count does not match the entries sent is an error with the outcome marked unknown. On a commit, a timeout, gateway 502/504, or an unreadable 2xx is reported as outcome unknown (the document may already exist — check with the duplicate read, do not resend).