
LECCION 6 – Chequeos de Autorización: SU21 permiten validar si un usuario tiene los permisos para ver, crear o modificar un objeto especifico en el sistema.
· Permiten proteger los datos críticos del sistema de accesos no autorizados.
· Los permisos son otorgados por el Administrador del Sistema SAP.
· SU21: transacción para administrar los objetos de autorización
· Existen 3 módulos de Funciones que permiten saltar los chequeos de autorizaciones que posee la transacción. Se les debe desmarcar el autority check.
o TRANSACCION_CALL_VIA_RFC
o C160_TRANS_CALL
o RS_HDSI_CALL_TC_VARIANT
· Los objetos de autorización disponibles se encuentran en las transacciones SU20 y SU21. Mediante la primera podremos buscar por campo/elemento de datos los objetos disponibles.
Los objetos de autorización se encuentran agrupados en la transacción SU21 por clases, por lo que si deseamos crear un objeto de autorización nuevo, deberemos utilizar una clase existente en el sistema o crear una nueva clase.
Los pasos para crear un chequeo de autorización son los siguientes:
· Creamos en la transacción SU20 un ámbito de autorización (elemento de dato) que luego usaremos en el objeto.
· Creamos la clase de autorización en la transacción SU21 y luego posesionándonos en la clase recién creada y elegimos el nombre del objeto y ponemos el campo creado en el primer paso.
· Definimos los valores posibles de nuestro campo definido y el BASIS o Administrador del sistema asignará a los roles de los usuarios el objeto de autorización creado y pondrá los valores de cada usuario.
· Finalmente introducimos el código fuente del programa ABAP con la sentencia AUTHORITY-CHECK.
Código Ejemplo:
REPORT demo_authorithy_check.
PARAMETERS pa_carr TYPE sflight-carrid.
DATA wa_flights TYPE demo_focc.
AT SELECTION-SCREEN.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD pa_carr
ID 'ACTVT' FIELD '03'.
IF sy-subrc = 4.
MESSAGE e045(sabapdocu) WITH pa_carr.
ELSEIF sy-subrc <> 0.
MESSAGE e184(sabapdocu) WITH text-010.
ENDIF.
START-OF-SELECTION.
SELECT carrid connid fldate seatsmax seatsocc
FROM sflight
INTO CORRESPONDING FIELDS OF wa_flights
WHERE carrid = pa_carr.
WRITE: / wa_flights-carrid,
wa_flights-connid,
wa_flights-fldate,
wa_flights-seatsmax,
wa_flights-seatsocc.
ENDSELECT.