Buenas tardes a todos.
Estoy tratando de sacar un listado de ordenes de produccion que aun no se han cerrado, con el valor de sus componentes consumidos en esa orden por rango de fechas, no tengo idea de como sacarlos por ejemplo quieren evaluar cuanto quedo en proceso de un inicio de mes al final del mismo mes, he logrado sacarlos desde el inicio hasta fecha actual, pero corte de fechas.
Alguien tiene una idea de como sacarlo.
esta es la vista que tengo para almacenar los datos
SELECT DISTINCT
T0.Series, dbo.NNM1.SeriesName, T0.PlannedQty AS planificado, T0.PostDate AS Fcreacion, T0.RlsDate AS Fliberacion, T0.DocNum AS Orden,
T1.ItmsGrpCod AS grupo, T0.ItemCode AS Codigo, T1.ItemName AS Descripcion, 0 AS PrecioVenta, T0.CloseDate AS Termino,
CASE WHEN (OITM_1.ItmsGrpCod NOT IN (111, 114, 112, 126, 109, 110, 128, 108, 127, 128, 102, 104, 107, 106, 122)) THEN (IGN1_1.LineTotal * - 1)
ELSE 0 END AS Kilos, CASE WHEN (OITM_1.ItmsGrpCod IN (128, 127, 122, 110, 109, 108, 107, 106, 104, 102)) THEN (IGN1_1.LineTotal * - 1) ELSE 0 END AS Material,
CASE WHEN (OITM_1.ItmsGrpCod = (114)) THEN (IGN1_1.LineTotal * - 1) ELSE 0 END AS ManodeObra, CASE WHEN (OITM_1.ItmsGrpCod = (112))
THEN (IGN1_1.LineTotal * - 1) ELSE 0 END AS Gif, CASE WHEN (OITM_1.ItmsGrpCod = (116)) THEN (IGN1_1.LineTotal * - 1) ELSE 0 END AS Prest,
CASE WHEN (OITM_1.ItmsGrpCod = (111)) THEN (IGN1_1.LineTotal * - 1) ELSE 0 END AS Coef, SUM(0) AS consumo, SUM(0) AS costoproductoreal,
IGN1_1.DocEntry + IGN1_1.LineNum AS DocEntry
FROM dbo.OWOR AS T0 INNER JOIN
dbo.OITM AS T1 ON T0.ItemCode = T1.ItemCode INNER JOIN
dbo.WOR1 ON T0.DocEntry = dbo.WOR1.DocEntry INNER JOIN
dbo.OITM AS OITM_1 ON dbo.WOR1.ItemCode = OITM_1.ItemCode INNER JOIN
dbo.NNM1 ON T0.Series = dbo.NNM1.Series INNER JOIN
dbo.IGN1 AS IGN1_1 ON T0.DocNum = IGN1_1.BaseRef AND OITM_1.ItemCode = IGN1_1.ItemCode LEFT OUTER JOIN
dbo.IGN1 ON T0.DocNum = dbo.IGN1.BaseRef AND T0.ItemCode = dbo.IGN1.ItemCode
WHERE (T0.Status = 'R')
GROUP BY T0.DocNum, T1.ItmsGrpCod, T0.ItemCode, T1.ItemName, T0.U_Fecha_fin, T0.PostDate, T0.RlsDate, T0.CloseDate, T0.Series, dbo.NNM1.SeriesName,
dbo.WOR1.IssuedQty, OITM_1.ItmsGrpCod, T0.PlannedQty, dbo.IGN1.Price, IGN1_1.LineTotal, IGN1_1.DocEntry + IGN1_1.LineNum, IGN1_1.DocEntry
UNION ALL
SELECT T0.Series, NNM1_7.SeriesName, T0.PlannedQty AS planificado, T0.PostDate AS Fcreacion, T0.RlsDate AS Fliberacion, T0.DocNum AS Orden, T1.ItmsGrpCod AS grupo,
T0.ItemCode AS Codigo, T1.ItemName AS Descripcion, SUM(0) AS PrecioVenta, T0.CloseDate AS Termino, SUM(T4.LineTotal) AS Kilos, SUM(0) AS Material, SUM(0)
AS ManodeObra, SUM(0) AS Gif, SUM(0) AS Prest, SUM(0) AS Coef, T0.CmpltQty AS consumo, SUM(0) AS costoproductoreal, 0 AS DOCENTRY
FROM dbo.OWOR AS T0 INNER JOIN
dbo.WOR1 AS WOR1_6 ON T0.DocEntry = WOR1_6.DocEntry INNER JOIN
dbo.IGE1 AS T4 ON WOR1_6.ItemCode = T4.ItemCode AND T0.DocNum = T4.BaseRef INNER JOIN
dbo.OITM ON T4.ItemCode = dbo.OITM.ItemCode INNER JOIN
dbo.NNM1 AS NNM1_7 ON T0.Series = NNM1_7.Series INNER JOIN
dbo.OITM AS T1 ON T0.ItemCode = T1.ItemCode
WHERE (dbo.OITM.ItmsGrpCod NOT IN (111, 114, 112, 126, 109, 110, 128, 108, 122, 127, 128, 102, 104, 107, 106)) AND (T0.Status = 'R')
GROUP BY T0.DocNum, T0.Series, T0.PostDate, T0.DueDate, T4.ItemCode, dbo.OITM.ItemName, T1.ItmsGrpCod, T0.RlsDate, dbo.OITM.ItmsGrpCod, T0.ItemCode,
NNM1_7.SeriesName, T0.PlannedQty, T1.ItemName, T0.PostDate, T0.CloseDate, T0.CmpltQty
UNION ALL
SELECT T0.Series, NNM1_6.SeriesName, T0.PlannedQty AS planificado, T0.PostDate AS Fcreacion, T0.RlsDate AS Fliberacion, T0.DocNum AS Orden, T1.ItmsGrpCod AS grupo,
T0.ItemCode AS Codigo, T1.ItemName AS Descripcion, SUM(0) AS PrecioVenta, T0.CloseDate AS Termino, SUM(0) AS Kilos, T4.LineTotal AS Material, SUM(0)
AS ManodeObra, SUM(0) AS Gif, SUM(0) AS Prest, SUM(0) AS Coef, T0.CmpltQty AS consumo, SUM(0) AS costoproductoreal, T4.LineNum + T4.DocEntry AS Expr1
FROM dbo.OWOR AS T0 INNER JOIN
dbo.WOR1 AS WOR1_5 ON T0.DocEntry = WOR1_5.DocEntry INNER JOIN
dbo.IGE1 AS T4 ON WOR1_5.ItemCode = T4.ItemCode AND T0.DocNum = T4.BaseRef INNER JOIN
dbo.OITM AS OITM_6 ON T4.ItemCode = OITM_6.ItemCode INNER JOIN
dbo.NNM1 AS NNM1_6 ON T0.Series = NNM1_6.Series INNER JOIN
dbo.OITM AS T1 ON T0.ItemCode = T1.ItemCode
WHERE (OITM_6.ItmsGrpCod IN (128, 127, 122, 110, 109, 108, 107, 106, 104, 102)) AND (T0.Status = 'R')
GROUP BY T0.DocNum, T0.Series, T0.PostDate, T0.DueDate, T4.ItemCode, OITM_6.ItemName, T1.ItmsGrpCod, T0.RlsDate, OITM_6.ItmsGrpCod, T0.ItemCode,
NNM1_6.SeriesName, T0.PlannedQty, T1.ItemName, T0.PostDate, T0.CloseDate, T0.CmpltQty, T4.LineNum + T4.DocEntry, T4.LineTotal
UNION ALL
SELECT T0.Series, NNM1_5.SeriesName, T0.PlannedQty AS planificado, T0.PostDate AS Fcreacion, T0.RlsDate AS Fliberacion, T0.DocNum AS Orden, T1.ItmsGrpCod AS grupo,
T0.ItemCode AS Codigo, T1.ItemName AS Descripcion, SUM(0) AS PrecioVenta, T0.CloseDate AS Termino, SUM(0) AS Kilos, SUM(0) AS Material, SUM(0)
AS ManodeObra, SUM(T4.LineTotal) AS Gif, SUM(0) AS Prest, SUM(0) AS Coef, T0.CmpltQty AS consumo, SUM(0) AS costoproductoreal, 0 AS DOCENTRY
FROM dbo.OWOR AS T0 INNER JOIN
dbo.WOR1 AS WOR1_4 ON T0.DocEntry = WOR1_4.DocEntry INNER JOIN
dbo.IGE1 AS T4 ON WOR1_4.ItemCode = T4.ItemCode AND T0.DocNum = T4.BaseRef INNER JOIN
dbo.OITM AS OITM_5 ON T4.ItemCode = OITM_5.ItemCode INNER JOIN
dbo.NNM1 AS NNM1_5 ON T0.Series = NNM1_5.Series INNER JOIN
dbo.OITM AS T1 ON T0.ItemCode = T1.ItemCode
WHERE (OITM_5.ItmsGrpCod = 112) AND (T0.Status = 'R')
GROUP BY T0.DocNum, T0.Series, T0.PostDate, T0.DueDate, T4.ItemCode, OITM_5.ItemName, T1.ItmsGrpCod, T0.RlsDate, OITM_5.ItmsGrpCod, T0.ItemCode,
NNM1_5.SeriesName, T0.PlannedQty, T1.ItemName, T0.PostDate, T0.CloseDate, T0.CmpltQty
UNION ALL
SELECT T0.Series, NNM1_4.SeriesName, T0.PlannedQty AS planificado, T0.PostDate AS Fcreacion, T0.RlsDate AS Fliberacion, T0.DocNum AS Orden, T1.ItmsGrpCod AS grupo,
T0.ItemCode AS Codigo, T1.ItemName AS Descripcion, SUM(0) AS PrecioVenta, T0.CloseDate AS Termino, SUM(0) AS Kilos, SUM(0) AS Material,
T4.LineTotal AS ManodeObra, SUM(0) AS Gif, SUM(0) AS Prest, SUM(0) AS Coef, T0.CmpltQty AS consumo, SUM(0) AS costoproductoreal,
T4.LineNum + T4.DocEntry AS Expr1
FROM dbo.OWOR AS T0 INNER JOIN
dbo.WOR1 AS WOR1_3 ON T0.DocEntry = WOR1_3.DocEntry INNER JOIN
dbo.IGE1 AS T4 ON WOR1_3.ItemCode = T4.ItemCode AND T0.DocNum = T4.BaseRef INNER JOIN
dbo.OITM AS OITM_4 ON T4.ItemCode = OITM_4.ItemCode INNER JOIN
dbo.NNM1 AS NNM1_4 ON T0.Series = NNM1_4.Series INNER JOIN
dbo.OITM AS T1 ON T0.ItemCode = T1.ItemCode
WHERE (OITM_4.ItmsGrpCod = 114) AND (T0.Status = 'R')
GROUP BY T0.DocNum, T0.Series, T0.PostDate, T0.DueDate, T4.ItemCode, OITM_4.ItemName, T1.ItmsGrpCod, T0.RlsDate, OITM_4.ItmsGrpCod, T0.ItemCode,
NNM1_4.SeriesName, T0.PlannedQty, T1.ItemName, T0.PostDate, T0.CloseDate, T0.CmpltQty, T4.LineNum + T4.DocEntry, T4.LineTotal
UNION ALL
SELECT T0.Series, NNM1_3.SeriesName, T0.PlannedQty AS planificado, T0.PostDate AS Fcreacion, T0.RlsDate AS Fliberacion, T0.DocNum AS Orden, T1.ItmsGrpCod AS grupo,
T0.ItemCode AS Codigo, T1.ItemName AS Descripcion, SUM(0) AS PrecioVenta, T0.CloseDate AS Termino, SUM(0) AS Kilos, SUM(0) AS Material, SUM(0)
AS ManodeObra, SUM(0) AS Gif, SUM(T4.LineTotal) AS Prest, SUM(0) AS Coef, T0.CmpltQty AS consumo, SUM(0) AS costoproductoreal, 0 AS DOCENTRY
FROM dbo.OWOR AS T0 INNER JOIN
dbo.WOR1 AS WOR1_2 ON T0.DocEntry = WOR1_2.DocEntry INNER JOIN
dbo.IGE1 AS T4 ON WOR1_2.ItemCode = T4.ItemCode AND T0.DocNum = T4.BaseRef INNER JOIN
dbo.OITM AS OITM_3 ON T4.ItemCode = OITM_3.ItemCode INNER JOIN
dbo.NNM1 AS NNM1_3 ON T0.Series = NNM1_3.Series INNER JOIN
dbo.OITM AS T1 ON T0.ItemCode = T1.ItemCode
WHERE (OITM_3.ItmsGrpCod = 126) AND (T0.Status = 'R')
GROUP BY T0.DocNum, T0.Series, T0.PostDate, T0.DueDate, T4.ItemCode, OITM_3.ItemName, T1.ItmsGrpCod, T0.RlsDate, OITM_3.ItmsGrpCod, T0.ItemCode,
NNM1_3.SeriesName, T0.PlannedQty, T1.ItemName, T0.PostDate, T0.CloseDate, T0.CmpltQty
UNION ALL
SELECT T0.Series, NNM1_2.SeriesName, T0.PlannedQty AS planificado, T0.PostDate AS Fcreacion, T0.RlsDate AS Fliberacion, T0.DocNum AS Orden, T1.ItmsGrpCod AS grupo,
T0.ItemCode AS Codigo, T1.ItemName AS Descripcion, SUM(0) AS PrecioVenta, T0.CloseDate AS Termino, SUM(0) AS Kilos, SUM(0) AS Material, SUM(0)
AS ManodeObra, SUM(0) AS Gif, SUM(0) AS Prest, SUM(T4.LineTotal) AS Coef, T0.CmpltQty AS consumo, SUM(0) AS costoproductoreal, 0 AS DOCENTRY
FROM dbo.OWOR AS T0 INNER JOIN
dbo.WOR1 AS WOR1_1 ON T0.DocEntry = WOR1_1.DocEntry INNER JOIN
dbo.IGE1 AS T4 ON WOR1_1.ItemCode = T4.ItemCode AND T0.DocNum = T4.BaseRef INNER JOIN
dbo.OITM AS OITM_2 ON T4.ItemCode = OITM_2.ItemCode INNER JOIN
dbo.NNM1 AS NNM1_2 ON T0.Series = NNM1_2.Series INNER JOIN
dbo.OITM AS T1 ON T0.ItemCode = T1.ItemCode
WHERE (OITM_2.ItmsGrpCod = 111) AND (T0.Status = 'R')
GROUP BY T0.DocNum, T0.Series, T0.PostDate, T0.DueDate, T4.ItemCode, OITM_2.ItemName, T1.ItmsGrpCod, T0.RlsDate, OITM_2.ItmsGrpCod, T0.ItemCode,
NNM1_2.SeriesName, T0.PlannedQty, T1.ItemName, T0.PostDate, T0.CloseDate, T0.CmpltQty
UNION ALL
SELECT DISTINCT
TOP (100) PERCENT T0.Series, NNM1_1.SeriesName, T0.PlannedQty AS planificado, T0.PostDate AS Fcreacion, T0.RlsDate AS Fliberacion, T0.DocNum AS Orden,
T1.ItmsGrpCod AS grupo, T0.ItemCode AS Codigo, T1.ItemName AS Descripcion, dbo.ITM1.Price AS PrecioVenta, T0.CloseDate AS Termino, SUM(0) AS Kilos, SUM(0)
AS Material, SUM(0) AS ManodeObra, SUM(0) AS Gif, SUM(0) AS Prest, SUM(0) AS Coef, SUM(0) AS consumo, SUM(T3.LineTotal) AS costoproductoreal,
0 AS DOCENTRY
FROM dbo.NNM1 AS NNM1_1 INNER JOIN
dbo.IGN1 AS T3 INNER JOIN
dbo.OWOR AS T0 ON T3.BaseRef = T0.DocNum AND T3.ItemCode = T0.ItemCode ON NNM1_1.Series = T0.Series INNER JOIN
dbo.OITM AS T1 ON T0.ItemCode = T1.ItemCode INNER JOIN
dbo.OITM AS T5 ON T3.ItemCode = T5.ItemCode LEFT OUTER JOIN
dbo.ITM1 ON T1.ItemCode = dbo.ITM1.ItemCode
WHERE (T5.ItmsGrpCod IN (101, 127, 119, 113, 120)) AND (T0.Status = 'R') AND (dbo.ITM1.PriceList = 1)
GROUP BY T0.DocNum, T1.ItmsGrpCod, T0.ItemCode, T1.ItemName, T0.U_Fecha_fin, T0.PostDate, T0.RlsDate, T0.CloseDate, T0.Series, NNM1_1.SeriesName, T5.ItmsGrpCod,
T0.PlannedQty, dbo.ITM1.ItemCode, dbo.ITM1.Price
ORDER BY Series
y este es mi query en sap
declare @serie char(20) /*Fecha*/
declare @fechaa datetime /*Nombre de Serie*/
declare @fechab datetime /*Fecha*/
SELECT @serie =T0.SeriesName
FROM [dbo].[NNM1] T0
WHERE T0.SeriesName = '[%0]'
SElect @fechaa=T2.refdate
FROM [dbo].[JDT1] T2
WHERE T2.refdate= '[%1]'
SElect @fechab=T3.refdate
FROM [dbo].[JDT1] T3
WHERE T3.refdate= '[%2]'
SELECT Series, SeriesName, planificado, Fcreacion, Fliberacion, Orden, grupo, Codigo, Descripcion, AVG(PrecioVenta) AS PrecioVenta, Termino, SUM(Kilos)
AS Kilos, SUM(Material) AS Material, SUM(ManodeObra) AS ManodeObra, SUM(Gif) AS Gif, SUM(Prest) AS Prest, SUM(Coef) AS Coef,
SUM(DISTINCT consumo) AS consumo, SUM(Kilos) + SUM(Material) + SUM(ManodeObra) + SUM(Gif) + SUM(Prest) + SUM(Coef)
AS CostocomponenteReal, SUM(costoproductoreal) AS costoproductoreal, SUM(costoproductoreal) - (SUM(Kilos) + SUM(Material) + SUM(ManodeObra)
+ SUM(Gif) + SUM(Prest) + SUM(Coef)) AS Variacion
FROM dbo.ordenes_proceso T1
GROUP BY Series, SeriesName, planificado, Fcreacion, Fliberacion, Orden, grupo, Codigo, Descripcion, Termino
HAVING T1.seriesname=@serie and T1.fliberacion between @fechaa and @fechab
lo que quiero es sacar el reporte pero a una fecha de corte porque aqui si la orden se inicio el 01/01/2014 me saca hasta la fecha yo quero sacarlo por ejemplo del 01/01/2014 al 31/01/2014 a si por rango de fechas no lo logro sacarlo alguien tendra una idea mejor.
Gracias agradecere sus aportes