Esconder elementos de Tela

 Vamos esconder um checkbox da tela. Para isso vamos começar com as declarações das variáveis: 


SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001. PARAMETERS: ch_rel AS CHECKBOX, ch_pr_lc AS CHECKBOX. SELECTION-SCREEN SKIP. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN PUSHBUTTON (30) btn USER-COMMAND click1. PARAMETER: gd_ucomm LIKE sy-ucomm NO-DISPLAY. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN END OF BLOCK b1.


O comando "Skip" serve  para dar um espaçamento, como se fosse para pular uma linha.  

Logo após temos a declaração do botão que irá nos auxiliar no "Hide"(esconder) do nosso objeto, neste tutorial, o checkbox.  

No último parâmetro temos um pequeno truque: caso você queira mais de um botão poderá declará-lo como um parâmetro que não será exibido na tela. Além disso você também pode deixar um valor padrão no parâmetro.


INITIALIZATION.

  CONCATENATE '@02@' text-010 INTO btn.


AT SELECTION-SCREEN.

  CLEAR gd_ucomm.

  IF sy-ucomm EQ 'CLICK1'.

    gd_ucomm = 'CLICK1'.

  ENDIF.


AT SELECTION-SCREEN OUTPUT.

  IF gd_ucomm EQ 'CLICK1'.

    LOOP AT SCREEN.

      IF screen-name EQ 'CH_REL'.

        screen-invisible = 1.

        screen-input     = 0.

        screen-active    = 0.

        MODIFY SCREEN.

      ENDIF.

    ENDLOOP.

  ENDIF.


Na linha 1 temos no evento "INITIALIZATION" a atribuição do texto do nosso botão. Observe que você pode adicionar um ícone para ficar mais intuitivo ao usuário (o que é uma boa prática). Não são só os module-pool que podem ficar bonitos, ok?

A seguir, na linha 4, iremos inicializar o nosso parâmetro (caso você não tenha adicionado nenhum valor default) quando o evento "AT SELECTION-SCREEN" for acionado. O gd_ucomm servirá como uma flag para uso posterior.

A partir da linha 10, no evento "AT SELECTION-SCREEN OUTPUT" temos a lógica de fato que precisamos para esconder o objeto: se a condição for cumprida o programa executará o loop e tornará nosso checkbox indisponível.


Observe que no código acima só atribuímos o valor de "invisible" a um dos parâmetros, então após clicar no botão teremos o resultado da imagem a seguir:


Note que a opção "Relatório" não está mais disponível.



Comentários

Postagens mais visitadas deste blog

Incluir arquivo em DMS já existente

Como inserir objetos em request via programa