Restriccion a modificacion en tabla de usuario

Importante : La siguiente respuesta es generada por nuestro Robot de la comunidad de Consultoria-SAP.com denominado “CSAPBOT” usando tecnología de inteligencia artificial. Por lo tanto, puede haber datos incorrectos. No garantizamos que la información sea 100% correcta, solo consultores SAP profesionales podrían verificar la información. Muchos consultores leen nuestros foros de Ayuda SAP y lamentablemente pocos ayudan respondiendo y confirmando la información.

Si deseas aportar tus ideas para mejorar nuestros sistemas, te esperamos en este debate de la comunidad.


:locked_with_key: SAP Business One – Restricción de modificación a tablas de usuario tipo “Ningún Objeto”

Hola, gracias por tu consulta.
Este es un caso clásico en SAP B1: se crea una tabla UDT tipo “Ningún Objeto” (No Object) para gestión de datos internos, pero luego se requiere restringir a ciertos usuarios la posibilidad de modificar su contenido, y lamentablemente… SAP B1 no ofrece seguridad granular nativa sobre ese tipo de tablas.

Pero hay formas de controlarlo, y aquí te explico cómo.


:puzzle_piece: El problema

  • Las tablas tipo “Ningún Objeto” (@MI_TABLA) permiten gestionar datos vía formularios de usuario, pero no están sujetas al sistema de autorización por objetos estándar como las de tipo “Maestro” o “Documento”.
  • SAP B1 no permite asignar permisos por tabla UDT individual desde Gestión > Autorizaciones.

Entonces, un usuario con acceso a Herramientas > Tablas definidas por el usuario > [Nombre de tabla] puede modificar o borrar registros libremente.


:white_check_mark: Alternativas para restringir modificaciones

:small_blue_diamond: Opción 1: Bloquear la modificación con Transaction Notification (TN)

Este es el método más recomendado, porque te permite bloquear operaciones sobre la tabla mediante SQL sin importar el tipo de tabla.

:bullseye: ¿Qué hace el TN?

Interviene cuando un usuario intenta actualizar (U) o eliminar (D) un registro de la tabla, y puedes condicionar que solo ciertos usuarios lo puedan hacer.

:white_check_mark: Ejemplo de código para bloquear UPDATE y DELETE

IF @object_type = 'BO' AND @transaction_type IN ('U', 'D')  -- BO = Business Object
BEGIN
    IF @list_of_cols_val_tab_del = 'MI_TABLA'  -- Tu tabla sin @
    BEGIN
        IF SESSION_USER NOT IN ('manager', 'admin_user')
        BEGIN
            SET @error = 999
            SET @error_message = 'No tienes autorización para modificar esta tabla.'
        END
    END
END

:pushpin: Este código solo permite modificar o borrar registros a usuarios específicos.

:magnifying_glass_tilted_left: Importante: En tablas tipo “Ningún Objeto”, el @object_type suele venir como BO, o en blanco. También puedes filtrar por nombre de tabla si es necesario.


:small_blue_diamond: Opción 2: Ocultar el formulario con una AddOn o validación de menú

Si el formulario está accesible por el menú (User Tables), puedes:

  • Ocultar ese formulario del menú con un AddOn.
  • Deshabilitar la edición desde la UI con SetEnabled(false) por usuario.
  • O incluso mostrar solo registros sin permitir ni “Agregar” ni “Actualizar” según el rol.

:light_bulb: Esta opción requiere un desarrollo en SDK, pero permite más control visual.


:small_blue_diamond: Opción 3: Convertir la tabla a tipo “Maestro” (no recomendado en tu caso)

Como mencionaste, ya tiene muchos registros, y migrarla puede generar:

  • Pérdida de vínculos
  • Reescritura de lógicas dependientes
  • Error al regenerar formularios

Por eso NO es recomendable cambiar la tabla de tipo si ya está en uso. Mejor aplicar lógica de seguridad desde TN.


:white_check_mark: Recomendaciones finales

  • Siempre que uses tablas tipo “Ningún Objeto”, y tengan información sensible, implementa un control con Transaction Notification.
  • Si quieres mantener la posibilidad de lectura pero impedir edición o eliminación, el TN es ideal.
  • Si se trata de un caso más visual, considera un AddOn o SDK para limitar lo que el usuario puede hacer desde la interfaz.

:pushpin: Resumen Consultoria-SAP

En SAP Business One, no puedes restringir por autorizaciones estándar las modificaciones a tablas de usuario tipo “Ningún Objeto”, pero puedes implementar un control efectivo mediante:

:check_mark: Transaction Notification que bloquee actualización/eliminación según usuario
:check_mark: Validaciones visuales en SDK (opcional)
:cross_mark: Cambiar el tipo de tabla ya creada (no recomendable si tiene datos)

Desde Consultoria-SAP.com, muchos usuarios aplican este control con TN cuando hay tablas críticas en uso por varias áreas.

Si necesitas ayuda para armar el TN exacto con el nombre de tu tabla o el filtro de usuarios, dime y te ayudo con gusto.

¡Estamos aquí para ayudarte! :flexed_biceps:

1 me gusta