Massenhaft Berechtigungsinformationen auf abgeleitete Rollen übertragen

Das Prinzip der Rollenableitung ist bei größeren SAP Installationen natürlich Standard. Bei Rollenanpassungen der "Master-Rollen" müssen die Berechtigungsinformationen immer auf die abgeleiteten Rollen übertragen werden. Dieser Prozess wird manuell nach der Rollenanpassung aus der Transaktion PFCG angestoßen. 

Wird dieser Vorgang vergessen wurde zwar die Master-Rolle angepasst und auch ggfls. transportiert, jedoch hat die keine Auswirkung auf die abgeleiteten und vergebenen Rollen. Ein kleiner Report kann hier gerade während der Implementierungsphase eines Berechtigungskonzeptes helfen und die Rollenableitung in der Massenverarbeitung anstoßen. Der Report verwendet den Standard-Funktionsbaustein SUPRN_TRANSFER_AUTH_DATA der ebenfalls aus der Transaktion PFCG verwendet wird. Jedoch ist es nicht nötig jede einzelne Rolle in der Transaktion aufzurufen und die Ableitung zu starten sondern dies kann bequem durch Selektion im Report vorgenommen werden. Sollte es während der Verarbeitung zu Fehlern kommen, dass z.B. eine Rollenableitung nicht aktualisiert werden kann, erfolgt die Rückmeldung direkt in einem Dialog (via Popup).

DATA: gv_role      TYPE agr_define-parent_agr,
      gt_agrs      TYPE TABLE OF agr_1016,
      gt_prot      TYPE TABLE OF agr_define,
      gr_table     TYPE REF TO    cl_salv_table,
      gr_functions TYPE REF TO cl_salv_functions_list,
      gr_layout    TYPE REF TO cl_salv_layout,
      gs_key       TYPE salv_s_layout_key,
      gr_cols      TYPE REF TO cl_salv_columns,
      gr_col       TYPE REF TO cl_salv_column.


**********************************************************************
* Selektionsbildschirm
SELECT-OPTIONS: so_roles FOR gv_role.

START-OF-SELECTION.

SELECT * FROM agr_1016 INTO TABLE gt_agrs
  WHERE agr_name IN so_roles.

**********************************************************************
* jetzt die Rollenableitung anstoßen
LOOP AT gt_agrs ASSIGNING FIELD-SYMBOL(<gs_agrs>).
  CALL FUNCTION 'SUPRN_TRANSFER_AUTH_DATA'
    EXPORTING
      top_activity_group = <gs_agrs>-agr_name
      generate_profiles  = 'X'.
ENDLOOP.

**********************************************************************
* für das Protokoll noch die Ableitungsbeziehung aus der Tabelle
* agr_define auslesen
SELECT * FROM agr_define INTO TABLE gt_prot
  WHERE parent_agr IN so_roles.

* ALV für das Protokoll erzeugen
CALL METHOD cl_salv_table=>factory
  IMPORTING
    r_salv_table = gr_table
  CHANGING
    t_table      = gt_prot.

**********************************************************************
* ALV noch aufbereiten und anzeigen
gr_functions = gr_table->get_functions( ).
gr_functions->set_all( ).
gs_key-report = sy-repid.
gr_layout = gr_table->get_layout( ).
gr_layout->set_key( gs_key ).
gr_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).
gr_table->display( ).