Query Inventario Valorizado VS Plan de Cuenta

Buenas tardes estoy trabajando en un reporte el cual quiero que muestre el detalle de lo que compone el saldo de los inventarios del plan de cuentas.

Por ejemplo:
inventario de Materia prima = 50000 en el plan de cuentas y Balance

ahora quiero tener el reporte que de el resultado exacto (50000) de la cuenta , mostrando todas las transacciones de los artículos en un periodo predefinido en un almacén en especifico , he estado intentando pero no logro tener el resultado exacto, si alguien de ustedes me pudiera ayudar estaría muy agradecido. Dejo la consulta que tengo hasta el momento.
Saludos cordiales


SELECT 
	T1.[WhsCode], 
	T1.[WhsName], 
	T0.[ItemCode],
	SUBSTRING(t0.Itemcode, 1, 3) AS grupo,
	T2.[ItemName], 
	T2.NumInCnt,
	(SELECT (SUM(Y.InQty)-SUM(Y.OutQty)) FROM OINM Y WHERE Y.ItemCode = T2.ItemCode AND Y.Warehouse = T1.WhsCode AND Y.DocDate <= @FechaFinal) 'Stock',
	T2.AvgPrice,
	t2.InvntryUom
FROM OITW T0
INNER JOIN OWHS T1 ON T0.WhsCode = T1.WhsCode 
INNER JOIN OITM T2 ON T0.ItemCode = T2.ItemCode
INNER JOIN OINM T3 ON t0.ItemCode = t3.ItemCode 
WHERE T1.whsName = @Almacen AND T3.DocDate <= @FechaFinal  and T0.OnHand<>0

GROUP BY T1.[WhsCode], T1.[WhsName], T0.[ItemCode], T2.[ItemName], T2.ItemCode, t2.InvntryUom,T0.[WhsCode], T2.AvgPrice, T2.NumInCnt
ORDER BY T0.[WhsCode], T0.[ItemCode]

Esa información que buscas ya la tienes en el reporte de auditoria de Stock, este usa la vista OINM principalmente, y tiene filtros por cuentas, o por articulos, y en la vista por articulos puedes activar el campo cuenta de mayor, con lo que podras cotejar cada movimiento con la cuenta.

Si deseas ver la consulta que ejecuta SAP en ese reporte, puedes hacerlo desde el SQL Server profiles, creas un trace, corres el reporte en SAP, y luego paras el trace, hay que buscar entre varias consultas, pero se la encuentra.

Justo tenia una consulta guardada de una vez que revise ese query:

Esta es una tabla temporal que previamente

exec sp_prepexec @p1 output,NULL,
N'CREATE VIEW [dbo].[DV201903023931ZHAKCUSI7Q05TR57Q3] AS 
SELECT T1.[CalcPrice] AS ''OBVL_CalcPrice'', T0.[RowAction], T0.[ILMEntry], T0.[ItemCode], T0.[DistNumber], T0.[ActionType], T0.[AccumType], 
       T0.[Quantity], T0.[InvValue], T0.[CalcPrice], T0.[CalcPrice] * T0.[Quantity] AS ''OBVL_CalcPriceTotal'', T0.[TransValue], T0.[AbsEntry] 
FROM  [dbo].[OBVL] T0   LEFT OUTER  JOIN [dbo].[OBVL] T1  ON  T0.[AbsEntry] = T1.[AbsEntry]  AND  T1.[RowAction] = 2  '

y esta es la consulta general:

exec sp_executesql 
N'SELECT T0.[TransSeq], T1.[ItemCode], T1.[ItemName], T0.[CreateDate], T0.[Warehouse], T0.[InQty], T0.[OutQty], T0.[CalcPrice], 
T0.[TransValue], T0.[InvntAct], T0.[Currency], T0.[Rate], 
T0.[UserSign], T0.[TransType], T0.[CreatedBy], T0.[BASE_REF], 
T0.[DocLineNum], T1.[InvntryUom], T1.[EvalSystem], T0.[DocDate], T0.[CostAct], 
SUM(T4.[Quantity]), T4.[OBVL_CalcPrice] AS ''OBVL_CalcPrice'', 
SUM(T4.[InvValue]) AS ''OBVL_InvValue'', T3.[CostMethod] AS ''CostingMethod'', 
T4.[RowAction] AS ''OBVL_RowAction'', SUM(T4.[OBVL_CalcPriceTotal]) AS ''OBVL_RowPriceSum'', 
SUM(T4.[Quantity]) AS ''OBVL_RowPriceQty'', SUM(T4.[TransValue]) AS ''OBVL_TransValue'', 
T1.[PrdStdCst], MIN(T4.[AbsEntry]) AS ''OBVL_AbsEntry'' 
FROM  [dbo].[OINM] T0  INNER  JOIN [dbo].[OITM] T1  ON  T1.[ItemCode] = T0.[ItemCode]    
LEFT OUTER  JOIN [dbo].[OIVK] T2  ON  T2.[INMTransSe] = T0.[TransSeq]    
LEFT OUTER  JOIN [dbo].[OIVL] T3  ON  T3.[TransSeq] = T2.[TransSeq]    
LEFT OUTER  JOIN [dbo].[DV201903023931ZHAKCUSI7Q05TR57Q3] T4  ON  T4.[ILMEntry] = T3.[MessageID]  AND  T4.[ItemCode] = T1.[ItemCode]  
            AND  T4.[DistNumber] IS NOT NULL   AND  (T4.[ActionType] = 2  OR  (T0.[TransType] IN(@P1,@P2)   AND  T4.[ActionType] = 1 )) 
			AND  T4.[AccumType] = 1   
