cancel
Showing results for 
Search instead for 
Did you mean: 

Ayuda Query Lotes

former_member203638
Active Contributor
0 Kudos

Hola a todos, tengo un problemita con el query de lotes y fechas.

Teniamos SAP 2005A con SQL2000 y Migramos a SAP 8.8 PL20 y SQL 2008

Usabamos en SAP 2005A estas consultas para trasladar el Lote, Fecha de Admision y Localidad de la Remision a la Factura de Cliente

Para Lote

 SELECT T1.BatchNum
FROM IBT1 T0 INNER JOIN OIBT T1 ON T0.BatchNum=T1.BatchNum
WHERE T0.BaseType=15 AND T0.BaseEntry=$[INV1.BaseEntry] AND T0.BaseLinNum=$[INV1.BaseLine]

Para Fecha

 SELECT T1.Indate
FROM IBT1 T0 INNER JOIN OIBT T1 ON T0.BatchNum=T1.BatchNum
WHERE T0.BaseType=15 AND T0.BaseEntry=$[INV1.BaseEntry] AND T0.BaseLinNum=$[INV1.BaseLine]

Para Procedencia.

 SELECT T1.SuppSerial
FROM IBT1 T0 INNER JOIN OIBT T1 ON T0.BatchNum=T1.BatchNum
WHERE T0.BaseType=15 AND T0.BaseEntry=$[INV1.BaseEntry] AND T0.BaseLinNum=$[INV1.BaseLine]

Ahora con SAP 8.8, Copiar una Remision a Factura de Cliente, o una Orden de Venta a Factura tarda como 10 minutos (aunque sea de 1 renglon) y sí pasa los Lotes y fechas y Procedencia.

Si deshabilito los 3 querys, el copiar cualquier documento a Factura de cliente es instantaneo, Supongo que los nombres de las tablas han cambiado. Veo que en la info detallada de lote ya no es OIBT ahora es OBTN

Algun Tip?

Edito1: Ya he probado con el procedimiento de este enlace y el mismo resultado,

SDNWeblogs_SapBusinessOne%2528SAPNetworkWeblogs%253ASAPBusiness+One%2529

eDITO2: Tambien he probado con el Store de Jesus en este post

Tarda menos tiempo, pero no es normal, de echo si le doy "Registro de Datos Anterior" tarda, sera algo en la BD?

Gracias y Saludos.

Alessandro.

Edited by: Alessandro Santinelli on Apr 27, 2011 3:01 AM

Edited by: Alessandro Santinelli on Apr 27, 2011 4:04 AM

Edited by: Alessandro Santinelli on Apr 27, 2011 4:12 AM

Accepted Solutions (0)

Answers (1)

Answers (1)

former_member203638
Active Contributor
0 Kudos

Alguien ya ha echo query para lotes en SAP 8.8?

Saludos.

Alessandro

felipe_loyolarodriguez
Active Contributor
0 Kudos

La unica que he hecho, es esta


SELECT T0.ItemCode, T1.ItemName, T0.BatchNum, T0.WhsCode, T2.WhsName, ISNULL((SELECT SUM(Y.Quantity) FROM IBT1 Y WHERE Y.ItemCode = T0.ItemCode AND Y.WhsCode = T0.WhsCode AND Y.BatchNum = T0.BatchNum AND Y.Direction != '1' AND Y.DocDate <= '[%0]'),0)-ISNULL((SELECT SUM(Y.Quantity) FROM IBT1 Y WHERE Y.ItemCode = T0.ItemCode AND Y.WhsCode = T0.WhsCode AND Y.BatchNum = T0.BatchNum AND Y.Direction = '1' AND Y.DocDate <= '[%0]'),0) 'Stock'
FROM IBT1 T0
INNER JOIN OITM T1 ON T1.ItemCode = T0.ItemCode
INNER JOIN OWHS T2 ON T2.WhsCode = T0.WhsCode

Para lotes en 8.8

former_member203638
Active Contributor
0 Kudos

Gracias Floyola, esas tablas son las que tenia en las consultas, revisando unas notas de sap dice que las tablas fueron cambiadas por:

Batch Number

Old Tables OIBT, IBT1, OSRD

New Tables OBTN, OBTQ, OBTW, OITL, ITL1

