Tutorial de subtelas ABAP: chamar subtela em SAP
Antes de ler este tutorial, certifique-se do que é um programa de diálogo…
ASSINATURA DE CHAMADA
- Uma subtela é uma tela independente exibida em uma área de outra tela (“principal”).
- As subtelas permitem incorporar uma tela dentro de outra em tempo de execução. Você pode incluir várias subtelas na tela principal.
- O termo subtela se aplica tanto à tela que você incorpora quanto à área da tela principal em que você a coloca. Este tutorial é sobre áreas de subtela. As telas reais criadas por meio da transação SE51 são chamadas de telas de subtela se definidas nos atributos da tela.
- Quando você usa uma subtela, a lógica de fluxo da tela incorporada também é incorporada na lógica de fluxo da tela principal. Portanto, usar subtelas em telas é como usar inclusões em Programas ABAP.
Para usar uma subtela, você deve seguir três etapas simples
- Definir a(s) área(s) da subtela em uma tela
- Defina telas de subtela adequadas
- Inclua a tela da subtela na área da subtela.
Além disso, você precisa ajustar o quadro da subtela e da tela principal. Você precisa nomeá-lo no campo de nome do campo.
Além disso, você também precisa ajustar os campos da subtela para que apareçam na tela principal. Caso a subtela seja definida para ser maior que a área disponível na tela principal, ficará visível apenas a parte da subtela que cabe na área disponível. A área é sempre medida a partir do canto superior esquerdo da tela. Portanto, você deve tomar o cuidado adequado ao definir áreas de subtela e criar subtelas.
EXEMPLO
Por exemplo, aqui definimos duas áreas de subtela na tela principal e anexamos duas subtelas diferentes às áreas correspondentes. Sempre que a tela principal é chamada, o PBO da tela principal é chamado. Mas antes da exibição, também são chamados os PBOs de cada tela anexada às áreas de subtela na tela principal.
Você pode incluir uma tela de subtela usando a instrução CALL SUBSCREEN na lógica de fluxo da tela principal.
Para incluir uma subtela na área de subtela da tela principal e chamar sua lógica de fluxo PBO, utilize a seguinte instrução no evento PBO da tela principal:
PROCESS BEFORE OUTPUT. CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>.
Esta instrução atribui à tela subtela um número para a área da subtela chamada . Você também pode especificar o programa no qual a tela secundária é definida (opcional). Se o programa não for especificado explicitamente, o sistema procurará a tela secundária no mesmo programa ABAP que o programa principal. Se não encontrar uma subtela correspondente, ocorrerá um erro de tempo de execução. A lógica de fluxo PBO da tela subtela também é incluída no mesmo ponto. Isto pode chamar módulos PBO do programa ABAP nos quais a tela da subtela está definida. No final da subtela PBO, os campos globais do programa são passados para quaisquer campos de tela com nomes idênticos na subtela. A lógica de fluxo PBO da tela de subtela pode incluir outras subtelas.
O nome da área da subtela devem ser inseridos diretamente, sem aspas. Você pode especificar os nomes e seja como literais ou variáveis. Se você usar variáveis, deverá declarar e preencher variáveis com nomes idênticos no programa ABAP. O número da tela deve ter 4 caracteres. Se você não atribuir uma tela secundária a uma área, ela permanecerá vazia.
Para chamar a lógica de fluxo PAI da tela subtela, use a seguinte instrução na lógica de fluxo PAI da tela principal:
PROCESS AFTER INPUT. CALL SUBSCREEN <area>.
Esta instrução inclui a lógica de fluxo PAI da tela da subtela incluída na área da subtela no evento PBO. Isto pode chamar módulos PAI do programa ABAP nos quais a tela da subtela está definida. Os dados são transportados entre campos com nomes idênticos na tela da subtela e no programa ABAP quando o evento PAI é acionado ou nas instruções FIELD correspondentes na lógica de fluxo PAI da tela da subtela.
Pontos para lembrar
- Os nomes dos elementos das subtelas dentro de uma tela devem ser exclusivos
- Você não deve ter OK_CODE ou FCODE anexado à subtela. O OK_CODE da tela principal em si é OK_CODE da subtela
- As subtelas não podem conter nenhum módulo de diálogo contendo SET TITLEBAR, SET PF-STATUS, SET SCREEN, LEAVE SCREEN ou LEAVE TO SCREEN. Isso causará erro de tempo de execução.
- Você precisa chamá-lo na lógica de fluxo (PBO e PAI) da tela principal.
- CALL SUBSCREEN não é permitido nas instruções CHAIN..ENDCHAIN e LOOP ENDLOOP
- Não é possível ter um módulo AT EXIT-COMMAND
- Os campos que você usa são os campos globais. Eles devem ser declarados no topo incluem
- Se estiver usando subtelas de outro programa de diálogo a transferência de dados não acontecerá a menos que você adicione um código específico.