WHERE T0.[CreateDate] >= (@P3)  AND  T0.[CreateDate] <= (@P4)  AND  T0.[ItemCode] >= (@P5)  AND  T0.[ItemCode] <= (@P6)  AND  (T0.[TransValue] <> (@P7)  
OR  T0.[InQty] <> (@P8)  OR  T0.[OutQty] <> (@P9)  OR  T0.[TransType] = (@P10) ) AND  (T0.[Warehouse] = (@P11)  OR  T0.[Warehouse] = (@P12)  
OR  T0.[Warehouse] = (@P13)  OR  T0.[Warehouse] = (@P14)  OR  T0.[Warehouse] = (@P15)  OR  T0.[Warehouse] = (@P16)  OR  T0.[Warehouse] = (@P17)  
OR  T0.[Warehouse] = (@P18)  OR  T0.[Warehouse] = (@P19)  OR  T0.[Warehouse] = (@P20) )  
GROUP BY T0.[TransSeq], T1.[ItemCode], T1.[ItemName], T0.[CreateDate], T0.[Warehouse], T0.[InQty], T0.[OutQty], T0.[CalcPrice], 
         T0.[TransValue], T0.[InvntAct], T0.[Currency], T0.[Rate], T0.[UserSign], T0.[TransType], T0.[CreatedBy], T0.[BASE_REF], 
		 T0.[DocLineNum], T1.[InvntryUom], T1.[EvalSystem], T0.[DocDate], T0.[CostAct], T4.[OBVL_CalcPrice], T3.[CostMethod], 
		 T4.[RowAction], T1.[PrdStdCst], T0.[TransNum], T0.[TransNum], T0.[TransNum], T0.[TransNum] ORDER BY T1.[ItemCode],
		 T0.[TransSeq],31',
N'@P1 int,@P2 int,@P3 datetime2,@P4 datetime2,@P5 nvarchar(254),@P6 nvarchar(254),@P7 numeric(25,6),@P8 numeric(25,6),@P9 numeric(25,6),
@P10 int,@P11 nvarchar(254),@P12 nvarchar(254),@P13 nvarchar(254),@P14 nvarchar(254),@P15 nvarchar(254),@P16 nvarchar(254),@P17 nvarchar(254),
@P18 nvarchar(254),@P19 nvarchar(254),@P20 nvarchar(254)'

Espero te sirva, aunque te recomiendo primero ver directamente el informe de auditoria.

Saludos,

3 Me gusta

Gracias por tu ayuda, la tabla que esta en el query , [dbo].[DV201903023931ZHAKCUSI7Q05TR57Q3] , supongo es erronea cual es la correcta, para hacer prueba con esta consulta, de antemano gracias por la ayuda.

FIjate que se crea esa tabla temporal previamente:

exec sp_prepexec @p1 output,NULL,
N'CREATE VIEW [dbo].[DV201903023931ZHAKCUSI7Q05TR57Q3] AS 
SELECT T1.[CalcPrice] AS ''OBVL_CalcPrice'', T0.[RowAction], T0.[ILMEntry], T0.[ItemCode], T0.[DistNumber], T0.[ActionType], T0.[AccumType], 
       T0.[Quantity], T0.[InvValue], T0.[CalcPrice], T0.[CalcPrice] * T0.[Quantity] AS ''OBVL_CalcPriceTotal'', T0.[TransValue], T0.[AbsEntry] 
FROM  [dbo].[OBVL] T0   LEFT OUTER  JOIN [dbo].[OBVL] T1  ON  T0.[AbsEntry] = T1.[AbsEntry]  AND  T1.[RowAction] = 2  '

Buenos días estimado @willy_Caldero, he estado probando con la consulta pero no logro que el saldo de la cuenta de mayor sea el mismo que el del inventario valorizado , he logrado que la diferencia sea mínima pero me están solicitando que sea igual.

En casos así, lo primero que hago es correr el mayor de la cuenta, y coloco el filtro por documentos y tildó solo los asientos manuales, para detectar si talvez se hicieron ajustes directos a la cuenta.

Saludos,

2 Me gusta

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.