Modelo de autorización en Salidas de mercancías

Hola a todos,

Estoy implementando un modelo de autorización mediante una consulta. Necesito que las salidas de mercancía de inventario que pertenecen al almacén 10 requieran autorización. Estoy probando con la siguiente consulta, pero no activa la autorización; la salida de mercancía se crea sin pasar por el proceso de autorización.

IF (SELECT $[IGE1.WHSCODE.NUMBER]) = ‘10’ SELECT ‘TRUE’

Muchas gracias de antemano.

¡Hola! Es un buen enfoque utilizar una consulta SQL para implementar el modelo de autorización en SAP Business One, sin embargo, tu consulta tiene algunos problemas que están impidiendo que se active la autorización. Voy a ayudarte a ajustarla.

Correcciones en la Consulta de Autorización

  1. Formato de la Consulta:
    La estructura que estás utilizando no es del todo correcta para activar la autorización en SAP Business One. Para este tipo de autorizaciones, se recomienda utilizar una consulta que devuelva 1 o TRUE en caso de cumplir la condición.

  2. Uso de Campos en la Consulta:
    Asegúrate de que el campo $[IGE1.WHSCODE] esté correctamente identificado. En este caso, $[IGE1.WHSCODE] hace referencia al código de almacén en la línea del documento de salida de mercancía. También es importante asegurarse de que el campo se llama exactamente WHSCODE, porque los nombres pueden variar según las personalizaciones.

Consulta Corregida

Prueba con la siguiente consulta ajustada:

SELECT CASE WHEN EXISTS (
    SELECT 1 
    FROM IGE1 
    WHERE DocEntry = $[$1.0.0] 
      AND WHSCODE = '10'
) THEN 'TRUE' ELSE 'FALSE' END

Explicación de la Consulta

  • La consulta verifica si alguna línea de la salida de mercancía (IGE1) tiene el almacén 10 (almacén que requiere autorización).
  • DocEntry = $[$1.0.0]: Este código toma el número de documento que se está creando para verificar las líneas correspondientes.
  • WHSCODE = '10': Este es el código de almacén que se está verificando. Cambia '10' si el código del almacén es diferente.

Cómo Configurar la Autorización en SAP Business One

  1. Ve a Gestión > Inicialización de sistema > Autorizaciones > Procedimientos de autorización.
  2. Crea un nuevo procedimiento de autorización y asigna el documento Salida de mercancía de inventario.
  3. En el campo de consulta de autorización, pega la consulta SQL ajustada.
  4. Define las personas o usuarios que deben autorizar el documento cuando se cumpla la condición.

Consideraciones

  • Ejecución de la Autorización en cada Línea: Si necesitas que la autorización se active únicamente si todas las líneas están en el almacén 10, modifica la consulta para contar el total de líneas en el documento y asegúrate de que todas correspondan al almacén 10.

  • Pruebas: Antes de implementar la consulta en producción, realiza pruebas en un ambiente de desarrollo o de pruebas para asegurarte de que el comportamiento es el esperado.

Resumen Consultoria-SAP

La consulta para activar la autorización en una salida de mercancía cuando el almacén es 10 se ajusta utilizando DocEntry y una estructura que devuelva TRUE si la condición se cumple. Configura este modelo en los procedimientos de autorización de SAP Business One y realiza pruebas para verificar su funcionamiento.

¡Estamos aquí para ayudarte en Consultoria-SAP.com!

@csapBot por que no exististe antes!! :star_struck:

2 Me gusta

He probado lo que mencionas y me genera el siguiente error

1). [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near ‘$1.0.0’. 2). [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Statement ‘’ (ECM2) (s) could not be prepared.

El error que estás recibiendo se debe a que SAP Business One y SQL Server tienen una sintaxis específica para referirse a los valores en una consulta de autorización, y el símbolo "$[$1.0.0]" no es reconocido en una consulta SQL estándar de SQL Server.

En SAP Business One, cuando usas consultas en el contexto de autorizaciones, debes referenciar los valores de los campos con el formato correcto y de acuerdo con los placeholders que utiliza SAP Business One.

Para lograr tu objetivo de condicionar la autorización con base en el almacén, te comparto una solución que funciona en el contexto de autorizaciones en SAP Business One:

Sintaxis Correcta para la Consulta de Autorización en SAP Business One

En el contexto de una consulta de autorización, SAP Business One espera que uses placeholders para obtener los valores de los campos directamente. En este caso, puedes simplificar la consulta sin usar EXISTS y empleando el placeholder de línea directamente.

Prueba con el siguiente código:

SELECT 
    CASE WHEN $[IGE1.WhsCode] = '10' THEN 'TRUE' ELSE 'FALSE' END

Explicación de la Consulta

  1. $[IGE1.WhsCode]: Este placeholder obtiene el valor del campo WhsCode (código de almacén) directamente desde la línea de documento en la transacción de salida de mercancía (IGE1).
  2. Condición Simple: La consulta verifica si el valor de WhsCode es igual a '10'. Si es así, devuelve 'TRUE', lo que activará la autorización. Si no, devuelve 'FALSE', permitiendo que el proceso continúe sin autorización adicional.

Consideraciones Adicionales

  • Usa el Placeholder Correcto: Asegúrate de utilizar el formato $[Tabla.Campo] directamente en SAP Business One cuando construyas consultas para autorizaciones.
  • Verifica en el Escenario de Autorización: Configura esta consulta en tu procedimiento de autorización para que aplique cuando el campo WhsCode sea '10' en la salida de mercancía.

Resumen Consultoria-SAP

La sintaxis de placeholders en SAP Business One permite referenciar campos directamente en las consultas de autorización. Con el ajuste que te proporcioné, puedes condicionar la autorización para que se active solo cuando el almacén sea '10' en una salida de mercancía. Prueba esta consulta en tu sistema y verifica que se active la autorización correctamente.

Si tienes alguna otra duda, ¡estamos aquí para ayudarte!