Building a CO-PA Profitability Report, Part 2 — A Screen-by-Screen Walkthrough of KE31, KE34 and KE30

Part 1 covered how CO-PA line item tables are separated per operating concern and the build sequence from KEBC to KE30. This time we follow the same path again, but screen by screen — the report-name restriction, element type choices, and formula entry, exactly where you meet them in front of the system.

※ Screens, menus, and settings may differ depending on your SAP release and system configuration.

What trips you up first in KE31 Basic Report

Report names cannot contain special characters like underscores. Trying to save ZJNC_PA01 throws an error — stick to letters and digits, e.g. ZJNCPA01. Right after creating the report a popup asks for the currency; I chose Operating concern currency.

Move characteristics generously

On the Characteristics tab, move the characteristics you need to the right. A Basic Report is less a final deliverable than a way to see how characteristics and value fields behave, so moving everything at once with the "select all" button is fine.

Value fields and standard variables

On the Key figures tab I picked ten value fields. The Variables tab already shows five standard variables (Period from / Period to, ...) set to Entry at Execution — you can enter the period at runtime without creating custom variables in KE3E.

Output type and the Basic Report's limit

Choosing Object list on the Output Type tab renders results as ALV. Saving works — but a Basic Report cannot define row-against-row calculations like gross margin. That's the cue to move to a form.

KE34 — defining the calculated row

The form type is Two coordinates (rows and columns both defined). Double-clicking a row opens the element type dialog — choose Value field with characteristics ("Key figure scheme element" needs a predefined scheme). The first three rows are value fields: sales quantity, revenue, COGS, with characteristic values left empty (meaning: no restriction).

Only the fourth row uses element type Formula, entered as Y002 − Y003. The row IDs you defined earlier become the formula variables — revenue minus COGS gives gross margin. The single column has Plan/Act. Indicator 0 (one actual-data column).

Attach the form, run KE30

Back in KE31, create a form-based report and attach ZJNCPAF1 — the Key figures tab disappears because the form now owns that. Output type: Classic drilldown. In KE30, run with period 2026/07, Plan/Act. Indicator 0, Record Type F (billing-based).

Result: quantity 1,000 EA, revenue 20,000, COGS 18,800 — and gross margin calculated as 1,200, confirming the Y002 − Y003 formula works.

Wrap-up

Deliverables: Basic Report ZJNCPA01, Report Painter form ZJNCPAF1, form-based report ZJNCPA02. When you need a calculated row, don't fight the Basic Report — switch to a form early. The report-name character restriction and the PALEDGER ledger filter are the two time-eaters worth knowing in advance.

Korean original (with screenshots): SAP CO-PA 리포트 구축 ② 화면으로 따라가는 KE31·KE34·KE30 실습

Where these documents come from
Everything on this blog comes from one small dumpling factory built end-to-end in an S/4HANA sandbox — one plant, one product, one month, every document number real. The whole build is written up in two books.
· Free 16-page sample — the opening chapters, no email required
· How Sarah Joined a K-Dumpling Company and Became an SAP Genius — the business novel, 53 pages, $25
· The Dumpling Factory: Building a Complete SAP S/4HANA Company from Scratch — the build manual, 85 pages, $50

Comments

Popular posts from this blog

Modern ABAP Syntax Notes — Patterns and Pitfalls from Real Development

SAP S/4HANA Table Reference — Tables I Actually Query, by Topic

A 36% margin became 6% at month-end, and every posting was correct