on 08-10-2011 6:07 PM
Buenos Días
Consultores de SAP B1
Actualmente la empresa amplio una nueva linea de producto el cual todo sus articulo manejan # de lote en base a esto se crearon 2 almacenes, el primer almacen es el principal donde se reciben la mercancia y el segundo almacen se denomina en consignacion ya que estos articulos se transfieren a los clientes ( Hospitales )
Para proceder a transferir los articulos del almacen principal al almacen en consignación establecemos el siguiente requisito :
Se genera o se crea una llamada de servicio en el modulo de Servicio el cual se le relaciona el cliente y la tarjeta de equipo de cliente que tambien reposa en cliente en este caso como por ejemplo puede ser una maquina de soda.
Dentro de llamada de servicios ingresamos a la parte donde se denomina Costos - Detalle de los Gastos desde aqui generamos un documento nuevo que puede ser :
Transferencia
Entrega
Retorno de Transferencia
Devolucion en Ventas
Facturacion
Nota de Credito
Ya efectuado todas estas operaciones para el cliente y asignado a la bodega de consignación utilizando las tablas de lotes OIBT y IBT1, como puedo hacer para que me recupere la información de la siguiente manera
Producto - # de Lote , # de Vencimiento, Cliente A , Cliente B, Cliente C, Ciente D, Cliente E, Total
Soda AZS1 31/12/2011 20 20 20 20 20 100 Sodas en Consignación.
Agradezco por todo su apoyo.
Saludos Cordiales.
Hola
Bueno, con este query deberias poder filtrar por fecha en SAP
Solo fataria que filtres los clientes que son hospitales y los tipos de movimientos
DECLARE @TOP INT, @F_INI DATETIME, @F_FIN DATETIME
SET @TOP=(SELECT TOP 1 A.TransId FROM [dbo].[JDT1] A WHERE A.RefDate>='[%0]' AND A.RefDate<='[%1]')
SET @F_INI='[%0]'
SET @F_FIN='[%1]'
DECLARE @pvt_table NVARCHAR(MAX)
SELECT @pvt_table = COALESCE(@pvt_table + ',[' + CardCode + ']', '[' + CardCode + ']')
FROM OCRD
WHERE CardType = 'C'
DECLARE @Pvt NVARCHAR(MAX)
SET @Pvt =
N'
SELECT *
FROM ( SELECT Y1.ItemCode AS Codigo , A1.ItemName AS Nombre_Item, Y2.ExpDate AS Fecha_Venc,Y1.BatchNum AS #Lote, Y1.WhsCode AS Almacen, A2.WhsName AS Nombre_Almacen, Y1.CardCode,
ISNULL((SELECT SUM(X.Quantity) FROM IBT1 X WHERE X.ItemCode=Y1.ItemCode AND X.BatchNum=Y1.BatchNum AND X.WhsCode=Y1.WhsCode AND X.CardCode=Y1.CardCode AND X.Direction != 1),0)-ISNULL((SELECT SUM(X.Quantity) FROM IBT1 X WHERE X.ItemCode=Y1.ItemCode AND X.BatchNum=Y1.BatchNum AND X.WhsCode=Y1.WhsCode AND X.CardCode=Y1.CardCode AND X.Direction=1),0) AS Quantity
FROM IBT1 Y1
INNER JOIN OITM A1 ON A1.ItemCode=Y1.ItemCode
INNER JOIN OWHS A2 ON A2.WhsCode=Y1.WhsCode
INNER JOIN OIBT Y2 ON Y2.BatchNum=Y1.BatchNum AND Y2.ItemCode=Y1.ItemCode
WHERE (Y1.DocDate>=(@INI) AND Y1.DocDate<=(@FIN))
) AS A
PIVOT (
SUM(Quantity)
FOR CardCode IN ('+ @pvt_table +')
) AS Pvt
'
EXEC sp_executesql @pvt, N'@pvt_table NVARCHAR(MAX), @INI DATETIME, @FIN DATETIME',@pvt_table, @F_INI, @F_FIN
Saludos y espero te sirva
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Estimados Amigos
Soy nuevo en esto de los querys y bueno tengo una consulta hecha con el asistente. Ya tengo los campos y las tablas que quiero filtrar. Sin embargo no logro crear un filtro para busqueda por socio de negocios y por fecha para esa consulta
lo que tengo armado es lo siguiente:
SELECT T0.[CardCode] AS 'Código SN', T0.[CardName] AS 'Nombre de socio de negocios', T1.[DocNum] AS 'Número de documento', T1.[U_Paciente] AS 'Nombre del Paciente', T1.[U_CIPaciente] AS 'Cédula del Paciente', T1.[U_CAval] AS 'Carta Aval' FROM [dbo].[OCRD] T0 FULL OUTER JOIN [dbo].[OINV] T1 ON T1.[CardCode] = T0.[CardCode] AND T1.[CardCode] = T0.[CardCode] AND T1.[CardCode] = T0.[CardCode] WHERE T1.[U_CAval] IS NOT NULL
Agradeciendo altamente su ayuda
Saludos
Juan
Hola
Prueba este query
DECLARE @PIVOT_TABLE NVARCHAR(MAX)
SELECT @PIVOT_TABLE = COALESCE(@PIVOT_TABLE + ',[' + CardCode + ']', '[' + CardCode + ']')
FROM OCRD
DECLARE @PIVOTSQL NVARCHAR(MAX)
SET @PIVOTSQL = N'SELECT *
FROM ( SELECT Y1.ItemCode AS Codigo , A1.ItemName AS Nombre_Item, Y2.ExpDate AS Fecha_Venc,Y1.BatchNum AS #Lote, Y1.WhsCode AS Almacen, A2.WhsName AS Nombre_Almacen, Y1.CardCode,
ISNULL((SELECT SUM(X.Quantity) FROM IBT1 X WHERE X.ItemCode=Y1.ItemCode AND X.BatchNum=Y1.BatchNum AND X.WhsCode=Y1.WhsCode AND X.CardCode=Y1.CardCode AND X.Direction != 1),0)-ISNULL((SELECT SUM(X.Quantity) FROM IBT1 X WHERE X.ItemCode=Y1.ItemCode AND X.BatchNum=Y1.BatchNum AND X.WhsCode=Y1.WhsCode AND X.CardCode=Y1.CardCode AND X.Direction=1),0) AS Quantity
FROM IBT1 Y1
INNER JOIN OITM A1 ON A1.ItemCode=Y1.ItemCode
INNER JOIN OWHS A2 ON A2.WhsCode=Y1.WhsCode
INNER JOIN OIBT Y2 ON Y2.BatchNum=Y1.BatchNum AND Y2.ItemCode=Y1.ItemCode
) AS A
PIVOT (
SUM(Quantity)
FOR CardCode
IN ('+ @PIVOT_TABLE +')
) AS Pvt
'
EXECUTE (@PIVOTSQL)
Te sugiero lo siguiente.
Si los Hospitales ya los tienes definidos en algun grupo, Agrega el filtro en esta parte, un ejemplo
DECLARE @PIVOT_TABLE NVARCHAR(MAX)
SELECT @PIVOT_TABLE = COALESCE(@PIVOT_TABLE + ',[' + CardName + ']', '[' + CardName + ']')
FROM OCRD
WHERE GroupCode = 110 /*Suponiendo que este sea el grupo de los hospitales*/
AND
CardName LIKE '%Hospital%' /*Suponiendo que todos tuviesen la palabra hospital en el nombre del SN*/
Y si no, agrega algun filtro con el que puedas identificar solo los hospitales
Ojala te sirva
Saludos
Edited by: Floyola on Aug 11, 2011 4:06 PM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hola
Creo que todos los datos que necesitas estan en las tablas OINM, OIBT e IBT1.
Lo primero es llegar al saldo del almacen y de los articulos usando esas tablas.
Producto - # de Lote - TotalStock
Luego de eso, podrias usar un PIVOT para sumar las cantidades de entradas y salidas por Cliente, filtrando por los tipos de objecto de los documentos que mencionaste.
En realidad se ve bastante desarrollo para el query...mmm
Atte.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
99 | |
9 | |
9 | |
5 | |
4 | |
3 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.