November 25, 2024

ABAPZombie Guide to ABAP – Parte 13 – AT SELECTION-SCREEN

O AT SELECTION-SCREEN é um evento que permite manipular ações do usuário e do sistema durante o processo de exibição/alteração da tela de seleção de reports.

Ele também é conhecido com o “evento divertido que nos ajuda a fazer as loucuras que usuários/funcionais nos pedem”. 🙂

Antes de mais nada, eu utilizei diversas técnicas do AT SELECTION SCREEN no post: ABAP Zombie Screen Examples. Vale a pena dar uma olhada 🙂

Vamos lá…

Basicamente, você pode criar eventos para manipular a tela em diversos momentos. Quando o SAP estiver processando a tela, ele poderá passar pelos seguintes eventos:

  • AT SELECTION-SCREEN OUTPUT: Evento no PBO (process before output) da tela de seleção (antes dos valores serem exibidos).
  • AT SELECTION-SCREEN ON parameter/sel-option: Evento do PAI (process after input) para um PARAMETER ou SELECT-OPTIONS. Ideal para validar o input dos usuários em campos específicos. Lembrando que radiobuttons devem ser tratados no evento apropriado.
  • AT SELECTION-SCREEN ON RADIOBUTTON GROUP nomedogrupo: Mesmo coisa que o de cima, mas para Radiobuttons
  • AT SELECTION-SCREEN ON END OF sel-option: Irá passar aqui no final do preenchimento do sel-options em questão.
  • AT SELECTION-SCREEN ON BLOCK nomedobloco: No PAI também, no final do processamento do bloco XXX (aqueles que você define na declaração da tela!).
  • AT SELECTION-SCREEN (sim, nada mais): Esse é o mais chato. Sempre vai ser disparado, e sempre por último hahaha.
  • AT SELECTION-SCREEN ON HELP-REQUEST FOR parameter/sel-option: Quando alguem apertar F1 no campo especificado após o FOR.
  • AT SELECTION-SCREEN ON VALUE-REQUEST FOR parameter/sel-option: quando alguem aertar F4 no campo especificado após o FOR
  • AT SELECTION-SCREEN ON EXIT-COMMAND: Sempre que o usuário quiser sair da tela, através do EXIT, BACK ou o CANCEL, vai passar por aqui 🙂

Bom, chega de teoria (eu sei, eu sei.. é chato mas precisa, po! 😛 ).

Eu criei um programinha firmeza, bem didático para você ver os diferentes momentos em que o programa dispara cada um destes eventos. Divirta-se testando:

REPORT zombie_at_selection_screen.

TABLES: mara.

* Tela de Seleção beeeem simples!
SELECTION-SCREEN BEGIN OF BLOCK bloco1.

* Um simples enter irá passar pelos eventos:
* AT SELECTION-SCREEN ON p_any.
* AT SELECTION-SCREEN ON RADIOBUTTON GROUP rb1.
* AT SELECTION-SCREEN ON BLOCK bloco1.
* AT SELECTION-SCREEN.
PARAMETER: p_any  TYPE mara-matnr.

* Apertando F1 nesse campo, irá parar no evento:
* AT SELECTION-SCREEN ON HELP-REQUEST FOR p_f1.
PARAMETER: p_f1   TYPE mara-matnr.

* Apertando F4 nesse campo, irá parar no evento:
* AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_f4.
PARAMETER: p_f4   TYPE mara-matnr.

* Se você preencher várias linhas aqui, ele irá parar no evento:
* AT SELECTION-SCREEN ON END OF s_any.
SELECT-OPTIONS: s_any FOR mara-matnr.

PARAMETER: p_sim RADIOBUTTON GROUP rb1,
           p_nao RADIOBUTTON GROUP rb1.

* Se você sair do Report, irá passar no evento
* AT SELECTION-SCREEN ON EXIT-COMMAND.

SELECTION-SCREEN END OF BLOCK bloco1.

* Como é no PBO, vai passar aqui antes de exibir a tela.
AT SELECTION-SCREEN OUTPUT.
  BREAK-POINT.

AT SELECTION-SCREEN ON p_any.
  BREAK-POINT.

AT SELECTION-SCREEN ON RADIOBUTTON GROUP rb1.
  BREAK-POINT.

AT SELECTION-SCREEN ON END OF s_any.
  BREAK-POINT.

AT SELECTION-SCREEN ON BLOCK bloco1.
  BREAK-POINT.

AT SELECTION-SCREEN ON HELP-REQUEST FOR p_f1.
  BREAK-POINT.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_f4.
  BREAK-POINT.

* Se você tentar sair, vai parar aqui :)
AT SELECTION-SCREEN ON EXIT-COMMAND.
  BREAK-POINT.

AT SELECTION-SCREEN.
  BREAK-POINT.

É só fazer o que os comentários mandam para ver funcionando. 😀

Abraços!

Mauricio Cruz

Pasteleiro há 15+ anos e criou o ABAPZombie junto com o Mauro em 2010. Gosta de filosofar sobre fundamentos básicos da programação e assuntos polêmicos. Não trabalha mais com SAP, mas ainda escreve sobre programação e faz vídeos de vez em quando.

View all posts by Mauricio Cruz →

6 thoughts on “ABAPZombie Guide to ABAP – Parte 13 – AT SELECTION-SCREEN

  1. Como posso usar o AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_f4 pegando o valor do parametro para um select.

Leave a Reply

Your email address will not be published. Required fields are marked *