Chequeos de Autorización
Son objetos de SAP que permiten proteger los datos críticos del sistema de los accesos sin autorización.
La sentencia de los chequeos de autorización valida si el usuario tiene autorización para acceder a los datos. Estos permisos son asignados por el administrador del sistema SAP, para ello se accede a la transacción SU21 que es la que permite administrar los objetos de autorización.
Los objetos de autorización se encuentran agrupados por clases, para crear una clase se presiona el botón derecho del ratón y selecciona Create Object Class. Luego de crear la clase, presionando el botón derecho del ratón y seleccionando la opción Create Authorization Object se crea el objeto de autorización.
Veamos la clase estandar BC_C y particularmente el objeto S_CARRID, aquí vemos la configuración del objeto de autorización, queda asignado el campo CARRID que es el código de la línea aerea y el campo de actividades que nos permite identificar la acción a realizar. Si clickeamos en las actividades permitidas vemos que está permitido crear cambiar y visualizar los datos.
Ahora veamos el autorization fields. carrid que forma parte del objeto de autorización s_carrid, para ello en la transacción SU20 vamos a buscar el campo CARRID , visualizamos el campo y vemos que pertenece a la ayuda de búsqueda s.carrier_id. Si ejecutamos el Autorization Fields no encontraremos valores debido a que la ayuda de búsqueda se alimenta de la tabla SCARR que no tiene datos cargados .
Ahora vamos a hacer una referencia de utilización para hacer el programa de prueba en donde se utiliza el objeto de autorización s_carrid. Este programa tiene una pantalla de selección donde se ingresa un código de compañía aerea, luego se valida si el usuario que ejecuta tiene autorización para visualizar los datos de esta compañía aerea. En caso negativo se emite un mensaje de error y se termina el procesamiento. En caso positivo se permite el acceso a los datos.
Vamos a poner un breakpoint y ejecutamos el programa, aquí ingresamos un código cualquiera de compañía aerea y ejecutamos. Ejecutamos la sentencia Autority Check y vemos que el SY-SUBRC 0 por lo que indica que tenemos permiso de visualización de los datos. Si ejecutamos de nuevo el programa y cambiamos por debuger el valor sy-subrc para simular no tener autorización, visualizamos en pantalla el mensaje de error que se produce por no tener autorización al dato
Existen 3 modulos de funciones que permiten ejecutar una transacción saltando los chequeos de autorización que posee la transacción, estos son:
- La llamada a la función TRANSACTION_CALL_VIA_RFC pasando en el parámetro TCODE la transacción ejecutada
- La llamada a la función C160_TRANSACTION_CALL pasando en el parámetro I_TCODE la transacción ejecutada
- La llamada a la función RS_HDSYI_CALL_TC_VARIANT pasando en el parámetro TCODE la transacción ejecutada Y desmarcando el flag de AUTHORITY CHECK