Criando um Programa Calculadora – Versão Report
Problema
Criar um programa ABAP que receba dois valores digitados pelo usuário e execute as quatro operações (adição, subtração, divisão e multiplicação) entre os dois valores.
Solução
Passo 1: Criar um programa executável chamado ZRCALC.
Passo 2: Definir os dois parâmetros nos quais o usuário irá utilizar para digitar os valores para o cálculo e também outro para indicar a operação desejada.
Passo 3: Definir uma variável local do tipo package, com duas casas decimais, para atribuir o valor calculado.
Passo 4: Definir uma estrutura CASE para escolher a operação escolhida pelo usuário.
Passo 5: Imprima o valor na saída do relatório.
Passo 6 (opcional): Inclua uma verificação se a operação escolhida é válida e se escolhido a divisão, verificar se o valor 2 é diferente de zero.
A listagem completa do programa, você encontra na seção Anexos.
Execução e Teste
Execute o programa (F8) e entre os seguintes na tela de seleção:
Execute o relátorio (F8) e você deverá obter uma saída parecida com a descrita abaixo:
Não esqueça de testar também o caso de uma operação inválida e um caso de divisão por zero.
Discussão
Nesse simples programa já vemos uma séria de elementos comuns em programa ABAP.
A primeira tela do programa é chamada de Tela de Seleção (Selection Screen), onde o usuário entra com os parâmetros que serão utilizados no relatório.
Um dos comandos usados para desenhar a tela de seleção é a instrução PARAMETERS. Usamos a forma mais simples, ainda há muitas outras possibilidades, que discutiremos mais a frente.
Declaramos variáveis com o comando DATA, indicando o nome da variável e o tipo. No nosso programa, usamos somente tipos primitivos, mas as possibilidades são ilimitadas, já que o ABAP Objects é fortemente tipado.
Os tipos padrão usados no ABAP Object são:
Tipos completos, sem necessidade de complemento:
- D – Data, no formato AAAAMMDD, com tamanho fixo de 8;
- T – Tempo, no formato HHMMSS, com tamanho fixo de 8;
- I – Inteiro, tamanho fixo de 4;
- F – Número de ponto flutuante, tamanho fixo de 8;
- STRING – Cadeia de caracteres, sem tamanho fixo;
- XSTRING – Cadeia de caracteres (Hexadecimal), sem tamanho fixo;
Tipos incompletos:
- C – Caracter string, podendo ter um complemento, por exemplo a intrução “DATA vl_var(4) TYPE C.“;
- N – Caracter numérico, com características de caracter e número;
- X – Seqüência de bytes (Hexadecimal);
- P – Package.
Para imprimir o valor na tela, usamos a instrução WRITE.
Usamos duas estruturas de decisão, a IF/ELSEIF/ELSE/ENDIF para verificar a operação escolhia e se há divisão por zero e CASE para escolher a operação.
Essa verificação de divisão por zero é necessária para evitar um possível erro em tempo de execução no caso de uma divisão por zero. Poderíamos também usar Exceptions, mas discutiremos no futuro.
No caso de uma operação inválida, também poderíamos usar a seguinte construção no lugar o IF:
CASE p_op.
…
WHEN OTHERS.
WRITE: ‘No valid operation'(iop).
ENDCASE.
A opção OTHERS significa que se nenhuma das alternativas do WHEN foi satisfeita, o opção OTHERS é executada. Então, se a operação escolhida não foi válida, o WHEN OTHERS é executado e a mensagem de erro é impressa na saída do programa.
A segunda tela, é onde é apresentado a saída do programa, comandos WRITE.
Olá, estou iniciando meus estudos ABAP. Não entedi o que são (iop), (zer) e (res) que aparecem depois dos literais.
Isso são text symbols, servem para que não usemos literais no programa, permitindo assim que o programa possa “falar” vários idiomas.
Entendi. Porque com eles dá pra traduzir depois. Obrigado pelo esclarecimento. Na academia a gente acaba vendo tanto conteúdo e as vezes não tem muito tempo de estudar fora que fica confuso, rs. Valeu.