Setup Step 19 — Controlling Area & Cost Centers
🎯 Why this setting exists
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.
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
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)
- Account-assigned procurement: services (Scenario 4), consumables (Scenario 5), assets (Scenario 6), pipeline (Scenario 11).
- Cross-module procurement: MM↔PM (Scenario 25), MM↔PS (Scenario 26).
- Goods issue to a cost center — Scenario 3, movement type 201.
🧩 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).
- Run OKKP → select/maintain controlling area → New Entries (or Details on PSPK)
- Fill Basic Data:
| Section · Field | Fill | What the field asks — in plain words | Why we choose this — and the impact if wrong |
|---|---|---|---|
| Controlling Area (key) | PSPK | The 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. |
| Name | PakSteel Controlling Area | A 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 code | How 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 Type | 10 (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. |
| Currency | PKR (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 Accts | INT | Which 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 Variant | K4 | Which 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) | PSPKHIER | Every 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 · Field | Fill | What the field asks — in plain words | Why 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 Centers | Component active | Turns 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 Management | Component active | Turns 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 + tick | A 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.
- OX19 (or OKKP → select PSPK → "Assignment of company codes") → New Entries → Company Code
PSPK
- 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, msg116→ set toW→ Save →/nrestart OX19 → re-assign → green ✓ through the warning. - 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).
- 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_STATUSdoes NOT exist in 2023 — use the cockpit tcode.) - 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. - Refresh (circular arrow) every 30–60s until the blue diamonds turn to green checkmarks (0 errors).
- Formally close it: FINS_CD2CA_COMPLETE ("Complete Project") for
PSPKCO01→ status = Completed. (Status overview: FINS_CD2CA_STAT_OVW.) → this clears CUST412.
- 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· Version0· Ledger0L→ 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 VariantSAP_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.)
🔧 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 · Field | Fill | What the field asks — in plain words | Why we choose this — and the impact if wrong |
|---|---|---|---|
| Name | Production CC Karachi | A 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. |
| Description | Production cost center – Karachi factory | A 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 ✓ | PSPKHIER | Which 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:
| Code | Name | Category | Used in |
|---|---|---|---|
PKKHI-PROD | Karachi Production | 1 Production | 5, 11, 25 |
PKKHI-MAINT | Karachi Maintenance | 2 Service | 5, 25 |
PKADM-IT | IT Department | 3 Admin | 4 |
PKADM-FIN | Finance Department | 3 Admin | 4 |
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.
| Cat | Type | For |
|---|---|---|
1 | Primary cost / cost-reducing revenue | Expense G/Ls (consumables 410000, services 470000) — most common ⭐ |
11 | Revenue | Revenue G/Ls |
22 | External settlement | Order/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
| AAC | Cost object | Needs | Scenario |
|---|---|---|---|
| blank | Stock (inventory G/L) | material with stock view | 1,2,7,8,9 |
K | Cost Center | this step (19) | 4,5,11 |
F | Internal Order | Order Mgmt active (19B) | — |
A | Asset | AA configured (FI) | 6 |
P | Project (WBS) | PS configured | 26 |
C | Sales Order | SD | 12 |
🚨 Issues & fixes
FINS_ACDOC_CUST116blocks OX19. → Change Message Control: app areaFINS_ACDOC_CUST, msg116→ W (warning). Restart OX19 and re-assign CC ↔ CO area (OX19) through the warning.- This creates a mass-data project (e.g.
PSPKCO01). Until it completes, all PSPK/0L postings are blocked (CUST412). - Complete it via FINS_CCD2COA_COCKPIT ("Update Postings: Assign CCode to COArea") → Show Cockpit → run all activities → refresh until green.
- Formally close with FINS_CD2CA_COMPLETE → clears
CUST412. CUST205("Define Ledger for CO Version") → CO Area PSPK · Version0↔ Ledger0L→ Save → FINS_UPD_CMP_VERSN.CUST326(SPRO → Integration of Controlling with Financial Accounting → Check/Define Default Values for Postings in Controlling) → CoCodePSPK+ Doc Type Mapping VariantSAP_CO→ Save.CUST201(umbrella) clears automatically once 205/326/412 are fixed.
GLT2076, GLT2201, GLT2153 → see the Troubleshooting Center.
⛓️ IRON RULE: assign the controlling area BEFORE any postings (greenfield) to avoid this entire chain.
| Symptom | Cause | Fix |
|---|---|---|
KI105 "No company code assigned to controlling area" when creating a cost center | OX19 assignment not done | Run OX19 → assign PSPK ↔ PSPK |
FINS_ACDOC_CUST116 blocks the OX19 assignment | Postings already exist in PSPK/0L (CO assigned late) | Set msg 116 → W, then run the full recovery chain above |
CUST412 — all PSPK/0L postings blocked | Mass-data project created but not completed | FINS_CCD2COA_COCKPIT → run all → FINS_CD2CA_COMPLETE |
| PO can't post to a cost center | Expense G/L has no Cost Element Category | FS00 → set Cost Element Category 1 (19E) |
✅ Verification
| Check | Expected |
|---|---|
SE16N → TKA01 | row for controlling area PSPK |
SE16N → TKA02 | PSPK ↔ PSPK company-code assignment |
SE16N → CSKS | your cost center rows (KOKRS = PSPK) |
| KS03 → PKKHI-PROD | displays the cost center |
| FINS_CUST_CONS_CHK_P (PSPK / 0L) | all green (if you ran the recovery chain) |