Setup Step 19 — Controlling Area & Cost Centers

NEEDED FOR ACCOUNT-ASSIGNED Layer 5 · owned by CO ⏱️ ~45 min OKKP OX19 KS01
← Previous
Step 18: BP Master Data Configuration
Next →
Back to Setup Guide Hub

🎯 Why this setting exists

Stock POs (Scenarios 1-3) don't need CO — the cost lands in inventory. But the moment a PO posts to a cost object — a service to a cost center (K), an asset (A), an internal order (F), a project WBS (P) — that cost object only exists if a Controlling Area is active, your company code is assigned to it, and Cost Center Accounting is switched on. If any of that is missing, the account-assigned PO and the goods issue to a cost center simply fail.

CO configures it, but an MM consultant must understand it: you enter the cost object on every non-stock PO line, so you depend on this setting daily.
🚨 THE IRON RULE — do this BEFORE any postings
The controlling area must be set up and assigned to the company code before the first goods receipt / invoice / payment. If you configure it AFTER posting (easy to do by accident), S/4HANA blocks the assignment with FINS_ACDOC_CUST116 and forces a journal-entry mass-data repair project. We document that full recovery chain below — but in a real greenfield, sequence CO right after the company code (Step 1) to avoid it entirely.

💡 Easy example

When PakSteel buys 120 consulting hours, there's no stock to put it in — you can't add "120 hours" to a warehouse shelf. But the money still left the company, so the cost has to land somewhere. It's charged to the IT-department cost center (PKADM-IT), which Controlling tracks so the business can later answer "how much did IT spend this quarter?"

Think of a cost center as a bucket for spending that isn't inventory. Services, consumables that go straight to use, and overheads all fall into a bucket owned by some department. No controlling area = no buckets = nowhere for the consulting cost to go = the PO is blocked.

🔗 How this connects to everything else

The controlling area is the bridge between MM's account-assigned procurement and the world of CO/FI cost accounting. Here's the web of settings and modules that hang off it.

⬆️ Depends on (must exist first)

  • Step 1 — Company Code: the controlling area is assigned to the company code, and (in the simplest model) shares its key, currency, chart of accounts and fiscal year variant. The CC must exist first — and ideally CO is assigned before any posting in it.

⬇️ Enables (what this unlocks)

🧩 Who owns it & why MM cares

CO configures the controlling area and cost centers. But MM enters the cost object (cost center / order / WBS) on every non-stock PO — if the controlling area or cost center is missing, those POs and the GI to a cost center fail. You must understand the model even when you don't own it.

🔮 Links to other modules (now & later)

  • CO Cost centers and internal orders live here; the standard hierarchy is the root of all cost centers.
  • FI Every CO posting now writes the Universal Journal (ACDOCA) — CO and FI share one line-item table in S/4HANA, which is exactly why late CO assignment forces the journal repair.

🔧 Configuration — fields & steps

OKKP · OX19 · KS01 · OKB9 · KS03 · ~45 min · do this BEFORE postings ideally · enables cost center / order / asset / WBS on PO lines

📋 Step 19 sub-steps (real values from the PakSteel build)

19A. Create the Controlling Area — OKKP (Basic Data)

What: The "container" for cost objects — like the Company Code is for FI. We use the simplest model: controlling area = company code (1:1).

  1. Run OKKP → select/maintain controlling area → New Entries (or Details on PSPK)
  2. Fill Basic Data:
