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 que estás procesando.
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
Modifica las condiciones para seleccionar tus artículos y finalizar la consulta.
Un saludo
Agustín Marcos Cividanes