Olá Oscar. Vamos verificar se consegui te entender.
No campo SMALLINT, você tem um valor inteiro que corresponde à quantidade de horas de antecedência com que deve gerar o alarme.
Em outro campo do tipo Hora ( SY - UZEIT), você tem a hora em que o alarme deve ser gerado.
Então, o que você precisa fazer é subtrair da hora atual a quantidade de horas do campo SMALLINT e isso lhe dará uma hora. Em seguida, compare essa hora com a atual e, se for maior ou igual, gere o alarme. Está correto?
Se for o caso, você pode usar o FM IGN_TIMESTAMP_PLUSMINUS levando em consideração os seguintes parâmetros:
VALUE ( START_DATE ) LIKE SY - DATUM†††† --> Data Atual
VALUE ( START_TIME ) LIKE SY - UZEIT††††††† --> Hora Atual
VALUE ( HOURS ) TYPE INT4 DEFAULT '0'†† --> Quantidade de horas a somar/subtrair (Inteiro)
VALUE(FORWARD) TYPE† BOOLE_D DEFAULT 'X'† --> Somar
VALUE(BACKWARD) TYPE† BOOLE_D DEFAULT ' ' --> Subtrair
Tanto somando quanto subtraindo, o FM te devolve duas saídas:
VALUE(RESULT_DATE) LIKE† SY-DATUM†††††††† --> Data resultante
VALUE(RESULT_TIME) LIKE† SY-UZEIT††††††††††† --> Hora resultante
Esses dois campos podem ser comparados com a data atual (Sy-datum) e a Hora Atual (sy-uzeit) para gerar o alarme, se necessário.
Fico aguardando seus comentários.
Saudações,
Dairo