Visual – TabStrip – Screen Painter – Abap

Publicado: 26 de março de 2014 em Abap

Um controle TabStrip é um objeto de tela que consiste em duas ou mais páginas. Cada página da guia consiste em um título da guia e uma área de página. Se a área ocupada pelo controle TabStrip é muito estreita para exibir todos os títulos das guias, aparece uma barra de rolagem, o que lhe permite alcançar os títulos que não são exibidos. Há também um botão que lhe permite exibir uma lista de todos os títulos de tabulação.

Não se pode negar que o SAP R/3  possui tecnologia de ponta em muitos aspectos, mas quando você começa a se aprofundar em Abap, você nota que a linguagem possui varias funções marcadas como obsoletas pelo próprio fabricante e apesar dos contínuos investimentos da SAP em tecnologia de ponta como por exemplo dominar a tecnologia de nuvens no qual a SAP hoje é líder mundial, podemos ver claramente que ela deixou estacionado a construção ou um upgrade dos componentes visuais, principalmente se comparado com a tecnologia de outras linguagens de programação. Manter a compatibilidade com versões anteriores tudo bem e é muito comum, mas como podemos ver o TabStrip é um dos componentes visuais mais confusos da coleção de objetos Abap.

Existem dois modos de usar o TabStrip, paginando no SAPgui ou no Application Server:

Sap Gui

Você precisa atribuir uma  SubScreenArea separado para cada título da guia, e definir os códigos de função dos títulos das guias com o tipo P (função GUI local). Na lógica de fluxo de tela, você deve chamar todos as telas do evento PBO. Isso significa que todas as páginas de guia residem localmente no SAPgui.

Application Server

Uma SubScreenArea é compartilhada por todos os títulos das guias e chamado no evento PBO. Você define os códigos de função dos títulos das guias individuais sem um tipo de função especial. Quando o usuário escolhe uma página da guia, o evento PAI é acionado, e você deve incluir um módulo em sua lógica de fluxo que ativa a página de guia apropriada e atribui a subtela correta para a área de subtela.

Screen Painter

Neste ponto supomos que você já saiba criar uma tela no Screen Painter , para criar um programa usando uma TabStrip siga os passos abaixo:

  1. Crie um programa chamado Ztab na transação SE38.
  2. Na transação SE51, crie uma tela no Screen Painter com o numero 100 para o programa Ztab e crie um PBO Module Main Program, e na aba Flow Logic digite o primeiro código abaixo, salve o programa.
  3. Volte para a transação SE51 e  clique em Layout e insira na tela um TabStrip e para cada aba insira um componente SubScreenArea, use a figura abaixo:

    tabstrip100

    Screen 100

  4. Nomeie a TabStrip de TABSTRIP, cada Aba de TAB1 e TAB2, function codes de F_TAB1 e F_TAB2.
  5. Nomeie cada SubScreenArea de SUBS1 e SUBS2 e ligue respectivamente cada campo Ref Field de cada aba com sua SubScreenArea.
  6. Crie uma nova Screen Painter tipo SubScreen para o programa Ztab com o numero 200, e crie seu layout como na figura abaixo:

    tabstrip200

    Screen 200

  7. Crie uma nova Screen Painter tipo SubScreen para o programa Ztab com o numero 300, e crie seu layout como na figura abaixo:

    tabstrip300

    Screen 300

  8. Ative todas as telas e volte para a SE38 e complete o código com o programa abaixo.

Exemplo:

Neste exemplo criamos uma TabStrip do lado do SAPgui e passamos o valor de um campo para outro através de uma sub-tela para uma sub-tela usando o evento onclick da guia do TabStrip. Uma dica é testar a logica de funcionamento do TabStrip no código da aba Flow Logic da tela 100, se você comentar as chamadas das sub-telas do PAI (Process After Input) não é possível passar os valores entre as guias.

Abap

Screen 100 – Flow logic

PROCESS BEFORE OUTPUT.
 MODULE STATUS_0100.
   CALL SUBSCREEN SUBS1 INCLUDING SY-REPID '200'.
   CALL SUBSCREEN SUBS2 INCLUDING SY-REPID '300'.
*
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
  CALL SUBSCREEN SUBS1.
  CALL SUBSCREEN SUBS2.

Programa – Ztab

*&---------------------------------------------------------------------*
*& Report  ZTAB
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& TabStrip
*&---------------------------------------------------------------------*

REPORT  ZTAB.

" Declara variaveis para os eventos
DATA OK_CODE LIKE SY-UCOMM.
DATA CLIQUE_OK LIKE SY-UCOMM.

" Declara componentes
DATA TEXTO1 TYPE STRING.
DATA TEXTO2 TYPE STRING.

" Declara controle do tabstrip
CONTROLS TABSTRIP TYPE TABSTRIP.

" Chama as telas
CALL SCREEN 100.
CALL SCREEN 200.
CALL SCREEN 300.

" Inicia PBO modulo 100
MODULE STATUS_0100 OUTPUT.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.

" Limpa o evento contra possiveis sujeiras PAI
CLIQUE_OK = OK_CODE.
CLEAR OK_CODE.

" Verifica eventos dos botões - uma guia é igual a um botão
CASE CLIQUE_OK.
  WHEN 'F_TAB1'.
    TABSTRIP-ACTIVETAB = 'F_TAB1'.
    TEXTO1 = TEXTO2.
  WHEN 'F_TAB2'.
    TABSTRIP-ACTIVETAB = 'F_TAB2'.
    TEXTO2 = TEXTO1.
  WHEN 'F_SAIR'.
    LEAVE PROGRAM.
ENDCASE.

ENDMODULE.                 " STATUS_0100  OUTPUT
Publicidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s