SAP tableObjectQPGRModuleQM

QPGR table — QM Catalog Code Group Master Table

QPGR stores the code group level of the QM catalog hierarchy: catalog type, then code group, then individual code. One row is one code group defined under a specific catalog type (for example the defect catalog or the cause catalog). It carries no text and no code values itself, only the group key and its administrative and lock status.

QPGR is the middle tier of the three-level QM catalog structure used to code defects, causes, usage decisions and inspection results. This page covers what a row actually represents, how it joins to the codes and text tables, and the recurring mistake of treating a locked or empty group as a data error rather than a master data configuration state.

Published 16 Sept 2026· 1,032 words

What it stores

A row in QPGR represents one code group belonging to one catalog type in the QM catalog master data structure. SAP QM catalogs are organized in three levels: the catalog type itself (defined in the catalog type table), the code group within that catalog type, and the individual codes within the group. QPGR is the second level. It does not hold the descriptive text for the group (that sits in a separate text table) and it does not hold the individual codes (those sit in QPCD). What QPGR does hold is the group key, its administrative trail, and whether the group is currently usable. Catalogs built on this structure are used everywhere in QM that needs a controlled coding scheme: defect type codes on notification items, cause codes, usage decision codes on inspection lots, and valuation codes for inspection characteristics.

Key fields

  • MANDT - client
  • KATALOGART - catalog type key, identifies which catalog the group belongs to, for example the defect catalog, the cause catalog or the usage decision catalog
  • CODEGRUPPE - code group key, unique within the catalog type, the value that individual codes in QPCD are assigned under
  • ERNAM / ERDAT - user and date the code group was created
  • AENAM / AEDAT - user and date of the last change to the group record
  • a lock or deletion status field controlling whether new codes can still be assigned or the group can still be selected on master data, exact field name not confirmed here

How it joins the data model

  • QPGR-KATALOGART = QPCD-KATALOGART and QPGR-CODEGRUPPE = QPCD-CODEGRUPPE, the codes belonging to a given group
  • QPGR-KATALOGART = QMFE-KATALOGART / QMFE-CODEGRUPPE, notification defect items referencing the group their defect code was drawn from
  • QPGR-KATALOGART = QMUR-KATALOGART / QMUR-CODEGRUPPE, notification cause items referencing the cause code group
  • QPGR-KATALOGART = QASE-KATALOGART / QASE-CODEGRUPPE, inspection results referencing a catalog code group used for characteristic evaluation
  • QPGR-KATALOGART joins to the catalog type master where the catalog's overall purpose and usage area are defined

How to read it safely

The table is client-dependent and small relative to transactional QM tables, so it is rarely a performance concern on its own. Always restrict by KATALOGART first; a code group key is only unique within its catalog type, so scanning across catalog types without that restriction returns unrelated groups that happen to share a group number. When chasing a specific defect or cause code from a notification, work backwards from the notification item's catalog type and group value rather than searching QPGR blind. Do not join to QPCD or the text tables without also matching on catalog type, or codes from a different catalog with a coincidentally matching group and code number will slip into the result set.

How to prove it in the data

Symptom: a user reports that a defect code they expect to see in a notification is not offered in the input help. Selection: read QPGR for the notification's catalog type and the specific code group used by that field, and check the lock or deletion status. If the group is locked, the codes underneath it in QPCD will not appear in F4 help even though they still exist as records, which is the usual explanation rather than a missing code.

ECC vs S/4HANA

QPGR carries over from ECC into S/4HANA as a transparent table with no structural change observed. QM catalog master data was not part of the wave of table replacements that affected core inspection and notification objects, and the catalog maintenance transactions continue to write to the same three-tier structure. No compatibility CDS view is required to read it, and reporting on catalog master data is typically done with straightforward table access rather than a released core data service.

Common pitfalls

  • Treating a missing code in dropdown help as a missing QPCD entry when the real cause is the parent group in QPGR being locked; check the group status before touching the code table
  • Assuming code group numbers are globally unique; they are only unique within a catalog type, so two catalogs can have a group '10' with entirely different meanings
  • Deleting or relocking a code group without checking whether historical notifications or inspection results still reference codes under it; the transactional records keep the old key and display as unreadable or blank codes once the group is gone
  • Confusing the group record in QPGR with its description; the text lives in a separate language-dependent table, so a group with no visible text in one logon language is not necessarily missing data
  • Copying a catalog type without realizing the code groups and codes are separate master data that must be transported or created independently; a new catalog type with no groups underneath it looks broken but is simply unpopulated
  • Editing group status directly on the assumption it only affects new entries; changing status can also affect whether existing codes remain selectable in ongoing quality notifications

Whose problem this is

Catalog structure and code group definitions are owned by whoever configures QM master data, usually the QM configuration lead rather than the functional consultant running day to day inspection or notification processing. Disputes about a missing or locked code should go to that owner before being treated as a transactional data defect.

Related SAP objects

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

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