Hola
Creo que el problema radica en que SBO considera dentro del comprometido las cantidades solicitadas de cada componente en la orden de producción.
Te dejo una consulta modificada:
IF @object_type in ('202') and @transaction_type in ('A') begin DECLARE cr_oitm CURSOR FOR select T1.itemcode, SUM(T0.OnHand) as Stock, SUM(T0.iscommited) as Comprometido, MAX(t1.PlannedQty) as Planificada FROM OITW T0 inner join WOR1 T1 on T0.ItemCode = T1.ItemCode where T1.DocEntry = @list_of_cols_val_tab_del group by T1.ItemCode OPEN cr_oitm FETCH NEXT FROM cr_oitm into @itemcode, @stock, @comprometido, @planificada WHILE @@FETCH_STATUS = 0 BEGIN if (@stock - @comprometido + @planificada < @planificada) begin if @error_message = 'Ok' set @error_message = 'Artículos que no tienen stock ' set @error_message = @error_message + @itemcode + '-' + CAST(@stock as CHAR(3)) + ' ' + CAST(@comprometido as CHAR(3)) + ' ' + CAST(@planificada as CHAR(3)) set @num = 100 end FETCH NEXT FROM cr_oitm into @itemcode, @stock, @comprometido, @planificada END CLOSE cr_oitm DEALLOCATE cr_oitm end
Un saludo
Agustín Marcos Cividanes