Orden de ventas error sql server

:heavy_heart_exclamation: Importante :exclamation: La siguiente respuesta es generada por nuestro Robot de Consultoria-SAP.com 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 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 quieres aprender más y mejorar nuestros sistemas, te esperamos en este artículo.


Hola, gracias por compartir tu escenario. Estás trabajando en SAP Business One (SAP B1) y el error que mencionás es un clásico de SQL Server cuando una subconsulta devuelve más de un valor en contextos donde solo se espera un único resultado.

El mensaje de error:

[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión.

Se produce porque en algún punto una de tus búsquedas formateadas (BF o FMS) está devolviendo más de un registro, y eso SQL no lo puede manejar si estás esperando un solo valor escalar.


:mag: Análisis de las búsquedas formateadas que compartiste:

Has mencionado 3 búsquedas:

  1. SELECT TOP 1 T0.[U_TIPO_VTA] FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0.0]

  2. SELECT TOP 1 T0.U_JA_CANAL FROM OCRD T0 WHERE T0.CardCode = $[ORDR.CardCode]

  3. SELECT TOP 1 T0.U_JA_SUBCANAL FROM OCRD T0 WHERE T0.CardCode = $[ORDR.CardCode]

Estas búsquedas acceden a la tabla de clientes (OCRD) y se filtran por CardCode, lo cual en condiciones normales debería devolver solo un registro, ya que CardCode es clave primaria y no puede haber duplicados.

Entonces… ¿por qué se da el error?


:brain: Posibles causas:

  1. **El error no viene directamente de las búsquedas que compartiste sino de otra búsqueda formateada adicional (u otra lógica) que no estás viendo o no se está ejecutando en las primeras 20 líneas, pero sí cuando cargás las 64.

  2. El mensaje menciona explícitamente:

    'Información de sociedad GL’ (CINF) (CINF)
    Esta no parece referirse a OCRD sino a alguna tabla de configuración o add-on llamado CINF.
    En algunas localizaciones o desarrollos propios, CINF puede contener lógica adicional o BF activadas por UDFs que vos no estás viendo. Te sugiero revisar si hay búsquedas formateadas sobre campos UDF en ORDR, RDR1 u otros objetos del documento.

  3. Falta de TOP 1 o WHERE mal definido en otra búsqueda:
    Puede haber una BF con subconsulta que no usa TOP 1 o está mal parametrizada (por ejemplo, sin filtro por DocEntry o CardCode). Esa es la que devuelve múltiples valores y genera el fallo.


:white_check_mark: Qué hacer ahora

Te dejo algunas acciones concretas que podés seguir:

  1. Revisá TODAS las búsquedas formateadas asociadas al documento de ventas (ORDR y RDR1). Desde SAP B1, podés usar:

    • Menú: Herramientas > Consultas > Búsquedas Formateadas > Gestión de búsquedas formateadas
    • Filtrá por ORDR y RDR1 para ver qué campos tienen fórmulas asignadas.
  2. Si estás usando un add-on o desarrollo propio (por ejemplo, si CINF es una tabla personalizada), revisá si tiene eventos o validaciones que ejecuten SQL con subconsultas.

  3. Si no encontrás la búsqueda responsable, activá el log de eventos (Event Logger) del cliente SAP para capturar qué BF se ejecutan y en qué orden.

  4. Probar en entorno de pruebas con una nota de venta exactamente igual pero sin búsquedas formateadas activas, e ir activándolas de a una para identificar cuál genera el error.


:stop_sign: Si vas a modificar una BF:

Asegurate de que toda búsqueda formateada retorne un solo valor escalar. Si querés estar seguro, siempre usá TOP 1 + ORDER BY para garantizarlo:

SELECT TOP 1 T0.[U_TIPO_VTA] 
FROM OCRD T0 
WHERE T0.[CardCode] = $[$4.0.0]
ORDER BY T0.CreateDate DESC

Esto puede ayudarte a evitar futuros errores si por alguna razón el sistema replica datos o genera copias temporales.


:spiral_notepad: Resumen Consultoria-SAP

El error que mencionás al crear una nota de ventas en SAP Business One se debe a una subconsulta SQL mal diseñada en alguna búsqueda formateada (FMS), probablemente distinta de las 3 que compartiste, ya que esas operan sobre campos únicos (CardCode). El mensaje señala a CINF, lo cual sugiere una posible BF sobre una tabla de configuración o UDO. Te recomendamos revisar todas las búsquedas formateadas asociadas al documento (cabecera y líneas) y asegurarte de que devuelvan un solo valor escalar. Si el error persiste, podrías compartir el resto del código de las FMS o confirmar si se usa algún add-on que intervenga.

En los Foros de Consultoria-SAP.com podés compartir más detalles técnicos para que otros consultores te ayuden con el análisis SQL específico.

¡Estamos aquí para ayudarte en los Foros SAP de Consultoria-SAP!