Section · FieldFillWhat the field asks — in plain wordsWhy we choose this — and the impact if wrong
Controlling Area (key)PSPKThe controlling area is the container for your cost/management books — think of it as the company code's twin on the Controlling side. This asks for its short key.⚠️ Must equal the company code key. You chose the simplest model, "controlling area = company code", so the key has to be identical — PSPK. Impact: Use a different key and SAP will not treat them as the same-as-CC pair, so the 1:1 assignment in 19C breaks.
NamePakSteel Controlling AreaA free-text label so people recognise the area in lists and reports.Display only. Impact: A blank or cryptic name never stops a posting, but a clear name saves confusion once several areas exist.
CoCd → CO Area (assignment model)Controlling area same as company codeHow many company codes will share this controlling area — just one (1:1), or several grouped together?"Same as company code" gives the simplest 1:1 model, right for a single PSPK. Choose "Cross-company-code cost accounting" only to group PSPK+PSAE under one area — and that then needs currency type 30 because PKR and AED differ. Impact: Pick the cross-CC option here by mistake and SAP expects a group currency you have not set up.
Currency Type10 (Company Code Currency)Which currency should the Controlling books be kept in — the company-code currency, a group currency, or another?Because you set "same as company code", CO must keep the same books as the company code, so type 10 (company-code currency) is the only consistent choice. Impact: A mismatched type would stop CO and FI reconciling line-for-line in the Universal Journal.
CurrencyPKR (auto)The actual currency code the area reports in.SAP fills PKR from company code PSPK, whose books are in Pakistani rupees — a controlling area must report in its company code's currency. Impact: If it showed anything but PKR, every cost-centre report and settlement would be in the wrong money.
Curr/Val Prof. (currency & valuation profile)— (blank)This profile switches on parallel valuations — e.g. a separate "transfer price" view for intercompany trade. It asks whether you need that.PakSteel keeps one ordinary valuation, so leave it blank. Impact: Fill it and SAP expects extra parallel-valuation setup (group / profit-centre views) you have not built, which blocks postings.
Chart of AcctsINTWhich chart of accounts (the master list of G/L accounts) does this area post to?It must be the same operating chart the company code uses, INT, so cost elements line up with real G/L accounts. Impact: Point it at a different chart and the G/Ls your account-assigned POs hit would not exist for CO.
Fiscal Year VariantK4Which calendar of posting periods does the area follow — how the year is split into months plus special periods?It must match the company code's variant K4 (calendar year + 4 special periods) so CO and FI close the same periods together. Impact: A different variant misaligns period-end and breaks reconciliation.
CCtr Std. Hierarchy (standard hierarchy)PSPKHIEREvery cost centre must hang under one master tree; this names that top node — like the trunk all department branches attach to.Mandatory. Impact: Without a standard hierarchy there is no tree to file cost centres under, so KS01 in 19D fails. Say "Yes" when OKKP offers to create PSPKHIER, and later centres (PKKHI-PROD, PKADM-IT) all have a home.
Reconciliation Ledger— (greyed, no entry)In older SAP this extra ledger re-summarised CO postings back into FI. This asks whether to run it.SAP greys it out because in S/4HANA the Universal Journal (ACDOCA) already holds CO and FI in one table, so a separate reconciliation ledger is redundant — there is nothing to set and nothing lost by it being empty. Impact: none in S/4HANA — CO and FI stay reconciled without it.

Ctrl+S → if prompted "standard hierarchy PSPKHIER does not exist, create?" → Yes.

19B. Activate Components — OKKP → "Activate components/control indicators"

What: Switches ON the CO functions per fiscal year. Select the PSPK row first (the left-tree folders stay greyed until a row is selected), then double-click "Activate components/control indicators" → New Entries.

