Skip to main content
Nerve Centre KPIs · Audit Profile · Sentiment Settings SAP S/4HANA Cloud back-office health audit. Answers four questions: (1) are ecom-driven journal postings settling cleanly (no idoc error queue, no imbalanced documents); (2) is AR collectible (aging, DSO, credit holds) across CompanyCodes; (3) does SAP MM-IM on-hand reconcile with ecom availability; (4) is the period close on track for group consolidation. The cross-channel area joins SAP sales/billing documents to commerce-sibling orders to size unbilled revenue and credit risk.

What this audit checks

Authentication & access

  • BTP OAuth2 token resolves against the tenant subdomain + region (not the sandbox default)
  • Scopes cover API_JOURNALENTRYITEM, API_BUSINESS_PARTNER, API_MATERIAL_STOCK, API_SALES_ORDER, API_BILLING_DOCUMENT
  • CompanyCode(s) for every active legal entity are configured (multi-entity installs)
  • OData $batch enabled to keep high-volume reads within the per-tenant rate limit

GL health

  • Unposted (open) journal entries below 50 (idoc EXPORT/IMPORT queue clean)
  • Zero imbalanced documents (debit != credit) persisting past validation
  • Idoc error queue (status 51/56/64) below 10 in the last 24h
  • Manual journals (FB50/FB60) under 25% of total postings (controls gap if higher)

AP/AR cycle

  • AR aging 60+ days below 15% of open receivables
  • DSO under 60 days and not rising > 10 days vsP
  • No single customer holding > 40% of 60+ day AR (concentration risk)
  • Cash application rate at or above 95%; high-value invoices (> 50k) not overdue 60+ days

Inventory reconciliation

  • ERP-vs-ecom on-hand variance below 5% on top-50 velocity SKUs
  • No Material on-hand gone negative in any Plant (double-posting / UoM error)
  • SKUs below safety stock flagged for reorder
  • Slow-moving / dead stock under 10% of inventory value

Period close

  • Period close not past deadline on any CompanyCode (> 5 days blocks consolidation)
  • Zero intercompany imbalances across the CompanyCode group
  • Accrual reversals from the last close within expected range

Cross-channel: revenue reconciliation

  • Ecom orders with a matching SAP Sales Document + Billing Document of equal value within the period (sibling = shopify/bigcommerce/adobe.order)
  • Ecom customers with completed orders present in SAP Business Partner master (no AR-posting gap)
  • AR aging on customers with active ecom orders (credit-control gap: ordering while past due)
  • Unbilled revenue forecast (commerce cleared value minus matched SAP billing value, FX-translated at TCURR rate type M)

Severity thresholds

SignalWarnCritical
open_journal_count2550
journal_imbalance_count15
ar_aging_60d_pct1015
dso_days4560
inventory_variance_pct35
period_close_overdue_days25
customer_master_drift510

Data sources

  • GET https://api.s4hana.cloud.sap/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC - Journal entries: posting status, debit/credit, reference document
  • GET https://api.s4hana.cloud.sap/sap/opu/odata/sap/API_BUSINESS_PARTNER - Customer + vendor master, credit limit, AR aging, blocked flag
  • GET https://api.s4hana.cloud.sap/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV - Plant-level on-hand, safety stock, standard price
  • GET https://api.s4hana.cloud.sap/sap/opu/odata/sap/API_SALES_ORDER_SRV - Sales documents: status, credit/inventory hold, ecom reference
  • GET https://api.s4hana.cloud.sap/sap/opu/odata/sap/API_BILLING_DOCUMENT_SRV - Billing documents for order-to-invoice reconciliation