cancel
Showing results for 
Search instead for 
Did you mean: 

query

Former Member
0 Kudos

hola

alquien me podria ayudar con una consulta de inventario de la siguiente manera

codigo articulo,nombre, presentacion,saldo 31-12-2011,enero,febrero,marzo

agradecere su respuesta

Accepted Solutions (0)

Answers (2)

Answers (2)

former_member188471
Active Contributor
0 Kudos

Prueba con este query, te comento son 3 partes:

1.- Aqui se genera el reporte y te dice en cuanto estaba tu stock en determinada fecha. (hace uso de una tabla temporal que despues hay que eliminar).

SELECT T0.DocDate AS 'Fecha de contabilización',
T0.ItemCode AS 'Número de artículo',
t1.itemname AS 'Descripcion',T2.ItmsGrpnam as 'Grupo',
'Bod' AS 'Código de almacén',
case when T0.InQty=0 or T0.InQty is null then T0.OutQty*-1 else T0.InQty end AS 'Cantidad TRX',
T0.CalcPrice AS 'Costo',
case when ((case when T0.InQty=0 or T0.InQty is null then T0.OutQty*-1 else T0.InQty end) * T0.CalcPrice)= 0 then ((case when T0.InQty=0 or T0.InQty is null then T0.OutQty*-1 else T0.InQty end) * T0.CalcPrice) else T0.transvalue END AS 'Monto', T3.segment_0 AS 'Cuenta Stock', T3.AcctName AS 'Nombre Cuenta' INTO #TEMP
FROM dbo.OINM T0 INNER JOIN dbo.OITM T1 ON T0.ItemCode = T1.ItemCode INNER JOIN dbo.OITB T2 ON T1.ItmsGrpCod = T2.ItmsGrpCod INNER JOIN dbo.OACT T3 ON T2.BalInvntAc = T3.AcctCode
WHERE T0.DocDate<='20110131'

2.- En esta parte lo que haces es visualizar lo que se genero en el reporte y se guardo en la tabla temporal.

SELECT [Número de artículo], Descripcion, Grupo,[código de almacén], SUM([Cantidad TRX]) AS Cantidad, SUM(Monto) AS Valor,CAST ( CASE WHEN SUM(Monto)=0 OR SUM([Cantidad TRX])=0 tHEN 0 else SUM(Monto)/SUM([Cantidad TRX]) END AS NVARCHAR)AS 'Costo Prom', [Cuenta Stock], [Nombre Cuenta]
FROM #TEMP
GROUP BY [Número de artículo], Descripcion, [código de almacén], [Cuenta Stock], [Nombre Cuenta],grupo

3.- Aqui lo unico que hacemos es borrar la tabla temporal, esto con la finalidad de que si quieres correr nuevamente el query ya no exista esa tabla.
--BORRAR TABLA TEMPORAL
USE TEMPDB
IF EXISTS(select OBJECT_ID('tempdb..#Datos'))
BEGIN
--select 'Si Existe'
DROP TABLE #Temp
END
ELSE
BEGIN
select 'No Existe'
END

ESPERO TUS COMENTARIOS.

Former Member
0 Kudos

fijate que he probado su consulta, pero se general y se quede

y se sale de sap

Former Member
0 Kudos

fijate que he probado su consulta, pero se general y se quede

y se sale de sap

Former Member
0 Kudos

Hola Sandra,

Te envio el query que utilizamos para que lo pruebes,  solicita codigo de bodega y fecha.

SELECT T0.[ItemCode]'CODIGO SAP',  T2.[ItemName]'DESCRIPCION', T2.SWW'REF.FABRICA', T3.FIRMNAME'MARCA',

(SELECT (SUM(Y.InQty)-SUM(Y.OutQty))

FROM OINM Y WHERE Y.ItemCode = T2.ItemCode AND Y.Warehouse = T1.WhsCode AND Y.DocDate BETWEEN '01/01/2001' AND '[%1]') 'STOCK', T1.[WhsCode]'BODEGA', T1.WHSNAME'NOMBRE BODEGA', (SELECT (SUM(Y.TransValue))

FROM OINM Y WHERE Y.ItemCode = T2.ItemCode AND Y.Warehouse = T1.WhsCode AND Y.DocDate BETWEEN '01/01/2001' AND '[%1]')'Valor Acumulado'

FROM OITW T0

INNER JOIN OWHS T1 ON T0.WhsCode = T1.WhsCode

INNER JOIN OITM T2 ON T0.ItemCode = T2.ItemCode

INNER JOIN OMRC T3 ON T2.FIRMCODE=T3.FIRMCODE

WHERE (SELECT (SUM(Y.InQty)-SUM(Y.OutQty)) FROM OINM Y WHERE Y.ItemCode = T2.ItemCode AND Y.Warehouse = T1.WhsCode AND Y.DocDate BETWEEN '01/01/2001' AND '[%1]' and (t0.whscode =[%2] OR t0.whscode =[%3] OR t0.whscode =[%4] OR t0.whscode =[%5] OR t0.whscode =[%6] OR t0.whscode =[%7] OR t0.whscode =[%8] OR t0.whscode =[%9] OR t0.whscode =[%10] OR t0.whscode =[%11] OR t0.whscode =[%12] OR t0.whscode =[%13])) != '0'

ORDER BY T0.[WhsCode], T0.[ItemCode]

Me cuentas  como te va.

former_member188471
Active Contributor
0 Kudos

Ow! se me olvido comentarte que este solo lo he probado desde SQL y desde ahi mando mail al encargado de llevar control de eso, en sap nose si funcione por la creacion de la tabla temporal.

Former Member
0 Kudos

hola Sandra,

Por que no pruebas con el informe standar de SAP: inventario-->inf inventario-->Inf de auditoria de stock

En el primer campo de fecha lo dejas en blanco, en el 2do campo digitas la fecha de corte que deseas, puedes generarlo para un solo codigo de articulo, por grupo , almacen etc.

JAMS