Você está na página 1de 37

ABAP Training

ON LINE

1
ABAP Training

Introdução:
Online são tipos de programas que, como o próprio nome indica,
funcionam online, ou seja, instantaneamente. Por isso, eles são dotados de
uma maior capacidade de customização das telas e maior flexibilidade para
criarem uma interface mais amigável com o usuário.
Eles são especialmente úteis na criação de aplicações que necessitem
de subtelas ou quando é necessário fornecer informações aos usuários de
outra maneira que não um relatório. Na maioria dos casos, os programas
standard funcionam assim.

Estrutura do Programa OnLine


Módulos PAI tela 1
Screen 1
Módulos PBO tela 1

GUI-01

Módulos PAI tela 2


Programa
Principal Screen 2
Módulos PBO tela 2

GUI-02

Módulos PAI tela 3


Screen 3
2

Módulos PBO tela 3


ABAP Training

Programa Principal

- Definição de Variáveis e Tabelas


DATA:
V_CAMPO(4) type c.
* Declaração de Tabelas
TABLES:
VBAK,
MARA.

- Código ABAP dos módulos PBO e PAI


*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* Módulo PBO *
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'TELA100'.
SET TITLEBAR 'Z10'.
ENDMODULE. " STATUS_0100 OUTPUT
*&-------------------------------------------

--------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* Módulo PAI *
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'EXIT'.
SET SCREEN 0.
LEAVE SCREEN.
ENDCASE.
ENDIF.
ENDMODULE. " USER_COMMAND_0100 INPUT

3
ABAP Training

Screen
- Desenho da Tela (Definição dos Campos)

- Lista de campos para tratamento de erros

- Definição dos módulos PBO e PAI relacionados com a tela

GUI Status e GUI Title

Definição dos comandos de botão e menus disponíveis:

- Definição do título de tela

- Habilitação dos comandos standards existentes

- Criação de novos comandos necessários

Evento PBO

Evento executado antes da exibição da tela para o usuário:

- Definição do GUI Status e GUI Title para a tela correspondente

- Seleção inicial de dados e atribuição de valores a serem exibidos na tela

*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* Módulo PBO *
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'TELA100'.
SET TITLEBAR 'Z10'.
ENDMODULE. " STATUS_0100 OUTPUT

4
ABAP Training

Evento PAI

Evento executado após um comando do usuário (enter, click de um botão, etc...)

- Verificação do código de comando executado (definido no GUI Status)

- Código ABAP para execução da lógica do comando

*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* Módulo PAI *
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'EXIT'.
SET SCREEN 0.
LEAVE SCREEN.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT

5
ABAP Training

Atividade

Criar um programa online para dar manutenção na tabela de dados adicionais


de nota de crédito criada no curso de Dicionário de Dados.

Criação do programa.

Entrar na transação SE80.

Colocar um nome para o programa (ZSOAXXX) e clicar em exibir. Escolher “SIM” na


tela “Create Program”.

Retirar o flag de top include e clicar avançar

Colocar um título (“Dados adicionais para nota de crédito”), Tipo ( 1 – Online) e


application ( * - Nenhuma aplicação específica)

Clicar em Gravar.

Informar a classe de desenvolvimento “ZAF1” e clicar em “Gravar” novamente.

Selecionar a Request Correta e clicar Enter.

Clicar em “Voltar” (O programa foi criado sem nenhum objeto)

Layout das telas do programa

Menu Objeto de desenvolvimento -> Criar ou F5

Selecionar “Tela” , colocar o número da tela (por exemplo: 0100) e Clicar em “Criar”
novamente

Colocar um título para a tela (por exemplo: Tela de Seleção do documento) e clicar
“Gravar”

Utilizar a mesma change request utilizada na criação do programa e clicar “Enter”.

Clicar em “Voltar” ( A nova tela aparece como objeto do programa)

6
ABAP Training
Expandir o ítem Screen e dar um duplo clique na tela criada (0100).

Clicar no botão “FULLSCREEN” para desenhar o layout da tela como abaixo:

7
ABAP Training

Repetir os passos acima para criar uma segunda tela (0200 – Dados adicionais para nota
de crédito) com o seguinte layout associando aos respectivos campos na tabela

