cancel
Showing results for 
Search instead for 
Did you mean: 

SALDO SN EN UN RANGO DE FECHAS DETERMINADAS, CONTANDO EL SALDO INICIAL

Former Member
0 Kudos

Hola a todos me solicitan un query en el cual puedan pedir un rango de fechas determinadas y conocer el saldo de SN a esa fecha, tomando en cuenta que se debe traer el saldo inicial con el cual cntaba el sn. Estos se deben agrupar segun un campo definido de usuario que ya genere. ( campo T1.[U_CXC_CXP] )

Hasta ahora solo he podido traer los movimientos segun los rangos de fechas iniciales y finales que elije el usuario, pero no jalo el saldo inicial del SN...

alguien tiene alguna aportacion ??

les paso el query 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]'

Accepted Solutions (1)

Accepted Solutions (1)

felipe_loyolarodriguez
Active Contributor
0 Kudos

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

Former Member
0 Kudos

Hola Floyola el saldo actual si es correcto pero el dato que me arroja en saldo inicial no es correcto, tengo tbm una duda, veo que pones como condicion WHERE T0.RefDate <= '20101231', que pasa si el usuario pide los movimiento de todo el mes de marzo, entiendo que tu query arrojaria como saldo inicial solo lo q sea igual o menor a la fecha de 2010-12-31 no ???

tambien como siempre por alguna razon en SQL si corre el query pero en SAP m marca error, te paso como lo estoy corriendo.

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 agrege una condicion al query inicial para que no traiga todos los SN.

Si tienes alguna otra idea de como sacarlo me avisas ok.

Gracias

felipe_loyolarodriguez
Active Contributor
0 Kudos

Hola Yessica

Mira, corregi el query y ahora el saldo inicial seria 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 como funciona esto.

Si tu usuario quiere saber los movimientos de marzo 2011, todo lo demas hacia atras seria saldo de arrastre o inicial, por lo tanto el primer filtro seria al 28/02/2011 para que te arroje hacia atras el saldo.Los dos filtros de fecha serian para los que el usuario quiere ver que serian 01/03/2011 y 31/03/2011.

Que error te arroja desde SAP el query?

Slds

Former Member
0 Kudos

oye y no hay manera de que la fecha inicial la guarde como variable y asi no tenga q ingresarla el usuaio ??

Con tu query ya no m marca error en SAP

ahora lo q restaria por hacer seria sumar el saldo inicial que arroje el query mas el movimiento del rango de fechas q elija el usuaio para obtener el SALDO FINAL del SN.

Muchisimas gracias

felipe_loyolarodriguez
Active Contributor
0 Kudos

Ahora para el saldo final, dices agregar otra columna que diga saldo fina y que corresponda a la suma del inicial + el saldo del mes?


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 del mes', ISNULL((SELECT SUM(T2.Debit-T2.Credit) FROM JDT1 T2 WHERE T2.ShortName = T1.CardCode AND T2.RefDate <= '[%1]'),0)'Saldo Final'
FROM OCRD T1
LEFT JOIN JDT1 T0 ON T1.CardCode = T0.ShortName
WHERE T0.RefDate BETWEEN '[%0]' AND '[%1]' AND T1.[U_CXC_CXP] IS NOT NULL
GROUP BY T1.CardCode, T1.CardName

Pruebalo asi

Slds

Edited by: Floyola on Apr 26, 2011 3:00 PM

Former Member
0 Kudos

pues si m arroja resultado pero en un SN si cuadra y en el otro no :s...

tambien como puedo hacerle para que el dato del campo T1.[U_CXC_CXP] sea un dato que pueda elejir el usuario ??

no tienes manera de conectrte a mi maquina para que veas lo de los saldos ??

tambien en algunos casos me sale en mensaje de que no tiene datos o solo m sale un SN.

Saludos.

felipe_loyolarodriguez
Active Contributor
0 Kudos

Podriamos establecer conexion via Team viewer

Enviame un mail, mi correo esta en mi business card

Saludos

-


Aqui dejo el query final


/*SELECT * FROM [dbo].[OCRD] T0 INNER JOIN [dbo].[JDT1] T1 ON T1.ShortName = T0.CardCode WHERE T1.RefDate BETWEEN '[%0]' AND '[%1]' AND T0.U_CXC_CXP = '[%2]'*/
DECLARE @UDF AS INT
SET @UDF = '[%2]'
DECLARE @fechaini DATETIME
SET @fechaini = '[%0]'
DECLARE @fechafin DATETIME
SET @fechafin = '[%1]'

SELECT T1.CardCode, T1.CardName,
ISNULL((SELECT SUM(T2.Debit-T2.Credit) FROM JDT1 T2 WHERE T2.ShortName = T1.CardCode AND T2.RefDate < @fechaini),0)'Saldo Inicial', 
ISNULL((SELECT SUM(T2.Debit-T2.Credit) FROM JDT1 T2 WHERE T2.ShortName = T1.CardCode AND T2.RefDate BETWEEN @fechaini AND @fechafin),0)'Saldo Mes', 
ISNULL((SELECT SUM(T2.Debit-T2.Credit) FROM JDT1 T2 WHERE T2.ShortName = T1.CardCode AND T2.RefDate <= @fechafin),0)'Saldo Final'
FROM [dbo].[OCRD] T1
WHERE T1.[U_CXC_CXP] = @UDF
GROUP BY T1.CardCode, T1.CardName

Atte.

Felipe Loyola

Edited by: Floyola on Apr 26, 2011 9:33 PM

Answers (0)