Buen día a Todos, recurro a su experiencia en el tema, para solicitarles me orienten sobre lo que me esta fallando en una validación que hago en el Transaction Notification para que cuando se ejecute una transferencia de stock ( x Lotes ), no permita transferir parcialidades del lote, solamente la cantidad total del LOTE, actualmente este es mi código, por cierto estoy trabajando en Sap B1
IF @object_type = '67' AND @transaction_type IN ('A','U')
BEGIN
DECLARE @T_Temporal TABLE
(
Num int IDENTITY(1,1)
,DocEntry Int
,DocNum Int
,LineNum Int
,ItemCode nvarchar(50)
,BatchNum nvarchar(36)
,Quantity numeric(19,6)
,FromWhsCod nvarchar(8)
,WhsCode nvarchar(8)
)
INSERT INTO @T_Temporal
SELECT DISTINCT
T0.DocEntry
,T0.DocNum
,T1.LineNum
,T1.ItemCode
,T2.BatchNum
,T1.Quantity
,T1.FromWhsCod
,T1.WhsCode
FROM OWTR T0
INNER JOIN WTR1 T1 ON T1.DocEntry=T0.DocEntry
INNER JOIN IBT1 T2 ON T2.BaseEntry=T0.DocEntry AND T2.BaseLinNum=T1.LineNum
WHERE T2.BaseType=67 AND t2.Direction=1 AND T0.DocEntry = @list_of_cols_val_tab_del --AND T0.DocEntry=214
Order by T0.DocNum ,T1.LineNum
DECLARE
@I As Int,
@Tope As Int,
@Lote As varchar (36),
@QtyLote As Numeric(19,6),
@QtyTransf As Numeric(19,6)
SET @I = 1
SET @Tope = (SELECT ISNULL (Count(Num),0) FROM @T_Temporal)
WHILE @I <= @Tope
BEGIN
SET @Lote = (Select BatchNum From @T_Temporal WHERE Num = @I)
SET @QtyTransf = (Select Quantity From @T_Temporal WHERE Num = @I)
SET @QtyLote = (select t1.Quantity from OBTN T0 inner join OBTQ T1 ON T1.ItemCode=T0.ItemCode AND T1.SysNumber=T0.SysNumber where t0.DistNumber=@Lote)
IF @QtyTransf <> @QtyLote -- MANDA ERROR SI, LA CANIDAD TRANSFERIDA ES DIFERENTE A LA CANTIDAD DEL LOTE
BEGIN
SET @error = 1008
SET @error_message = 'El Lote No. ' + @Lote + ' Intenta Tranferirse Con Una Cantidad No Valida!!! '
RETURN
END
SET @I = @I + 1 --Incremento
END
END
cuando ejecuto una transferencia, me marca el siguiente Error :
se ha producido un error interno (512) Mensaje (131-183)
De antemano agradezco todo su apoyo, saludos!!