Criação de menu

Na tela do Object Browser selecionar Objeto de Desenvolvimento -> Criar ou F5.

Selecionar “Status GUI” e colocar o nome “MAIN” para o menu e clicar em criar
novamente.

8
ABAP Training

Colocar uma descrição: Menu Principal e clicar em “Continuar”

Colocar botões para Enter, Voltar, Sair, Criar, Modificar e Exibir como abaixo:

Obs: Este identificadores criados para os botões serão utilizados no programa para
identificar os eventos do usuário.

9
ABAP Training

Criar o menu Documento como abaixo e Salvar

10
ABAP Training
Definir os atributos de cada função dando um duplo clique sobre ele. Por exemplo para
a função Criar preencher a tela como segue.

11
ABAP Training

Repetir o processo para criar o Status GUI “DETAIL”

Definindo título para a tela.

Clicar em criar na tela do Objet Browser.

Escolher “Título GUI” e colocar o nome 100 ( Este título será utilizado na tela 0100)

12
ABAP Training

Escolher Gravar

Repetir o processo para criar o título 200 – Dados adicionais para nota de crédito.

Associar menus e títulos às telas

No Object Browser, duplo clique na tela 0100

Clicar em modificar e retirar o símbolo de comentário (*) do module status_0100.

Duplo clique sobre o modulo “Status_0100”. Uma tela se abre para que voce confirme a
criação do módulo. Clique em SIM e Avançar

Tirar os comentários dos comandos SET e informar o menu e o título da tela como
segue:

SET PF-STATUS 'MAIN'.


SET TITLEBAR '100'.

Repetir o processo para a tela 200 como segue:


SET PF-STATUS 'DETAIL'.
SET TITLEBAR '200’.

13
ABAP Training
Criação de uma transação para o programa

Clicar em “Criar” no Object Browser

Selecionar “Transação” , colocar um nome (ZSXX) e clicar em Criar.

Na tela Create transaction escolher continuar.

Preencher descrição, programa e tela como segue:

14
ABAP Training

Escolher a change request ( A mesma utilizada na criação do programa) e precionar


ENTER.

Geração do programa

No Object Broswser clicar sobre o programa e selecionar Objeto Desenvolvimento –


Gerar/Ativar.

Obs: Neste ponto já é possível executar o programa através da transação criada.

Definição de Variáveis Globais

Clicar em Criar

Escolher “Campo Global”

Clicar em Criar e declarar os seguintes dados:

data: ok_code(4). "Código de retorno.

tables: zs008. "Tabela de dados adicionais de nota de crédito

OBS: O seguinte comando deve também estar na sessão de declaração do programa

report zsoa001 message-id za.

Difinição do fluxo do programa (PAI e PBO)

Primeiramente deve-se criar uma variável para armazenar o código de retorno do


usuário.
Data: OK_CODE(4). “Código de retorno do usuário

15
ABAP Training
Duplo clique na tela 0100 e clicar em “Lista de Campos” e colocar variável OK_CODE
como segue:

Salvar e voltar.

Retire o comentário do módulo user_command_0100.

Duplo clique sobre o módulo user_command_0100 e colocar o seguinte código:

Duplo clique na tela 0100 e retire o comentário do módulo user_command_0100.


case ok_code.
when 'ENTE'.
when 'BACK'.
leave program.
when 'LEAV'.
leave program.
when 'CRIA'.
leave to screen '0200'.
when 'MODI'.
when 'VISI'.
when others.
Leave program.
endcase.

16
ABAP Training
Repetir o processo acima para a tela 0200 colocando o seguinte código no módulo
user_command_0200.

case ok_code.
when 'ENTE'.
when 'BACK'.
leave to screen ‘0100’.
when 'LEAV'.
leave program.
when 'SAVE'.
insert zs008.
if sy-subrc = 0.
message i003.
else.
message e004.
endif.
when others.
leave program.
endcase.

Utilizando os conceitos vistos até agora, faça o código para os botões Modificar e
Visualizar.

17
ABAP Training

Como criar Tabstrips


