* Eae rapaziada, hoje vamos trabalhar com uma ferramenta usada muito em
* transações Standards e que facilitam muito a visualização para o user
* separando as informações por topicos em ABAS, isso mesmo, vamos
* trabalhar com TABSTRIP no MODULE POOL, como sempre falo, não é difícil
* mas pra trabalharmos com Module pool precisamos ter a idéia do PBO e PAI
* nítidos nas nossas cabeças, não lembra ????.. Acesse o Link abaixo...
* http://abapjuniores.blogspot.com/2011/04/module-pool-basico.html
* Vamos começar agora, primeiramente vamos criar no Module Pool, depois
* de criar, vamos criar uma tela pra ele conforme imagem abaixo, se não
* for problema pra vocês, usem a mesma nomenclatura que estou usando.
* transações Standards e que facilitam muito a visualização para o user
* separando as informações por topicos em ABAS, isso mesmo, vamos
* trabalhar com TABSTRIP no MODULE POOL, como sempre falo, não é difícil
* mas pra trabalharmos com Module pool precisamos ter a idéia do PBO e PAI
* nítidos nas nossas cabeças, não lembra ????.. Acesse o Link abaixo...
* http://abapjuniores.blogspot.com/2011/04/module-pool-basico.html
* Vamos começar agora, primeiramente vamos criar no Module Pool, depois
* de criar, vamos criar uma tela pra ele conforme imagem abaixo, se não
* for problema pra vocês, usem a mesma nomenclatura que estou usando.
* Agora com a tela criada vamos colocar os TabStrips na mesma, clique no
* botão 'LAYOUT' e vamos desenhar as ABAS apertando no botão 'Controle de
* fichas' (Tabstrip Control) e vamos prencheer toda a area da tela, agora
* criada vamos declarar que a mesma tem três(3) abas, clique duas vezes no
* objeto e coloque (3) no campo 'ELEM.ÍND.' que pra mim é Índice de abas,
* conforme abaixo( Não tem F1 desse parametro aqui ).
* botão 'LAYOUT' e vamos desenhar as ABAS apertando no botão 'Controle de
* fichas' (Tabstrip Control) e vamos prencheer toda a area da tela, agora
* criada vamos declarar que a mesma tem três(3) abas, clique duas vezes no
* objeto e coloque (3) no campo 'ELEM.ÍND.' que pra mim é Índice de abas,
* conforme abaixo( Não tem F1 desse parametro aqui ).
* Temos o TabStrip mas não temos uma área pra ele mostrar os a próxima
* tela portanto vamos criar uma clicando no botão 'Area de Subtela'
* ( Subscreen ) fazendo e nomeando conforma imagem.
* tela portanto vamos criar uma clicando no botão 'Area de Subtela'
* ( Subscreen ) fazendo e nomeando conforma imagem.
* Vamos clicar duas vezes na primeira Aba e dar um nome, colocar um texto
* e principalmente informando o código da Função e o campo de referencia.
* e principalmente informando o código da Função e o campo de referencia.
* Faça assim
* NOME TEXTO Cód. Função Cpo. Ref.
* ABAS_TAB1 1 - Principal ABAS_F1 ABAS_SCA
* ABAS_TAB2 2 - Aba Extra ABAS_F2 ABAS_SCA
* ABAS_TAB2 2 - Informações ABAS_F3 ABAS_SCA
* Agora vamos criar as subtelas que irão aparecer a área da Subtela que
* informamos na tela principal que será acionada pela ação de clicar na
* aba correspondente.
* Criem como uma tela normal mas no tipo de tela coloquem 'SUBTELA'.
* NOME TEXTO Cód. Função Cpo. Ref.
* ABAS_TAB1 1 - Principal ABAS_F1 ABAS_SCA
* ABAS_TAB2 2 - Aba Extra ABAS_F2 ABAS_SCA
* ABAS_TAB2 2 - Informações ABAS_F3 ABAS_SCA
* Agora vamos criar as subtelas que irão aparecer a área da Subtela que
* informamos na tela principal que será acionada pela ação de clicar na
* aba correspondente.
* Criem como uma tela normal mas no tipo de tela coloquem 'SUBTELA'.
* Coloquem o código abaixo em seus respectivos includes.
*&---------------------------------------------------------------------*
*& Include MZ_ABASTOP PoolMóds. *
*& *
*&---------------------------------------------------------------------*
PROGRAM sapmz_abas .
* Declarações
* Grupo de constantes que informa a aba acionada
CONSTANTS:
BEGIN OF c_abas,
tab1 LIKE sy-ucomm VALUE 'ABAS_F1',
tab2 LIKE sy-ucomm VALUE 'ABAS_F2',
tab3 LIKE sy-ucomm VALUE 'ABAS_F3',
END OF c_abas.
* Declaração da Tabstrip .
CONTROLS : abas TYPE TABSTRIP.
* Grupo de variáveis que acionará a tela seleciona
DATA:
BEGIN OF g_abas,
subscreen LIKE sy-dynnr,
* Aqui por favor coloquem o nome do Module Pool de vocês.
prog LIKE sy-repid VALUE 'SAPMZ_ABAS',
pressed_tab LIKE sy-ucomm VALUE c_abas-tab1,
END OF g_abas.
* Comando do User
DATA: ok_code LIKE sy-ucomm.
*&---------------------------------------------------------------------*
*& MODULES DA TELA PRINCIPAL 9000
*&---------------------------------------------------------------------*
PROCESS BEFORE OUTPUT.
* Modulo
MODULE ABAS_SET.
CALL SUBSCREEN ABAS_SCA
INCLUDING G_ABAS-PROG G_ABAS-SUBSCREEN.
MODULE STATUS_9000.
*
PROCESS AFTER INPUT.
CALL SUBSCREEN ABAS_SCA.
MODULE ABAS_GET.
MODULE USER_COMMAND_9000.
* Telas 9001, 9002 e 9003 não precisam de nada na lógica deles
* só inclua uns textos na tela pra vocês verem o movimento de telas
* conforme a seleção das abas
*&---------------------------------------------------------------------*
*& Include MZ_ABASO01 *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module ABAS_SET OUTPUT
*&---------------------------------------------------------------------*
MODULE abas_set OUTPUT.
BREAK-POINT.
abas-activetab = g_abas-pressed_tab.
CASE g_abas-pressed_tab.
WHEN c_abas-tab1.
g_abas-subscreen = '9001'.
WHEN c_abas-tab2.
g_abas-subscreen = '9002'.
WHEN c_abas-tab3.
g_abas-subscreen = '9003'.
WHEN OTHERS.
ENDCASE.
ENDMODULE. " ABAS_SET OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
module STATUS_9000 output.
* Cliquem duas vezes no texto em verde e criem um Status simples.
SET PF-STATUS 'ST9000'.
* SET TITLEBAR 'xxx'.
endmodule. " STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*& Include MZ_ABASI01 *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module ABAS_GET INPUT
*&---------------------------------------------------------------------*
MODULE abas_get INPUT.
ok_code = sy-ucomm.
CASE ok_code.
WHEN c_abas-tab1.
g_abas-pressed_tab = c_abas-tab1.
WHEN c_abas-tab2.
g_abas-pressed_tab = c_abas-tab2.
WHEN c_abas-tab3.
g_abas-pressed_tab = c_abas-tab3.
WHEN OTHERS.
ENDCASE.
ENDMODULE. " ABAS_GET INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
module USER_COMMAND_9000 input.
IF sy-ucomm EQ 'BACK' OR
sy-ucomm EQ 'EXIT' OR
sy-ucomm EQ 'CANC'.
LEAVE TO SCREEN 0.
ENDIF.
endmodule. " USER_COMMAND_9000 INPUT
* Agora criem uma transação conforme as duas imagens abaixo, reparando
* no Objeto de execução da transação.
*&---------------------------------------------------------------------*
*& Include MZ_ABASTOP PoolMóds. *
*& *
*&---------------------------------------------------------------------*
PROGRAM sapmz_abas .
* Declarações
* Grupo de constantes que informa a aba acionada
CONSTANTS:
BEGIN OF c_abas,
tab1 LIKE sy-ucomm VALUE 'ABAS_F1',
tab2 LIKE sy-ucomm VALUE 'ABAS_F2',
tab3 LIKE sy-ucomm VALUE 'ABAS_F3',
END OF c_abas.
* Declaração da Tabstrip .
CONTROLS : abas TYPE TABSTRIP.
* Grupo de variáveis que acionará a tela seleciona
DATA:
BEGIN OF g_abas,
subscreen LIKE sy-dynnr,
* Aqui por favor coloquem o nome do Module Pool de vocês.
prog LIKE sy-repid VALUE 'SAPMZ_ABAS',
pressed_tab LIKE sy-ucomm VALUE c_abas-tab1,
END OF g_abas.
* Comando do User
DATA: ok_code LIKE sy-ucomm.
*&---------------------------------------------------------------------*
*& MODULES DA TELA PRINCIPAL 9000
*&---------------------------------------------------------------------*
PROCESS BEFORE OUTPUT.
* Modulo
MODULE ABAS_SET.
CALL SUBSCREEN ABAS_SCA
INCLUDING G_ABAS-PROG G_ABAS-SUBSCREEN.
MODULE STATUS_9000.
*
PROCESS AFTER INPUT.
CALL SUBSCREEN ABAS_SCA.
MODULE ABAS_GET.
MODULE USER_COMMAND_9000.
* Telas 9001, 9002 e 9003 não precisam de nada na lógica deles
* só inclua uns textos na tela pra vocês verem o movimento de telas
* conforme a seleção das abas
*&---------------------------------------------------------------------*
*& Include MZ_ABASO01 *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module ABAS_SET OUTPUT
*&---------------------------------------------------------------------*
MODULE abas_set OUTPUT.
BREAK-POINT.
abas-activetab = g_abas-pressed_tab.
CASE g_abas-pressed_tab.
WHEN c_abas-tab1.
g_abas-subscreen = '9001'.
WHEN c_abas-tab2.
g_abas-subscreen = '9002'.
WHEN c_abas-tab3.
g_abas-subscreen = '9003'.
WHEN OTHERS.
ENDCASE.
ENDMODULE. " ABAS_SET OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
module STATUS_9000 output.
* Cliquem duas vezes no texto em verde e criem um Status simples.
SET PF-STATUS 'ST9000'.
* SET TITLEBAR 'xxx'.
endmodule. " STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*& Include MZ_ABASI01 *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module ABAS_GET INPUT
*&---------------------------------------------------------------------*
MODULE abas_get INPUT.
ok_code = sy-ucomm.
CASE ok_code.
WHEN c_abas-tab1.
g_abas-pressed_tab = c_abas-tab1.
WHEN c_abas-tab2.
g_abas-pressed_tab = c_abas-tab2.
WHEN c_abas-tab3.
g_abas-pressed_tab = c_abas-tab3.
WHEN OTHERS.
ENDCASE.
ENDMODULE. " ABAS_GET INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
module USER_COMMAND_9000 input.
IF sy-ucomm EQ 'BACK' OR
sy-ucomm EQ 'EXIT' OR
sy-ucomm EQ 'CANC'.
LEAVE TO SCREEN 0.
ENDIF.
endmodule. " USER_COMMAND_9000 INPUT
* Agora criem uma transação conforme as duas imagens abaixo, reparando
* no Objeto de execução da transação.
* Agora é só executar a transação e correr pro abraço, espero que vocês
* tenham absorvido algo e bons estudos.
* Qualquer coisa continuo a disposição, podem perguntar no post mesmo
* ou se quiserem podem mandar pro meu email mesmo.
* tenham absorvido algo e bons estudos.
* Qualquer coisa continuo a disposição, podem perguntar no post mesmo
* ou se quiserem podem mandar pro meu email mesmo.