Comando CASE | ABAP Warrior

Comando CASE

Comando CASE
Quando a necessidade é tratar, de forma simples, vários valores de uma mesma variável, com certeza a melhor opção é o comando CASE.

Este comando é ideal para lógicas sem complexidade, validações simples e diretas de valores de uma variável, ou ainda para verificar quais variáveis possuem um determinado valor.



Em mais uma postagem da série COMANDOS, vamos falar desta vez sobre o comando CASE. É muito fácil de ser implementado e trás uma praticidade incrível. Embora sua funcionalidade seja as vezes confundida com a do comando IF, ele possui particularidades que o diferencia.





O que é um CASE ?


É um comando usado para tratar caso a caso de diferentes valores de uma variável. Assim como o comando IF, também pode ser usado para causar um desvio de comportamento em um programa. É a exata tradução de CASO.

Como funciona o CASE ?


Primeiro vou mostrar como o comando fica verificando os valores de uma variável. Na sequência mostro como como fica verificando as variáveis para um valor. Nada muito complexo, mas muito interessante.

> Verificando valores de uma variável


Para os exemplos, vamos supor uma variável do tipo alfanumérica que irá armazenar a descrição do dia da semana...

Basta escrever CASE e em seguida escrever o nome da variável que terá os valores verificados, terminando com ponto. Em seguida escrever WHEN seguido do valor que será verificado e terminando com ponto. E então, escrever a programação desejada. E depois fechar o comando com um ENDCASE e ponto.

Exemplo simples do comando:
  CASE v_weekday.
    WHEN 'MONDAY'.
      WRITE 'Week beginning'.
  ENDCASE.

No exemplo acima estou verificando os valores da variável V_WEEKDAY. Quando o valor for "MONDAY" o programa irá entrar no bloco e executar o comando WRITE com "Week beginning". Depois o comando CASE é fechado com ENDCASE.

O comando CASE também funciona verificando dois ou mais valores de uma só vez através do operador OU (OR).

Exemplo de CASE verificando três valores:
  CASE v_weekday.
    WHEN 'FRIDAY' OR 'SATURDAY' OR 'SUNDAY'.
      WRITE 'Weekend'.
  ENDCASE.

No exemplo acima estou verificando os valores da variável V_WEEKDAY. Quando o valor for "FRIDAY", "SATURDAY" ou "SUNDAY" o programa irá entrar no bloco e executar o comando WRITE com "Weekend". Depois o comando CASE é fechado com ENDCASE.

Agora fazendo várias verificações em blocos diferentes. Podem ser encadeadas quantas verificações forem necessárias, bastando destacar as verificações pelo argumento WHEN.

Exemplo com várias verificações em diferentes blocos WHEN.
  CASE v_weekday.
    WHEN 'MONDAY'.
      WRITE 'Week beginning'.
    WHEN 'FRIDAY' OR 'SATURDAY' OR 'SUNDAY'.
      WRITE 'Weekend'.
  ENDCASE.

No exemplo acima estou verificando os valores da variável V_WEEKDAY. Quando o valor for "MONDAY" o programa irá entrar no bloco e executar o comando WRITE com "Week beginning". Quando o valor for "FRIDAY", "SATURDAY" ou "SUNDAY" o programa irá entrar no bloco e executar o comando WRITE com "Weekend". Depois o comando CASE é fechado com ENDCASE.

E ainda temos o argumento para tratar os demais valores que não precisam estar explícitos. Devem ser tratados pelo argumento WHEN OTHERS todos os valores que forem diferentes dos valores destacados nos argumentos WHEN anteriores.

Exemplo com argumento WHEN OTHERS.
  CASE v_weekday.
    WHEN 'MONDAY'.
      WRITE 'Week beginning'.
    WHEN 'FRIDAY' OR 'SATURDAY' OR 'SUNDAY'.
      WRITE 'Weekend'.
    WHEN OTHERS.
      WRITE 'Through week'.
  ENDCASE.

No exemplo acima estou verificando os valores da variável V_WEEKDAY. Além das verificações já citadas nos outros exemplos, quando o valor não for "MONDAY", "FRIDAY", "SATURDAY" e nem "SUNDAY" o programa irá entrar no bloco OTHERS e executar o comando WRITE com "Through week". Depois o comando CASE é fechado com ENDCASE.

> Verificando variáveis para um valor


Para o exemplo, vamos supor que existam sete variáveis. Todas do tipo alfanumérico e uma para cada dia da semana. Sempre uma delas estará preenchida com "X" para o dia da semana correspondente...

Basta escrever CASE e em seguida escrever o valor que será verificado, terminando com ponto. Em seguida escrever WHEN seguido do nome da variável que será verificada e terminando com ponto. E então escrever a programação desejada. E depois fechar o comando com um ENDCASE e ponto.

Exemplo completo:
  CASE 'X'.
    WHEN v_monday.
      WRITE 'Week beginning'.
    WHEN v_friday OR v_saturday OR v_sunday.
      WRITE 'Weekend'.
    WHEN OTHERS.
      WRITE 'Through week'.
  ENDCASE.

No exemplo acima estou verificando qual variável estará preenchida com "X". Quando for a variável V_MONDAY o programa irá entrar no bloco e executar o comando WRITE com "Week beginning". Quando for a variável V_FRIDAY, V_SATURDAY ou V_SUNDAY o programa irá entrar no bloco e executar o comando WRITE com "Weekend". Quando não for nenhuma das quatro variáveis anteriores, o programa irá entrar no bloco OTHERS e executar o comando WRITE com "Through week". Depois o comando CASE é fechado com ENDCASE.


E esse foi o comando CASE, pessoal.
Um grande abraço e até a próxima.
2016-11-19T14:16:00-02:00 2017-04-09T19:28:34Z
Nenhum comentário:
Related Posts Plugin for WordPress, Blogger...