Para criar uma nova tela para um programa
1. Siga o caminho no menu Tools->ABAP Workbench, click no botão “Screen
Painter”.
2. Preencha o número da tela a ser criada bem como o programa associado
3. Preencha os atributos para a nova tela e então salve o editor de tela
4. Click em “Full Screen” para chamar o editor do Screen Painter

Para determinar as bordas dos “Tabstrips”:


1. Click no ícone Tabstrip na barra de ferramentas
2. Defina a area do tabstrip na tela clicando e arrastando sobre a tela.
3. Especifique o nome do campo para o novo elemento da tela. Esse nome (Field
Name) é o mesmo que você deve utilizar nos controle de ABAP.

Defina os títulos das TABs


1. Por default, ao novo Tabstrip contém 2 títulos (Tab1 e Tab2). Quando você der um
duplo click no título da TAB, uma tela de atributos se abrirá. Para cada título da
TAB, preencher os campos:

• field name,
• field text,
• function code.

18
ABAP Training

Definir a área da subtela


Cada Tab deve estar alocado em uma área de uma subtela (subscreen). Você
consegue fazer isso da seguinte maneira:
• Selecione um mais tabs
• Clique no ícone da subtela
• Clique e arraste para definir uma area de subtela.
( Nota: Você também pode alocar uma subtela entrando com o nome
da área da subtela no campo de referência da tela de atributos).

19
ABAP Training
Lógica do Fluxo do programa (Flow Logic)

Para cada tela que você cria, você pode definir uma lógica de fluxo. A lógica é
dividida em duas sessões conhecidas como enventos. Os eventos são dos tipos:
• PBO (Process Before Output) – Evento de uma tela que é processado antes da
tela ser exibida
• PAI (Process After Input) – Evento de uma tela a ser processado depois que o
usuário fizer alguma ação (ie. pressionando um botão de função, pressionando a
tecla <ENTER> ou clicando-se um botão).

No ambiente de processamento, existem dois processadores que cuidam do código,


o processador OnLINE e o processador ABAP. O processador Online cuida do fluxo do
programa Online (executa a lógica de fluxo). O processador ABAP controla o
componente ABAP de um programa Online (executa o módulo).

O controle é passado ida e volta entre os dois processadores até que o usuário
termine a execução do programa. O controle se inicia no processador Online e é
passado ao processador ABAP assim que um modulo é chamado. Após o término do
modulo, o controle é devolvido ao processador Online até que outro evento ocorra.

20
ABAP Training
A seguir, estão a lógica, a explicação e telas de exemplo.

Controlado pelo processador Online Controlado pelo processador ABAP

Screen Painter Flow Logic – Main Program


Main Screen PROGRAM ZABAP40TRN_TABSTRIP.
PROCESS BEFORE OUTPUT.
MODULE SET_PAGE. TABLES: SFLIGHT.
CALL SUBSCREEN SUB1 INCLUDING
MODUL DYNNBR. CONTROLS: MYTABSTRIP TYPE TABSTRIP.
1
PROCESS AFTER INPUT. DATA: MODUL LIKE SY-REPID VALUE
CALL SUBSCREEN SUB1. 'ZABAP40TRN_TABSTRIP_DYNAMIC',
MODULE USER_COMMAND. DYNNBR LIKE SY-DYNNR,
OK_CODE LIKE SY-UCOMM.

Screen Painter Flow Logic –


*-------------------------------------------
Field Tab MODULE SET_PAGE OUTPUT.
PROCESS BEFORE OUTPUT. IF DYNNBR IS INITIAL.
DYNNBR = '0101'.
PROCESS AFTER INPUT. MYTABSTRIP-ACTIVETAB = 'F2'.
MODULE GET_DATA. ENDIF.

ENDMODULE. " SET_PAGE OUTPUT


*--------------------------------------------
Screen Painter Flow Logic – MODULE USER_COMMAND INPUT.

Details Tab CASE OK_CODE.


PROCESS BEFORE OUTPUT. WHEN 'F2'.
DYNNBR = '0101'.
MYTABSTRIP-ACTIVETAB = OK_CODE.
CLEAR OK_CODE.
WHEN 'F3'.
DYNNBR = '0102'.
MYTABSTRIP-ACTIVETAB = OK_CODE.
CLEAR OK_CODE.
ENDCASE.
(Dependendo da entrada do usuário)
ENDMODULE. " USER_COMMAND INPUT
*----------------------------------------------------
MODULE GET_DATA INPUT.

