Day 4 – Controlling (CO): Cost Centers, Profit Centers, Internal Orders & CO‑PA
Functional Consultant Track – Part 19
Welcome to Day 4 of our S/4HANA functional journey. You have now built a bullet‑proof general ledger, a completely automated procure‑to‑pay and order‑to‑cash cycle, and a fully integrated asset accounting sub‑ledger. Today we cross the bridge from financial accounting (FI) into management accounting (CO). This is where the business truly understands its costs, its profits, and its performance. In S/4HANA, the line between FI and CO has been intentionally blurred – the universal journal houses both, which means you get real‑time reconciliation and a single source of truth. But to make that work, you need to configure the CO organs correctly.
Our client GlobalTech runs three company codes (GT01 US, GT02 Germany, GT03 India) but wants a unified management view. The CFO demands profit center‑based P&Ls, cost center budget vs actual reports, and a powerful profitability analysis by customer, product, and region. The marketing department needs internal orders to track campaign spend. The plant controllers need assessment cycles to allocate facility costs to production lines. Your job: build all of this from scratch in your sandbox, following every SPRO path, and explaining the “why” behind each step.
We’ll cover the controlling area setup, cost element architecture, cost center hierarchy and planning, internal orders with settlement, profit center derivation and document splitting impact, the two flavors of CO‑PA with a strong recommendation, and period‑end allocations. By the end of this 20,000‑word deep dive, you will have configured a complete management accounting solution that would impress any CFO.
1. The Controlling Area – Your CO Universe
The controlling area is the highest organizational unit in CO. It must be assigned to company codes. The key architectural decision: one controlling area per company code, or one controlling area for multiple company codes? For GlobalTech, we choose one controlling area (GLOB) covering all three company codes. Why? Because management wants cross‑company cost analysis, transfer pricing visibility, and the ability to run a global profit center hierarchy. This is the recommended approach when company codes share the same operative chart of accounts and fiscal year variant.
1.1 Define Controlling Area
SPRO path: Controlling → General Controlling → Organization → Maintain Controlling Area (transaction OKKP).
Create controlling area GLOB with the following settings:
- Name: “GlobalTech Controlling”
- Assignment: Cross‑company‑code cost accounting (radio button “Controlling area same as company code” – uncheck, we use multiple CC).
- Chart of accounts: CAUS (operational COA). All company codes share CAUS (GT02 and GT03 have country‑specific COAs but operational is also CAUS in our design; if they differed, you’d need separate controlling areas).
- Fiscal year variant: K4 (calendar year, 12 periods).
- Currency type: 10 (company code currency) or 30 (controlling area currency). GlobalTech uses controlling area currency USD, since management consolidates in USD. Set currency type 20 (controlling area currency) and assign USD.
1.2 Assign Company Codes to Controlling Area
SPRO: Controlling → General Controlling → Organization → Assign Company Codes to Controlling Area (transaction OKKP under “Activate Components/Control Indicators”).
Assign GT01, GT02, GT03 to controlling area GLOB. The system automatically inherits the fiscal year variant and chart of accounts. If a company code has a different COA, you’ll get an error – that’s why we ensured CAUS is the operational COA for all three.
1.3 Activate CO Components
Still in OKKP, under “Activate Components/Control Indicators”, check:
- Cost centers: active
- Internal orders: active
- Profit centers: active
- Profitability analysis: active (we’ll configure CO‑PA later)
The controlling area is now live. Next, we align the number ranges for CO documents. By default, CO document numbers are generated from the FI document numbers in S/4HANA (as they post simultaneously to the universal journal). But for internal CO‑only transactions (like assessments), you need CO number ranges. Maintain them in transaction KANK (CO Number Ranges). Assign to controlling area GLOB.
2. Cost Elements – The Language of CO
In classic ECC, we had primary cost elements (linked to P&L G/L accounts) and secondary cost elements (for internal allocations). In S/4HANA, the universal journal eliminated the need for a separate cost element table for primary elements. Primary cost elements are now simply G/L accounts with a cost element category assigned. Secondary cost elements remain as specialized objects for assessment, distribution, and settlement. This simplification is a huge win for data consistency.
2.1 Primary Cost Elements – Just G/L Accounts
When you create a P&L G/L account (e.g., 40000020 Electricity Expense) in FS00, you must assign a cost element category. In the G/L account master, under the “Cost element” tab (or via OKB2), you specify the category. GlobalTech uses:
- Category 1 (Primary costs/cost‑reducing revenues) for most expense accounts.
- Category 11 (Revenue) for sales accounts.
- Category 12 (Sales deductions) for returns.
Example: G/L account 40000020 (Electricity Expense) – in FS00, we set the cost element category to 1. Now, whenever an expense is posted to this account, the cost object (cost center, order, etc.) is required on the posting, and CO automatically captures the cost.
2.2 Secondary Cost Elements (Transaction KA01)
Secondary cost elements are created in transaction KA01 (Create Secondary Cost Element). They don’t exist as G/L accounts in FI, but they appear in the universal journal with a special indicator. They are used for internal activities like assessments and distributions.
GlobalTech creates:
- 82000001 – Assessment administration to production
- 82000002 – Distribution of canteen costs
- 82000003 – Settlement of internal orders
For each, specify cost element category 42 (Assessment), 43 (Distribution), or 21 (Internal settlement). The category defines the CO transaction type. In S/4HANA, secondary cost elements are also reflected in the universal journal table ACDOCA, so reporting tools can see them alongside primary costs.
3. Cost Center Accounting – The Hierarchical Nerve Center
Cost centers are the most common cost objects. They represent organizational units where costs are incurred (e.g., IT department, Production Line 1, Administration). The cost center hierarchy groups them into a tree that mirrors the organizational structure and is used for planning and reporting.
3.1 Create Cost Center Standard Hierarchy (OKEON)
Transaction OKEON (Standard Hierarchy). The standard hierarchy is mandatory – every cost center must belong to one. For GlobalTech, we create the top node “GLOB_WW” (worldwide) and build:
- Corporate (node)
- Administration (cost center 1000)
- IT (cost center 1100)
- HR (cost center 1200)
- Operations (node)
- Plant US (node)
- Prod Line 1 (cost center 2001)
- Prod Line 2 (cost center 2002)
- Quality (cost center 2003)
- Plant DE (node)
- Prod Line 1 (cost center 3001)
- Prod Line 2 (cost center 3002)
- Plant IN (node)
- Assembly (cost center 4001)
- Plant US (node)
- Sales & Marketing (node)
- Sales US (cost center 5001)
- Marketing Global (cost center 5002)
We create these cost centers via KS01 (Create Cost Center). For each cost center, we assign:
- Responsible person (Cost Center Manager)
- Cost center category (e.g., “F” for administration, “P” for production)
- Hierarchy area (automatically from OKEON)
- Profit center (we’ll assign later when profit center accounting is live)
3.2 Cost Center Groups (Alternative Hierarchies)
Besides the standard hierarchy, you can create alternative groups for flexible reporting. Transaction KSH1 (Create Cost Center Group). For example, group “ALL_PROD” contains all production cost centers across countries. These groups are used in assessment cycles (we’ll use them later).
3.3 Cost Center Planning (KP06)
Planners enter costs and activity quantities. While we don’t deep‑dive into planning in this tutorial, it’s crucial to know that primary cost planning is done in KP06 (cost center planning). You can enter fixed and variable costs per cost element. The plan data then serves as the benchmark for variance analysis. GlobalTech’s production cost centers plan 100,000 USD electricity cost annually, split evenly across months.
4. Internal Orders – Real vs Statistical, Settlement Rules
Internal orders are mini‑projects used to collect costs for a specific purpose, like a trade fair, a repair, or an internal IT project. They can be real (costs settled to another object) or statistical (just for reporting, no settlement). Real orders are the workhorse.
4.1 Order Types and Configuration
SPRO: Controlling → Internal Orders → Order Master Data → Define Order Types (transaction KOT2).
GlobalTech uses order type ZMAR (Marketing Event) with a number range and settlement profile. In the order type settings:
- Category: overhead cost order (type 01)
- Settlement allowed: yes
- Settlement profile: ZPROF (defines allowed receivers: cost center, profitability segment, etc.)
- Plan integration: with cost centers (costs on orders can reduce the responsible cost center’s plan)
Create settlement profile ZPROF in Controlling → Internal Orders → Actual Postings → Settlement → Define Settlement Profile. Allow receivers: cost center, G/L account, profitability segment. Set “Settlement is mandatory” for real orders.
4.2 Hands‑On: Marketing Campaign Order
Marketing launches a digital campaign. Use KO01 (Create Internal Order) with order type ZMAR. Name: “Summer Campaign 2025”. Assign responsible cost center 5002 (Marketing Global) as the statistical object for planning, but the order itself will collect real costs.
Now post actual costs: the agency invoice arrives – 50,000 USD. In FI (F‑43), we enter the vendor invoice with G/L account 40000050 (Advertising Expense). The posting requires a CO assignment. We enter the internal order number “ZMAR‑2025‑01” as the cost object. The system posts the expense on the order, not directly on the cost center (though statistical update also shows on cost center 5002 for info).
At month‑end, we settle the order. In KO02 (Change Order), define settlement rule: 100% to cost center 5002 (Marketing Global) – but wait, that would defeat the purpose. Instead, the campaign should be settled to a profitability segment to see campaign ROI. We can settle to CO‑PA. So we define a settlement receiver: profitability segment (if CO‑PA is active). We’ll cover CO‑PA later, but for now, we settle to a cost center. Enter rule: receiver cost center 5002, percentage 100%, settlement cost element 82000003 (secondary).
Execute settlement via KO88 (Actual Settlement). The order balance becomes zero, and 50,000 USD is debited to cost center 5002 under secondary cost element 82000003. The original primary cost (40000050) remains visible on the order, but the cost center now carries the total marketing spend. This dual view is powerful.
Insight: The real power of internal orders is when you settle to multiple receivers. For example, a trade fair cost can be distributed 30% to sales US, 40% to sales DE, 30% to sales IN using percentages. The settlement cycle does the allocation automatically.
5. Profit Center Accounting – Driving Business‑Unit P&Ls
Profit centers represent management units for which you want a full balance sheet and P&L. In GlobalTech, the CEO wants P&Ls for “North America”, “Europe”, and “Asia” profit centers. Profit centers can be derived from cost centers, materials, or manually entered. In S/4HANA, document splitting ensures balance sheet items also carry profit center, giving you a complete financial statement per profit center.
5.1 Define Profit Center Standard Hierarchy
Transaction KCH1 (Create Profit Center) or use SPRO: Controlling → Profit Center Accounting → Master Data → Define Profit Center Standard Hierarchy.
Create top node “GLOB_PC”. Under it:
- North America (PC‑NA) – assigned to company code GT01
- Europe (PC‑EUR) – GT02
- Asia (PC‑ASIA) – GT03
Create the profit centers with transaction KE51. For each, set the responsible person, profit center area, and segment (if used). The profit center is company‑code independent but assigned to a company code for legal purposes.
5.2 Derivation of Profit Center
The classic method: assign a profit center to each cost center master data. In KS02, for cost center 2001 (Prod Line 1 US), assign profit center PC‑NA. For cost center 3001 (Prod Line 1 DE), assign PC‑EUR. This way, whenever a primary cost is posted to a cost center, the profit center is automatically derived. For materials, you can assign a profit center in the material master (plant/valuation area view). For SD billing, the profit center can come from the material or from the sales order (if profit center is determined via the sales org or a substitution rule).
To ensure automatic derivation, configure SPRO: Controlling → Profit Center Accounting → Master Data → Maintain Profit Center Determination. This is now often replaced by “Flexible Derivation” or “Substitution” in S/4HANA. You can define rules like: if cost center starts with “2”, profit center = “PC‑NA”. We’ll use the direct assignment method for clarity.
5.3 Document Splitting and Profit Center Balancing
In Day 1 (Part 16), we activated document splitting with profit center as a mandatory characteristic. Now, when a vendor invoice is posted with expense line on cost center 2001 (profit center PC‑NA) but no profit center on the vendor line, the system automatically creates a balancing entry on the vendor reconciliation account with profit center PC‑NA. This ensures that the balance sheet for profit center PC‑NA has both the expense and the corresponding payable. The result: a complete profit center balance sheet. This is the magic of New GL document splitting in S/4HANA.
To test, post an invoice for electricity: debit electricity expense 40000020 (cost center 2001, PC‑NA), credit vendor (no PC). Check the posted document in FB03: the vendor line now shows PC‑NA and a zero‑balance clearing entry might appear. This enables the profit center balance sheet report in KE5Z (Profit Center: Actual Line Items) or the P&L report in FAGLL03.
5.4 Profit Center Reporting – Real‑Time P&L
Transaction KE30 (Profit Center Report) allows you to define financial statement forms based on profit centers. You can run a P&L for profit center PC‑NA and see revenue, cost of sales, administration costs, and even balance sheet items like payables and receivables if document splitting is active. This is the holy grail for managers. Configuration of the report is done via SPRO: Controlling → Profit Center Accounting → Planning → Define Form, but standard forms often suffice.
6. CO‑PA: Profitability Analysis – Costing‑Based vs Account‑Based
CO‑PA is the tool that answers “How profitable was customer X, product Y, in region Z?”. Two flavors exist:
- Costing‑Based CO‑PA – structures costs and revenues using value fields (like a cube). It can slice margins in any characteristic combination but can become disconnected from FI because it uses its own value fields, not G/L accounts. Reconciliation with FI is a nightmare if not maintained properly.
- Account‑Based CO‑PA – uses G/L accounts directly as the cost/revenue elements. It’s perfectly reconciled with FI by definition. In S/4HANA, this is the Margin Analysis solution, and it’s the strategic recommendation from SAP. Because the universal journal already contains all postings with profitability characteristics, account‑based CO‑PA simply filters and reports on that data. No extra data storage, no reconciliation issues.
6.1 Operating Concern and Data Structure (KEA0)
Transaction KEA0 (Maintain Operating Concern). We create operating concern “GLB01” with currency USD. We choose Account‑Based (Margin Analysis). Characteristics define the reporting dimensions:
- Customer (KUNNR)
- Product (MATNR)
- Company code (BUKRS)
- Profit center (PRCTR)
- Sales organization (VKORG)
- Region (custom characteristic derived from customer or shipping point)
Value fields are not needed; they are automatically derived from G/L accounts. But you can define “semantic tags” to map G/L accounts to profitability categories (e.g., revenue, discounts, cost of goods). This mapping is done in transaction FINSC_LEDGER or via the “Attributes of GL Account” in FS00.
6.2 Derivation of Characteristics
For account‑based CO‑PA, characteristics must be derived and stored in the universal journal. During a goods issue (COGS posting) or a billing document, the system must know the customer, product, profit center, etc. This is configured in SPRO: Controlling → Profitability Analysis → Flows of Actual Values → Define Derivation of Characteristics. You can use derivation rules, table lookups, or BAdIs. GlobalTech uses simple mapping: customer from billing document, product from material, profit center from material’s profit center assignment.
6.3 Activate Profitability Update for SD and FI
For sales orders, ensure the SD billing document transfers characteristics to CO‑PA. In SD, the condition types are mapped to CO‑PA value fields (in costing‑based) or directly to G/L accounts (in account‑based). In account‑based CO‑PA, the G/L account from the billing document automatically becomes the profitability line. So you only need to make sure the profitability segment (combination of characteristics) is populated. This is done via a requirement routine and the field catalog. Usually, standard SAP delivers the derivation for billing documents, and you just need to activate it.
In SPRO: Controlling → Profitability Analysis → Master Data → Characteristics → Define Characteristics, you can add your custom characteristic “REGION” and then in derivation, say region = customer’s region attribute.
6.4 Real‑Time Example – Billing Document to CO‑PA
GlobalTech sells 10 units of product “FERT01” to customer CUSTUS01 in the US. The billing document posts: debit customer, credit revenue 5,000 USD (account 50000010), and debit COGS 3,000 USD (account 40000080). In account‑based CO‑PA, these G/L line items are simultaneously written with characteristics: customer = CUSTUS01, product = FERT01, profit center = PC‑NA, sales org = US01, region = “NorthEast”. The margin analysis report (transaction KE24) now shows a revenue line of 5,000 and cost line 3,000 for that combination – margin 2,000. All perfectly reconciled to the GL.
Insight: The biggest advantage of account‑based CO‑PA is that any FI posting that impacts profitability (e.g., a direct expense posted to a profitability segment) also appears, even if no SD document is involved. Costing‑based CO‑PA required complex value field mapping and often missed FI adjustments. That’s why SAP now recommends account‑based for all new implementations.
7. Period‑End Closing: Assessment and Distribution Cycles
At period‑end, you need to allocate overheads from administrative cost centers to the operating units. GlobalTech’s administration cost center 1000 accumulates 100,000 USD of expenses. This needs to be allocated to production cost centers based on headcount, machine hours, or a fixed percentage. We use assessment for this – primary costs are summarized and transferred via a secondary cost element, preserving the original cost element detail is lost (but you get a single “assessment” line). Distribution, on the other hand, transfers primary costs as‑is (same cost element).
7.1 Define Assessment Cycle (KSU1 / KSU5)
Transaction KSU1 (Create Actual Assessment Cycle). Create cycle “ADMIN” with start date 01/01/2025. For segment “ADMIN_ALLOC”:
- Sender: cost center 1000 (Administration) with cost element grouping (all primary cost elements, or a range).
- Receiver: cost centers 2001, 2002, 3001, 3002, 4001 (production cost centers).
- Receiver tracing factor: “Fixed percentages” – we define 40% to 2001, 30% to 2002, 10% to 3001, 10% to 3002, 10% to 4001.
- Sender values: posted amounts (total of primary costs on cost center 1000).
- Assessment cost element: 82000001 (secondary).
7.2 Execute Assessment (KSU5)
After month‑end, run KSU5. Enter cycle, period, fiscal year. Test run first. The log shows that 100,000 USD on cost center 1000 is credited with cost element 82000001, and the receiving production cost centers are debited with the same secondary cost element according to percentages. After posting, the administration cost center balance becomes zero (if fully allocated), and production cost centers now carry the overhead. This is the foundation of product costing.
7.3 Distribution (KSV1 / KSV5)
Distribution is similar but uses the original primary cost elements. For example, the canteen cost center (not in scope but imagine) collects food expenses. Distribution would send the exact electricity, food material, etc. lines to the receivers, maintaining the original cost elements. This is useful when you want to see the nature of costs at the receiver. Use KSV1 (Create Distribution Cycle) and KSV5 to execute.
Best Practice: Use assessment when you want to summarize costs into a single management line. Use distribution when you need to preserve the detail (e.g., for cost component split in product costing). In GlobalTech, we use assessment for admin overheads.
8. Full Scenario Walkthrough – A Month in GlobalTech CO
Let’s close the books for January 2025 using the configuration we’ve built.
Step 1: Primary costs posted:
- Electricity invoice: 10,000 USD on cost center 2001 (production), profit center PC‑NA.
- Marketing agency invoice: 50,000 USD on internal order ZMAR‑2025‑01.
- Administration salaries: 100,000 USD on cost center 1000.
Step 2: Internal order settlement: Execute KO88 for ZMAR‑2025‑01. Settlement rule: 100% to cost center 5002 (Marketing Global) via assessment cost element 82000003. Cost center 5002 now reflects 50,000 secondary cost; order closed.
Step 3: Assessment cycle: Run KSU5 for ADMIN cycle. Administration 100,000 USD allocated to production cost centers. The production cost centers now carry the overhead.
Step 4: Profit center reports: Run KE30 for profit center PC‑NA. It shows primary costs (10,000 electricity) + overhead (40% of 100,000 = 40,000) → total cost 50,000, along with balance sheet payables. The P&L is complete.
Step 5: CO‑PA: A sales billing is processed for customer CUSTUS01, product FERT01, revenue 80,000 USD. CO‑PA captures the margin. The profitability report by profit center shows North America margin = 80,000 – cost of goods (say 30,000) – allocated overhead? CO‑PA can include or exclude allocated costs; typically, margin analysis focuses on direct costs and leaves overhead allocation to profit center reporting.
All reconciles perfectly with FI because we’re using account‑based CO‑PA and real‑time universal journal postings.
9. Deep Insights, Best Practices, and Pitfalls
Best Practices:
- Design the cost center hierarchy to mirror the organizational structure but also support responsibility accounting. Avoid too many hierarchy levels – it complicates reports.
- Use statistical internal orders for tracking that doesn’t need to be zeroed out (e.g., a cost tracking project that remains open). Real orders must settle to zero every period or at completion.
- In S/4HANA, always go for account‑based CO‑PA (Margin Analysis) unless you have very specific reasons (like complex value field calculations for contribution margin schemas). Account‑based is the future.
- Activate document splitting with profit center from day one. It’s the only way to get true balance sheet by profit center. Retrofitting it causes massive data conversion pain.
- Use assessment cycles with a test run first, and ensure the sender cost center balance is zero after execution. A residual balance means the assessment cycle didn’t cover all costs – adjust the tracing factor or cost element group.
- Document your derivation rules for CO‑PA characteristics meticulously. A missing derivation results in a blank profitability segment, which dumps costs into a default bucket (usually segment “Not assigned”), destroying your analysis.
Common Pitfalls:
- Forgetting to assign the cost element category to a P&L G/L account. Result: FI posts the expense, but CO doesn’t capture it, leaving a hole in cost center reports.
- Creating secondary cost elements without proper categories, leading to incorrect settlement behavior or blocked postings.
- Not opening the CO period (transaction OKP1). The CO period is independent of the FI period, and if it’s closed, you can’t post any CO‑relevant entry.
- Profit center derivation based on cost center works only if the cost center is correctly entered. In MM goods issues, the profit center must come from the material or the movement type; forgetting to maintain that leads to missing profit center data.
Alternatives and When to Use Them:
- If you have a very lean organization with few cost centers, you might skip internal orders and just use cost centers with statistical sub‑numbers (cost center splits) – but internal orders give better commitment management and settlement flexibility.
- For complex transfer pricing, use actual transfer prices within profit center accounting, but that requires additional configuration (transaction 1KEK).
- If you need predictive analytics on margin, consider SAP Analytics Cloud on top of account‑based CO‑PA rather than building complex derivation rules inside CO‑PA.
10. Conclusion – You Are Now a CO Architect
Day 4 has equipped you with the complete controlling toolkit. You’ve defined a multi‑company controlling area, built a cost center hierarchy, mastered cost elements (primary and secondary), created internal orders with settlement rules, activated profit center accounting with automatic document splitting, set up the recommended account‑based CO‑PA, and automated period‑end allocations. This is the configuration that turns a financial system into a strategic management tool.
Tomorrow, on Day 5 (Part 20), we begin the Materials Management (MM) deep dive – enterprise structure, purchasing organization, plants, storage locations, material types, movement types, and the all‑important account determination (OBYC). This is where procurement meets finance, and you’ll configure the entire material flow backbone. Get ready to roll up your sleeves once more.
@FreeLearning365 – Tech Partner @techbook24

0 Comments
thanks for your comments!