Hola.
El problema no es el trigger, sino el lugar.
Lo que pasa es que cuando el trigger se dispara, tu ya 'tienes foco' en el campo alumno.codigo y por eso ya forms no puede cambiarlo.
Para evitar eso tienes que mover tu codigo a otro lado, por ejemplo el pre-text del campo o tal vez al when-new-record-instance o al pre-record de bloque alumno.
Por otro lado, aunque no cambia en nada el codigo que programaste, por claridad yo le haria un cambio, en vez de poner un if, pondria el segundo if en un else, dejando el codigo asi:
BEGIN
IF :SYSTEM.MODE <> 'ENTER-QUERY' THEN
SET_ITEM_PROPERTY ('ALUMNO.CODIGO', ENABLED, PROPERTY_FALSE);
Else
SET_ITEM_PROPERTY ('ALUMNO.CODIGO', ENABLED, PROPERTY_TRUE);
END IF;
END;
Ojala te sirva, y quedo a tus ordenes (y de todos los foristas).