Profit Center Report
The P&L by profit center — revenue, cost, and operating result per segment, built on ACDOCA, where Margin Analysis is integrated. The loss-making segments surface first.
Sample build of the Profit Center Report — the P&L by profit center: revenue, cost, and operating result per segment, with the loss-making segments surfaced first, rendered tool-neutral so it runs in Power BI, SAC, or Tableau.
| Profit center | Revenue | Cost | Result | Margin |
|---|---|---|---|---|
| 4000 · Legacy | 900,000 | 1,008,000 | −108,000 | −12.0% |
| 3000 · Services | 1,800,000 | 1,620,000 | 180,000 | 10.0% |
| 1000 · Consumer | 4,200,000 | 3,360,000 | 840,000 | 20.0% |
| 2000 · Enterprise | 3,100,000 | 2,170,000 | 930,000 | 30.0% |
Operating result 1.84M on 10.0M revenue — an 18.4% blended margin. But it is uneven: Enterprise runs 30% while Legacy is loss-making at −12%.
Profit center 4000 · Legacy is below water — −108K on 900K revenue. It is the only loss-making segment, and it pulls the blended margin down about a point.
Cost (1,008K) exceeds revenue (900K) on a declining line. Route to the profit-center owner with the margin trend — the question is price, cost-to-serve, or sunset. Margin Analysis lives in ACDOCA, so revenue and cost sit on the same journal line — no separate CO-PA to reconcile.
The report's query logic — generic SQL on ACDOCA. It sums revenue and cost by profit center for the period, classifying each line by the financial-statement hierarchy, to give the operating result and margin. The same SQL becomes a dbt model in your warehouse.
Show / hide SQL
SELECT a.prctr AS profit_center,
SUM(CASE WHEN f.stmt_section = 'REVENUE'
THEN -a.hsl ELSE 0 END) AS revenue,
SUM(CASE WHEN f.stmt_section = 'COST'
THEN a.hsl ELSE 0 END) AS cost,
SUM(-a.hsl) AS operating_result
FROM acdoca a
JOIN fsv_node f ON f.racct = a.racct -- financial-statement hierarchy
WHERE a.rbukrs = :P_COMPANY_CODE
AND a.gjahr = :P_FISCAL_YEAR
AND a.poper BETWEEN :P_FROM_PERIOD AND :P_TO_PERIOD
AND f.stmt_section IN ('REVENUE','COST')
GROUP BY a.prctr
ORDER BY operating_result ASC;The data-warehouse model — one fact surrounded by conformed dimensions (what you slice by) and measures (what you aggregate), expressed as dbt so it migrates with you. Grain: one row per P&L posting (profit center · account · period).
| Element | Type | Definition |
|---|---|---|
| dim_profit_center | dimension | Profit center & group — the segment that earns the margin (PRCTR) |
| dim_account | dimension | G/L account & FSV node — classifies the line revenue vs cost (RACCT) |
| dim_segment | dimension | Segment for external segmental reporting (SEGMENT) |
| dim_date | dimension | Conformed calendar — fiscal year & posting period |
| revenue | measure | Credit postings on revenue accounts, sign-flipped to positive |
| cost | measure | Debit postings on cost-of-sales and expense accounts |
| operating_result | measure | Revenue − cost — the margin for the profit center |
Every source object behind this report. Each linked object has its own page — with its fields and its real S/4HANA status, so you build on the right thing.
| Object | Role | Key fields | S/4HANA status |
|---|---|---|---|
| ACDOCA | Universal Journal — the P&L lines (PRCTR · RACCT · HSL) | 6 PK · amounts | Transparent table |
| I_ProfitCenter | Released profit-center master view — segment, hierarchy, validity | released | Released CDS view |
| I_GLAccountLineItem | Released journal-entry line view — the revenue & cost lines | released | Released CDS view |
| I_FinancialStatementVersionNode | Released FSV hierarchy — classifies accounts revenue vs cost | released | Released CDS view |
| CEPC | Profit center master — controlling area, segment, validity | KOKRS · PRCTR · DATBI | Transparent table |
| SKA1 | G/L account (chart of accounts) — account type for P&L classification | KTOPL · SAKNR | Transparent table |