Estimados Foristas como están, espero que tengan un buen día. Consulto saben si se puede hacer una restricción a nivel de NT para que un usuario no pueda modificar el contenido de una tabla de usuario de tipo Ningún Objeto?, lamentablemente esta tabla ya tiene muchos registro por lo cual es complicado volver a crear y cambiar el tipo.
Saludos
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.
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.
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.
Alternativas para restringir modificaciones
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.
¿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.
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
Este código solo permite modificar o borrar registros a usuarios específicos.
Importante: En tablas tipo “Ningún Objeto”, el
@object_type
suele venir comoBO
, o en blanco. También puedes filtrar por nombre de tabla si es necesario.
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.
Esta opción requiere un desarrollo en SDK, pero permite más control visual.
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.
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.
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:
Transaction Notification que bloquee actualización/eliminación según usuario
Validaciones visuales en SDK (opcional)
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!