Você pode utilizar as funções NMIN e NMAX para retornar os valores mínimos e máximos entre pelo menos dois parâmetros. Estas funções fazem o mesmo trabalho da clausula IF efetuando comparações utilizando os sinais de maior (>) ou menor (<), porem possuem uma sintaxe muito menos complexa se utilizados muitos parâmetros.
Fora de uma expressão aritmética, um tipo de cálculo é determinado a partir de todos os argumentos, e é utilizado para realizar a comparação. O tipo de cálculo é determinado apenas como uma expressão aritmética e também determina o tipo do valor de retorno de dados.
Em uma expressão aritmética, os argumentos da função contribuem para o tipo de cálculo de toda a expressão e a função é calculada usando o tipo do cálculo. Se um argumento em si é uma expressão aritmética, os operandos contribuem para todo o tipo de cálculo e o argumento também é calculado usando esse mesmo tipo.
Exemplo:
Neste exemplo criamos uma tela de seleção com três parâmetros e as funções Extremum verificam e exibem uma mensagem retornando o maior e o menor parâmetro dentro das possibilidades alimentadas pelo usuário.
Abap
*&---------------------------------------------------------------------*
*& Report ZMAXMIN
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Numerical Extremum Functions
*&---------------------------------------------------------------------*
REPORT ZMAXMIN.
* Cria parametros de seleção
SELECTION-SCREEN COMMENT /1(10) text-par.
PARAMETERS: valor1 TYPE i DEFAULT 0,
valor2 TYPE i DEFAULT 0,
valor3 TYPE i DEFAULT 0.
* Declara variáveis
DATA: minimo TYPE decfloat34,
maximo TYPE decfloat34,
val1 TYPE decfloat34,
val2 TYPE decfloat34,
val3 TYPE decfloat34,
txt TYPE string.
* Inicio da seleção
START-OF-SELECTION.
* Verifica os valores minimos e máximos
minimo = nmin( val1 = valor1 val2 = valor2 val3 = valor3 ).
maximo = nmax( val1 = valor1 val2 = valor2 val3 = valor3 ).
* Cria texto da menssagem
txt = |{ txt } o valor minimo é: { minimo } e o valor máximo é: { maximo } |.
* Exibe menssagem de informação
MESSAGE txt TYPE 'I'.
* Exibe menssagem de erro (valida campos)
AT SELECTION-SCREEN.
IF valor1 = 0 or valor2 = 0 or valor3 = 0.
MESSAGE 'Você deve entrar com um valor diferente de zero' TYPE 'E'.
ENDIF.


