AGR_1251 table — Authorization field values maintained in a role
AGR_1251 stores the field-level values maintained in a PFCG role's authorization tab, one or more rows per role, authorization object, and field, holding the LOW and HIGH bounds entered for that field. It reflects what was typed into the role before or after generation, not necessarily what is currently active in the user's generated profile.
AGR_1251 holds the raw authorization values a security administrator maintained inside a PFCG role, keyed by role, object, authorization name and field. This page covers what a row actually represents, how to join it to role, user and check-indicator tables, and the recurring mistakes people make when they treat this table as proof of what a user can actually do.
Reviewed by an ERPClimb SAP consultant on 15 Sept 2026· 999 words
What it stores
One row represents a single value or value-range line maintained for one authorization field within one authorization object inside one PFCG single role. Because a field can be a select-option with several entries (for example three separate company codes), one role/object/field combination can span several rows, each carrying its own LOW and HIGH. This is maintenance data captured on the authorization tab of the role, before or after the role is generated into a runtime profile. It does not by itself describe what a user is currently allowed to do; that depends on generation status, user master comparison, and composite role expansion. Rows exist per client. The table is populated when a role is created, changed, or copied in PFCG, and is read by PFCG itself when rendering the authorization tree and by generation reports when building the profile.
Key fields
- MANDT - client
- AGR_NAME - single role (activity group) name
- OBJECT - authorization object technical name
- AUTH - internal authorization name generated for this object instance within the role
- FIELD - authorization field technical name within the object
- LOW - single value or lower bound of a range maintained for the field
- HIGH - upper bound of a range, blank for single values
How it joins the data model
- AGR_1251-AGR_NAME = AGR_DEFINE-AGR_NAME to get the role description and role type
- AGR_1251-AGR_NAME = AGR_USERS-AGR_NAME to find which users are assigned the role
- AGR_1251-AGR_NAME = AGR_TCODES-AGR_NAME to find which transactions the role carries
- AGR_1251-OBJECT = USOBT_C-OBJECT (or USOBX_C-OBJECT) to check whether the object is even proposed as a check for the role's transactions
- AGR_1251-LOW = TACT-ACTVT when FIELD = 'ACTVT', to translate an activity code into its text
How to read it safely
Always filter on MANDT implicitly via the client connection and explicitly on AGR_NAME first; the table spans every role times every object times every field times every value line across the whole system, and an unrestricted select on OBJECT or FIELD alone can return millions of rows in a mature landscape. If searching for who can access a specific value (a company code, a plant, a document type), restrict on OBJECT and FIELD together, then filter LOW/HIGH as a range check rather than an equality check, since a single maintained line can cover a range that silently includes the value being searched for. Expect '*' stored literally as a value meaning full authorization, not an empty field.
How to prove it in the data
Symptom: a user gets an authorization failure for company code 3000 on object F_BKPF_BUK. Pull the user's role list from AGR_USERS for that user and client, then select from AGR_1251 where AGR_NAME is in that role list, OBJECT = 'F_BKPF_BUK', FIELD = 'BUKRS', and LOW <= '3000' <= HIGH (or LOW = '3000' if no range). No matching row across all assigned roles confirms the role design genuinely excludes that company code; a matching row but continued failure points to a stale generated profile instead.
ECC vs S/4HANA
AGR_1251 exists unchanged in S/4HANA and continues to be the same table used by PFCG for maintaining authorization field values in single roles. No compatibility view or replacement is known for it. S/4HANA adds authorization objects and check logic specific to Fiori apps and new transactions, but the mechanics of how a role's field values are stored in this table are the same as in ECC.
Common pitfalls
- Treating a row here as proof of current access. The role may have been changed but not regenerated, or the user master comparison never run, so the live profile in the user's session still reflects the old values while AGR_1251 already shows the new ones.
- Missing a row and concluding the field is restricted to nothing. If the object's check indicator is not active for the role's transactions (see USOBT_C/USOBX_C), the field may never be evaluated at all, making the absence of a row irrelevant rather than restrictive.
- Forgetting that organizational level values are held separately in AGR_1252, not fully here. Searching AGR_1251 for an org-level field and finding nothing does not mean the org value is missing; it may sit in the org-level table instead.
- Querying a composite role name directly. AGR_1251 is keyed by single role; a composite role has no rows of its own and must first be expanded to its component single roles.
- Ignoring HIGH when counting entries. A field maintained as a range looks like one row but covers many values; counting rows to estimate how many discrete values are granted undercounts actual coverage.
- Comparing LOW/HIGH as strings without accounting for leading zeros or case, which produces false negatives when manually joining against master data values that are stored differently.
Whose problem this is
Role content and the values maintained in AGR_1251 are owned by the security or identity and access team that builds and maintains PFCG roles. Functional module leads can flag a specific access gap or excess, but changing the values requires the security team, and any question involving segregation of duties analysis on this data typically also involves the GRC Access Control team.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tables/agr-1251ERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.