The percentage gap between what S/4HANA Cloud says you physically hold and what the storefront is selling, across the SKUs that actually matter.
At a glance
A single percentage that answers one question: how far apart are the books and the storefront on the inventory that matters most? The card takes the top-50 SKUs by value, pulls plant and storage-location unrestricted stock from S/4HANA Cloud MM-IM (the system of record), pulls the same SKUs’ available-to-sell quantity from each connected commerce platform, and reports the absolute on-hand variance as a percentage of the SAP figure. SAP is treated as truth because it is the legal inventory ledger that valuation, audit, and replenishment all run from. The storefront is the channel that takes the money. When those two drift apart you are either overselling stock you do not have or hiding stock you could be selling. This card is the gauge; the SKU-level companion is Inventory Sync Drift.
| What it detects | A material on-hand mismatch between SAP MM-IM and commerce availability on your highest-value SKUs. A reading above the alert threshold means the storefront and the ledger disagree by more than a rounding margin on stock that drives most of your revenue and most of your write-off exposure. |
| What it counts | For each of the top-50 SKUs by extended value, the absolute difference between SAP unrestricted-use stock (MM-IM, summed across the relevant plants and storage locations, material-master Material MARC / storage-location MARD) and the commerce platform’s available quantity, divided by the SAP quantity. The card reports the value-weighted average variance across the 50 SKUs and surfaces the worst offenders. |
| How the join works | SKU identity is matched on the SAP Material number against the commerce SKU / variant identifier, using the connector’s material-to-SKU map. SAP availability is unrestricted stock net of reserved and blocked stock; commerce availability is the published sellable quantity. Both are snapshotted at the same poll so the comparison is like-for-like in time. |
| SAP side | MM-IM plant and storage-location stock. Unrestricted-use stock is the sellable pool; quality-inspection stock, blocked stock, stock in transit, and consignment are excluded unless your fulfilment model sells from them. The card respects the plant filter on the dashboard. |
| Commerce side | The published available-to-sell quantity per SKU on Shopify, BigCommerce, Adobe Commerce, or other connected storefronts. This is the number a shopper sees, which is what determines whether you oversell. |
| Common root cause | A broken or lagging stock-sync IDoc / API feed, multi-location stock not aggregated correctly, a safety-stock buffer applied on one side only, a unit-of-measure mismatch (SAP base UoM vs commerce selling UoM), or a SKU mapped to the wrong Material. |
| How to resolve | Reconcile the worst SKUs first in MMBE (Stock Overview) or the Manage Stock Fiori app, confirm the material-to-SKU map, check the stock-update IDoc partner profile and message status, and verify which plants and storage locations feed the storefront. |
| Data source / freshness | SAP MM-IM stock via OData against the live system; commerce availability via each platform’s inventory API. Vortex IQ polls every 15 minutes by default; both sides are snapshotted in the same poll cycle. |
| Time window | RT/24H (real-time snapshot, 24-hour drift trail) |
| Alert trigger | >5% value-weighted variance across the top-50 SKUs |
| Roles | owner, finance, operations |
Calculation
Calculated automatically from your SAP data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A homewares brand runs S/4HANA Cloud with one plant (1000, main DC) and two storage locations (0001 pick-face, 0002 reserve), selling through a Shopify Plus DTC store and a BigCommerce B2B portal. The snapshot is taken at 09:00 on 12 Mar 26. Five of the top-50 SKUs are shown below.| Material (SKU) | SAP unrestricted (MM-IM) | Commerce available | Abs variance | Variance % | Extended value weight |
|---|---|---|---|---|---|
| HW-LAMP-014 | 420 | 420 | 0 | 0.0% | high |
| HW-RUG-220 | 180 | 240 | 60 | 33.3% | high |
| HW-VASE-090 | 96 | 96 | 0 | 0.0% | medium |
| HW-CHAIR-301 | 54 | 12 | 42 | 77.8% | high |
| HW-THROW-118 | 310 | 305 | 5 | 1.6% | low |
| Value-weighted variance (top-50) | 6.4% |
- The headline gauge reads 6.4%, above the
>5%alert. Two SKUs are driving it. The card is value-weighted, so HW-CHAIR-301 and HW-RUG-220 (both high-value) move the needle far more than a small percentage wobble on a low-value SKU like HW-THROW-118. - HW-RUG-220 shows commerce higher than SAP (240 vs 180). That is the dangerous direction: the storefront is advertising 60 units the ledger does not have. This is an oversell-in-waiting. Once orders consume real stock, fulfilment fails, refunds spike, and the Material on Hand Went Negative card may fire. The likely cause is a stock-decrement IDoc that failed to post, leaving the storefront stale-high.
- HW-CHAIR-301 shows SAP higher than commerce (54 vs 12). That is lost sales, not oversell. The ledger holds 54 units but the storefront will stop selling at 12. The usual cause is reserve storage location 0002 not being aggregated into the published quantity, so 42 saleable units are invisible to shoppers.
- The SKU-level breakdown lives on the companion card. This gauge tells the owner the portfolio is 6.4% out of sync. To act, Operations pivots to Inventory Sync Drift, which lists every drifting SKU with its SAP quantity, commerce quantity, direction, and last successful sync. The gauge is the alarm; the list is the work queue.
Sibling cards merchants should reference together
This card is the percentage gauge that summarises inventory health across the top-50 SKUs. To act on a reading, pair it with the SKU-level and value-level cards below.| Card | Why pair it with ERP-vs-Ecom Inventory Variance % |
|---|---|
| Inventory Sync Drift | The SKU-level companion. This gauge gives the portfolio percentage; that card lists every drifting SKU with direction and last sync time. Always pivot here to act. |
| Material on Hand Went Negative (any plant) | The failure state. When variance in the oversell direction is left unresolved, SAP on-hand can be driven negative by goods issues against stock that was never there. |
| Low Stock Alerts | Tells you which SKUs are near depletion. A low-stock SKU with high variance is the highest oversell risk on the board. |
| Inventory Aging | The opposite problem. SKUs sitting in SAP but under-published to the storefront age in the warehouse and tie up working capital. |
| SAP Total Inventory Value | The valuation context. Variance on a high-value SKU is a bigger balance-sheet exposure than the same percentage on a cheap one, which is why this card is value-weighted. |
| Revenue Gap vs Commerce | Under-published stock is one structural reason commerce revenue and SAP-booked revenue diverge: stock you hold but never sold. |
| shopify.total_revenue / bigcommerce.total_revenue / adobe_commerce.total_revenue | The channels whose availability feeds this comparison. Oversell on a high-revenue channel does the most damage. |
Reconciling against SAP
Where to look in S/4HANA Cloud: The closest native equivalents inside the SAP Fiori launchpad are:Stock - Single Material Fiori app (the modern MMBE Stock Overview) for plant and storage-location on-hand Manage Stock Fiori app to view and adjust unrestricted, quality-inspection, and blocked stock by storage location Material Documents Overview Fiori app (the MB51 equivalent) to trace every goods movement on a Material Embedded Analytics: query the MM-IM stock CDS view for the same Material, plant, and storage-location scopeTo reconcile, take the worst SKUs from the companion drift list, open Stock - Single Material for each, sum unrestricted-use stock across the storage locations that feed the storefront, and compare against the published commerce availability. They should match to the unit once any safety-stock buffer and unit-of-measure conversion are accounted for. Common mistakes when comparing against SAP’s own reports:
- Reading total stock instead of unrestricted stock. MMBE shows unrestricted, quality-inspection, blocked, in-transit, and reserved separately. Only unrestricted-use stock is normally sellable. Summing all stock types overstates availability and makes SAP look higher than it really is for selling purposes.
- Forgetting reserved stock. Stock reserved against open deliveries or production orders is physically present but committed. The card nets reservations out of SAP availability; a raw MMBE on-hand read does not, so the raw read looks higher.
- Wrong storage-location scope. If the storefront sells only from the pick-face location but MMBE is read at plant level (all storage locations), the SAP figure includes reserve stock the storefront cannot see. Always reconcile at the storage-location scope that actually feeds the channel.
- Unit-of-measure mismatch. SAP base UoM (each) vs a commerce selling UoM (pack of 6) will show an apparent variance that is really a conversion. Confirm the material-master alternative UoM before treating a gap as real.
| Reason | Direction | Why |
|---|---|---|
| Unrestricted vs total stock | Card lower | The card counts only unrestricted-use stock as sellable; a raw MMBE total includes quality-inspection and blocked stock that cannot be sold. |
| Reserved / committed stock | Card lower | Stock reserved against open deliveries is netted out of availability; an on-hand-only report does not net it. |
| Storage-location scope | Either | The card matches the storage locations that feed the channel; a plant-level report aggregates locations the storefront cannot sell from. |
| Safety-stock buffer | Either | If a safety buffer is applied on the SAP side or the commerce side but not both, the published quantities diverge by the buffer. |
| Snapshot timing | Small | Goods movements posted between the SAP read and the commerce read create a transient gap; the card snapshots both sides in one poll to minimise this. |
| Unit-of-measure conversion | Either | Base UoM vs selling UoM differences look like variance until the conversion factor is applied. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
| shopify.total_revenue | Commerce availability should equal SAP unrestricted on these SKUs | Stale stock-sync feed (commerce high, oversell risk), reserve location not aggregated (commerce low, lost sales), UoM mismatch, SKU mapped to wrong Material. Shopify Plus multi-location inventory can publish per-location quantities that do not match the SAP storage-location split. |
| bigcommerce.total_revenue | As Shopify | B2B portals often apply a separate safety buffer and quote-driven holds, so committed-but-unbilled stock looks like a gap. Confirm the buffer policy before treating it as drift. |
| adobe_commerce.total_revenue | As above | Adobe Commerce MSI (Multi-Source Inventory) sources can map to SAP storage locations in non-obvious ways; a source mis-assignment shows as systematic variance on every SKU from that source. |