SELECT PRICE CURRENCY PLANETYPE SEATSMAX


SEATSOCC PAYMENTSUM
INTO CORRESPONDING FIELDS OF SFLIGHT
FROM SFLIGHT
WHERE CARRID = SFLIGHT-CARRID
AND CONNID = SFLIGHT-CONNID
AND FLDATE = SFLIGHT-FLDATE.
ENDSELECT.

ENDMODULE.

21
ABAP Training
Passos do Programa

Process Before Output (PBO)


1. Coloca a Tab de ‘Flight’ como ativa.
2. Chama a tela ‘SUB1’.

Process After Input (PAI)


3. Chama a subtela ‘SUB1’ .
4. O commando Case determinará qual tab o usuário selecionou. F2 e F3 são os
códigos de função das TABs ‘Flight’ e ‘Detail’ respectivamente
5. Depois que o usuário entrar com a informação na Tab ‘Flight’, o commando
SELECT busca os dados da tabela SFLIGHT .

22
ABAP Training

23
ABAP Training
Criando ajuda de pesquisa (Matchcode)

Para se criar uma ajuda de pesquisa no SAP, utiliza-se a transação SE11.


Nela, deve ser preenchido o nome da ajuda de pesquisa e apertar a tecla <CRIAR>

Em seguida, deve-se entrar os seguintes campos:

• Descrição da ajuda de pesquisa


• Método de Seleção (tabela ou visão que contém os dados)
• O tipo da ajuda de pesquisa (se será uma lista tipo “dropdown” ou uma outra tela)
• Os parâmetros que deverão constar da ajuda de pesquisa, com os seus respectivos
elementos de dados (OBS: para uma ajuda de pesquisa, é necessário que um elemento de
dados para o parâmetro em questão exista).
• Preenchimento dos campos PosL e ISel. Estes campos indicam a posição na lista de acertos
da ajuda de pesquisa que os parâmetros aparecerão e o se eles devem aparecer na listagem
ou não. Em muitos casos, um parâmetro serve apenas para ajudar na seleção de outro e
portanto não deve ser exibido.
• Devemos informar ainda qual campo sera importado/exportado quando a ajuda de
pesquisa for ativada. Essa informação é indicada através de 2 boxes junto aos parâmetros
de ajuda de pesquisa.

Exemplo:

24
ABAP Training

No exemplo acima, uma ajuda de pesquisa é criada para o parâmetro CODAL (cód. do
aluno), que será importado e exportado (lido e devolvido para tela de seleção após a escolha do
usuário). Para auxiliar o usuário, o nome do aluno deverá aparecer também (parâmetro
NOMEA), porém, ele não será lido e nem devolvido para a tela.
Com isso, obtemos uma ajuda de pesquisa da seguinte forma:

25
ABAP Training
Criando TABLE CONTROL

Uma ferramenta particularmente útil quando trabalhamos com programas do tipo “online” é o
chamado Table Control. Ele permite que os dados sejam mostrados e manipulados na forma de
uma tabela (como os programas gerados automaticamente para manutenção de tabelas).

Para se criar um Table Control, deve-se seguir os seguintes passos:

• Criar o Table Control na tela. Primeiro seleciona-se o ícone do table control e o arrasta na
tela.
• Inserir os campos e os títulos de cada coluna dentro do Table Control. No momento que um
campo é inserido, uma coluna é automaticamente criada. Definir os tipos do campo (se é só
para exibição ou permite alteração)
• Declarar o nome dos campos igual ao nome na tabela i_tab-nome. que conterá os dados a
serem exibidos

• Declarar o Table Control no include TOP, indicando a tela. Exemplo:


*- Controles ---------------------------------------------------------- *
controls:
tcinfo type tableview using screen 2 000. "Tabela

26
ABAP Training

• No PBO da tela, deve-se dar um loop na tabela contendo os dados para carregá-los no Table
Control. Exemplo:

process before output.


* Definições de Layout de Tela
module status_2000.

