✒️ABAP Los chequeos de autorización
ABAP Los chequeos de autorización
Vídeo - Los Chequeos de Autorización
1 Los Chequeos de Autorizacíon
A continuación vemos un vídeo donde se explica el concepto de los Chequeos de Autorización, mediante los cuales se valida que un usuario tenga autorización para visualizar, modificar o crear un objeto determinado en el sistema.
Vemos qué son los Chequeos de Autorización y cómo y por qué utilizarlos.
Son objetos de SAP que nos permiten proteger los datos críticos del sistema de los accesos sin autorización. La sentencia Authority-Check valida si el usuario tiene autorización para acceder a los datos. Estos permisos son asignados por el administrador del sistema SAP.
A través de la transacción SU21 que nos permite administrar los objetos de autorización. Los objetos de autorización se encuentran agrupados por clases. Para crear una clase, pulsamos con el botón derecho del ratón y seleccionamos la opción "Create Object Class". Después de crear la clase, la seleccionamos y con el botón derecho elegimos "Create Authorization Object" creamos el objeto de autorización.
Si visualizamos la clase estándar BC_C (Basis-Developmen Environment), comprobamos que tiene muchas clases de autorización creadas. Si seleccionamos por ejemplo el objeto S_CARRID (Authorization Object for Airlines), podemos ver la configuración del objeto de autorización. Vemos que tiene asignados los campos CARRID (Airline Code) y ACTVT (Activity). Si pulsamos en el botón de actividades permitidas (Permitted Activities), nos muestra una ventana con la lista de acciones que se permiten sobre estos campos, en las cuales están marcadas: Create or generate, Change y Display.
Si volvemos a la lista de objetos de autorización y vamos al menú "Environment >> Authoriz. Fields #", nos lleva a la lista de campos de autorización (también se puede acceder por la transacción SU20). Si buscamos el campo CARRID en la lista y visualizamos la línea que nos muestra con el campo CARRID y su relación con el Data Element S_CARR_ID, nos lleva a una pantalla en la que vemos información sobre el objeto. Por ejemplo que pertenece a la ayuda de búsqueda S_CARRIER_ID y a la tabla de valores SCARR Si en esta ventana ejecutamos este Authorization Field (F8 o el botón), no encontraremos valores debido a que la ayuda de búsqueda se alimenta de la tabla SCARR que no tiene valores cargados.
Para ver dónde se utiliza un objeto de autorización, en la lista de las clases de autorización para el objeto, visualizamos el S_CARRID (doble clic), y pulsamos sobre el botón referencia de autorización y buscamos. Nos muestra la lista de los programas en los cuáles es utilizado. SI seleccionamos uno de ellos (DEMO_AUTHORITY_CHECK), vemos que el programa tiene una pantalla de selección donde se ingresa un código de compañía aérea, y luego se comprueba si el usuario que ejecuta tiene autorización para visualizar los datos de esta compañía aérea. Esto se realiza con el código de verificación, el cual también puede generarse utilizando la opción de Insertar patrón modelo al igual que en las llamadas a funciones, informando en este campo la opción de AUTHORITY-CHECK:
AT SELECTION-SCREEN
AUTHORITY-CHECK OBJECT 'S-CARRID'
ID 'CARRID' FIELD pa_carr
ID 'ACTVT' FIELD '03'
IF sy-subrc = 4
MESSAGE ...
ELSEIF sy-subrc <> 0
MESSAGE ...
END-IF
START-OF-SELECTION
...
De esta forma, si el usuario no tiene autorización se da un mensaje y se finaliza el tratamiento. En caso contrario, si el usuario dispone de autorización se permite el acceso a los datos.
Si ponemos un breakpoint en la instrucción anterior y ejecutamos el programa, al introducir en la pantalla un código de compañía aérea cualquiera, el sistema lanzará el debugger para el breakpoint de la sentencia AUTHORITY-CHECK. Esta se ejecutará y nos devuelve un SY-SUBRC=0, lo que indica que sí tenemos permisos para la visualización de los datos. Si el resultado hubiera sido distinto, el sistema nos mostraría un mensaje de error indicando que no tenemos autorización de acceso al dato.
Audio: Existen 3 módulos de funciones que nos permiten ejecutar una transacción saltando los chequeos de autorización que posee la transacción. Estos módulos de función son los siguientes:
- TRANSACTION_CALL_VIA_RFC pasándole en el parámetro "tcode" la transacción a ejecutar.
- C160_TRANSACTION_CALL pasándole en el parámetro "i_tcode" la transacción a ejecutar.
- RS_HDSYI_CALL_TC_VARIANT, psaándole en el parámetro "tcode" la transacción a ejecutar, y además hay que desmarcar el flag de "AUTHORITY-CHECK".
 
 
 
Agradecimiento:
Ha agradecido este aporte: Ingrid Osorio
Favorito:
Está publicación ha sido agregada a sus favoritos por: Lorena Amoretti
Sobre el autor
Publicación académica de Jos? Antonio Saavedra Rodr?guez, en su ámbito de estudios para la Carrera Consultor ABAP.
Jos? Antonio Saavedra Rodr?guez
El Salvador - Legajo: SX28V
✒️Autor de: 166 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor en SAP SD Nivel Avanzado
- Carrera Consultor en SAP SD Nivel Inicial