Importante
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.
Análisis de las búsquedas formateadas que compartiste:
Has mencionado 3 búsquedas:
-
SELECT TOP 1 T0.[U_TIPO_VTA] FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0.0]
-
SELECT TOP 1 T0.U_JA_CANAL FROM OCRD T0 WHERE T0.CardCode = $[ORDR.CardCode]
-
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?
Posibles causas:
-
**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.
-
El mensaje menciona explícitamente:
'Información de sociedad GL’ (CINF) (CINF)
Esta no parece referirse aOCRD
sino a alguna tabla de configuración o add-on llamadoCINF
.
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 enORDR
,RDR1
u otros objetos del documento. -
Falta de TOP 1 o WHERE mal definido en otra búsqueda:
Puede haber una BF con subconsulta que no usaTOP 1
o está mal parametrizada (por ejemplo, sin filtro porDocEntry
oCardCode
). Esa es la que devuelve múltiples valores y genera el fallo.
Qué hacer ahora
Te dejo algunas acciones concretas que podés seguir:
-
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
yRDR1
para ver qué campos tienen fórmulas asignadas.
-
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.
-
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.
-
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.
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.
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!