* Atualiza o Table Control


loop at i_info with cont rol tcinfo
cursor tcinfo -current_line.
endloop.

• No PAI da tela, deve-se dar um loop na tabela para inserir os registros alterados (caso
necessário). Exemplo:
process after input.
* Comandos de Fim de Processamento
module encerra_processament o_2000 at exit -command.

* Atualiza os Dados da Tabela Interna


loop at i_info.

module m_atualiza_info.
endloop.

* Processamento do Comando do Usuário


module user_command_2000.

*&----------------------------------------------------------------- ----*
*& Module M_ATUALIZA_INFO INPUT
*&--------------------------------------------------------------------- *
* text
*---------------------------------------------------------------------- *
module m_atualiza_info input.
check not i_info -carac is initial .

* Atualiza dados da tabela.


modify i_info index tcinfo -current_line.
if sy-subrc ne c_sucesso.
append i_info.
endif.

endmodule. " M_ATUALIZA_INFO INPUT

• Para se criar o Table Control com o número de registros da tabela interna, inserir o seguinte
comando dentro do Module Status do PBO:
* Libera as linhas do Table Control
describe table i_info lines v_lines.
tcinfo-lines = v_lines.

27
ABAP Training

28
ABAP Training
Criando Transações:

Diferentemente dos Reports, que podem ser executados diretamente (apesar de, na prática, a
criação de transações ser obrigatória), os programas “online” tem que possuir,
obrigatoriamente, uma transação.

Para criá-la, utilizamos a transação SE93. Nela, devemos digitar o nome da transação a ser
criada (lembrando sempre os padrões de nomenclatura adotados) e clicar em <CRIAR>.

Em seguida, aparecerá uma tela com diversos tipos de transações a serem criadas, onde deve-
se preencher uma descrição para a transação e selecionar o tipo adequado. Para Reports,
selecionar:

Em seguida, preencher o nome do programa e o número da tela que deverá ser chamada e
salvar a transação que ela estará criada.

29
ABAP Training

30
ABAP Training

EXERCÍCIOS
ON -LINE

31
ABAP Training

EXERCÍCIO 1

Criar uma transação ON-LINE para criar uma calculadora no SAP R/3.

Obs: Nome do programa: Z_EXC_ONLINE_01_AL##, onde ## é o número


do aluno;
Dica: Utilizar o comando CASE para tratar as condições do programa;

32
ABAP Training

RESOLUÇÃO 1
Os botões foram criados e foram atribuídos códigos de função a cada um deles. Desta maneira,
podemos tratar no programa cada ação do usuário. O código abaixo possui uma lógica mais
complexa, tratando de situações desejáveis em uma calculadora, porém, não essenciais. No
entanto, o princípio para tudo é o mesmo, para cada ação do usuário, responder de uma
maneira específica.

Código da Tela:

process before output.


module status_0100.

process after input.


module user_command_0100.

PBO:

*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* customiza a o menu da tela a ser exibida
*----------------------------------------------------------------------*
module status_0100 output.
set pf-status 'RESULTADO'. “ customiza o menu
set titlebar 'RESULTADO'. “ customiza o título

endmodule. " STATUS_0100 OUTPUT

PAI:

*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* processa os comandos do usuário
*----------------------------------------------------------------------*
module user_command_0100 input.

case sy-ucomm.
when '1'.
if v_contador >= 2.
clear v_resultado.
if v_status = '='.
clear v_resultado.
clear v_status.
endif.
endif.

33
ABAP Training
concatenate v_resultado '1' into v_resultado.
when '2'.
if v_contador >= 2.
clear v_resultado.
if v_status = '='.
clear v_resultado.
clear v_status.
endif.
endif.
concatenate v_resultado '2' into v_resultado.
when '3'.
if v_contador >= 2.
clear v_resultado.
if v_status = '='.
clear v_resultado.
clear v_status.
endif.
endif.
concatenate v_resultado '3' into v_resultado.
when '4'.
if v_contador >= 2.
clear v_resultado.
if v_status = '='.
clear v_resultado.
clear v_status.
endif.
endif.
concatenate v_resultado '4' into v_resultado.
when '5'.
if v_contador >= 2.
clear v_resultado.
if v_status = '='.
clear v_resultado.
clear v_status.
endif.
endif.
concatenate v_resultado '5' into v_resultado.
when '6'.
if v_contador >= 2.
clear v_resultado.
if v_status = '='.
clear v_resultado.
clear v_status.
endif.
endif.
concatenate v_resultado '6' into v_resultado.
when '7'.
if v_contador >= 2.
clear v_resultado.
if v_status = '='.
clear v_resultado.
clear v_status.
endif.
endif.
concatenate v_resultado '7' into v_resultado.
when '8'.

