Tela de Seleção Turbinada – Parte 1 – Botões

A tela de seleção no SAP contém inúmeras funções que poucas pessoas utilizam. É possível criar subscreens, botoes, tabstrips… A idéia dessa série de posts é tentar prevenir que você crie um online ou uma tela sem necessidade, além de ajudar você a deixar sua tela de seleção mais “gringa”, e quem sabe surpreender algum usuário por aí ;)

Deixa sua tela de seleção no modo turbo após essa sequência de posts!

Dica de hoje… como adicionar um botão na tela de seleção?

Veja o código abaixo. Você pode também usar o velho e sempre bom CTRL+C CTRL+V e testar num programa local num ambiente que você tenha acesso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
REPORT z_teste_botao.
 
* Estrutura necessária para manipulação do elemento na Tela
*----------------------------------------------------------
TABLES: sscrfields.
 
* Type Pools com os Ícones (duplo clique para visualiza-los)     
*----------------------------------------------------------
TYPE-POOLS: icon.
 
* Declaração do Botão
* Você pode utilizar da função 1 até a função 5
* O atalho será Ctrl+Fx onde X é o número da Function Key
*--------------------------------------------------------
SELECTION-SCREEN: FUNCTION KEY 1. "Declaração do Botão
 
* O Botão por sí só não faz uma tela de seleção.
* Outros elementos de tela devem existir, e o botão irá aparecer ao lado
* do botão executar.
*-----------------------------------------------------------------------
PARAMETERS: p_dummy TYPE char10.
 
* Descrevendo o botão no evento Initialization
*---------------------------------------------
INITIALIZATION.
 
 PERFORM cria_botao.
 
* Manipualação do Botão
*----------------------
AT SELECTION-SCREEN.
 
 IF sy-ucomm = 'FC01'.
 BREAK-POINT.
 ENDIF.
 
*&---------------------------------------------------------------------*
*&      Form  cria_botao
*&---------------------------------------------------------------------*
FORM cria_botao .
 
*  Estrutura para descrever o botão
 DATA: wa_button TYPE smp_dyntxt.
 
*  Nome do Botão
 wa_button-text      = 'Botao Log de Erros'.
 
*  Ícone do Botão
 wa_button-icon_id   = icon_error_protocol.
 
*  Texto que aparecerá ao lado do ícone (pode ser vazio)
 wa_button-icon_text = 'Log de Erros'.
 
*  Quickinfo (aparece quando o user passar o mouse sobre o botao)
 wa_button-quickinfo = 'Visualizar Log de Erros'.
 
*  Associa essas propriedades com a função 1
 sscrfields-functxt_01 = wa_button.
 
ENDFORM.                    " cria_botao

Você pode atribuir pop-ups nos botões, outros programas através de um submit, mostrar uma SM30, chamar alguma transação com call transaction.. as opções são inúmeras.

A tela de seleção vai ficar assim com o código acima. Se liga ali no botão!

Clicando no botão, o programa cai nesse evento. Aí você pode colocar a chamada que você quiser!

Continue seguindo os posts para descobrir como fazer uma tela de seleção turbinada. No último post irei mostrar uma tela que una todos os códigos de tela de seleção listados aqui no blog.

Abraços!

This entry was posted in Dicas ABAP, Tela de Seleção and tagged , , , . Bookmark the permalink.


Compartilhe este post!


6 Responses to Tela de Seleção Turbinada – Parte 1 – Botões

  1. Henrique says:

    Se eu quiser colocar o botão blz, mas e se eu quiser dar um fim nele quando mudar um radio button por exemplo?

    • É só limpar a work area SSCRFIELDS para apagar este tipo de botão.

      Assim:

      <pre lang="abap" escaped="true">
      *&———————————————————————*
      *& Form APAGA_BOTAO
      *&———————————————————————*
      FORM apaga_botao USING p_number TYPE c.

      * Variáveis
      DATA: v_field(21) TYPE c.

      * Field Symbols
      FIELD-SYMBOLS: <fs_field> TYPE ANY.

      CONCATENATE 'SSCRFIELDS-FUNCTXT_0' p_number
      INTO v_field.

      ASSIGN (v_field) TO <fs_field>.

      IF sy-subrc = 0.
      CLEAR <fs_field>.
      ENDIF.

      ENDFORM. " APAGA_BOTAO
      </pre>

      É só chamar o comando PERFORM apaga_botao USING '1', se você quiser apagar o botão associado a function key 1, por exemplo. Faça isso no AT SELECTION SCREEN OUTPUT e seja feliz :D

      Abraço!

  2. Henrique Dias says:

    Eu fiz um teste aqui e não precisa usar esse field symbol maroto q vc usou aí no exemplo.

    Só isso já resolve:

    * Exclui o botão associado ao FUNCTION KEY 1.
    CLEAR sscrfields-functxt_01.

    Ah, e se alguém quiser excluir o botão executar é só usar o código abaixo:

    * Include de Selection Screen Standard
    INCLUDE rsdbc1xx.

    * Exclui o botão Executar da tela de seleção (a estrutura current_scr pode variar dependendo da versão do SAP)
    APPEND 'ONLI' TO current_scr-excl.

  3. Amanda PF says:

    Boa noite Maurício!
    Estou iniciando em abap e estou adorando seu blog! Parabéns!
    Estou com algumas dúvidas a respeito desse código…
    1- "IF sy-ucomm = 'FC01'."
    Nessa linha, esse sy-ucomm é por exemplo, uma variável para validar a execução e entrada de dados? Por que no caso do botão seu valor é igual a 'FC01' ?

    2- E no código de apagar o botão:

    "não entendi o pq da criação desse campo"
    FIELD-SYMBOLS: TYPE ANY.

    "por que concatenar esses dados?"
    CONCATENATE 'SSCRFIELDS-FUNCTXT_0' p_number
    INTO v_field.

    "aqui não entendi nd rs"
    ASSIGN (v_field) TO .

    IF sy-subrc = 0.
    CLEAR .
    ENDIF.

    Obrigado pela atenção! :)



Quer comentar com um código fonte? Quer colocar uma foto no seu comentário? Quer compatilhar um artigo pelo site? Então clique aqui!

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>