Section · FieldFillWhat the field asks — in plain wordsWhy we choose this — and the impact if wrong
Fiscal Year (from)2020 (leave "to" blank)From which fiscal year should these CO switches be ON? Leaving "to" blank means "from then on, with no end".It must cover every year you will post in. Today is 2026, so starting at 2020 safely includes it. Impact: Set the from-year later than 2026 and the components are inactive for your postings — account-assigned POs and the 201/261 goods issues fail.
Cost CentersComponent activeTurns on Cost Center Accounting — the "buckets" that non-stock spending falls into. Asks: may this area use cost centres at all?⭐ This is the switch that lets account assignment K (cost centre) work on a PO. Active, and a services PO to PKADM-IT posts. Impact: Leave it off and every cost-centre PO and the movement 201 goods issue are blocked.
Order ManagementComponent activeTurns on internal / production orders as cost objects. Asks: may this area collect costs on orders?⭐ Enables account assignment F (internal order) on POs and lets a production order carry its costs — the same switch Step 17's 261 needed. Impact: Off, and orders in PSPK are refused.
Commitment Management (+ tick "W. Commit. Mgt")Component active + tickA commitment is money already promised by a PR/PO but not yet invoiced. Asks: should the area record that earmarked spend against the cost object?⭐ Active — with the "With Commitment Management" indicator ticked — means a ₨ PO to a cost centre shows as committed spend at once, so managers see money already earmarked before the invoice lands. Impact: Off, and commitment values never post and budget-vs-committed reporting stays blank.
Profitability Analysis (CO-PA)— (not active)Asks whether SAP should analyse profit by market segment (product, region, customer).CO-PA is a separate implementation project and adds nothing to account-assigned procurement, so it stays off. Impact: Leaving it off has no effect on any MM cost-centre or order posting.
Activity-Based Costing (ABC)— (not active)Asks whether overheads should be spread across business processes / activities rather than straight onto cost centres.ABC is its own project and is not needed to procure to a cost centre, so it stays off. Impact: No effect on the MM flows in this academy.
All Currencies✓ tick (optional)Should CO store each posting in all currency types (transaction, company-code and controlling-area currency) at once?Ticking it keeps every currency view of a cost posting, so later currency reporting never has a gap — cheap insurance. Impact: It is optional and safe; the only "cost" is a little extra stored data.

Ctrl+S.

19C. Assign Company Code to Controlling Area — OX19 (or OKKP) + the FINS_ACDOC_CUST116 trap

What: Links PSPK (company code) ↔ PSPK (controlling area). Without it: error KI105 "No company code assigned to controlling area" when you try to create a cost center.

  1. OX19 (or OKKP → select PSPK → "Assignment of company codes") → New Entries → Company Code PSPK
⚠️ If postings already exist (you configured CO late) — the FULL recovery chain (verified live on S/4HANA 2023)
  1. CUST116 "Check if postings already exist in CC / ledger 0L" blocks the assignment. Fix: SPRO → FI → FI Global Settings → Tools → Change Message Control → app area FINS_ACDOC_CUST, msg 116 → set to W → Save → /n restart OX19 → re-assign → green ✓ through the warning.
  2. S/4 pops "Create a New Project for Updating Existing Journal Entries" → enter Project ID (e.g. PSPKCO01) + description → Create Project. ⚠️ This only CREATES the project — it is NOT yet run, and until it COMPLETES, ALL postings in PSPK/0L are blocked (CUST412).
