OKB9 — OKB9 default account assignment for CO objects
OKB9 maintains the default cost center, internal order, WBS element or profit center that the system assigns automatically when a posting hits a profit and loss account without CO account assignment entered manually. It is a customizing transaction, not a posting transaction, and works only for accounts flagged as cost elements.
This page covers OKB9, the customizing transaction for default account assignment of CO objects to G/L accounts, including how the company-code-specific versus global entries interact, what breaks when cost center validity or cost element flags are wrong, and how to trace a missing-account-assignment error back to an OKB9 gap.
Reviewed by an ERPClimb SAP consultant on 15 Sept 2026· 1,216 words
Purpose
OKB9 stores the default CO object - cost center, internal order, WBS element or profit center - that the system inserts automatically when a document is posted to a profit and loss account without the user or interface supplying account assignment. It only applies to accounts that exist as primary cost elements in Controlling; balance sheet accounts never appear here because they carry no CO relevance. The structural fact that causes most confusion is the specificity hierarchy: an entry keyed to a specific company code and G/L account takes precedence over a global entry made with the company code field left blank for that same account. Consultants who add a company-code-specific line assuming it 'adds to' the global one are often surprised when the global entry keeps firing for other company codes, or the specific entry silently overrides a global one they forgot existed.
When it is used
OKB9 gets configured when a new profit and loss account is created and needs a fallback cost object, when a new company code is onboarded and inherits accounts that already have global defaults, or reactively when a posting - manual FI entry, MM invoice, bank statement, or asset transaction - fails with a message about missing CO account assignment. It sits in the customizing layer, reached via the IMG path for Controlling account assignment or called directly by transaction code, not through a Fiori app, because it is not a transactional object with its own document number. A consultant reaches for OKB9 rather than the G/L account master (FS00) when the question is 'where does this cost land by default', and reaches for the cost center master (KS03) afterward to confirm the target object is actually open for posting.
How to use it in practice
- Call the transaction and choose new entries or select an existing G/L account line to review it
- Enter the G/L account (must already exist as a primary cost element); leave company code blank for a global default or enter a specific company code to override the global entry for that code only
- Enter exactly one default CO object per line - cost center, order, WBS element or profit center - the system does not allow contradictory objects on the same line
- Save; the entry is validated against the cost element master, not against posting period or fiscal year
- Confirm by posting a test document to that G/L account without manual account assignment and checking that the correct CO object appears on the line item
Key data objects
- Cost element master (basic data) - holds the cost element category and controlling area link that OKB9 checks before accepting a G/L account entry
- Cost element master (controlling area dependent data) - carries the cost element type that determines whether automatic account assignment is even permitted for that account
- Cost center master - the validity period and status of the cost center named in OKB9 are checked at posting time, not at configuration save time
- OKB9 writes only to its own customizing table; no FI or CO document table is touched until an actual posting later reads that configuration
How to prove it in the data
There is no reliable ad hoc table browse for this configuration because the underlying customizing table name is not exposed consistently across releases; the safe recipe is to open OKB9 in display mode, filter by the G/L account and company code from the failing document, and note whether a company-code-specific line exists in addition to a blank-company-code line. Cross-check the cost center named there in the cost center master to confirm its validity dates cover the posting date and its status is not blocked. Then look at the failing document's line item to confirm no manual account assignment was entered that would have bypassed OKB9 entirely.
ECC vs S/4HANA
OKB9 is unchanged on S/4HANA; it remains a customizing transaction reached the same way, and no Fiori app replaces it since it has no transactional data of its own. What has shifted around it is the weight of profit center derivation, since the universal journal and document splitting make the profit center outcome more visible and more consequential when OKB9 and cost center master profit center assignments disagree. The underlying logic of company-code-specific versus global entries is identical to ECC.
Common pitfalls and how to diagnose them
- Specificity conflict - a global (blank company code) entry and a company-code-specific entry both exist for the same account; the specific one wins for that code and the global one silently covers every other code. Check both levels before assuming a change took effect.
- Cost center validity expired - the default cost center's end date has passed, most often right after year-end mass extensions were skipped. The OKB9 entry looks correct but posting fails with a missing account assignment error. Check the cost center master validity period first, before touching OKB9 itself.
- Account not a valid cost element - the G/L account either was never extended as a primary cost element for the current fiscal year, or its cost element category does not permit automatic assignment. OKB9 will refuse or silently ignore the entry. Check the cost element master before re-entering the OKB9 line.
- Manual entry overrides the default - OKB9 is a fallback, not an enforced rule. If a user or an interface (MM invoice, bank posting) supplies its own cost center or order, OKB9 never fires and the transaction posts to whatever was entered. Do not assume OKB9 is broken; check the actual document line for existing account assignment.
- Profit center mismatch despite a correct OKB9 entry - profit center derivation from the cost center master or from document splitting rules can override or duplicate what OKB9 carries, producing a profit center different from the one configured here. Check the cost center's assigned profit center field, not just the OKB9 line.
- Overcorrection reflex - adding a blank-company-code global entry to fix one company code's error is the fastest way to misroute costs for every other company code sharing that account. Always check whether a company-code-specific line is the safer fix before broadening scope.
Whose problem this is
Functional Controlling or FI consultant territory; this is customizing, not development, and Basis has no role beyond transport release. A good handover includes the G/L account, company code, the exact error message text from the failing posting, the posting transaction that triggered it, and whether a manual account assignment was attempted on the document.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tcodes/okb9ERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.