SAP tableObjectKAKOModulePP_M2D

KAKO table — Costing Header for Product Cost Estimates

KAKO is the header table for product cost estimates created with transactions such as CK11N, CK13N and CK40N. One row is one costing run for a material at a plant, for a given costing type, valuation variant, costing version and costing date, carrying its overall status. It does not hold costed values or BOM/routing detail, only the control data of the estimate itself.

This page covers what a KAKO record represents in product cost estimation, the fields worth restricting on, how it connects indirectly to BOM and routing master data, and the mistakes consultants make treating it as if it stored costed amounts or a live link to production orders. It also covers what changes and what does not in S/4HANA.

Published 16 Sept 2026· 1,164 words

What it stores

One row in KAKO represents the header of a single product cost estimate run for a material at a plant, identified by a costing number, for a specific costing type, valuation variant, costing version, and costing date. It carries the overall status of that estimate (marked, released, error, without quantity structure, and so on) and the control settings that governed the run, such as lot size and costing date used to price materials and activities. It is the anchor record that CK11N, CK13N, and mass costing runs like CK40N create and update. The actual priced detail, the exploded BOM and routing quantities, and the cost component values are held in separate itemization and cost component tables, not in KAKO itself. A material can accumulate many KAKO rows over time as estimates are re-run for different periods or versions.

Key fields

  • MANDT - client
  • KALNR - costing number, the key linking the header to itemization and cost component tables for the same estimate
  • KALKA - costing type, controls how the estimate is used (standard cost estimate, plan cost estimate, and similar)
  • BWVAR - valuation variant, governs which price sources are read for materials, activities and overhead during the run
  • TVERS - costing version, distinguishes parallel estimates kept for the same object and period
  • KADKY - costing date, the key date used to read prices and to select the quantity structure valid on that date
  • STATU - status of the cost estimate, indicates whether it is released, marked, or incomplete
  • WERKS - plant for which the estimate was created
  • LOSGR - costing lot size used to compute unit costs

How it joins the data model

  • KAKO does not carry a direct foreign key into the routing or BOM tables; the quantity structure is selected at run time through task list allocation, so the join is indirect and material/plant based
  • Material and plant on KAKO match MAPL-MATNR / MAPL-WERKS when the estimate takes its routing from a task list assignment valid on the costing date
  • Through MAPL, the group counter and alternative resolve into PLKO, PLPO and PLAS for the operations actually valued in the estimate
  • Material and plant on KAKO match MAST-MATNR / MAST-WERKS for the BOM alternative resolved into STKO and STPO
  • There is no live link from KAKO into a production order (AFKO/AFPO); order-level costing lives in AFVV and AFVC, and any relationship to KAKO is only by shared material and plant, never a foreign key

How to read it safely

Always restrict on MANDT and on plant (WERKS) before anything else; KAKO accumulates across every material ever costed at that plant and grows continuously with each costing run. When chasing a specific estimate, filter by costing type (KALKA) and costing date (KADKY) rather than pulling the full history for a material, since the same material can have dozens of header rows across periods and versions. Status (STATU) has to be read before trusting any row as current; a row can exist with an error or incomplete status and still show up in a naive select. Avoid joining directly on assumed BOM/routing fields since KAKO does not store them; resolve the quantity structure separately through MAPL, MAST, STKO and PLKO for the same material, plant and date.

How to prove it in the data

Symptom: a standard cost estimate for a material looks like it used an outdated routing. Select KAKO for MANDT, WERKS and the material's costing number, order by KADKY descending, and read STATU and TVERS on the most recent row to confirm which run is actually current. Then separately check MAPL for the same material and plant, comparing the validity dates of the task list assignment against KADKY, to confirm which routing alternative was in force on that costing date rather than assuming the current routing was used.

ECC vs S/4HANA

KAKO is retained in S/4HANA as part of the classic product cost estimate data model; it was not absorbed into the universal journal the way FI/CO actuals were. Cost estimates created through CK11N, CK13N or CK40N still populate this header table alongside the related itemization and cost component tables. Reporting apps may expose the data through compatibility or analytical views, but the underlying table structure and its role as the costing run header are unchanged from ECC.

Common pitfalls

  • Treating KAKO as if it holds priced values: it holds only header control data and status, never the costed amounts, which live in separate itemization and cost component tables
  • Assuming one row per material: KAKO keeps one row per costing run, so a material can have many historical header rows across dates and versions, and picking the wrong one gives a stale picture
  • Reading a row without checking STATU: a header can exist for a run that errored out or never got a full quantity structure, and treating it as a valid current cost estimate leads to wrong conclusions
  • Confusing product cost estimates with production order costing: order-specific planned and actual costs live in AFVV and AFVC against AFKO/AFPO, not in KAKO, and the two are only related by shared material and plant, never by key
  • Assuming the BOM/routing link is fixed: the quantity structure is selected dynamically through MAPL and MAST validity dates as of the costing date, so re-running a costing today can pull a different alternative than the one used originally, which is often the real explanation for a 'different result' complaint
  • Assuming a mass costing run (CK40N) either fully succeeded or fully failed: partial failures leave a mix of valid and errored KAKO rows for the same run, and skipping the status check produces false 'no cost estimate exists' conclusions

Whose problem this is

A product costing (CO-PC) consultant owns questions about KAKO status, costing variant configuration and why a run failed or produced an unexpected result. A PP consultant gets pulled in when the dispute is about which BOM alternative or routing/task list was actually selected for the quantity structure on a given costing date, since that logic sits in MAPL and MAST/STKO rather than in KAKO itself.

Related SAP objects

Reviewed pages this object connects to in the ERPClimb knowledge graph.

Source: ERPClimb — https://erpclimb.com/sap-tables/kakoERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.