Programas
Online / Module
Pool
Conceito
Online são tipos de programas que tem sua lógica de processamento
Modelode forma instantânea, e não são executados em background.
executada
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 ao
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 desta forma.
Conceito
Programas criados com telas de seleção possuem um número de
tela standard por onde o programa inicia o processamento (1000)
para execução do processamento.
No print à esquerda, podemos
visualizar o programa ZTREINA_001,
criado para exibição de um relatório
simples. A tela 1000 vinculada à ele
foi criada utilizando código, e não
de forma manual.
Podemos observar também que
mesmo não tendo sido criado no
formado “Module-Pool”, podemos
criar telas auxiliares, como é o caso
da tela 9001, criada apenas para
exibição do relatório.
Conceito
Ao utilizar Module Pools, podemos criar diversas telas e centralizar
um processo completo em apenas um programa. No exemplo
abaixo, temos duas transações standard que utilizam o mesmo
programa, porém, como foram criadas utilizando Module Pool,
cada transação executa uma tela, e ambas seguem fluxos
diferentes no processamento.
Conceito
Como demonstra o print à direita, o
programa SAPMV45A, referente às
transações VA01 e VA02, demonstradas nos
slides anteriores, possuem uma variedade de
telas, e não apenas as telas iniciais por onde
as transações iniciam.
Conceito
Também podemos observar que existe
uma variedade de transações
vinculadas à este programa, cada uma
destas transações podem iniciar em
uma tela diferente, e executar um fluxo
diferente de telas.
Subtela
Transação VA03 4021
Subtela
4440
Subtela
4900
Fluxo de telas
Tela 1 Módulos PAI tela 1
Módulos PBO tela 1
GUI-01
Módulos PAI tela 2
Programa
Principal Tela 2
Módulos PBO tela 2
GUI-02
Módulos PAI tela 3
Tela 3 Módulos PBO tela 3
Fluxo de telas
• Tela
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
Habilitar 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
• 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
Edição/Criação de um Module
Pool SE80 é a mais adequada para se desenvolver
A transação
um module pool, pois possibilita acesso dinâmico a
qualquer elemento do programa, bem como as estruturas
GUI, includes, modules e telas.
Para cada funcionalidade da transação SE80, existe uma
transação separada que podemos utilizar para realizar as
tarefas necessárias, porém, a utilização de cada transação
de forma separada é muito mais trabalhoso.
Edição/Criação de um Module
Poolque em um programa criado como module pool,
Supondo
em um desenvolvimento, estamos executando uma
modificação no código e nos deparamos com a
necessidade de corrigir um campo na tela (modificar
posicionamento, tamanho, ou até mesmo nome). Na
transação SE80 podemos apenas clicar duas vezes na tela
que desejamos modificar, e executar a ação necessária:
Edição/Criação de um Module
Pool
Caso não estivéssemos utilizando a transação SE80,
provavelmente estaríamos editando o código via transação
SE38 e teríamos que sair da transação, ou abrir uma nova
tela apenas para acessar a transação SE51, e editar a tela
desejada.
Edição/Criação de um Module
Pool
Como dito anteriormente, cada funcionalidade da SE80
possui sua própria transação separada. Como podemos ver
abaixo a lista de algumas:
SE11 – Estruturas Dictionary
SE38 – Tipos, Campos, Módulos PBO
e PAI, [Link], e Includes, por se
tratar de objetos criados diretamente
via código.
SE51 – Telas
SE41 – Status GUI
SE93 – Transações
Edição/Criação de telas em um Module
Pool
A programação das telas é feita em uma área da própria
tela, destinada a lógica de programação.
As sub-rotinas chamadas a partir da lógica de
programação das telas, recebem o nome de módulo –
MODULE...
Por questão de boas práticas, os módulos do PBO ficam
armazenados em um include do próprio PBO. O mesmo
acontecendo com os módulos do PAI. Não é necessário a
criação de includes separados para cada situação, porém,
isso torna o programa mais organizado e legível.
Includes em um Module Pool
Os programas desenvolvidos pelos clientes não SAP, ou
seja, programas “Z”, devem iniciar com SAPMZ. Por
exemplo, SAPMZSD005. O SAP não exibe mensagem
alguma caso o nome seja criado fora do padrão, e seja
criado apenas com “Z” no início ao invés de SAPMZ,
porém, é recomendado seguir o padrão.
Includes em um Module Pool
No include TOP ficam definidas as variáveis
globais, tabelas, estruturas. Bem como
definições de includes, tables-control e
tabstrips.
No include O01 ficarão armazenados
os módulos dos PBOs.
No include I01 ficarão armazenados
os módulos dos PAIs.
O include F01 é responsável por
armazenar os FORMs utilizados
dentros dos módulos e dentro de
outros performs.
Modules “Before output” e “after
input”
Já mencionamos em slides anteriores os termos PBO e PAI. Estes
termos determinam diferentes formas de processamentos de lógicas
de tela. Como podemos observar, cada um é executado em um
determinado ponto do código:
PROCESS BEFORE OUTPUT.
Process before output é o ponto do código onde todos os modules
declarados como output são chamados, como os exemplos abaixo:
PROCESS BEFORE OUTPUT.
Quando a tela é chamada pela primeira vez, todo o código que faz
parte do PROCESS BEFORE OUTPUT é executado. Neste ponto
definimos os botões que podem ser clicados por meio do comando
SET PF-STATUS e determinamos um título para a tela usando o
comando SET TITLEBAR. Além disso, preparamos os dados para
serem exibidos na tela, preenchendo os campos necessários e
executando tratamentos.
Os módulos before output também são chamados quando existe
qualquer tipo de interação com a tela. Quando um botão enter é
pressionado, ou um botão é clicado, o programa é direcionado
para o PROCESS AFTER INPUT, para tratarmos o que foi criado,
porém, caso o programa permaneça na mesma tela, todo o
PROCESS BEFORE OUTPUT é executado. Isso também vale para
caso o programa chame outra tela ao clicar no botão, e após isso
volte para tela onde o botão foi clicado.
PROCESS AFTER INPUT.
Trecho onde os módulos after input são inseridos. Estes
módulos são utilizados em qualquer tipo de interação com a
tela, como apertar enter após preencher um campo, clique em
botão e interação com tecla de atalho, como o atalho CTRL +
S, que executa a função de salvar em muitas transações.
Tratamento de cliques em botões no
PROCESS AFTER INPUT.
O tratamento em cliques de botões é executado utilizando a variável de sistema
sy-ucomm. Esta variável é global, e está presente a todo momento no programa
sem a necessidade de ser declarada. Ela armazena o valor da função do último
botão clicado.
Para tratarmos o valor desta variável, podemos utilizar uma estrutura parecida
com a demonstrada abaixo, e para cada botão clicado, executar uma lógica
diferente.
No exemplo abaixo, temos um botão para voltar para a tela anterior e um botão
para sair do programa:
Criação de botões standards
Ao criarmos um modulo PBO, precisamos atribuir os botões standard em um
status GUI. Estes botões standard são responsáveis por funcionalidades mais
básicas para uma tela. Observe que executei a criação apenas de três
botões, pois, para este desenvolvimento,
apenas eles eram necessários.
Estes botões habilitados são comuns para
todas as telas, e tem funcionalidades standard
como chamar uma tela nova ou modificar as
configurações do próprio SAP.
Criação de botões standards
Para criar os botões standard, e até mesmo customizados,
é necessário criar um status GUI e no module PBO da tela,
atribuí-lo.
Método de atribuição de um status GUI:
Para criar ou editar, basta clicar duas vezes em cima do
status e atribuir os botões necessários.
Observe que abaixo existem os três botões que já havia
criado, e executei a criação de um novo botão,
customizado.
Este é o resultado da execução com o botão criado:
O mesmo processo é necessário para title GUI. Para cria-lo,
basta clicar duas vezes em cima, e atribuir um título:
Resultado:
Criação e edição de telas
Para executar a edição dos layouts de exibição das telas, é
necessário acessar o botão abaixo:
Criação e edição de telas
Este botão abrirá o screen painter: Propriedades de cada
objeto, pode ser visualizada
executando um duplo clique
Elementos disponíveis no objeto
para a tela
Campo de texto para
digitação inserido na tela
Botões já inseridos na tela
Obrigado(a)!