✅ COMPLETE the mass-data project (the step that's hard to find — here are the exact transactions)
  1. The "Update Existing Postings: Assign Company Code to Controlling Area" IMG activity is runnable directly as transaction FINS_CCD2COA_COCKPIT ("Update Postings: Assign CCode to COArea"). (Note: FINS_MIG_STATUS does NOT exist in 2023 — use the cockpit tcode.)
  2. FINS_CCD2COA_COCKPIT → select project PSPKCO01 → Show Cockpit → select the first activity row → Execute ("run all activities up to and including…") → confirm → background jobs scheduled.
  3. Refresh (circular arrow) every 30–60s until the blue diamonds turn to green checkmarks (0 errors).
  4. Formally close it: FINS_CD2CA_COMPLETE ("Complete Project") for PSPKCO01 → status = Completed. (Status overview: FINS_CD2CA_STAT_OVW.) → this clears CUST412.
🧩 Then clear the remaining consistency errors (run FINS_CUST_CONS_CHK_P for PSPK/0L to see which remain)
  • CUST205 "no entry in FINSC_CMP_VERSNC, version 000" → SPRO → "Define Ledger for CO Version" (a.k.a. "Ledger From Which CO Reads Actual Data") → New Entries → CO Area PSPK · Version 0 · Ledger 0L → Save. Then FINS_UPD_CMP_VERSN.
  • CUST326 "Default values for postings in Controlling not defined for PSPK" → SPRO → Financial Accounting → Financial Accounting Global Settings → Ledgers → Integration of Controlling with Financial Accounting → Check and Define Default Values for Postings in Controlling → New Entries → CoCode PSPK · Valid From e.g. 01.01.2026 · Doc. Type Mapping Variant SAP_CO (standard) · Default Ledger Group blank/0L → Save.
  • CUST201 "Correct the Customizing settings for ledgers…" = umbrella message — clears automatically once CUST205/326/412 are fixed.

Verify: FINS_CUST_CONS_CHK_P (PSPK / 0L) all green · SE16N → TKA02 shows PSPK ↔ PSPK. Then MIGO/account-assigned POs post. (The greyed "CoCd → CO Area" on OBY6 auto-displays PSPK — don't set it there.)

🎯 The real lesson
All of this (CUST116 → project → CUST205/326/201) exists ONLY because the controlling area was assigned AFTER postings. In a greenfield, configure + assign the controlling area in the Realize phase, before the first posting — and none of this recovery chain ever appears.

🔧 Doc-splitting errors can surface alongside this chain (GLT2076, GLT2201, GLT2153) — see the Troubleshooting Center for the document-splitting fixes.

19D. Create Cost Centers — KS01

Initial screen: Controlling Area PSPK · Cost Center PKKHI-PROD · Valid From today · To 31.12.9999 · Reference fields = leave BLANK (only for copying an existing CC) → press Enter (no Save button here — click Master Data / Enter to reach the detail screen).

Basic Data screen (✓ = mandatory):

Section · FieldFillWhat the field asks — in plain wordsWhy we choose this — and the impact if wrong
NameProduction CC KarachiA short name for this spending bucket.Names the cost centre so it is recognisable in reports and PO drop-downs. Impact: Descriptive only — a poor name never blocks a posting, but a clear one stops a buyer charging the wrong bucket.
DescriptionProduction cost center – Karachi factoryA longer explanation of what the bucket is for.Extra clarity for anyone reading the master record; Impact: purely informational, no posting impact.
Person Responsible ✓Plant Manager (any text)Who owns this bucket's spending — the "name on the door" you would ask "why did this centre spend that?"Impact: Mandatory, so SAP will not save without it, but it is a free-text accountability / reporting label, not a control. Any sensible text (e.g. Plant Manager) satisfies it.
Cost Center Category ✓1 (Production)What KIND of department is this — production, service, admin or sales? (press F4: 1=Production, 2=Service, 3=Admin, 4=Sales.) Like tagging a room "factory floor" vs "back office".The category drives the centre's default control indicators (which postings and plans it allows) and how it groups in reports. PKKHI-PROD is a factory bucket, so 1 (Production). Impact: Tag it 3 (Admin) by mistake and it is mis-grouped in cost reporting and may permit the wrong postings.
Hierarchy area ✓PSPKHIERWhich branch of the standard cost-centre tree does this bucket hang under?Mandatory — it must point at the standard hierarchy PSPKHIER created in 19A so the centre has a home in the tree and rolls up in reports. Impact: A missing or wrong node and KS01 will not save the centre.
Currency ✓PKR (auto)Which currency does this cost centre report in?SAP fills PKR from controlling area PSPK — a cost centre reports in its controlling-area currency. It must stay PKR so its figures line up with the area and company code; Impact: a different currency would misstate every report on the centre.
Profit Center— (blank)A profit centre measures profit for a slice of the business; this links the cost centre to one. Asks whether that link is needed.Leave blank because Profit Center Accounting (PCA) is not active in this build. Fill it only if PCA is switched on and SAP prompts for it; Impact: forcing a value without PCA active just throws an error.

Ctrl+S → "Cost Center PKKHI-PROD created". Verify with KS03.

Minimum cost-center set for the scenarios:

CodeNameCategoryUsed in
PKKHI-PRODKarachi Production1 Production5, 11, 25
PKKHI-MAINTKarachi Maintenance2 Service5, 25
PKADM-ITIT Department3 Admin4
PKADM-FINFinance Department3 Admin4
19E. S/4HANA: G/L = Cost Element (no KA01 needed) — FS00

In ECC you ran KA01 for separate cost-element masters. In S/4HANA's Universal Journal, G/L accounts ARE cost elements — set the Cost Element Category on the expense G/L in FS00 → "Edit cost element" / Control Data.

CatTypeFor
1Primary cost / cost-reducing revenueExpense G/Ls (consumables 410000, services 470000) — most common ⭐
11RevenueRevenue G/Ls
22External settlementOrder/project settlement

Expense G/Ls used by account-assigned POs need Cost Element Category 1, else the PO can't post to a cost center.

19F. Default Cost Center per G/L (optional) — OKB9

Safety net: if a user leaves the cost center blank on a PO line, SAP auto-fills the default set here. OKB9 → New Entries → CC PSPK + Cost Element 470000 + Cost Center PKADM-IT → Save.

⚠️ Use sparingly — silent defaulting hides user errors. Often better to make the cost center mandatory via field status.

💡 Account Assignment Categories — what each cost object is

AACCost objectNeedsScenario
blankStock (inventory G/L)material with stock view1,2,7,8,9
KCost Centerthis step (19)4,5,11
FInternal OrderOrder Mgmt active (19B)—
AAssetAA configured (FI)6
PProject (WBS)PS configured26
CSales OrderSD12

🚨 Issues & fixes

🔥 THE BIG ONE — assigning the controlling area AFTER postings already exist
This is the hardest real-world recovery chain in the whole setup guide, and it only happens because CO was assigned late. The exact, verified sequence (preserve every transaction code — do not improvise):
  1. FINS_ACDOC_CUST116 blocks OX19. → Change Message Control: app area FINS_ACDOC_CUST, msg 116 → W (warning). Restart OX19 and re-assign CC ↔ CO area (OX19) through the warning.
  2. This creates a mass-data project (e.g. PSPKCO01). Until it completes, all PSPK/0L postings are blocked (CUST412).
  3. Complete it via FINS_CCD2COA_COCKPIT ("Update Postings: Assign CCode to COArea") → Show Cockpit → run all activities → refresh until green.
  4. Formally close with FINS_CD2CA_COMPLETE → clears CUST412.
  5. CUST205 ("Define Ledger for CO Version") → CO Area PSPK · Version 0 ↔ Ledger 0L → Save → FINS_UPD_CMP_VERSN.
  6. CUST326 (SPRO → Integration of Controlling with Financial Accounting → Check/Define Default Values for Postings in Controlling) → CoCode PSPK + Doc Type Mapping Variant SAP_CO → Save.
  7. CUST201 (umbrella) clears automatically once 205/326/412 are fixed.
Document-splitting errors may also surface during this chain: GLT2076, GLT2201, GLT2153 → see the Troubleshooting Center.

⛓️ IRON RULE: assign the controlling area BEFORE any postings (greenfield) to avoid this entire chain.
SymptomCauseFix
KI105 "No company code assigned to controlling area" when creating a cost centerOX19 assignment not doneRun OX19 → assign PSPK ↔ PSPK
FINS_ACDOC_CUST116 blocks the OX19 assignmentPostings already exist in PSPK/0L (CO assigned late)Set msg 116 → W, then run the full recovery chain above
CUST412 — all PSPK/0L postings blockedMass-data project created but not completedFINS_CCD2COA_COCKPIT → run all → FINS_CD2CA_COMPLETE
PO can't post to a cost centerExpense G/L has no Cost Element CategoryFS00 → set Cost Element Category 1 (19E)

✅ Verification

CheckExpected
SE16N → TKA01row for controlling area PSPK
SE16N → TKA02PSPK ↔ PSPK company-code assignment
SE16N → CSKSyour cost center rows (KOKRS = PSPK)
KS03 → PKKHI-PRODdisplays the cost center
FINS_CUST_CONS_CHK_P (PSPK / 0L)all green (if you ran the recovery chain)
← Previous
Step 18: BP Master Data Configuration
Next →
Back to Setup Guide Hub