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

  1. Definir a(s) área(s) da subtela em uma tela
  2. Defina telas de subtela adequadas
  3. 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.

Chamar subtela em SAP

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.