Error en procedimiento estructurado

Buenos días colegas, necesito de su ayuda, hice el siguiente procedimiento estructurado para verificar que la fecha de vencimiento sea mayor a la fecha del documento y me da error de conversión, de antemano agradezco su ayuda

IF EXISTS(SELECT ISNULL(T0.[U_OSTACode],'IVA13')
    FROM [dbo].[@BYL_OEXC] T0 
    WHERE T0.[U_CardCode] = $[$4.1.0]
      AND T0.[U_General] = 'Y'
      AND T0.[U_FeVenc] = (SELECT MAX (T0.[U_FeVenc]) 
                         FROM [dbo].[@BYL_OEXC] T0 
                         WHERE T0.[U_CardCode] = $[$4.1.0]
 AND T0.[U_FeVenc]  > $[$4.1.0] )) 
BEGIN
    SELECT ISNULL(T0.[U_OSTACode],'IVA13')
    FROM [dbo].[@BYL_OEXC] T0 
    WHERE T0.[U_CardCode] = $[$4.1.0]
      AND T0.[U_General] = 'Y'
      AND T0.[U_FeVenc] = (SELECT MAX (T0.[U_FeVenc]) 
                         FROM [dbo].[@BYL_OEXC] T0 
                         WHERE T0.[U_CardCode] = $[$4.1.0]
     AND T0.[U_FeVenc]  > $[$4.1.0])
END 
  ELSE 
BEGIN
    SELECT 'IVA13' 
    FROM [dbo].[@BYL_OEXC] T0 
    WHERE T0.[U_CardCode] = 'C01133'
      AND T0.[U_General] = 'Y'
      AND T0.[U_FeVenc] = (SELECT MAX (T0.[U_FeVenc]) 
                         FROM [dbo].[@BYL_OEXC] T0 
                         WHERE T0.[U_CardCode] = 'C01133') 
END

Que tal @marcobonilla, de entrada por lo que veo son campos definidos por usuario, ya que tienen el “U_” al principio de cada campo, por lo que no se de que manera los create para poder indicarte si la conversion es correcta o no.

Ahora bien ¿a que conversion se refiere SAP? a la que hace al tratar de comparar los campos con la variable, y por lo que veo en tu consulta estas comparando en el where el campo U_CardCode con la variable $[$4.1.0], sin embargo esta misma variable la comparas tambien con el campo U_FeVenc. Entonces, si la variable guarda el valor del CardCode, el primer where esta bien, pero en el segundo le estas diciendo que la fecha vencimiento sea mayor a la variable, la cual guarda el CardCode. creo que es aqui donde tienes el problema. revisa bien cual es la variable de la fecha de vencimiento, ya que no puede ser la misma que la del CardCode.

WHERE T0.[U_CardCode] = $[$4.1.0]
AND T0.[U_FeVenc] > $[$4.1.0] ))

Saludos.

Gracias Jose por tu respuesta y tu pronta ayuda, la variable $[$4.1.0] es un error de trascripción a la hora de pedir la ayuda, el query que me da el error la variable es $[$46.1.0] que corresponde a la fecha de la factura,

Para resolver el problema tuve que hacer la comparación contra la fecha del sistema y no con la fecha de la factura, te adjunto la linea del query
AND T0.[U_FeVenc] > GETDATE() )) – ‘20231117’ )) --$[$46.1.0]

Como ves cuando estuve haciendo pruebas si le ponía una fecha fija ‘20231117’ si me trabajaba o con la fecha del sistema GETDATE() pero cuando cambiaba por la fecha de la factura $[$46.1.0] me da el error

Muchas gracias por tu interés y ayuda

y por que no haces la comparación con el campo de la tabla directamente y no con la variable ??

$[TABLA."CAMPO"] en lugar de $[$46.1.0]

Ejemplo:
$[OINV."CardCode"]

Espero sea de utilidad.
Saludos.

Este tema se cerró automáticamente 30 días después de la última publicación. No se permiten nuevas respuestas.