Hola a todos,
1-) quiero crear un query que me muestre una lista de articulos, una comparación entre el stock ,el comprimetido y stock minimo,
2-) Y que ademas me diga la fecha de la.iltima compra hecha por la empresa, y me muestre las cantidades compradas en esa ultima compra y el proveedor de esa ultima compra.
Ya el punto 1.- lo tengo listo
y del punto 2.- me falta saber hacer el filtrado para que siempre me muestre los datos solo de la.ultima compra
las facturas de compra las sacas de OPCH, detalle de PCH1:
Select top 1 T0.Docdate, T0.CardCode, T0.CardName, T1.Quantity, from OPCH T0
INNER JOIN PCH1 T1 ON T0.DocEntry = T1.DocEntry
where T1.ItemCode = 'ITEM'
ORDER BY T0.Docdate DESC
Hola Willy, gracias por el dato, lo hice de esta manera y no me funciono, dice que hay un problema con la palabra ‘top’, fijate como lo escribi:
SELECT T0.[ItemCode], T0.[ItemName], T0.[OnHand] as 'Stock', T0.[IsCommited] as 'Comprometido', T0.[OnOrder] as 'Solicitado', T0.[MinLevel] as 'Stock critico', CASE WHEN (T0.[OnHand]+T0.[OnOrder]-T0.[IsCommited]) < 0 THEN (T0.[OnHand]+T0.[OnOrder]-T0.[IsCommited])*(-1.25) ELSE '0' END as 'Cantidad a Comprar segun comprometido', CASE WHEN (T0.[OnHand]+T0.[OnOrder]) < T0.[MinLevel] THEN ( T0.[MinLevel] *(1.25)) - (T0.[OnHand]+T0.[OnOrder]) ELSE '0' END as 'Cantidad a Comprar segun stock critico', **top 1 T1.[Quantity], T2.[CardCode], T2.[CardName], T2.[DocDate**
FROM OITM T0 INNER JOIN PDN1 T1 ON T0.[ItemCode] = T1.[ItemCode] INNER JOIN OPDN T2 ON T1.[DocEntry] = T2.[DocEntry]
T0.[ItemCode], T0.[ItemName], T0.[OnHand] as 'Stock', T0.[IsCommited] as 'Comprometido', T0.[OnOrder] as 'Solicitado', T0.[MinLevel] as 'Stock critico', CASE WHEN (T0.[OnHand]+T0.[OnOrder]-T0.[IsCommited]) < 0 THEN (T0.[OnHand]+T0.[OnOrder]-T0.[IsCommited])*(-1.25) ELSE '0' END as 'Cantidad a Comprar segun comprometido', CASE WHEN (T0.[OnHand]+T0.[OnOrder]) < T0.[MinLevel] THEN ( T0.[MinLevel] *(1.25)) - (T0.[OnHand]+T0.[OnOrder]) ELSE '0' END as 'Cantidad a Comprar segun stock critico', MAX(T1.[Quantity]), T2.[CardCode], T2.[CardName], T2.[DocDate]
cuando lo pongo asi me arroja este error:
1). [Microsoft][SQL Server Native Client 11.0][SQL Server]Column ‘OITM.ItemCode’ is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. 2). [Microsoft][SQL Server Native Client 11.0][SQL Server]Statement ‘’ (SWEI) (s) could not be prepared.
Hola @JuanR
Lo que solicitas me suena a un informe para la toma de decisiones de compra de las materias primas de la empresa.
Quisiera preguntarte si ya usan el MRP, ya que este es muy útil a la hora de tomar una decisión tan importante para la compañía, también me gustaría preguntar en que versión se encuentran, ya que desde la versión 9.3 pl 10, se implemento un informe de inventario rotativo que puede ayudar aun mas a la hora de comprar.
Exactamente eso es lo que quiero hacer.
El MRP no lo usamos, la verdad es que la empresa es “Pequeña” y hasta ahora al parecer (al parecer digo porque tengo poco tiempo en la empresa) no han necesitado usarlo y no están configurados los items para esto, que entiendo es bastante trabajo, de cualquier forma la versión de SAP B1 es SAP 9.2 PL:10, creo que no tiene ese informe que me comentas, o si??
@JuanR
Este solo esta disponible a partir de la versión 9.3 pl10, podrían realizar la migración a esta versión, ya que están un poco quedados y dentro de pronto saldrá la versión SAP 10.
Siempre les recomiendo a todos mis clientes que se mantengan actualizando a las nuevas versión de va sacando SAP, ya que se van corrigiendo errores y van sacando mejoras, esto les permite estar mejorando sus procesos ya que SAP desea el mejor rendimiento en los procesos para sus clientes.
El partner esta en la disposición de entregar los instaladores de las nuevas versión cada vez que salen, de la empresa depende si están en la capacidad de realizar la migración o de acordar con el partner este proceso.
Algo asi seria , solo mueve los transtype a tus requerimientos y los almacenes (01PRUEBA) a el tuyo
select a.ItemCode, a.ItemName, a.OnHand, b.ItmsGrpNam
, a.createDate as [Fecha de producción]
, (select MAX(createDate) from OINM where ItemCode = a.ItemCode and Warehouse = '01PRUEBA' and TransType in (20,69,10000071)) as [Ultima Entrada]
, (select SUM(InQty) from OINM where ItemCode = a.ItemCode and Warehouse = '01PRUEBA' and TransType in (20,69,10000071) and createDate = ( select MAX(createDate) from OINM where ItemCode = a.ItemCode and Warehouse = '01PRUEBA' and TransType in (20,69,10000071) ) ) as [Cantidad Ultima Entrada]
, (select SUM(InQty) from OINM where ItemCode = a.ItemCode and Warehouse = '01PRUEBA' and TransType in (20,69,10000071) and createDate between '20180101' and '20181231' ) as [Total Entradas 2018]
, (select MAX(createDate) from OINM where ItemCode = a.ItemCode and Warehouse = '01PRUEBA' and TransType in (60)) as [Ultima Salida]
, (select SUM(OutQty) from OINM where ItemCode = a.ItemCode and Warehouse = '01PRUEBA' and TransType in (60) and createDate = ( select MAX(createDate) from OINM where ItemCode = a.ItemCode and Warehouse = '01PRUEBA' and TransType in (60) ) ) as [Cantidad Ultima Salida]
, (select SUM(OutQty) from OINM where ItemCode = a.ItemCode and Warehouse = '01PRUEBA' and TransType in (60) and createDate between '20180101' and '20181231' ) as [Total Salidas 2018]
, c.OnHand [Stock en 01PRUEBA]
, CASE
WHEN a.validFor = 'Y' and a.frozenFor = 'N' THEN 'Activo'
WHEN a.validFor = 'N' and a.frozenFor = 'Y' THEN 'Inactivo'
EnD as Activo
from OITM a
inner join OITB b on a.ItmsGrpCod = b.ItmsGrpCod
inner join OITW c on a.ItemCode = c.ItemCode
and c.WhsCode = '01PRUEBA'
and c.OnHand is not null