Screen Painter
É uma ferramenta do ABAP Workbench que permite a criação de telas para suas transações. Você pode usá-lo tanto para criar a própria tela, com campos e outros elementos gráficos, e para escrever a lógica do fluxo atrás da tela.
O Screen Painter tem um editor de layout que você usa para criar seu layout de tela. Ele funciona no modo gráfico e no modo alfanumérico. Ambos os modos oferecem as mesmas funções, mas usam diferentes interfaces. No modo gráfico, você usa uma interface de arrastar semelhante a uma ferramenta de desenho. No modo alfanumérico, você usa seu teclado e menus.
Design First, Code Later
O editor de layout gráfico fornece um ambiente amigável para projetar telas. Você pode iniciar o editor de layout a partir da tela inicial do Screen Painter ou a partir do Navegador do repositório. O editor de layout possui dependências com o SAP GUI e você precisa estar usando versões compatíveis com o Graphical Layout Editor.
Depois de adicionar um elemento na sua tela, você pode convertê-lo para um outro tipo de elemento usando o menu Editar. Você também pode usar a paleta de elementos para selecionar e colocar os elementos da tela sem primeiro identificar seus campos ou você pode importar os campos e criar componentes automaticamente direto de uma tabela transparente.
Screen Painter Layout Editor
- Entre na transação SE38 e crie um programa chamado ZDesignFirst.
- Entre na transação SE51
- Adicione no campo Program, o nome do programa criado anteriormente e no campo Screen Number escreva o numero: 100 e clique em Create.
- No campo Short Description coloque : Desenvolvimento Aberto.
- Na aba Flow Logic, apague o caractere de comentario “*”, deixando a linha: “MODULE STATUS_0100.” compilavel.
- De um duplo clique na variável “STATUS_0100“.
- Em Create PBO Module escolha: MAIN PROGRAM, clique em Ok e salve.

- Digite a transação /nSE51, para voltar no Screen Painter, selecione modificar e clique em Layout.

- No editor de Layout clique no icone Dictionary ou aperte a tecla F6.
- Na tela seguinte, no campo Table/Field Name escolha a tabela SPFLI e clique no botão GET FROM DICTIONARY.

- Selecione todos os campos, clique em OK e solte os componentes na tela (não converta nenhum componente).
- Coloque um componente BOX na tela e de um duplo clique, na janela de propriedades, mude a propriedade Text para: Reserva de Voo.
- Coloque um PushButton na tela e preencha as propriedades: Name = Mostrar, Text = Mostrar e FctCode = F_MOSTRAR.
- Crie mais quatro botões e repita os mesmos procedimentos acima, o primeiro com o nome de limpar e segundo com o nome de Sair, Gravar e Excluir.
- Alinhe o Desing da tela como na figura abaixo.

- Clique em Save, Activate e pressione Flow Logic.
- Na aba Element List, no elemento tipo OK nomeie para OK_CODE.

