Visual – Menu Painter – Screen Painter – Input/Output Field, CheckBox, RadioButton – Database Off – Abap

Publicado: 24 de março de 2014 em Abap

Trabalhar com o banco de dados SAP conectado aos componentes do Screen Painter é relativamente bem fácil, pois o engine do Screen Painter faz quase todo o trabalho para você, reconhecendo os componentes para cada tipo de campo do dicionário de dados e  quando é possível lhe questiona se deseja uma conversão de um componente básico para outro mais adequado ao tipo de campo usado, e além disso lhe da botões de chamadas para pesquisas de campos que contem uma chave estrangeira.

Trabalhar com os componentes desconectados do banco de dados é um pouco diferente, pois você precisa controlar e referenciar os componentes criados na janela de design direto de seu código Abap. Diferentemente de outras linguagens de programação onde você referencia o objeto diretamente pelo nome do componente ou pelo seu ID, o Abap não possui uma unidade de código para o design gerado, que normalmente contém o nome dos componentes e suas propriedades e eventos, deste modo não é possível referenciar automaticamente os componentes em um programa Abap.

Para resolver esta situação o Abap exige que o programador crie variáveis com o mesmo nome do componente criado no Screen Painter e possui uma Function Code que dispara o evento PAI chamada SY-UCOMM que contem as funções que você nomeou nas propriedades dos seus componentes. Mas em seus programas ABAP, você deve trabalhar com o campo OK_CODE em vez de usar diretamente o syucomm, você deve sempre inicializar o campo OK_CODE em um programa ABAP pelo seguinte motivo,  é preciso limpar este campo para garantir que o código de função de uma tela não esteja preenchido no evento PBO, com um valor indesejado. Esta limpeza é importante quando o próximo evento PAI for disparado com um código de função vazia (por exemplo, usando ENTER).

Menu Painter/ Screen Painter

  1. Na transação SE38 crie um programa chamado Z_ZVISUAL_CODIGO.
  2. Na transação SE41 Crie um titulo chamado ZVISUAL_CODIGO, use a imagem abaixo para referencia:visual_titulo
  3. Crie um menu com o nome de 100.
  4. Coloque o nome do menu de “Visual + Código” e preencha os campos Code com o nome das funções dos botões que serão criados posteriormente: F_ACAO, F_LIMPAR, F_SAIR, use a imagem abaixo para referencia:visual_menu
  5. Salve e Ative o menu status 100.
  6. Entre na transação SE51.
  7. Na aba Flow Logic crie o PBO Module e salve o programa.
  8. De volta na SE51 crie o seguinte design:visual_design
  9. Na propriedade Name coloque TCAMPO1, e TCAMPO2 para os Input/Output Fields, TRADIO1 e TRADIO2 para os RadioButtons e TCHECK1 e TCHECK2 para os Checkbox.
  10. Nomeie os botões de TACAO, TLIMPAR e TSAIR e para seus Function Codes nomeie como F_ACAO, F_LIMPAR e F_SAIR.
  11. Salve e ative a tela de layout.
  12. Entre na transação SE38 e complete o seu programa com o código abaixo, você deve obter o seguinte resultado:

visual_programa Exemplo:

Neste exemplo criamos um programa Abap que chama um menu e uma tela visual, onde controlamos seus componentes via codificação.

Abap

*&---------------------------------------------------------------------*
*& Report  ZVISUAL_CODIGO
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Visual + código
*&---------------------------------------------------------------------*

REPORT  ZVISUAL_CODIGO.

" Declara variaveis para os componetes
DATA TCAMPO1 TYPE string.
DATA TCAMPO2 TYPE string.

DATA TRADIO1 TYPE C LENGTH 1.
DATA TRADIO2 TYPE C LENGTH 1.

DATA TCHECK1 TYPE C LENGTH 1.
DATA TCHECK2 TYPE C LENGTH 1.

" Declara variaveis para os eventos
DATA OK_CODE LIKE SY-UCOMM.
DATA CLIQUE_OK LIKE SY-UCOMM.

" Chama tela visual
CALL SCREEN 100.

MODULE STATUS_0100 OUTPUT.

  " Chama o menu e o tilulo da tela
  SET PF-STATUS '100'.
  SET TITLEBAR 'ZVISUAL_CODIGO'.

" Limpa o evento contra possiveis sujeira PAI
CLIQUE_OK = OK_CODE.
CLEAR OK_CODE.

" Dedfine eventos dos botões
CASE CLIQUE_OK.
  WHEN 'F_ACAO'.

    " Verifica se o grupo foi clicado
    CASE 'RADIO'.
       IF TRADIO1 EQ 'X'.
         TCAMPO1 = 'Você selecionou o Radio Button numero 1'.
       ENDIF.

       IF TRADIO2 EQ 'X'.
         TCAMPO1 = 'Você selecionou o Radio Button numero 2'.
       ENDIF.
    ENDCASE.

    " Verifica CheckBoxes
    IF TCHECK1 EQ 'X'.
      TCAMPO1 = 'Você selecionou o CheckBox 1'.
    ENDIF.

    IF TCHECK2 EQ 'X'.
      TCAMPO2 = 'Você selecionou o CheckBox 2'.
    ENDIF.

  " Limpa campos
  WHEN 'F_LIMPAR'.
    CLEAR :
        TCAMPO1,
        TCAMPO2,
        TCHECK1,
        TCHECK2,
        TRADIO1,
        TRADIO2.

  " Sai do programa
  WHEN 'F_SAIR'.
    LEAVE PROGRAM.
ENDCASE.

ENDMODULE.                 " STATUS_0100  OUTPUT
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s