O que é a cláusula NESTING LEVEL no comando SELECTION-SCREEN?

26 October, 2009 (23:49) | Dúvidas de Aula | By: Flávio Furlan

Google GmailWordPressBlogger PostShare

No caso de programas executáveis (ou do tipo relatório ou report), temos muitos recursos para contruir uma tela de seleção de maneira programática, ou seja, usando código ABAP e não o Screen Painter.

Para fazer telas com tabs é necessário contruí-las com subcreens, usando o comando SELECTION-SCREEN BEGIN OF SCREEN.

Uma das cláusulas muito específicas é a chamada NESTED LEVEL, usada para redimensionar frames dentro de uma tab.

Veja esse exemplo, sem o uso da cláusula NESTED LEVEL:


Figura 1 – Selection screen sem NESTED LEVEL.

Essa tela de seleção é resultado do código abaixo:

*&---------------------------------------------------------------------*
*& Report  ZFURLAN04
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
 
REPORT  zfurlan04.
 
DATA: wa_spfli TYPE spfli.
 
SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN.
 
SELECTION-SCREEN BEGIN OF BLOCK limit WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF BLOCK limit1 WITH FRAME TITLE text-002.
PARAMETERS: pa_car TYPE spfli-carrid,
            pa_car3 TYPE spfli-carrid,
            pa_car4 TYPE spfli-carrid,
            pa_car5 TYPE spfli-carrid,
            pa_car6 TYPE spfli-carrid,
            pa_car7 TYPE spfli-carrid,
            pa_car8 TYPE spfli-carrid,
            pa_car9 TYPE spfli-carrid,
            pa_car10 TYPE spfli-carrid,
            pa_car11 TYPE spfli-carrid.
SELECTION-SCREEN END OF BLOCK limit1.
SELECTION-SCREEN END OF BLOCK limit.
SELECTION-SCREEN END OF SCREEN 101.
 
SELECTION-SCREEN BEGIN OF SCREEN 102 AS SUBSCREEN NESTING LEVEL 0.
PARAMETERS: pa_car1 TYPE spfli-carrid.
 
SELECTION-SCREEN END OF SCREEN 102.
 
SELECTION-SCREEN BEGIN OF SCREEN 103 AS SUBSCREEN NESTING LEVEL 0.
PARAMETERS: pa_car2 TYPE spfli-carrid.
 
SELECTION-SCREEN END OF SCREEN 103.
 
SELECTION-SCREEN BEGIN OF TABBED BLOCK tab_block FOR 5 LINES.
SELECTION-SCREEN TAB (10) tab1 USER-COMMAND comm1 DEFAULT SCREEN 101.
SELECTION-SCREEN TAB (10) tab2 USER-COMMAND comm2 DEFAULT SCREEN 102.
SELECTION-SCREEN TAB (10) tab3 USER-COMMAND comm3 DEFAULT SCREEN 103.
SELECTION-SCREEN END OF BLOCK tab_block.
 
INITIALIZATION.
 
  tab1  = 'Tab1'.
  tab2  = 'Tab2'.
  tab3  = 'Tab3'.
 
START-OF-SELECTION.

Agora, usando NESTED LEVEL, a tela de seleção fica assim:

Figura 2 – Selection screen com NESTED LEVEL.

Isso é resultado do código abaixo:

*&---------------------------------------------------------------------*
*& Report  ZFURLAN04
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
 
REPORT  zfurlan04.
 
DATA: wa_spfli TYPE spfli.
 
SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN NESTING LEVEL 1.
 
SELECTION-SCREEN BEGIN OF BLOCK limit WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF BLOCK limit1 WITH FRAME TITLE text-002.
PARAMETERS: pa_car TYPE spfli-carrid,
            pa_car3 TYPE spfli-carrid,
            pa_car4 TYPE spfli-carrid,
            pa_car5 TYPE spfli-carrid,
            pa_car6 TYPE spfli-carrid,
            pa_car7 TYPE spfli-carrid,
            pa_car8 TYPE spfli-carrid,
            pa_car9 TYPE spfli-carrid,
            pa_car10 TYPE spfli-carrid,
            pa_car11 TYPE spfli-carrid.
SELECTION-SCREEN END OF BLOCK limit1.
SELECTION-SCREEN END OF BLOCK limit.
SELECTION-SCREEN END OF SCREEN 101.
 
SELECTION-SCREEN BEGIN OF SCREEN 102 AS SUBSCREEN NESTING LEVEL 0.
PARAMETERS: pa_car1 TYPE spfli-carrid.
 
SELECTION-SCREEN END OF SCREEN 102.
 
SELECTION-SCREEN BEGIN OF SCREEN 103 AS SUBSCREEN NESTING LEVEL 0.
PARAMETERS: pa_car2 TYPE spfli-carrid.
 
SELECTION-SCREEN END OF SCREEN 103.
 
SELECTION-SCREEN BEGIN OF TABBED BLOCK tab_block FOR 5 LINES.
SELECTION-SCREEN TAB (10) tab1 USER-COMMAND comm1 DEFAULT SCREEN 101.
SELECTION-SCREEN TAB (10) tab2 USER-COMMAND comm2 DEFAULT SCREEN 102.
SELECTION-SCREEN TAB (10) tab3 USER-COMMAND comm3 DEFAULT SCREEN 103.
SELECTION-SCREEN END OF BLOCK tab_block.
 
INITIALIZATION.
 
  tab1  = 'Tab1'.
  tab2  = 'Tab2'.
  tab3  = 'Tab3'.
 
START-OF-SELECTION.

Conclusão

Quando usamos o comando NESTED LEVEL, o screen processor redesenha a os frames para evitar a barra de rolagem horizontal.

O número que vem após o NESTED LEVEL é o nível de ajuste do frame e vai até 4.

Leia também

  • No Related Post

Write a comment