Números de serie y números de lote
Buenas tardes a todos
Hoy les traigo 2 vistas para recopilar información de los movimientos que tienen los números de serie y los números de lote en SAP Business One.
Partiremos con los lotes:
CREATE VIEW BatchNumber_Report AS SELECT DISTINCT T0.ItemCode AS Cod_Item, T0.ItemName AS Nombre_Item, T0.BatchNum AS Lote, T0.WhsCode AS Almacen, CASE T1.Status WHEN 0 THEN 'Liberado' WHEN 1 THEN 'Acceso Denegado' WHEN 2 THEN 'Bloqueado' END AS Estado, T2.Quantity AS Cantidad, CASE T3.BaseType WHEN 13 THEN 'Factura Clientes' WHEN 14 THEN 'NC Clientes' WHEN 15 THEN 'Entrega' WHEN 16 THEN 'Devolucion' WHEN 18 THEN 'Factura Proveedor' WHEN 19 THEN 'NC Proveedores' WHEN 20 THEN 'Entrada mercaderia OP' WHEN 21 THEN 'Devolucion mercaderias' WHEN 59 THEN 'Entrada mercaderias' WHEN 60 THEN 'Salida de mercaderias' WHEN 67 THEN 'Traslado stock' ELSE CONVERT(NVARCHAR(5),T3.BaseType) END AS Documento, T3.BaseNum AS NroDocto, T4.TransId AS Asiento, T3.BaseLinNum AS Linea, T3.DocDate AS Fecha, T3.WhsCode AS Alm_Docto, T3.CardName AS IC, CASE T3.Direction WHEN 1 THEN T3.Quantity*-1 ELSE T3.Quantity END AS Cant_Docto, CASE T3.Direction WHEN 1 THEN 'Salida' ELSE 'Entrada' END AS Sentido FROM OIBT T0 INNER JOIN OBTN T1 ON T1.ItemCode=T0.ItemCode AND T1.DistNumber=T0.BatchNum INNER JOIN OBTQ T2 ON T2.ItemCode=T1.ItemCode AND T2.SysNumber=T1.SysNumber LEFT JOIN IBT1 T3 ON T3.ItemCode=T0.ItemCode AND T3.BatchNum=T0.BatchNum LEFT JOIN JDT1 T4 ON T4.TransType=T3.BaseType AND T4.BaseRef=T3.BaseNum AND T4.CreatedBy=T3.BaseEntry GO
Esta vista, contiene todas las operaciones que tienen que ver con los lotes.
Luego con una select a la vista, podemos obtener el saldo del inventario de los artículos y sus lotes o realizar un reporte de entradas y salida por articulo y lotes en Crystal Reports, va en la creatividad de cada uno.
SELECT DISTINCT T0.Cod_Item, T0.Nombre_Item, T0.Lote, T0.Estado, T0.Cantidad FROM BatchNumber_Report T0 WHERE T0.Cantidad>0 UNION ALL SELECT DISTINCT T0.Cod_Item, T0.Nombre_Item, 'Z Total ' + T0.Cod_Item, '', SUM(T0.Cantidad) FROM BatchNumber_Report T0 WHERE T0.Cantidad>0 GROUP BY T0.Cod_Item, T0.Nombre_Item, T0.Cantidad ORDER BY 1,3
Ahora compararemos lo que dice el reporte de auditoria de stock y lo que entrega el resultado de la query:
Ahora haré lo mismo pero con los números de serie, la vista:
CREATE VIEW SerialNumber_Report AS SELECT DISTINCT T0.ItemCode AS Cod_Item, T0.ItemName AS Nombre_Item, T0.IntrSerial AS Serie, T0.WhsCode AS Almacen, CASE T0.Status WHEN 0 THEN 'Disponible' WHEN 1 THEN 'No disponible' WHEN 2 THEN 'Imputado' END AS Estado, T2.Quantity AS Cantidad, CASE T3.BaseType WHEN 13 THEN 'Factura Clientes' WHEN 14 THEN 'NC Clientes' WHEN 15 THEN 'Entrega' WHEN 16 THEN 'Devolucion' WHEN 18 THEN 'Factura Proveedor' WHEN 19 THEN 'NC Proveedores' WHEN 20 THEN 'Entrada mercaderia OP' WHEN 21 THEN 'Devolucion mercaderias' WHEN 59 THEN 'Entrada mercaderias' WHEN 60 THEN 'Salida de mercaderias' WHEN 67 THEN 'Traslado stock' ELSE CONVERT(NVARCHAR(5),T3.BaseType) END AS Documento, T3.BaseNum AS NroDocto, T4.TransId AS Asiento, T3.BaseLinNum AS Linea, T3.DocDate AS Fecha, T3.WhsCode AS Alm_Docto, T3.CardName AS IC, CASE T3.Direction WHEN 1 THEN 'Salida' ELSE 'Entrada' END AS Sentido FROM OSRI T0 INNER JOIN OSRN T1 ON T1.ItemCode=T0.ItemCode AND T1.DistNumber=T0.IntrSerial INNER JOIN OSRQ T2 ON T2.ItemCode=T1.ItemCode AND T2.SysNumber=T1.SysNumber LEFT JOIN SRI1 T3 ON T3.ItemCode=T0.ItemCode AND T3.SysSerial=T1.SysNumber LEFT JOIN JDT1 T4 ON T4.TransType=T3.BaseType AND T4.BaseRef=T3.BaseNum AND T4.CreatedBy=T3.BaseEntry GO
El query:
SELECT DISTINCT T0.Cod_Item, T0.Nombre_Item, T0.Serie, T0.Estado, T0.Cantidad FROM SerialNumber_Report T0 WHERE T0.Cantidad>0 UNION ALL SELECT DISTINCT T0.Cod_Item, T0.Nombre_Item, 'Z Total ' + T0.Cod_Item, '', SUM(T0.Cantidad) FROM SerialNumber_Report T0 WHERE T0.Cantidad>0 GROUP BY T0.Cod_Item, T0.Nombre_Item, T0.Cantidad ORDER BY 1,3
Bueno, eso es todo.
Espero les haya gustado
Buenas Tardes
Felipe gracias por el query me dio una luz para una auditoria donde me solicitaban exactamente la información que muestra el query.
Estoy tratando de agregar ubicaciones a este reporte y no lo consigo, como deberia hacerlo???
Desde ya Muchas gracias, el query esta genial
Hola darius, la query tiene bastantes años, antes de las ubicaciones.
He realizado un par y es bastante difícil llegar al resultado, lamentablemente no las tengo a mano.
Hola Felipe (Loyola).
Mi problema es distinto. La forma que conozco para ingresar números de serie de un pedido de compras por la MIGO sólo me permite ingresarlos de 6 en 6. Supongo debe haber una forma masiva de hacerlo. Puede ayudarme, por favor?
Estimado, no se que es «MIGO».
Atte
Hola Felipe, estoy intentando hacer un reporte con la vista de numeros de serie que dio, pero no logro tomar unicamente los que son utilizados en una orden de traslado. Conoce alguna manera para hacerlo?
Adjunto pongo el query que tengo de momento
SELECT DISTINCT T0.ItemCode, T0.IntrSerial, T3.DocNum, T3.DocDate FROM
dbo.OSRI T0
LEFT JOIN dbo.SRI1 T1 ON T1.ItemCode = T0.ItemCode
LEFT JOIN dbo.OSRN T2 ON T2.ItemCode = T0.ItemCode
LEFT JOIN dbo.OWTR T3 ON T3.DocNum = T1.BaseNum
WHERE
T1.Direction = 1 AND
T3.DocEntry = 40574
ORDER BY 1, 3, 2, 4 DESC;
Saludos
Solucionado
SELECT DISTINCT
T0.BaseLinNum AS ‘Linea’, T0.ItemCode, T0.ItemName,
1 AS ‘Quantity’, T2.MnfSerial AS ‘Número de Serie’,
CASE T0.ExpDate WHEN ’01/01/1900′ THEN » ELSE T0.ExpDate END AS ‘ExpDate’, T3.WhsCode AS ‘Almacen’, T6.WhsName,
CASE T3.Direction WHEN 1 THEN ‘Salida’ELSE ‘Entrada’ END as Sentido
FROM
OSRI T0
INNER JOIN OSRN T2 ON T2.ItemCode = T0.ItemCode AND T2.SysNumber= T0.SysSerial
LEFT JOIN SRI1 T3 ON T3.ItemCode=T0.ItemCode AND T3.SysSerial=T2.SysNumber
INNER JOIN OWTR T5 ON T5.DocNum = T3.BaseNum
LEFT JOIN OWHS T6 ON T6.WhsCode = T3.WhsCode
WHERE
T3.Direction = 1 AND
T5.DocEntry = 40575 AND
T0.IntrSerial !=»;
Ese sería el query
Hola.
Si tenemos ubicaciones para los lotes, ¿como quedaría la consulta para ver de que ubicación se cogio?
Un saludo y muchas gracias
Hola Manuel, la query tiene bastantes años, antes de las ubicaciones.
He realizado un par y es bastante difícil llegar al resultado, lamentablemente no las tengo a mano.
hola felipe
Quisiera solicitar una ayuda de sap, sobre una busqueda formeteada
cuando se hace la entrada de mercaderia por compras,
que cuando pida el lote que la busqueda formeteada traiga
codigo del articulo + numero de orden de compra
podria hacerse una busqueda asi ??
gracias felipe
Es bastante difícil lo que pides, pero si quieres traer el resultado de otra ventana de SAP hacía la OC, es imposible por BF, las BF solo leen la información que está en el formulario de pantalla, con excepción de cuando el documento ya está creado en la base de datos, en ese caso puedes consultar las tablas.
Buenas tardes Felipe,
Tu reporte esta perfecto, pero ahora estoy tratando de sacar un reporte de las ventas de cierto articulo con numero de serie, en tu reporte quisiera agregaar que solo me muestre las ventas restandole las notas de credito pero no he logrado hacerlo.
Saludos.
En ese caso, debes filtrar el BaseType, el valor 13 son ventas y los 14 son notas de credito.
Saludos
gracias por los aportes, tengo una consulta puntual, cual es el vinculo o enlace que hay entre las facturas o creditos fiscales con el documento de entrega, sucede que desde las facturas no puedo ver el lote al que pertenece un producto, pero si desde el documento de entrega.
Saludos
Buenas tardes, lamento la tardia respuesta pero estaba muy corto de tiempo.
Respondiendo su consulta, los vinculos se encuentran a nivel de detalle, campos (BaseEntry, BaseType, BaseLine — En la factura).
Saludos
Me parece excelente el ejemplo de las vistas, lo voy a tomar muy en cuenta para elaborar nuevas consultas y nuevos informes.
Te lo agradezco Felipe Loyola.
Muy buen aporte, gracias.