Truco 5. Exit de logon para control de accesos.


Otra funcionalidad de Sap que os puede ser útil para personalizar el sistema es la User-exit que nos dejan disponible para realizar comprobaciones o implementar comportamientos personalizados una vez el usuario ha introducido sus datos de acceso al sistema, antés de mostrar el menú.

En la nota 37724 se explica que, a través de la ampliación SUSR0001, podemos añadir chequeos adicionales al logon de usuario. Podeís ver la documentación de la exit a través de la transacción SMOD (eso si, entrando al sistema en Ingles). Se recomienda no incluir demasiados ventanas de dialogo al usuario.

Antes de explicaros con un ejemplo práctico como configurar la funcionalidad, vamos a detallar algunos casos donde nos puede interesar tener activada y configurada esta exit:

  • Restricción de acceso al sistema: en determinadas circunstanciás (instalación de parches, ejecución de algunos procesos masivos, etc), nos puede interesar bloquear el acceso al sistema a la mayoria de usuarios (excepto algunos), para evitar inconsistencias en los datos. Aunque podríamos bloquear a los usuarios via transacciones SU01/SU10, con la exit podemos establecer un metodo de bloqueo más rapido (incluyendo tablas de control, donde poner, por ejemplo, si el sistema esta cerrado o no, a que usuarios no les afecta el bloqueo, etc).
  • Envio de mensajes personalizados: aunque a través de la transacción SM02 podemos introducir mensajes de sistema que son visibles por todos los usuarios cuando se conectan, es posible que tengamos que afinar un poco más,y que los mensajes solo sean para determinados grupos de usuarios (incluso podemos leer de los datos de clasificación de los usuarios que se hayan introducido en la SU01 para enviar estos mensajes por departamento, funciones, localización geográfica, etc). Los datos de usuario los tenemos en la tabla USR02, etc (los podemos leer directamente o con la badi BAPI_USER_GET_DETAIL).
  • Registro de información de auditoria: aunque el sistema Sap se guarda su propia información de control (que se puede ampliar a través del audit), nos puede interesar registrar nuestra propia información en tablas Z para controles o registro de información de uso.

Para poder activar la funcionalidad en el sistema, deberemos de realizar los siguientes pasos:

  • Creación de un proyecto de ampliación: a través de la transacción SMOD. Indicaremos una descripción y las ampliaciones incluidas (en este caso, la SUSR0001).

  • Creación del código Abap personalizado: en la imagen podemos ver que la ampliación lleva asociado el módulo de función EXIT_SAPLSUSF_001.  Podemos acceder a el desde la SMOD o bien desde la transacción SE37. El módulo incluye una llamada al include ZXUSRU01 . Este include no existe y lo tendremos que crear para incluir nosotros en el toda la programación necesaria según el tipo de acciones que queramos realizar.
  • Activación de la exit: una vez activada, la exit será validada y transportada al sistema productivo para su puesta en marcha.

EJEMPLO PRACTICO: RESTRICCION DEL ACCESO AL SISTEMA BAJO DEMANDA.

Vamos a implementar un sistema de control de accesos al sistema que se ejecutará bajo demanda. Tendrá por detras dos tablas de parametrización en las que se indicara: si el acceso restringido al sistema esta activo o no (en la tabla ZLOGON) y los usuarios para los que el acceso restringido no es efectivo (tabla ZLOGON_USERS).

Una vez llenado el contenido de las tablas, creamos el include ZXUSRU01 donde introducimos la lógica de control de la exit:

*&---------------------------------------------------------------------*
 *&  Include           ZXUSRU01
 *&---------------------------------------------------------------------*
 TABLES: ZLOGON, ZLOGON_USERS.

 * Recupero de la tabla de control si el logon estan restringido en el momento actual
 clear zlogon.
 SELECT SINGLE * FROM  ZLOGON WHERE ACTIVO = 'X'.
 if sy-subrc eq 0.
 * Si el logon esta activo, reviso que el usuario este entre los no restringidos.
   SELECT single * FROM  ZLOGON_USERS
          WHERE  USUARIO  = sy-uname.
   if sy-subrc ne 0.

 *Muestro un popup al usuario para informar de la situacion.
         CALL FUNCTION 'POPUP_TO_INFORM'
           EXPORTING
             TITEL         = 'ACCESO RESTRINGIDO AL SISTEMA'
             TXT1          = 'EL SISTEMA NO SE ENCUENTRA DISPONIBLE ACTUALMENTE'
             TXT2          = 'CONSULTE AL ADMINISTRADOR'.
 *           TXT3          = ' '
 *           TXT4          = ' '
                .
 * Cancelo la entrada al sistema del usuario.
      call 'SYST_LOGOFF'.
 * Si el usuario esta autorizado, le dejo entrar, pero le muestro un mensaje informativo
   else.
      message i008(zsistemas) with 'Acceso al sistema restringido' 'Exit de ZLOGON activada'.
   endif.
 endif.

En el caso de que hayamos activado el control (introduciendo un registro en la tabla ZLOGON con el valor ‘X’), nos aparecerá el siguiente dialogo cuando intentemos entrar al sistema.

Este es un ejemplo muy sencillo de lo que se puede hacer con la exit. Podriamos haberlo complicado estableciendo periodos de validez (fecha/hora) para los que el bloqueo esta activo, bloqueos por sistema o por mandante, tabla de parametrización de mensajes a mostrar según el tipo de bloqueo. Al tratarse de código Abap, se puede personalizar hasta donde nos haga falta.

Esta entrada fue publicada en Sap Basis. Guarda el enlace permanente.

2 respuestas a Truco 5. Exit de logon para control de accesos.

  1. Pingback: Truco 7. Uso de User-exits para verificaciones en datos maestros. « Notas y trucos SAP (Bitacora)

  2. GBruges dijo:

    Buenos días.

    Excelente publicación, pero cuando implemento el exit, ya el logon del usuario se ha realizado. Cuando me aparece el popup puedo generar un modo con el icono de la esquina superior izquierda, y de esta manera saltarme la validación. Alguien sabe como bloquear ese evento dentro de un programa ABAP.

    agradezco sus comentarios.

    Saludos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s