Table of Contents

Autorisations (ABAP)

Transactions utiles

Classes d'objets & objets d'autorisation classiques

Authority check

Lors d'un authority-check, le noyau vérifie que le profile du user bénéficie d'au moins un set de valeur (un objet d'autorisation avec ses valeurs) compatible avec les valeurs demandées, quelque soit le rôle d'où il vient, y compris si des sets plus restrictifs existent. (Autrement dit, peu importe que la transaction soit affectée à tel ou tel rôle : un authority-check balaie tous les objets d'autorisations portés par le profile, peu importe leur origine.)

Exemple 1 :

⇒ Authority-check :

Exemple 2 :

⇒ Authority-check :

NB : Cela signifie que si un user porte un mélange de rôles restreint sur un niveau organisationnel et d'autres non limités (avec un *), TOUS les objets portés par les rôles non limités prendront le pas sur leurs équivalents limités.

Contrôle du code transaction

  CALL FUNCTION 'AUTHORITY_CHECK_TCODE'
       EXPORTING
            tcode  = sy-tcode
       EXCEPTIONS
            ok     = 0
            not_ok = 2
            OTHERS = 3.

contrôle généraliste

Vérifier que le user à une autorisation sur un objet en particulier (quel qu'il soit).

AUTHORITY-CHECK OBJECT 'M_RECH_EKG'
         ID 'ACTVT' FIELD '02'  "Display
         ID 'EKGRP' FIELD 'ZZ'. "Purchasing group
 
IF SY-SUBRC = 0.
 " User has correct authority
ENDIF.

Comment tester techniquement (en dev) les authors

Démarche design autorisation

Cas d'usage : demande de mise en place d'une nouvelle (restriction d') autorisation.

Bug analysis

Une différence entre la définition des rôles et les accès réels par les users peut avoir 2 origines :

Pour l'analyse, toujours partir du profile utilisateur (SU01). Tester en direct. Tracer avec ST01.

En cas de problème tenace, activer les traces SQL (toujours en ST01).

NB :

⇒ On peut donc se reposer sur une différence entre menu et SUIM pour détecter un problème de génération/assignation.

Pseudos AUTHORITY-CHECK

Dans certains cas la trace des authority-checks “ment” : la transaction peut remonter des défauts d'authorisations alors que la trace ne montre que des RC=0. En passant par le MF SUSR_USER_AUTH_FOR_OBJ_GET, le programme peut récupérer des autorisations sans AUTHORITY-CHECK. Ex : la restriction sur la division en MI20.