ERPClimb logoERPClimb
SAP tableObjectBPJAModulePS

BPJA table — Annual Values for CO/PS Planning and Budgeting

BPJA stores annual-value totals for Controlling, Project System, Investment Management, and related planning or budgeting objects. It is the annual-value counterpart to BPGE overall values and BPPE period values. The row meaning depends on object number, fiscal year, value type, version, and currency; it should not be described as only project-budget totals.

This page covers what a row in BPJA actually represents, the fields worth restricting a query on, and the joins used to trace a budget figure back to its WBS element or forward to actual costs. It focuses on the ways this totals table gets misread during budget-versus-actual investigations and availability control disputes.

Published 20 Sept 2026· 1,053 words

What it stores

Each record in BPJA represents the total budget value for one CO object, usually a WBS element though the same generic object-number key can also point to a network header or an internal order, for one fiscal year and one value type, summed across every budget posting made against that object in that year. It is a totals table, not a document table: individual budget transactions entered through the project budgeting transactions are aggregated here so reporting and availability control do not have to re-sum every posting each time they run. A row does not record who posted the last change or when. Original budget, supplements, returns, and transfers each produce their own value-type row rather than being netted into a single figure, which is the single most important thing to remember before drawing conclusions from this table.

Key fields

  • OBJNR — object number of the cost center, order, WBS, or IM object.
  • GJAHR — fiscal year of the annual value.
  • WRTTP — value type or business meaning.
  • VERSN — version.
  • Currency and annual amount fields — represent the annual totals.
  • BPGE and BPPE — overall and period-value counterparts.

How it joins the data model

  • BPJA-OBJNR = PRPS-OBJNR - resolves the totals row to the WBS element it was budgeted against
  • BPJA-OBJNR = PRHI-OBJNR via the project hierarchy - lets a report roll a budget figure up from an individual WBS element to its parent or to the whole project
  • BPJA-OBJNR = PROJ-OBJNR - relevant only when budget is held at the project definition level rather than on individual WBS elements
  • BPJA-OBJNR = COSPD-OBJNR matched on GJAHR - the standard route to a budget-versus-actual comparison, since COSPD carries the actual and commitment totals for the same object
  • BPJA and BPGE share the same OBJNR and WRTTP key but BPGE carries no GJAHR - use BPGE for a lifetime budget figure and BPJA when the figure has to be broken down by fiscal year

How to read it safely

Always restrict on MANDT first, then narrow OBJNR before touching this table directly, since it sits under every project in the controlling area. The practical path is to look up the WBS elements for a project in PRPS, collect their object numbers, and only then select from BPJA; selecting on GJAHR or WRTTP alone with no object restriction returns an unusable volume of rows. Because amounts are split across three currencies and across value types, a raw SE16 dump rarely answers a business question on its own; the standard PS or CO reporting transactions already apply the correct summation logic and currency selection, and reproducing that logic manually is where most reading errors start.

How to prove it in the data

Symptom: a project team insists budget was never entered for a WBS element that is nonetheless throwing an availability control error. Resolve the WBS element to its object number in PRPS, then select BPJA for that OBJNR across all GJAHR and WRTTP. A genuine no-budget situation shows no row at all for the value type reserved for original budget in that fiscal year. A row that exists with a zero total still counts as budget entered and is a different problem, usually a budget that was posted and then fully returned or transferred out.

ECC vs S/4HANA

BPJA continues to support annual plan and budget values in S/4HANA scenarios that use this classic CO, PS, and IM value model. SAP documentation explicitly maps BPGE to overall values and BPJA to annual values. Always interpret the value type and object category before labeling the figure.

Common pitfalls

  • Treating BPJA as if it held one net budget figure per object and year: it holds one row per value type, so reading only the original budget row while ignoring supplement, return, and transfer rows understates or overstates the current budget.
  • Reading the table directly and picking the wrong currency field: the period and annual amounts are stored in transaction, object, and controlling area currency, and mixing them up produces numbers that look duplicated or scaled incorrectly.
  • Assuming a missing row means zero budget: no row exists at all until a budget document of that value type has been posted, which looks identical to a genuine zero unless the underlying budget documents are also checked.
  • Comparing BPJA to COSPD actual figures at mismatched granularity: budget is often carried at a higher WBS level than actual costs are posted at, so a line-by-line comparison silently misses cost that is covered further up the hierarchy.
  • Believing BPJA is always current: totals only reflect the last update run for that fiscal year, so a recent budget change that has not gone through the relevant year-end or carryforward step can leave BPJA out of step with what availability control is actually enforcing.
  • Editing or deleting rows directly in BPJA to fix a discrepancy: this breaks the link between the totals table and the underlying budget documents and corrupts availability control until the totals are rebuilt through the proper transaction.

Whose problem this is

A discrepancy traced to BPJA is a PS functional consultant question first, since budget structure and value types are configured and posted through project budgeting, with FI/CO controlling brought in when currency translation or value type meaning is disputed. Corrections are made by reposting, returning, or transferring budget through the standard budgeting transactions, never by editing the totals table.

Related SAP objects

Reviewed pages this object connects to in the ERPClimb knowledge graph.

Source: ERPClimb — https://erpclimb.com/sap-tables/bpjaERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.