
Uma ramificação condicional é uma estrutura de controle que permite que você torne a execução do código dependente de condições lógicas.
A ramificação condicional mais comum consiste em um par de palavras-chave IF e ENDIF. O bloco de código entre IF e ENDIF só é executado se a condição após IF for cumprida.
Você pode adicionar mais blocos de código ampliando a estrutura IF … ENDIF com até uma palavra-chave ELSE e um número arbitrário de palavras-chave ELSEIF. Ao adicionar a palavra-chave ELSE, você garante que sempre é executado exatamente um dos blocos de código. Se ELSE estiver em falta, pode acontecer que nenhum dos blocos de código seja executado.
O bloco de código a ser executado é determinado da seguinte forma:
- Primeiro, a condição IF é avaliada. Se estiver preenchido, o bloco de código relacionado é executado e o programa continua após ENDIF.
- Somente se a condição IF não for cumprida, a condição após o primeiro ELSEIF será avaliada. Se estiver preenchido, o bloco de código relacionado é executado e o programa continua após ENDIF.
- Isso é feito consecutivamente para todas as condições ELSEIF. Se nenhuma das condições for cumprida e a estrutura contiver ELSE, o bloco de código após ELSE é executado. Caso contrário, não é executado nenhum dos blocos de código.
Dica

As condições lógicas são uma combinação de comparações, operações lógicas, expressões e funções que o sistema de tempo de execução avalia para decidir se a condição é verdadeira ou falsa.
O caso de uso mais comum para condições lógicas é após as palavras-chave IF ou ELSEIF em um IF ... ENDIF. estrutura.
O primeiro exemplo é uma comparação simples: a condição é verdadeira se os dois objetos de dados x e y tiverem o mesmo valor.
O segundo exemplo é um pouco mais sofisticado: Ou o valor de x é maior ou igual a y e menor que o dobro do valor de y ou é menor ou igual a y e maior que o dobro do valor de y.
O terceiro exemplo usa a função aritmética abs( ) e a expressão lógica BETWEEN <expression1> AND <expression2>. A condição é verdadeira se o valor absoluto de x estiver entre o valor absoluto de y e o valor absoluto de duas vezes y.
Para comparações de valores simples, você pode utilizar os operadores =, <>, >, <, >= e <=. Você não só pode comparar os valores de objetos de dados, mas também os valores de muitas outras expressões, como a expressão aritmética 2 * y no exemplo.
Nota
Você pode usar os operadores AND e OR para combinar expressões lógicas e o operador NOT para negar uma expressão. Sem parênteses, NÃO liga mais forte do que AND e AND mais forte do que OR.
O ABAP conhece algumas expressões lógicas especiais:
- <objeto de dados> IS INITIAL é verdadeiro se <objeto de dados> contiver o respectivo valor inicial específico de tipo
- <objeto de dados> NÃO É INICIAL é verdadeiro se <objeto de dados> contiver um valor diferente do valor inicial específico de tipo
- <objeto de dados> ENTRE <expressão1> E <expressão2>
Algumas funções ABAP especiais são funções de predicado. Isso significa que elas próprias são condições lógicas. Contém( ) é uma função que compara valores em forma de caractere e line_exists( ) executa uma verificação de existência para uma linha em uma tabela interna.

Uma segunda técnica para ramificação condicional é o CASE … WHEN .. Estrutura de controle ENDCASE.
Ramificação condicional com CASE .. ENDCASE é um caso especial da ramificação mais geral com IF … ENDIF. Você pode usar CASE em situações em que a ramificação depende do valor de um único objeto de dados, que você compara consecutivamente com um conjunto de valores possíveis, usando uma comparação igual a cada vez.
No exemplo, o valor do número do objeto de dados é comparado com os valores 1 e 2. Se o valor for igual a 1, <code_block_1> for executado e se o valor euqals 2, <code_blocl_2> for executado. Para qualquer outro valor, é executado o bloco de código após WHEN OTHERS.
Qualquer ramificação condicional com CASE … ENDCASE também pode ser implementada com uma estrutura IF … ENDIF. Isso é ilustrado com o exemplo à direita.
Dica


