MODULE POOL – ESTRUTURA DE PROGRAMA - 1
O Module Pool no SAP ABAP é utilizado para desenvolver programas com telas
(Dynpros), ou seja, aplicações com interface gráfica interativa no SAP GUI.
Aqui vai um resumo objetivo de como ele é feito:
🔹 1. Criação do Programa
Transação SE80 ou SE38
Criar um programa do tipo Module Pool (M).
O programa conterá principalmente módulos e telas (screens).
🔹 2. Criação da Tela (Screen / Dynpro)
Dentro do programa, criar uma Screen (ex: 0100).
Definir:
o Layout (campos, botões, labels)
o Elementos GUI
o Attributes (Next Screen, OK Code, etc.)
o Flow Logic
3. Flow Logic da Tela
A tela funciona com dois blocos principais:
PROCESS BEFORE OUTPUT.
MODULE status_0100.
PROCESS AFTER INPUT.
MODULE user_command_0100.
🔹 PBO (Process Before Output)
Executa antes da tela aparecer.
Usado para:
Definir status GUI
Preencher campos
Controlar visibilidade
🔹 PAI (Process After Input)
Executa após ação do usuário (Enter, botão, etc.)
Processa comandos (OK_CODE)
Valida dados
🔹 4. Criação dos Módulos ABAP
No programa principal:
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_100'.
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
🔹 5. Status GUI (PF-STATUS)
Criado no Menu Painter
Define botões (Salvar, Voltar, Cancelar, etc.)
Associado no PBO com SET PF-STATUS
🔹 6. Fluxo Básico
Programa é chamado
Tela é exibida
PBO executa
Usuário interage
PAI executa
Pode chamar outra tela ou encerrar
🔹 6. Fluxo Básico
1. Programa é chamado
2. Tela é exibida
3. PBO executa
4. Usuário interage
5. PAI executa
6. Pode chamar outra tela ou encerrar
Vamos montar um Module Pool consultando a KNA1 (Cadastro de Clientes).
O exemplo :
Digitar Código do Cliente (KUNNR)
Clicar em Buscar
Exibir Nome do Cliente (NAME1)
Validar se cliente existe
📌 1️⃣ Criar Programa Module Pool
Nome: ZMP_KNA1
📌 2️⃣ Código Principal
PROGRAM zmp_kna1.
TABLES: kna1.
DATA: gv_kunnr TYPE kna1-kunnr,
gv_name1 TYPE kna1-name1,
ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm.
📌 3️⃣ Criar Screen 0100
Atributos:
Next Screen: 0
📌 4️⃣ Layout da Tela (Screen Painter)
Inserir:
Campo entrada → GV_KUNNR
Campo saída → GV_NAME1 (deixe como Output only)
Botão → Function Code: BUSCAR
Botão padrão → BACK
📌 5️⃣ Flow Logic da Screen 0100
PROCESS BEFORE OUTPUT.
MODULE status_0100.
PROCESS AFTER INPUT.
MODULE user_command_0100.
📌 6️⃣ Criar os Módulos
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_100'.
ENDMODULE.
MODULE user_command_0100 INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BUSCAR'.
IF gv_kunnr IS INITIAL.
MESSAGE 'Informe o código do cliente' TYPE 'E'.
ENDIF.
SELECT SINGLE name1
INTO gv_name1
FROM kna1
WHERE kunnr = gv_kunnr.
IF sy-subrc <> 0.
MESSAGE 'Cliente não encontrado' TYPE 'E'.
ENDIF.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
📌 7️⃣ Criar PF-STATUS
Criar status STATUS_9000 com:
Botão BUSCAR
Botão BACK
📌 8️⃣ Chamada da Tela
No final do programa:
START-OF-SELECTION.
CALL SCREEN 9000.
🎯 Funcionamento
1. Usuário informa KUNNR
2. Clica em Buscar
3. Sistema executa:
4. SELECT SINGLE name1 FROM kna1
5. Se existir → mostra nome
6. Se não → mensagem de erro
🔎 Observação Importante
Se o sistema usar conversão de cliente (ALPHA), o ideal é aplicar:
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gv_kunnr
IMPORTING
output = gv_kunnr.
Antes do SELECT, para garantir que o código fique no formato correto (ex:
0000001234).