Hola.
Lo que necesitas es una datawindow (ldw_producto)
Haces un retrieve por ejemplo ldw_producto (...) para mostrar el producto con el que vas a trabajar.
Luego supongo que tendrás un objeto con los detalles del detalle del comprobante y una cantidad que vas a restar al stock del producto.
Lo que tienes que hacer es lo siguiente.
ll_cantidad = Long (sle_cantidad.Text)
ll_cantidad_producto = ldw_producto.GetItemNumber (ll_fila, 'stock')
ll_cantidad_producto -= ll_cantidad
Y después de hacer los controles necesarios, ... que ll_cantidad no sea negativo, que ll_cantidad_producto no sea negativo, que no haya nulos, etc... haces
ldw_producto.SetItem ('stock', ll_cantidad_producto)
ll_update = ldw_producto.Update ()
if ll_upadte > 0 then
gf_commit (ll_update, sqlca) // Haría commit o rollback ç
end if
Esto te funcionará si vas a trabajar con una sola aplicación contra la base de datos. Si la aplicación se va a ejecutar con varios usuarios hay que hacer alguna modificación en la datawindow de producto para evitar que dos usuarios al mismo tiempo actualicen un mismo registro.
Espero haberte ayudado.