34
ABAP Training
if v_contador >= 2.
clear v_resultado.
if v_status = '='.
clear v_resultado.
clear v_status.
endif.
endif.
concatenate v_resultado '8' into v_resultado.
when '9'.
if v_contador >= 2.
clear v_resultado.
if v_status = '='.
clear v_resultado.
clear v_status.
endif.
endif.
concatenate v_resultado '9' into v_resultado.
when '0'.
if v_contador >= 2.
clear v_resultado.
if v_status = '='.
clear v_resultado.
clear v_status.
endif.
endif.
concatenate v_resultado '0' into v_resultado.
when ','.
if v_status = '='.
clear v_resultado.
clear v_status.
endif.
concatenate v_resultado '.' into v_resultado.
when 'VOLTAR'.
v_tamanho = strlen( v_resultado ) - 1.
if v_tamanho > 0.
v_resultado = v_resultado(v_tamanho).
else.
clear v_resultado.
endif.
when 'BACK'.
leave program.
when 'CANC'.
leave program.
when 'LIMPA'.
clear v_contador.
clear v_operando_1.
clear v_operando_2.
clear v_resultado.
when '+'.
v_contador = ( v_contador + 1 ).
if v_contador >= 2.
v_resultado = ( v_resultado + v_operando_1 ).
move v_resultado to v_operando_1.
else.
move v_resultado to v_operando_1.
clear v_resultado.

35
ABAP Training
move '+' to v_ult_oper.
endif.
when '-'.
v_contador = ( v_contador + 1 ).
if v_contador >= 2.
v_resultado = ( v_operando_1 - v_resultado ).
move v_resultado to v_operando_1.
else.
move v_resultado to v_operando_1.
clear v_resultado.
move '-' to v_ult_oper.
endif.
when 'A'.
v_contador = ( v_contador + 1 ).
if v_contador >= 2.
v_resultado = ( v_operando_1 / v_resultado ).
move v_resultado to v_operando_1.
else.
move v_resultado to v_operando_1.
clear v_resultado.
move '/' to v_ult_oper.
endif.
when '*'.
v_contador = ( v_contador + 1 ).
if v_contador >= 2.
v_resultado = ( v_resultado * v_operando_1 ).
move v_resultado to v_operando_1.
else.
move v_resultado to v_operando_1.
clear v_resultado.
move '*' to v_ult_oper.
endif.
when 'IGUAL'.
perform calculo.
when others.
endcase.

leave to screen 0100.

endmodule. " USER_COMMAND_0100 INPUT

*&---------------------------------------------------------------------*
*& Form CALCULO
*&---------------------------------------------------------------------*
* realiza o cálculo
*----------------------------------------------------------------------*
form calculo.
case sy-ucomm.
when 'IGUAL'.
move '=' to v_status.
if v_ult_oper = '+'.
move v_resultado to v_operando_2.
v_resultado = ( v_operando_1 + v_operando_2 ).
elseif v_ult_oper = '-'.
move v_resultado to v_operando_2.
v_resultado = ( v_operando_1 - v_operando_2 ).

36
ABAP Training
clear v_operando_1.
clear v_operando_2.
elseif v_ult_oper = '/'.
move v_resultado to v_operando_2.
v_resultado = ( v_operando_1 / v_operando_2 ).
clear v_operando_1.
clear v_operando_2.
elseif v_ult_oper = '*'.
move v_resultado to v_operando_2.
v_resultado = ( v_operando_1 * v_operando_2 ).
clear v_operando_1.
clear v_operando_2.
endif.
when others.
endcase.
endform. " CALCULO

37

Você também pode gostar