Ecrãs de selecção com abas
Os ecrãs de selecção dos programas ABAP têm várias funcionalidades que, embora sofisticadas e simples de usar, são geralmente ignoradas. Aqui mostrar-te-ei quão simples é criar abas para melhor organizar os parâmetros de um programa. Desta vez, excepcionalmente, vou poupar-te à verborreia. É uma aula prática.
Vamos lá. O nosso ecrã de selecção terá 3 abas que representam 3 grupos distintos de parâmetros.
Como o que tem que ser tem muita força, comecemos pela declaração de dados:
REPORT zzz_nfg_selscreen_tabs2.
TABLES: kna1.
DATA: ucomm1 LIKE sy-ucomm,
ucomm2 LIKE sy-ucomm,
ucomm3 LIKE sy-ucomm.
A tabela KNA1 é declarada porque vai ser usada em SELECT-OPTIONS e as outras 3 variáveis são declaradas porque, embora como irão constatar, não sejam usadas para nada, é preciso declará-las senão o programa não compila.
Agora declaramos os 3 sub-ecrãs:
* Sub-ecrã: Filtros KNA1
SELECTION-SCREEN BEGIN OF SCREEN 3010 AS SUBSCREEN.
SELECT-OPTIONS: s_kunnr FOR kna1-kunnr,
s_land1 FOR kna1-land1,
s_ktokd FOR kna1-ktokd.
SELECTION-SCREEN END OF SCREEN 3010.
* Sub-ecrã: Opções
SELECTION-SCREEN BEGIN OF SCREEN 3020 AS SUBSCREEN.
PARAMETERS: p_opt1 AS CHECKBOX,
p_opt2 AS CHECKBOX,
p_opt3 AS CHECKBOX.
SELECTION-SCREEN END OF SCREEN 3020.
* Sub-ecrã: Ficheiro
SELECTION-SCREEN BEGIN OF SCREEN 3030 AS SUBSCREEN.
PARAMETERS: p_file TYPE rlgrap-filename DEFAULT '/ficheiro.txt'.
SELECTION-SCREEN END OF SCREEN 3030.
Agora que temos os sub-ecrãs definidos é só aplicá-los num TABBED BLOCK:
* Bloco normalíssimo só porque sim
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-b01.
PARAMETERS: p_uname TYPE uname OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
* Tabbed strip
SELECTION-SCREEN BEGIN OF TABBED BLOCK tabs FOR 3 LINES.
SELECTION-SCREEN TAB (15) tab1 USER-COMMAND ucomm1 DEFAULT SCREEN 3010.
SELECTION-SCREEN TAB (30) tab2 USER-COMMAND ucomm2 DEFAULT SCREEN 3020.
SELECTION-SCREEN TAB (15) tab3 USER-COMMAND ucomm3 DEFAULT SCREEN 3030.
SELECTION-SCREEN END OF BLOCK tabs.
Como vês, é simples. As variáveis TAB1, TAB2 e TAB3 são declaradas implicitamente e deverão conter os títulos das abas. Já as variáveis UCOMM1, UCOMM2 e UCOMM3 têm de ser declaradas explicitamente e definem o comando que poderá ser usado no SELECTION-SCREEN OUTPUT (equivalente ao PAI dos ecrãs) para controlar qualquer coisa adicional, mas neste caso não as vamos usar para mais nada.
O primeiro bloco com o P_UNAME está ali só para mostrar que os TABBED BLOCKS podem conviver com outros blocos normais.
Só falta definirmos os títulos das abas:
INITIALIZATION.
tab1 = 'Filtros KNA1'(t01).
tab2 = 'Opções'(t02).
tab3 = 'Ficheiro'(t03).
Já está. E o resultado é este:
A partir daqui é o START-OF-SELECTION e o resto do programa é igual ao que seria sem as abas.
Ainda está a milhas do Adobe Flex, mas é melhor do que nada.
Obrigado aensee_89 pela foto.
O Abapinho saúda-vos.