Hola Oscar. Revisemos si he logrado entenderte.
En el campo SMALLINT tienes un valor entero que corresponde a la cantidad de horas de anticipación con la que tienes que generar la alarma.
En otro campo de tipo Hora ( SY - UZEIT), tienes la hora en la cual debería generarse la alarma.
Entonces, lo que necesitas hacer es restarle a la hora actual, la cantidad de horas del campo SMALLINT y eso te da una hora. Luego comparas esa hora con la actual y si es mayor o igual, generas la alarma. ¿Es correcto?
Si es así, puedes usar el FM IGN_TIMESTAMP_PLUSMINUS teniendo en cuenta los siguientes parámetros:
VALUE ( START_DATE ) LIKE SY - DATUM --> Fecha Actual
VALUE ( START_TIME ) LIKE SY - UZEIT --> Hora Actual
VALUE ( HOURS ) TYPE INT4 DEFAULT '0' --> Cantidad de horas a sumar/restar (Entero)
VALUE(FORWARD) TYPE BOOLE_D DEFAULT 'X' --> Sumar
VALUE(BACKWARD) TYPE BOOLE_D DEFAULT ' ' --> Restar
Tanto sumando como restando, el FM te devuelve dos salidas:
VALUE(RESULT_DATE) LIKE SY-DATUM -->Fecha resultante
VALUE(RESULT_TIME) LIKE SY-UZEIT -->Hora resultante
Estos dos campos los puedes comparar con la fecha actual (Sy-datum) y Hora Actual (sy-uzeit) y generar la alarma si es procedente.
Quedo pendiente de tus comentarios.
Saludos,
Dairo