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 sy–ucomm, 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
- Na transação SE38 crie um programa chamado Z_ZVISUAL_CODIGO.
- Na transação SE41 Crie um titulo chamado ZVISUAL_CODIGO, use a imagem abaixo para referencia:

- Crie um menu com o nome de 100.
- 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:

- Salve e Ative o menu status 100.
- Entre na transação SE51.
- Na aba Flow Logic crie o PBO Module e salve o programa.
- De volta na SE51 crie o seguinte design:

- 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.
- Nomeie os botões de TACAO, TLIMPAR e TSAIR e para seus Function Codes nomeie como F_ACAO, F_LIMPAR e F_SAIR.
- Salve e ative a tela de layout.
- Entre na transação SE38 e complete o seu programa com o código abaixo, você deve obter o seguinte resultado:
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