- Na aba Attributes em Cursor Position escolha: SPFLI_CARRID
- Clique em Activate e volte para a transação SE38 e abra o seu programa ZDesignFirst.
- Use os dois códigos abaixo.
Programa Abap
O programa com a tela totalmente funcional, deve ficar como na imagem abaixo, deve ser capaz de pesquisar, gravar e excluir uma tabela transparente:
Exemplo:
Neste programa usamos a tabela de reserva de voo, SPFLI do Flight Model que não possui uma GUI de entrada de dados. O que vamos fazer é criar a GUI de entrada de dados apenas para esta tabela usando o Screen Painter e OPEN SQL, visto que temos que respeitar as Foreing Keys das tabelas transparentes, é necessário rodar primeiramente o programa Zdados para preencher manualmente as tabelas auxiliares para nosso programa. Vale ressaltar que neste ponto só nos interessa o Screen Painter e não como manipular dados consistentemente, o que veremos mais tarde.
Abap
Zdados -Rode este programa para gravar dados nas tabelas transparentes.
*&---------------------------------------------------------------------* *& Report ZDADOS *& *&---------------------------------------------------------------------* *& Desenvolvimento Aberto *& Insere Dados manualmente no Flight Model *&---------------------------------------------------------------------* REPORT ZDADOS. * Define tabelas do Banco de dados TABLES SCARR. TABLES SGEOCITY. TABLES SAIRPORT. TABLES SPFLI. * Apaga dados existentes DELETE FROM SCARR. DELETE FROM SGEOCITY. DELETE FROM SAIRPORT. DELETE FROM SPFLI. * Cria MATRIZs de dados (rows) DATA MATRIZ1 TYPE SCARR. DATA MATRIZ2 TYPE SGEOCITY. DATA MATRIZ3 TYPE SAIRPORT. DATA MATRIZ4 TYPE SPFLI. * Insere dados. MATRIZ1-CARRID = '001'. MATRIZ1-CARRNAME = 'DA LINNHAS AEREAS'. MATRIZ1-CURRCODE = 'REAL'. MATRIZ1-MANDT = '001'. MATRIZ1-URL = 'https://desenvolvimentoaberto.wordpress.com'. INSERT INTO SCARR VALUES MATRIZ1. MATRIZ2-CITY = 'SAO PAULO'. MATRIZ2-COUNTRY = 'BRA'. MATRIZ2-LATITUDE = '23'. MATRIZ2-LONGITUDE = '46'. MATRIZ2-MANDT = '001'. INSERT INTO SGEOCITY VALUES MATRIZ2. MATRIZ2-CITY = 'RIO DE JANEIRO'. MATRIZ2-COUNTRY = 'BRA'. MATRIZ2-LATITUDE = '22'. MATRIZ2-LONGITUDE = '43'. MATRIZ2-MANDT = '001'. INSERT INTO SGEOCITY VALUES MATRIZ2. MATRIZ3-ID ='001'. MATRIZ3-MANDT ='001'. MATRIZ3-NAME = 'AEROPORTO DE CONGONHAS'. MATRIZ3-TIME_ZONE = 'GMT-3'. INSERT INTO SAIRPORT VALUES MATRIZ3. MATRIZ3-ID ='002'. MATRIZ3-MANDT ='001'. MATRIZ3-NAME = 'AERO PORTO SANTOS DUMONT'. MATRIZ3-TIME_ZONE = 'GMT-3'. INSERT INTO SAIRPORT VALUES MATRIZ3. MATRIZ4-AIRPFROM = '001'. MATRIZ4-AIRPTO = '002'. MATRIZ4-ARRTIME = '170000'. MATRIZ4-CARRID = '001'. MATRIZ4-CITYFROM = 'SAO PAULO'. MATRIZ4-CITYTO = 'RIO DE JANEIRO'. MATRIZ4-CONNID = '001'. MATRIZ4-COUNTRYFR = 'BRA'. MATRIZ4-COUNTRYTO = 'BRA'. MATRIZ4-DEPTIME = '181500'. MATRIZ4-DISTANCE = '500'. MATRIZ4-DISTID = 'KM'. MATRIZ4-FLTIME = '75'. MATRIZ4-FLTYPE = 'X'. MATRIZ4-MANDT = '001'. MATRIZ4-PERIOD = '1'. INSERT INTO SPFLI VALUES MATRIZ4. * Exibe imagem WRITE : / 'Dados inseridos'.
ZDesignFirst – Screen Painter
*&---------------------------------------------------------------------*
*& Report ZDESIGNFIRST
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Screen Painter
*&---------------------------------------------------------------------*
REPORT ZDESIGNFIRST.
* Define tabela de Reserva de Voo
TABLES SPFLI.
* Define variaveis do programa
DATA : OK_CODE LIKE SY-UCOMM.
* chama tela numero 100
CALL SCREEN 100.
MODULE STATUS_0100 OUTPUT.
* verifica ação dos botões
CASE SY-UCOMM.
WHEN 'F_SAIR'.
LEAVE PROGRAM.
WHEN 'F_MOSTRAR'.
SELECT SINGLE * FROM spfli INTO
CORRESPONDING FIELDS OF spfli
WHERE
carrid = spfli-CARRID AND
CONNID = spfli-CONNID.
WHEN 'F_LIMPAR'.
CLEAR SPFLI.
WHEN 'F_GRAVAR'.
INSERT INTO SPFLI VALUES SPFLI.
MESSAGE 'Registro gravado com Sucesso' TYPE 'S'.
CLEAR SPFLI.
WHEN 'F_EXCLUIR'.
DELETE FROM SPFLI CLIENT SPECIFIED
WHERE
mandt = spfli-MANDT AND
carrid = spfli-CARRID AND
CONNID = spfli-CONNID.
MESSAGE 'Registro deletado com Sucesso' TYPE 'S'.
CLEAR SPFLI.
ENDCASE.
ENDMODULE.



horrível