Authorization Objects
Security & GRCintermediate

Configuring Authorization Objects Inside PFCG Roles

Learn how authorization objects are populated with field values inside PFCG roles, including organizational levels, authorization groups, and how the role maintenance tool derives objects from menu selections.

Explanation

Authorization objects only become useful once they are attached to a role with concrete field values. PFCG (Profile Generator) is the standard tool for this in ECC and S/4HANA on-premise/private cloud. When a role is built, transactions or Fiori catalog/tile assignments are added to the menu, and PFCG proposes a set of authorization objects based on the authority-check statements coded inside those transactions or apps. This is why the menu-to-authorization linkage matters: if a transaction is removed from the menu after objects were manually added, the objects remain unless explicitly cleaned up, which is a common source of role bloat. Each proposed object appears in the authorization tab with one or more fields, each field showing either a specific value, a range, an authorization group, or an open field marked with a yellow traffic light requiring maintenance before the role can be generated cleanly. Organizational level fields (like company code, plant, or purchasing organization) are a special category: PFCG allows you to define them once at the role level so they cascade into every object that has that field, ensuring consistency and reducing maintenance effort when the same org value applies across many objects. Authorization groups (found in fields like the ACTVT-paired group field on objects such as S_TABU_DIS for table maintenance or P_ORGIN for HR objects) are an indirection layer: instead of authorizing access to every individual table or infotype, the object checks against a group code that administrators assign to sets of tables or infotypes via configuration. This lets security teams manage access at a coarser, more auditable grain without exposing raw technical names in every role. Field values can be maintained as single values, intervals, or via matchcodes pulling from master data, and multiple values can be added to build an OR condition within a field, while multiple fields within the same object combine with AND logic. Understanding this Boolean structure is essential: adding a value to the wrong field, or forgetting that all fields in an object must be satisfied simultaneously, is a frequent design mistake that either overgrants or underblocks access. In S/4HANA, Fiori apps introduce OData services and business catalogs, and the underlying authorization objects are still checked at the backend service implementation layer, meaning the same PFCG-based object and field maintenance principles apply, but you must also assign the correct catalog and group (or in the public cloud model, business roles built from SAP-delivered templates) so the tile is visible and the backend call succeeds. On S/4HANA public cloud, direct PFCG access is not available to customers; role configuration happens through the Fiori-based business role and business catalog maintenance apps, which internally still enforce the same authorization object model but abstract the raw object/field editing experience. A practical design discipline is to build roles by business task rather than by copying broad SAP-delivered templates wholesale, then use the authorization trace tools to trim unused objects, keeping the role tight and auditable while still functionally complete for the assigned task.

Code example

ABAP Code
* PFCG authorization tab conceptual structure (not executable code)* Object: M_MSEG_WMB (Goods Movement)* Field: WERKS  -> Organizational level, value: 1000 (linked to role org level)* Field: BWART  -> Values: 101, 102 (goods receipt movement types only)* Field: ACTVT  -> Value: 01 (Create)** Object: S_TABU_DIS (Table Maintenance)* Field: DICBERCLS -> Authorization group: &NC& (default) or custom group e.g. ZFI1* Field: ACTVT      -> Value: 03 (Display only)** Logical structure enforced at runtime:* IF (WERKS in role org value) AND (BWART in {101,102}) AND (ACTVT = '01') THEN allow* Each field is ANDed; multiple values within a field are ORed

Real project scenario

A retail company migrating from ECC to S/4HANA needed to rebuild its warehouse operator roles because the old roles used broad plant ranges copied from a template years earlier. The security team used PFCG to redesign the role around specific goods movement types and a single organizational level per plant, then validated the design against real transaction usage logs before generating profiles, cutting the role's authorization footprint by more than half while preserving all needed functionality.

Common mistakes

• Assuming organizational level changes propagate automatically without regenerating the profile • Adding a transaction to the menu but forgetting to review or clean up authorization objects when the transaction is later removed • Confusing AND logic across fields within one object with OR logic across multiple values in a single field • Leaving authorization group fields open (full access) instead of restricting to specific groups • Copying an SAP-delivered template role wholesale without trimming objects irrelevant to the actual business task • Not distinguishing between customer PFCG role building (on-prem/private cloud) and business role/catalog maintenance in public cloud, leading to failed change requests

Best practices

• Design roles around discrete business tasks rather than copying broad templates • Use organizational levels consistently to simplify mass maintenance across many objects • Prefer authorization groups over raw technical object lists for coarse-grained, auditable control • Periodically review and remove authorization objects no longer justified by current menu content • Validate proposed objects against actual usage evidence before generating profiles • Understand the public cloud business role/catalog abstraction layer before assuming direct PFCG access

Interview angle

Interviewers often ask candidates to explain how organizational levels differ from regular authorization fields and why PFCG treats them specially, or to walk through how AND/OR logic works across fields and values within a single authorization object; being able to trace a specific object like M_MSEG_WMB or S_TABU_DIS from menu assignment through to generated profile demonstrates hands-on role design competence beyond theoretical knowledge.