¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo obtener saldo inicial de SN en consulta SQL para rango de fechas y campo de usuario U_CXC_CXP

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 36 Vistas
0
Cargando...

Hola a todos, me piden una consulta en la que se pueda solicitar un rango de fechas específicas y conocer el saldo de SN en esa fecha, teniendo en cuenta que se debe incluir el saldo inicial con el que contaba el SN. Estos saldos deben agruparse según un campo de usuario definido que ya he generado (campo T1.[U_CXC_CXP]).

Hasta ahora solo he podido obtener los movimientos según los rangos de fechas iniciales y finales que elige el usuario, pero no logro obtener el saldo inicial del SN...

¿Alguien tiene alguna sugerencia?

Les comparto la consulta que tengo:

SELECT  (T0.[Debit]) , T0.[Credit], T0.[ShortName]

 FROM JDT1 T0 INNER JOIN OCRD T1 ON T0.SHORTNAME=T1.CARDCODE

WHERE  T0.[RefDate] BETWEEN '[%1]' AND '[%2]' AND T0.[ShortName] BETWEEN 'ACC-001' AND 'PSV-469' AND 
T1.[U_CXC_CXP] ='[%3]'

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

¿Hay alguna forma de guardar la fecha inicial como variable para que el usuario no tenga que ingresarla?

Con tu consulta, ya no me marca error en SAP.

Ahora lo que restaría hacer es sumar el saldo inicial que arroje la consulta más el movimiento del rango de fechas que elija el usuario para obtener el SALDO FINAL del SN.

Muchísimas gracias.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Yessica

Mira, corregí el query y ahora el saldo inicial sería el correcto


        SELECT T1.CardCode, T1.CardName, ISNULL((SELECT SUM(T2.Debit-T2.Credit) FROM JDT1 T2 WHERE T2.ShortName = T1.CardCode AND T2.RefDate <= '[%0]'),0)'Saldo Inicial', ISNULL((SUM(T0.Debit-T0.Credit)),0)'Saldo Actual'
        FROM OCRD T1
        LEFT JOIN JDT1 T0 ON T1.CardCode = T0.ShortName
        WHERE T0.RefDate BETWEEN '[%1]' AND '[%2]' AND T1.[U_CXC_CXP] IS NOT NULL
        GROUP BY T1.CardCode, T1.CardName
        
    

Te cuento cómo funciona esto.

Si tu usuario quiere saber los movimientos de marzo 2011, todo lo demás hacia atrás sería saldo de arrastre o inicial, por lo tanto el primer filtro sería al 28/02/2011 para que te arroje hacia atrás el saldo. Los dos filtros de fecha serían para los que el usuario quiere ver que serían 01/03/2011 y 31/03/2011.

¿Qué error te arroja desde SAP el query?

Saludos

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Floyola, el saldo actual es correcto, pero el dato que me arroja en saldo inicial no es correcto. También tengo una duda, veo que pones como condición WHERE T0.RefDate <= '20101231', ¿qué pasa si el usuario pide los movimientos de todo el mes de marzo? ¿Entiendo que tu consulta arrojaría como saldo inicial solo lo que sea igual o menor a la fecha de 2010-12-31, ¿no?

También, como siempre, por alguna razón en SQL el query corre, pero en SAP marca error. Te paso cómo lo estoy ejecutando.

SELECT T1.CardCode, T1.CardName, SUM(T0.Debit-T0.Credit)'Saldo Inicial', SUM(T2.Debit-T2.Credit)'Saldo Actual'
FROM JDT1 T0
INNER JOIN OCRD T1 ON T1.CardCode = T0.ShortName
INNER JOIN JDT1 T2 ON T2.ShortName = T1.CardCode
WHERE T0.RefDate <= '20101231' AND T1.[U_CXC_CXP] IS NOT NULL
GROUP BY T1.CardCode, T1.CardName


SELECT  (T0.[Debit]) , T0.[Credit], T0.[ShortName]

 FROM JDT1 T0 INNER JOIN OCRD T1 ON T0.SHORTNAME=T1.CARDCODE

WHERE  T0.[RefDate] BETWEEN '2011/01/01' AND '2011/01/31' AND T0.[ShortName] BETWEEN 'ACC-001' AND 'PSV-469' AND 
T1.[U_CXC_CXP] ='1'

Le agregué una condición al query inicial para que no traiga todos los SN.

Si tienes alguna otra idea de cómo sacarlo, avísame, ¿ok?

Gracias.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola

Prueba ese query


SELECT T1.CardCode, T1.CardName, SUM(T0.Debit-T0.Credit)'Saldo Inicial', SUM(T2.Debit-T2.Credit)'Saldo Actual'
FROM JDT1 T0
INNER JOIN OCRD T1 ON T1.CardCode = T0.ShortName
INNER JOIN JDT1 T2 ON T2.ShortName = T1.CardCode
WHERE T0.RefDate <= '20101231'
GROUP BY T1.CardCode, T1.CardName

Espero te sirva,

saludos

Edited by: Floyola on Apr 25, 2011 11:52 PM

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?