Pero no me queda claro como hacerlo con mi consulta en el From

 
declare @batch as nvarchar(100)
declare @txt nvarchar(max) 
set @txt = '' 
declare P cursor for SELECT T0.[BatchNum] 
*FROM OIBT T0 INNER JOIN IBT1 T1 ON T0.ItemCode = T1.ItemCode and T0.WhsCode = T1.WhsCode*
  *and T0.BatchNUm = T1.BatchNum** 
  *WHERE T1.[BaseEntry] =$[$38.45.0] and T1.[BaseLinNum] =$[$38.46.0]*
open P 
fetch next from P into @batch 
while @@fetch_status = 0 
begin
 set @txt = @txt + @batch +','
 fetch next from P into @batch 
end 
close P 
deallocate P 
select @txt

Saludos.

Alessandro.

Edited by: Alessandro Santinelli on Apr 29, 2011 7:20 PM

Edited by: Alessandro Santinelli on Apr 29, 2011 7:23 PM

former_member188440
Active Contributor
0 Kudos

solo sustituye el nombre de la tabla por la nueva en el from, no es necesario cambiar el alias

Solo revisa que la tabla que sustituyes corresponda a la nueva (origen de datos)

former_member203638
Active Contributor
0 Kudos

Gracias Mauricio/Floyola, es lo que no me queda claro de las tablas nuevas segun SAP, OBTN, OBTQ, OBTW, OITL, ITL1

Como sustituir mi from

FROM OIBT T0 INNER JOIN IBT1 T1 ON T0.ItemCode = T1.ItemCode and 
T0.WhsCode = T1.WhsCode and T0.BatchNUm = T1.BatchNum 
WHERE T1.[BaseEntry] =$[$38.45.0] and T1.[BaseLinNum] =$[$38.46.0]

De antemano, muchas gracias.

Alessandro.

former_member188440
Active Contributor
0 Kudos

De tu consulta original, la que te funcionaba oibt e ibt1 son las correspondientes a lotes.

Cambialas por las nuevas, ubicalas desde el generador de consultas, para que veas de los nombres que tienes ahora, cual corresponde a lotes y a su detalle

former_member203638
Active Contributor
0 Kudos

No queda...

Veamos

declare @batch as nvarchar(100)
declare @txt nvarchar(max) 
set @txt = '' 
declare P cursor for 

SELECT T0.[DistNumber] 
FROM OBTN T0 INNER JOIN OITL T1 ON T0.ItemCode=T1.ItemCode 
WHERE T1.[BaseType] =15 and  T1.[BaseEntry] = $[INV1.BaseEntry] and 
 T1.[BaseLine] = $[INV1.BaseLine]

open P 
fetch next from P into @batch 
while @@fetch_status = 0 
begin
set @txt = @txt + @batch +','
fetch next from P into @batch 
end 
close P 
deallocate P 
select @txt

En que estoy mal?

Saludos.

former_member203638
Active Contributor
0 Kudos

Despues de un tiempo ya quedo, Por si alguien maneja lotes en 8.8


DECLARE @LOTE AS NVARCHAR(300)
DECLARE @TXT NVARCHAR(MAX)
SET @TXT = ''
DECLARE P CURSOR FOR 
Select Distinct T2.DistNumber 
From ITL1 T0 
INNER JOIN OITL T1 ON  T0.LogEntry = T1.LogEntry
INNER JOIN OBTN T2 ON T0.ItemCode = T2.ItemCode and T0.SysNumber = T2.SysNumber
INNER JOIN DLN1 T3 ON T1.DocEntry = T3.DocEntry
Where T3.DocEntry = $[INV1.BaseEntry] and T3.ItemCode = $[INV1.Itemcode] and T3.LineNum = $[INV1.LineNum] and T2.ItemCode= $[INV1.ItemCode]
OPEN P
FETCH NEXT FROM P INTO @LOTE
WHILE @@FETCH_STATUS = 0
BEGIN
SET @TXT =@TXT + @LOTE + ',' 
FETCH NEXT FROM P INTO @LOTE
END 
CLOSE P
DEALLOCATE P
SELECT Case When Right(rtrim(@txt),1)=',' Then SUBSTRING(rtrim(@TXT),1,LEN(rtrim(@TXT))-1)
ELSE @TXT END as Lote

Saludos

Alessandro

Former Member
0 Kudos

Oye alessandro.....yo queiro usar un campo de usuario anivel de lineas de la factura y solo quiero que me traiga el lote.

tu query me funcionaria?

former_member203638
Active Contributor
0 Kudos

Si funciona, pero tienes que pasar por la remision para que te funcione.(El cual es mi caso)

Si descuentas los lotes directo en factura no te los va a poner.

Saludos

Alessandro.