In classic ABAP systems, authorization management was heavily decoupled from the development lifecycle. Developers built reports, function modules, and transactions, while security administrators used transaction PFCG to manually insert authorization objects, field values, and menu entries.
In ABAP Cloud (Language Version 5), this workflow is eliminated. To maintain upgrade stability and prevent authorization discrepancies during quarterly or annual cloud upgrades, SAP introduced Clean Core IAM:
IAPP).BCAT).| Layer | Artifact Type | Managed In | Clean Core Responsibility |
|---|---|---|---|
| 1. Service | RAP Service Binding (OData V4) | ADT (Eclipse) | Defines protocol and exposed business entities |
| 2. App Descriptor | IAM App (IAPP) |
ADT (Eclipse) | Binds service to authorization defaults (SU22) |
| 3. Catalog | Business Catalog (BCAT) |
ADT (Eclipse) | Logical grouping of apps for a business persona |
| 4. Role | Business Role (BR_...) |
Fiori Launchpad (App Maintain Business Roles) | Assigned to end users with restriction field values |
A common architectural pitfall in ABAP Cloud is relying on only one layer of access control. Clean Core enforces dual protection:
get_global_authorizations and get_instance_authorizations.
CLASS lhc_salesorder DEFINITION INHERITING FROM cl_abap_behavior_handler.
PRIVATE SECTION.
METHODS get_global_authorizations FOR GLOBAL AUTHORIZATION
IMPORTING REQUEST requested_authorizations FOR SalesOrder RESULT result.
METHODS get_instance_authorizations FOR INSTANCE AUTHORIZATION
IMPORTING keys REQUEST requested_authorizations FOR SalesOrder RESULT result.
ENDCLASS.
CLASS lhc_salesorder IMPLEMENTATION.
METHOD get_global_authorizations.
IF requested_authorizations-%create = if_abap_behv=>mk-on.
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'ACTVT' FIELD '01'.
IF sy-subrc <> 0.
result-%create = if_abap_behv=>auth-unauthorized.
ELSE.
result-%create = if_abap_behv=>auth-allowed.
ENDIF.
ENDIF.
ENDMETHOD.
METHOD get_instance_authorizations.
READ ENTITIES OF zr_salesorder IN LOCAL MODE
ENTITY SalesOrder
FIELDS ( SalesOrganization )
WITH CORRESPONDING #( keys )
RESULT DATA(lt_orders).
LOOP AT lt_orders ASSIGNING FIELD-SYMBOL(<order>).
IF requested_authorizations-%update = if_abap_behv=>mk-on.
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'ACTVT' FIELD '02'
ID 'VKORG' FIELD <order>-SalesOrganization.
IF sy-subrc <> 0.
APPEND VALUE #( %tky = <order>-%tky %update = if_abap_behv=>auth-unauthorized ) TO result.
ELSE.
APPEND VALUE #( %tky = <order>-%tky %update = if_abap_behv=>auth-allowed ) TO result.
ENDIF.
ENDIF.
ENDLOOP.
ENDMETHOD.
ENDCLASS.
sy-uname directly in application code. Always use AUTHORITY-CHECK or CDS DCL.Generate IAM App descriptors, Business Catalogs, and RAP authorization pools with our interactive architect.
Launch IAM Architect Tool ⚡ Get Architecture Suite (80% Off)