Importante
La siguiente respuesta es generada por nuestro Robot AI de Consultoria-SAP denominado “CSAPBOT” usando tecnología de IA -inteligencia artificial. Por lo tanto, puede haber datos incorrectos. No podemos garantizar que la información sea 100% correcta, solo consultores SAP profesionales y usuarios del sistema podrían verificar la información. ¿Te animas a hacerlo? ¿Aceptas el reto? Puedes responder este debate si sigue abierto!
Si quieres aprender más sobre nuestros sistemas con AI, te esperamos en este artículo.
Gracias por compartir tu escenario con tanto detalle, es muy claro lo que buscas lograr en SAP Business One sobre HANA: implementar un modelo de autorización condicionado para evitar emisiones de producción desde almacenes no autorizados.
ADVERTENCIA
Modificar o intervenir con lógica de validación directamente sobre documentos de inventario puede provocar bloqueos o errores si no se maneja correctamente. Es fundamental probar en un ambiente de desarrollo antes de aplicar cualquier validación en productivo, ya que un error podría impedir operaciones críticas del sistema.
Objetivo técnico
Validar que:
-
Si se trata de un documento de tipo “Emisión para producción” (detectado por OIGE."JrnlMemo")
-
Y si el almacén de la línea activa NO es uno de los permitidos (por ejemplo, BOD3 y BOD5)
-
Entonces se dispare una solicitud de autorización
Solución propuesta
En SAP Business One, para realizar validaciones de este tipo dentro del sistema de autorizaciones, puedes usar una Consulta de Autorización (Query Approval) con lógica SQL que devuelva 'True' o 'False'.
El punto clave es cómo capturar el valor del JrnlMemo en el momento de creación del documento, ya que ese campo se rellena por el sistema en algunos escenarios, y no necesariamente es visible desde los formularios de usuario en tiempo real.
Dado que estás validando en tiempo de entrada de datos, puedes utilizar el valor del formulario ($[$......]) en conjunto con el almacén.
Consulta sugerida
SELECT
CASE
WHEN $[$13.15.1] IN ('BOD3', 'BOD5')
AND $[$38.1.0] = '59' -- Código de transacción "Emisión para producción"
THEN 'False' -- No requiere autorización
ELSE 'True' -- Solicita autorización
END
FROM DUMMY;
Explicación:
-
$[$13.15.1] es el código del almacén desde la línea del documento.
-
$[$38.1.0] representa el tipo de documento. El valor '59' representa “Emisión para producción” en la tabla OIGE. Puedes confirmar esto revisando los valores en tu sistema.
-
Si la transacción es una emisión para producción y el almacén NO es BOD3 o BOD5, entonces se requiere autorización.
Si tu sistema no permite capturar el código de documento directamente con $[$38.1.0], puedes considerar una combinación con validación del título del formulario o mediante un campo UDF si fuese necesario.
Alternativas y buenas prácticas (Consultoria-SAP)
-
También podrías considerar usar validaciones en Transaction Notification para escenarios más complejos. Pero cuidado: esto actúa a nivel de base de datos y no dispara autorizaciones, solo puede bloquear.
-
Para mayor control y trazabilidad, podrías crear un UDF en el documento que indique el tipo de operación (por ejemplo: “Es emisión para producción”) y condicionar la autorización a ese campo, con actualización automática vía SP_TransactionNotification o script B1IF si usas integraciones.
Resumen Consultoria-SAP — En SAP Business One (HANA), puedes usar una consulta de autorización que combine validación de almacén por línea y tipo de operación, utilizando variables del formulario. Esto permite controlar emisiones de producción según el almacén de origen, apoyando los procesos de control logístico en módulos de INV y PROD.
¡Estamos aquí para ayudarte en los Foros SAP de Consultoria-SAP!