TREINAMENTO ABAP
Título del documento
1
|
ÍNDICE
Título del documento
2
|
CURSO BÁSICO �INSTÂNCIA
Instalação típica composta de 3 ambientes
Cada ambiente composto de 1 banco de dados,
1 instância central,
n servidores de aplicação e
m servidores de
apresentação
Arquitetura 3 camadas
Título del documento
3
|
CURSO BÁSICO�MANDANTES E OBJETOS DO REPOSITÓRIO
Visão das aplicações por mandante (em cada ambiente)
Mandt | Chave | Valor |
100 | A | 1 |
100 | B | 2 |
100 | C | 3 |
200 | A | 2 |
200 | B | 3 |
200 | D | 4 |
300 | C | 2 |
Tabela dependente de mandante
=
Primeira chave é o mandante
Título del documento
4
|
CURSO BÁSICO�ORDENS DE TRANSPORTE
Dois tipos principais:
Ordem
Mandt | Chave | Valor |
100 | A | 1 |
100 | C | 3 |
Título del documento
5
|
CURSO BÁSICO�TRANSAÇÕES
Chamadas aos programas
SE80 🡪 transação central de desenvolvimento
SE38 🡪 abre o editor ABAP/4
SE37 🡪 criação de funções
SE16 🡪 permite a visualização do conteúdo de tabelas do SAP
SE11 🡪 permite a visualização da arquitetura de uma tabela/estrutura do SAP e criação de demais objetos do dicionário
SE43 🡪 criação de menus
SE93 🡪 criação de transações
SE71 🡪 criação e manutenção de formulários SAPscripts
CMOD 🡪 criação de projetos Enhancements (Field Exits, User Exits, ...)
Principais transações para desenvolvedores:
Título del documento
6
|
CURSO BÁSICO�PADRÕES DE NOMENCLATURA
Nota SAP 16466
Maioria dos objetos: Y* e Z*
Exemplo de exceção: funções Y_* ou Z_*
Título del documento
7
|
CURSO BÁSICO�BARRA DE BOTÕES
Barra de botões da primeira tela SE38
Verificar: verifica a sintaxe e consistência do código.
Ativar: ativa o programa, além de efetuar a verificação de sintaxe e consistência do código.
Executar: executa o programa (opção válida apenas para programas do tipo executável).
Lista de utilizações: verifica onde existem chamadas do programa.
Análise do ambiente: avalia os componentes do programa e lista um relatório no final que permite a navegação nestes componentes.
Ajuda online: exibe ajuda online da documentação do SAP.
Eliminar: elimina programas.
Copiar: efetua cópia de programas.
Renomear: renomeia programas.
: Depuração: executa programa em modo de depuração (opção válida apenas para programas do tipo executável).
: Executar c/ variante: executa programa com variante de seleção já carregada em tela (opção válida apenas para programas do tipo executável).
: Variantes: permite o gerenciamento das variantes de seleção.
Título del documento
8
|
Barra de botões do editor ABAP
Objeto anterior: permite a navegação ao objeto anterior.
Objeto seguinte: permite a navegação ao objeto seguinte (caso tenha ocorrido retorno no editor).
Exibir/Modificar: permite exibir ou modificar o programa.
Ativo/Inativo: permite navegar entre as versões ativa e inativa do programa.
Outro objeto: permite navegar entre outros objetos.
Ampliar: permite utilizar pontos de ampliação disponíveis no programa.
Verificar: verifica a sintaxe e consistência do código.
Ativar: ativa o programa, além de efetuar a verificação de sintaxe e consistência do código.
Executar: executa o programa (opção válida apenas para programas do tipo executável).
Lista de utilizações: verifica onde existem chamadas do programa.
CURSO BÁSICO�BARRA DE BOTÕES
Título del documento
9
|
CURSO BÁSICO�BARRA DE BOTÕES
Barra de botões do editor ABAP (continuação)
Exibir lista de objetos: exibe lista de projetos ligados ao programa (includes, tabelas, telas, variáveis, tabelas internas, etc).
Exibir janela de navegação: exibe pilha de navegação de objetos.
Ajuda online: exibe ajuda online da documentação do SAP.
Definir/eliminar ponto parada sessão: permite definir um ponto de parada para depuração para a sessão ativa.
Definir/eliminar ponto parada externo: permite definir um ponto de parada para depuração para uma chamada externa (RFC, por exemplo).
Modelo: permite incluir modelos de chamadas funções, mensagens, classes, etc.
Pretty Printer: efetua identação e efetua conversões de maiúsculas e minúsculas de acordo com a configuração do editor.
Título del documento
10
|
CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP
Exemplo 1
REPORT ZEXEMP_01.��WRITE: '111111'.�WRITE: '222222',� '333333'.�WRITE: /'111111'.�WRITE: 15 '333333'.�WRITE: / text-001.�ULINE.�ULINE 8(6).�SKIP.�SKIP 2.�WRITE : 8 sy-langu.�WRITE : / sy-datum UNDER sy-langu.
Variáveis de ambiente: estrutura SYST
Título del documento
11
|
CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP
Exemplo 2
REPORT ZEXEMP_02.��TOP-OF-PAGE.
WRITE: 'EXEMPLO 2 - CURSO ABAP/4',
80 'Page',
SY-PAGNO.
Título del documento
12
|
CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP
Exemplo 3
REPORT ZEXEMP_03.��FORMAT COLOR COL_HEADING.
WRITE : 'FUNDO AZUL'.
Título del documento
13
|
CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP
Exemplo 4
REPORT ZEXEMP_04.��DATA: nome(20) TYPE c,
rg TYPE i,
data TYPE bkpf-budat,
hora(8) VALUE '14:05:45'.
MOVE 'Solution Center' TO nome.
COMPUTE rg = 42159818 + 1.
data = '19970530'. "aaaammdd
Título del documento
14
|
CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP
Exemplo 5
REPORT ZEXEMP_05.��PARAMETER: P_NOME1(15) TYPE C OBLIGATORY,
P_NOME2(15) TYPE C DEFAULT 'Abap Factory' LOWER CASE,
P_BOTAO1 RADIOBUTTON GROUP G1,
P_BOTAO2 RADIOBUTTON GROUP G1.
SELECT-OPTIONS: s_data FOR sy-datum.
Título del documento
15
|
CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP
Título del documento
16
|
CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP
Exemplo 6
REPORT ZEXEMP_06.��DATA: ti_t005h TYPE TABLE OF t005h,
wa_t005h TYPE t005h.
SELECT *
FROM t005h
INTO TABLE ti_t005h
WHERE land1 = p_pais
AND spras = sy-langu
ORDER BY cityc.
Título del documento
17
|
CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP
Exemplo 7
REPORT ZEXEMP_07.�� LOOP AT tg_t005h INTO wa_t005h.
ON CHANGE OF wa_t005h-land1.
IF v_var1 = 0.
NEW-PAGE.
ENDIF.
FORMAT COLOR OFF.
WRITE 'COUNTRY CITY'.
CLEAR v_var1.
ENDON.
(…)
ENDLOOP.
Título del documento
18
|
CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP
Exemplo 8
REPORT ZEXEMP_08.�� CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = v_arquivo
write_field_separator = 'X'
TABLES
data_tab = ti_spfli
EXCEPTIONS
file_write_error = 1
no_batch = 2
OTHERS = 22.
Título del documento
19
|
CURSO BÁSICO�PRIMEIROS EXEMPLOS DE ABAP
Exemplo 9
REPORT ZEXEMP_09.�� CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = vg_arquivo
TABLES
data_tab = tg_spfli
EXCEPTIONS
file_open_error = 1
file_read_error = 2
OTHERS = 17.
Título del documento
20
|
CURSO BÁSICO�EDITOR ABAP
Upload/Download de códigos
Todo código ABAP é aberto!
Título del documento
21
|
CURSO BÁSICO�EXERCÍCIO I
Desenvolver o programa ZEXER01_## conforme print:
Variáveis de sistema utilizadas:
SY-DATUM
SY-UZEIT
IMPORTANTE
Ao salvar, indicar o pacote TRN e salvar.�O SAP pedirá uma request, clique em e digite a seguinte descrição:
Academia de Talentos Grupo 01 – Aluno ##
Anotar o número da change request para ser utilizado durante todo este curso
Título del documento
22
|
CURSO BÁSICO�EXERCÍCIO II
Desenvolver o programa ZEXER02_## que resulte o cabeçalho seguinte:
Variáveis de sistema utilizadas:
SY-UNAME
SY-DATUM
Título del documento
23
|
CURSO BÁSICO�EXERCÍCIO III
Desenvolver o programa ZEXER03_## que simule uma calculadora com 4 operações ( +, -, /, * ) e dois campos obrigatórios para entrada de números (decimais). Layout:
Título del documento
24
|
CURSO BÁSICO�CRIANDO TRANSAÇÕES
Transação SE93
Título del documento
25
|
CURSO BÁSICO�CRIANDO TRANSAÇÕES
Transação SE93
Atributos da transação
Título del documento
26
|
CURSO BÁSICO�CRIANDO TRANSAÇÕES
Transação SE93
Atributos da transação
Título del documento
27
|
DATA DICTIONARY�MODELO RELACIONAL
Modelo Entidade – Relacionamento
Clientes, fornecedores, banco, moedas
Nome, RG, número da agência, código internacional
Texto até 40 caracteres, quatro números, meses
Conta de um cliente, conta de uma agência
Título del documento
28
|
DATA DICTIONARY�MODELO RELACIONAL
Cardinalidades
Pessoa 🡪 RG e Pessoa 🡪 Mãe
Pessoa 🡪 Telefone e Pessoa 🡪 Nacionalidade
Pessoa 🡪 Chefe e Autor 🡪 Livro
Título del documento
29
|
DATA DICTIONARY�MODELO RELACIONAL
Formas Normais
Evitar as redundâncias, ajudando a estabelecer as entidades.
As três primeiras são:
1ª FN: Não ter elementos multivalorados
2ª FN: Em chaves primárias compostas, nenhum campo depende só de parte da chave
3ª FN: Não deve haver dependências entre atributos
Título del documento
30
|
DATA DICTIONARY�BANCO DE DADOS RELACIONAL
Implementação física do modelo relacional
Toda tabela deve ter pelo menos um campo chave, que será denominado “chave primária”
Título del documento
31
|
DATA DICTIONARY�BANCO DE DADOS RELACIONAL
SQL - Structured Query Language
DDL: Data Definition Language – Comandos específicos para definição de objetos do banco de dados.
Ambiente SAP 🡪 pelo dicionário de dados (SE11)
DML: Data Manipulation Language - Comandos específicos para tratamento dos dados armazenados nos objetos do banco
ABAP define “Open SQL”
Título del documento
32
|
DATA DICTIONARY�DICIONÁRIO DE DADOS
Transação SE11
Título del documento
33
|
DATA DICTIONARY�DICIONÁRIO DE DADOS - TABELA
Estrutura de uma tabela
Título del documento
34
|
DATA DICTIONARY�DICIONÁRIO DE DADOS - TABELA
Entradas possíveis e verificações
Título del documento
35
|
DATA DICTIONARY�DICIONÁRIO DE DADOS - TABELA
Opções técnicas
Título del documento
36
|
DATA DICTIONARY�DICIONÁRIO DE DADOS - TABELA
Categoria de ampliação
No menu: Suplementos 🡪 Categoria de ampliação...
Título del documento
37
|
DATA DICTIONARY�DICIONÁRIO DE DADOS - TABELA
Índices
O índice para chave primária é obrigatório e criado automaticamente
<tabela>~0
Título del documento
38
|
DATA DICTIONARY�DICIONÁRIO DE DADOS - VISÃO
Tabelas e condições de join
A visão é criada no banco de dados
Título del documento
39
|
DATA DICTIONARY�DICIONÁRIO DE DADOS - VISÃO
Campos da visão
Título del documento
40
|
DATA DICTIONARY�DICIONÁRIO DE DADOS - ELEMENTO
Categoria de dados
Título del documento
41
|
DATA DICTIONARY�DICIONÁRIO DE DADOS - ELEMENTO
Características adicionais
Título del documento
42
|
DATA DICTIONARY�DICIONÁRIO DE DADOS - ELEMENTO
Denominação do campo
Título del documento
43
|
DATA DICTIONARY�DICIONÁRIO DE DADOS - DOMÍNIO
Definição e rotina de conversão
Título del documento
44
|
DATA DICTIONARY�DICIONÁRIO DE DADOS - DOMÍNIO
Intervalo de valores
Título del documento
45
|
DATA DICTIONARY�EXEMPLOS
Criação de uma tabela
Título del documento
46
|
DATA DICTIONARY�EXEMPLOS
Criação de uma tabela
Título del documento
47
|
DATA DICTIONARY�EXEMPLOS
Criação de uma tabela
Título del documento
48
|
DATA DICTIONARY�EXEMPLOS
Criação do diálogo de manutenção
Título del documento
49
|
DATA DICTIONARY�EXEMPLOS
Criação do diálogo de manutenção
Título del documento
50
|
DATA DICTIONARY�EXEMPLOS
Criação da transação para o diálogo de manutenção
Título del documento
51
|
DATA DICTIONARY�EXEMPLOS
Criação da transação para o diálogo de manutenção
Título del documento
52
|
DATA DICTIONARY�AJUDA DE PESQUISA
Criando ajuda de pesquisa
Título del documento
53
|
DATA DICTIONARY�AJUDA DE PESQUISA
Definindo a fonte e características
Título del documento
54
|
DATA DICTIONARY�AJUDA DE PESQUISA
Utilizando a ajuda de pesquisa (F4)
Título del documento
55
|
DATA DICTIONARY�EXERCÍCIO 1
Criar uma ESTRUTURA com as seguintes características:
Nome: ZESTRUT_##
Descrição: Estrutura de preenchimento do layout
Field Name Key Data Element Type Length Short Text
MANDT x MANDT CLNT 3 Client
BELNR x BELNR D CHAR 10 Acc. Doc Num
TXT50 TXT50_SKAT CHAR 50 G/L acct long txt
Título del documento
56
|
DATA DICTIONARY�EXERCÍCIO 2
Criar uma tabela com as seguintes características:
Nome: ZTBL_##
Descrição: Tabela para manutenção via transação SM30
Field name Data elem. Type Length Short text _
MANDT MANDT CLNT 3 Mandante
HKONT HKONT CHAR 10 Conta do Razão
BELNR BELNR_D CHAR 10 Nº documento contábil
GJAHR GJAHR NUMC 4 Exercício
BKTXT BKTXT CHAR 25 Texto de cabeçalho de doc.
BLART BLART CHAR 2 Tipo de documento
BLDAT BLDAT DATS 8 Data no documento
Criar um diálogo de manutenção com as seguintes características:
Function Group: ZCURSOFG##
Utilizar a transação SM30 para manutenção desta tabela.
Título del documento
57
|
DATA DICTIONARY �COMANDO SELECT
Detalhando o comando de leitura de dados
1-) SELECT * FROM dbtab.
....
ENDSELECT.
if SY-SUBRC <> …
1a-)…WHERE Condition
1b-)…ORDER BY f1…fn
…ORDER BY PRIMARY KEY
1c-)…UP TO n ROWS
Título del documento
58
|
DATA DICTIONARY �COMANDO SELECT
Detalhando o comando de leitura de dados
2-) SELECT * FROM dbtab INTO TABLE itab.
2a-) …WHERE
2b-) …ORDER BY
2c-) …UP TO n ROWS
3-) SELECT * FROM dbtab APPENDING TABLE itab.
3a-) …WHERE
3b-) …ORDER BY
3c-) …UP TO n ROWS
4-) SELECT SINGLE * FROM dbtab INTO wa WHERE f1 = g1 AND …
Título del documento
59
|
DATA DICTIONARY �COMANDO SELECT
Detalhando o comando de leitura de dados
5-) SELECT * FROM dbtab APPENDING CORRESPONDING FIELDS OF TABLE itab.
5a-) SELECT * FROM dbtab INTO CORRESPONDING FIELDS OF TABLE itab.
6-) SELECT * FROM dtab � FOR ALL ENTRIES IN itab where…
Nota: verificar se a tabela não está vazia, caso em que todos registros serão selecionados
IF NOT ( itab[] IS INITIAL ).
SELECT * FROM dtab FOR ALL ENTRIES in itab
where campo = itab-campo …
ENDIF.
Título del documento
60
|
DATA DICTIONARY �COMANDO SELECT
Considerações sobre os vários tipos de SELECTs
1 - SELECT * FROM …<tabela>
2 - SELECT * FROM <tabela> WHERE <campo> EQ <var>
3 - SELECT * FROM <table> WHERE <table field> BETWEEN <field1> and <field2>.
4 - SELECT * FROM <table> WHERE <table field> LIKE ….’_R%’.
5 - SELECT * FROM <table> WHERE <table field> IN (var1,var2).
6 - SELECT * FROM <table> WHERE <table field> IN <internal table>.
Título del documento
61
|
DATA DICTIONARY �COMANDO SELECT
Considerações sobre os vários tipos de SELECTs
7 - SELECT * FROM <table> ORDER BY <field1> <field2> … PRIMARY KEY.
8 - SELECT * FROM <table> BYPASSING BUFFER.
(Usado para ler diretamente da tabela original, e não do buffer).
9 - SELECT * FROM <table> APPENDING TABLE <internal table>.
10 - SELECT …FROM <table> INTO TABLE <INTERNAL TABLE>.
Título del documento
62
|
DATA DICTIONARY �COMANDO SELECT
Considerações sobre os vários tipos de SELECTs
11 - SELECT …. INTO CORRESPONDING FIELDS OF TABLE <itab>.
12 - SELECT ….. APPENDING CORRESPONDING FIELDS OF TABLE <itab>.
13 - SELECT SINGLE * FROM SPFLI WHERE …..<campo>….. EQ … <conteúdo>
14 - SELECT <a1> <a2> … INTO (<f1>, <f2>, … ) FROM ….<tabela> WHERE …… .
Título del documento
63
|
DATA DICTIONARY �COMANDO SELECT
Considerações sobre os vários tipos de SELECTs
15 - SELECT MAX(campo)
MIN(campo)
AVG(campo)
COUNT(*)
FROM <table> INTO (…..,……,…..,….)
WHERE ………… .
AVG e SUM: somente para campos numéricos.
Não se usa endselect.
Título del documento
64
|
DATA DICTIONARY �COMANDO SELECT
Considerações sobre os vários tipos de SELECTs
16 - SELECT * FROM SFLIGHT WHERE PRICE IN ITAB.
17 - SELECT * FROM (<table>) INTO <work area>.
Exemplo:
data: begin of WA,
line(100),
end of WA.
Parameters: tabname(10) default ‘SPFLI’.
Select * from (tabname) into WA
Write / WA .
Endselect.
Título del documento
65
|
DATA DICTIONARY �COMANDO SELECT
Considerações sobre os vários tipos de SELECTs
18- SELECT * FROM <table> FOR ALL ENTRIES IN <internal table> WHERE
campo1 = <conteúdo> and
campo2 = <conteúdo>
19 - SELECT MIN( price ) max (price ) INTO (minimum, maximum) FROM sflight WHERE ...
19a - SELECT carrid MIN( price ) max (price ) � INTO TABLE itab FROM sflight WHERE …
GROUP BY carrid.
Título del documento
66
|
EXERCÍCIOS EXTRAS�EXERCÍCIO IV
Desenvolver o programa ZEXER04_## que possua as seguintes características:
Parâmetros: SPFLI-CITYFROM e SPFLI-CITYTO com valores default
Opções: Informações e Reserva
Validações: buscar dados dos vôos que correspondam aos parâmetros informados; exibir a aeronave utilizada e o preço da passagem apenas quando for uma operação de reserva.
Campos para seleção:
SPFLI-CARRID
SPFLI-CITYFROM
SPFLI-CITYTO
SPFLI-FLTIME
SPFLI-ARRTIME
SPFLI-DEPTIME
SFLIGHT-FLDATE
SFLIGHT-PLANETYPE
SFLIGHT-PRICE
Título del documento
67
|
EXERCÍCIOS EXTRAS �EXERCÍCIO IV
Título del documento
68
|
EXERCÍCIOS EXTRAS �EXERCÍCIO V
Desenvolver o programa ZEXER05_## que a partir de um arquivo texto contendo o tipo de aeronave, seja capaz de criar um novo arquivo com o tipo de aeronave e o nome da companhia aérea.
Exibição de mensagem tanto no caso de sucesso na criação do arquivo final como no caso da ocorrência de algum erro.
Campos utilizados: SFLIGHT-CARRID e SFLIGHT-PLANETYPE
Arquivo de entrada:
Arquivo de saída:
Título del documento
69
|
EXERCÍCIOS EXTRAS �EXERCÍCIO V
Título del documento
70
|
TRANSPORTE�ORDENS DE TRANSPORTE
Principais tipos de ordens de transporte
Transações SE09 ou SE10
Título del documento
71
|
TRANSPORTE�ORDENS DE TRANSPORTE
Telas iniciais SE09 ou SE10
Título del documento
72
|
TRANSPORTE�ORDENS DE TRANSPORTE
Localizando as ordens já criadas
Título del documento
73
|
TRANSPORTE�ORDENS DE TRANSPORTE
Lista das ordens de transporte
Título del documento
74
|
TRANSPORTE�ORDENS DE TRANSPORTE
Históricos: ação e transporte
Ir para 🡪
Log de ação
Log de transporte
Título del documento
75
|
TRANSPORTE�ORDENS DE TRANSPORTE
Características das ordens de transporte
Título del documento
76
|
TRANSPORTE�ORDENS DE TRANSPORTE
Lista de objetos das ordens/tarefas
Título del documento
77
|
TRANSPORTE�ORDENS DE TRANSPORTE
Documentação da ordem de transporte
Título del documento
78
|
RELATÓRIOS�PROGRAMAÇÃO DE “REPORTS”
Conceito: Programação estruturada baseada em eventos
Não é apenas destinada a relatórios, podemos construir programas de atualização de dados com esta técnica.
Podemos acrescentar elementos adicionais (botões, menus, títulos e telas adicionais)
Tela de seleção Exibição Detalhes de uma linha
Tela 1000
Título del documento
79
|
RELATÓRIOS�PROGRAMAÇÃO DE “REPORTS”
Processo geral de programação de relatórios
Nome e Descrição do Programa
Montagem e Impressão do Relatório ou outra lógica
Montagem da Tela de parâmetros do usuário
Declaração de Variáveis
Título del documento
80
|
RELATÓRIOS�PROGRAMAÇÃO DE “REPORTS”
Modelo de um programa (template)
Nome do Programa e Descrição (cabeçalho)
Declaração de dados (variáveis, constantes e tabelas internas)
Parâmetros de entrada da tela do usuário
No. de linhas e colunas classe de mensagem
Seção das Sub-rotinas (forms)
Lógica da tela de seleção
Ao comando do usuário (caso haja algum botão)
Seleção e Impressão de Dados ou outra lóg. (performs)
Cabeçalho e Rodapé
Título del documento
81
|
RELATÓRIOS�PROGRAMAÇÃO DE “REPORTS”
Descrição do modelo (comandos utilizados)
Nome do Programa
Data
Última atualização
Descrição
Histórico de Modificações
No Standard Page Heading
Line-Size
Line-Count
Message - ID
Comentários
(padrão cliente)
Título del documento
82
|
RELATÓRIOS�PROGRAMAÇÃO DE “REPORTS”
Descrição do modelo (comandos utilizados)
Include ZZIHEADR
Tabelas
Constantes e Variáveis
Tabelas Internas
Select-Option
Parameters
Selection-screen
Initialization
At Selection-Screen
Título del documento
83
|
RELATÓRIOS�PROGRAMAÇÃO DE “REPORTS”
Descrição do modelo (comandos utilizados)
Start-of-Selection
At User-Command
At Line Selection
Top-of-page
End-of-page
Forms Section
Título del documento
84
|
RELATÓRIOS�PROGRAMAÇÃO DE “REPORTS”
Programas exemplos
Título del documento
85
|
RELATÓRIOS�EXERCÍCIOS
Exercício 1
Desenvolver um programa ZEXER_REP_01_## que mostre as conexões (tabela SPFLI) para a seleção do usuário realizada com os seguintes campos:
A primeira tela deve mostrar: ID da empresa, Conexão, Origem e Destino.
O usuário pode selecionar qualquer linha com conexão, para obter as datas de vôos para a conexão selecionada (tabela SFLIGHT).
Opcional: na primeira tela, realizar uma quebra a cada companhia aérea, indicando o total de conexões encontradas.
Dica: dentro do loop utilize “AT END OF carrid.” ... “ENDAT”
Título del documento
86
|
RELATÓRIOS�EXERCÍCIOS
Exercício 1
Título del documento
87
|
RELATÓRIOS�EXERCÍCIOS
Exercício 2
Desenvolver um programa ZEXER_REP_02_##, relatório de reservas, que imprima os campos abaixo:
Nome de uma companhia aérea (SCARR-CARRNAME)
Código da conexão de vôo individual (SPFLI-CONNID)
Duração do vôo (SPFLI- FLTIME)
Data do vôo (SFLIGHT-FLDATE)
Preço do vôo (SFLIGHT-PRICE)
Nº de marcação (SBOOK-BOOKID)
Nome do passageiro (SCUSTOM- NAME)
Classe vôo (SBOOK-CLASS)
Nome da agência de viagens (STRAVELAG- NAME)
Data marcação (SBOOK- ORDER_DATE)
A tela de seleção deve conter as chaves das tabelas consultadas. (companhia aérea deve ser obrigatória)
Título del documento
88
|
RELATÓRIOS�EXERCÍCIOS
Exercício 2
Título del documento
89
|
PERFORMANCE�EXERCÍCIOS
Exercício 3
Copiar o programa ZEXER_REP_01_## com o nome ZEXER_REP_03_##.
Acrescentar título (TITLE BAR) e status na primeira tela. Incluir botões para ordenação da lista, de forma crescente e decrescente.
Você pode inserir os comandos do status “PRINCIPAL” do programa exemplo ZEXEMP_10B
(Suplemento 🡪Ajustar Modelo)
Título del documento
90
|
PERFORMANCE�TÓPICOS
Título del documento
91
|
PERFORMANCE�REGRAS E EXCEÇÕES
Ao tratarmos de performance em programas estaremos continuamente tratando de regras e exceções
Pensar
Pesquisar
Testar
Título del documento
92
|
PERFORMANCE�O QUE É PERFORMANCE?
O conceito de performance está diretamente ligado ao conceito de tempo requerido para realizar determinada tarefa em determinadas condições.
Mais rápido = mais performático
Indiretamente, uma vez que trabalhamos com recursos limitados, valores como menor consumo de memória e menor utilização de processamento também estão associados a melhor performance, uma vez que é a performance total que nos interessa, e esta ocorrerá em ambiente com disputa pelos recursos limitados
Mais econômico = mais performático
Estes dois requisitos podem resultar em decisões conflitantes. Não é raro desenvolvedores negligenciarem demasiadamente o segundo requisito.
Título del documento
93
|
PERFORMANCE�SEMPRE MELHORAR A PERFORMANCE?
Boa performance é apenas uma das dimensões de qualidade de um desenvolvimento.
Outras dimensões podem ser conflitantes com a otimização da performance:
A solução de compromisso entre estas dimensões determina o ponto adequado para a otimização da performance do desenvolvimento.
Levar em conta o uso do desenvolvimento e o ganho real com a melhoria de performance para o negócio.
Título del documento
94
|
ACESSO AO BANCO DE DADOS�HIERARQUIA DE ACESSO
SELECT campos FROM tabela(s) WHERE condições
Título del documento
95
|
ARQUITETURA SAP�ARQUITETURA CLIENTE SERVIDOR
O banco é único
Comunicação Banco x Aplicação
Limitação nos servidores de aplicação
Rede e estações
Título del documento
96
|
ACESSO AO BANCO DE DADOS�COMO OCORRE O ACESSO
Quando um programa realiza uma requisição de dado, o seguinte caminho é seguido (simplificado):
Título del documento
97
|
ACESSO AO BANCO DE DADOS�BUFERIZAÇÃO DE TABELAS
Nem todas tabelas permitem buferização.
As regras negócio devem permitir acesso a dados obsoletos sem impactos ( sincronização da ordem de 1 a 2 minutos ).
Dados que sofrem muitas mudanças ( + 1% dos acessos for de atualização ) podem degradar a performance do ambiente se as tabelas forem buferizadas. Tipicamente recomendada para dados de configuração e para alguns dados mestres.
Diferentes tipos de buferização e regras em que o servidor pula o bufer e força a leitura no banco devem ser consideradas.
Título del documento
98
|
ACESSO AO BANCO DE DADOS�OTIMIZADOR DO BANCO DE DADOS
O otimizador define a estratégia de acesso e guarda esta estratégia em um cache para utilização futura.
As estratégias consideradas:
Em uma única tabela:
Em várias tabelas:
A escolha é definida pelo custo estimado (quantidade de acessos e dados transferidos), baseado nas estatísticas disponíveis.
Título del documento
99
|
ACESSO AO BANCO DE DADOS�REDAÇÃO DAS CONSULTAS
A ordem que as tabelas aparecem em uma consulta com "join", a ordem dos campos consultados e a ordem dos campos na cláusula "where" não afetam a estratégia do otimizador, que é preparado para procurar a melhor opção da ordem de consulta.
Porém, expressões iguais permitem evitar o acionamento do otimizador e ganhar este tempo de análise.
Recomenda-se utilizar a ordem que os elementos aparecem no banco de dados como padronização das expressões de acesso ao banco.
A utilização de HINTS também evita a utilização do otimizador, mas neste caso, podendo fazer uma consulta por uma estratégia pior. Evite usar, a menos que for necessário.
Título del documento
100
|
ACESSO AO BANCO DE DADOS�ÍNDICES
Os índices são tabelas auxiliares, organizadas como um estrutura "árvore", cujos registros estão ordenados segundo os campos do índice.
Principais cuidados:
Título del documento
101
|
ACESSO AO BANCO DE DADOS�RECOMENDAÇÕES GERAIS
Título del documento
102
|
MANIPULAÇÃO DOS DADOS�TABELAS INTERNAS
Enorme mito: sempre é melhor trazer os dados e manipulá-los internamente no programa
Levar em contra o consumo de memória e o tempo na manipulação de grandes volumes de dados. (particularmente se uma seleção menor for possível)
Considerar a otimização dos programas também na manipulação interna dos dados.
Título del documento
103
|
MANIPULAÇÃO DOS DADOS�RECOMENDAÇÕES GERAIS
Título del documento
104
|
PERFORMANCE�PODE SER DEMAIS?
Cuidado com o excesso de otimização!
A análise e otimização de performance é importantíssima e falhas podem impactar a utilização do sistema, porém sempre considere as demais dimensões da qualidade
Ganhos de otimização encontram-se na escala de segundos, minutos e até mesmo horas, para programas longos
Capacidade de manutenção encontra-se na escala de horas, dias e até mesmo meses
Nosso foco é atender o negócio, não ter apenas os programas mais performáticos!
Título del documento
105
|
PERFORMANCE�MIGRAÇÃO DE DADOS
Tipos de programas de carga
Estes métodos podem ser utilizados via transação LSMW ou diretamente a partir de programação
Melhor�performance
Título del documento
106
|
PERFORMANCE�TRANSAÇÕES ANALISADAS
ST05 – Performance analysis
DB05 – Análise de tabelas relativamente a campos indexados
SAT – Run time analysis (antiga SE30)
Comando GET RUN TIME na análise de performance de comandos
Título del documento
107
|
PERFORMANCE�READ TABLE
READ TABLE <ITAB>
[INTO <WA>]
[WITH KEY <CAMPO> = <VALOR>]
[INDEX n]
[BINARY SEARCH]
[TRANSPORTING NO FIELDS]
Título del documento
108
|
PERFORMANCE�EXERCÍCIOS
Exercício 1
Criar o programa ZEXER_PER_01_##
Objetivo: comparar a performance dos comandos READ TABLE e READ TABLE BINARY SEARCH.
Para a tarefa criar uma tabela interna de números inteiros.
O programa deve preencher esta tabela com n números inteiros, seqüenciais (1, 2, 3... ), onde n é informado por parâmetro do usuário.
O programa deve fazer a busca do número m informado também por parâmetro, utilizando as duas opções de busca.
Comparar os tempos obtidos utilizando o comando GET RUN TIME FIELD
Título del documento
109
|
BDC SESSION�CONCEITOS INICIAIS
Batch Data Communication
Uso da transação SM35
Uso da transação SHDB
Título del documento
110
|
BDC SESSION�TABELA BDC
A tabela BDC é uma tabela interna com estrutura BDCDATA.
Campo | Tipo | Descrição |
program | Char(40) | Nome do programa da transação |
dynpro | Numc(4) | Número da tela da transação |
dynbegin | Char(1) | Indicador de uma nova tela |
fnam | Char(132) | Nome do campo da tela |
fval | Char(132) | Valor a ser colocado no campo |
Esta tabela deve ser enviada para a Sessão Batch Input ou a instrução call transaction
☞ Como obter as informações nas telas SAP
Título del documento
111
|
BDC SESSION�PREENCHENDO A TABELA BDC
REPORT zxxxxxxx.��DATA: BEGIN OF tbdc OCCURS 100.� INCLUDE STRUCTURE bdcdata.�DATA: END OF tbdc.��* Início do programa principal��MOVE ‘sapmf02k’ TO tbdc-program.�MOVE ‘0100’ TO tbdc-dynpro.�MOVE ‘x’ TO tbdc-dynbegin.�APPEND tbdc.��MOVE ‘rf02k-lifnr’ TO tbdc-fnam.�MOVE ‘0010010’ TO tbdc-fval.�APPEND tbdc.��MOVE ‘rf02k-ekorg’ TO tbdc-fnam.�MOVE ‘cntl’ TO tbdc-fval.�APPEND tbdc.
Título del documento
112
|
BDC SESSION�TRANSAÇÃO SHDB
Título del documento
113
|
BDC SESSION�TRANSAÇÃO SHDB
Título del documento
114
|
BDC SESSION�TRANSAÇÃO SHDB
Título del documento
115
|
BDC SESSION�TRANSAÇÃO SHDB
Título del documento
116
|
BDC SESSION�UTILIZANDO A TABELA BDC
Processando como pasta batch input
Uso da transação SM35
Funções para criação da pasta:
BDC_OPEN_GROUP
Abre a sessão de BDC e necessita ser chamada antes de qualquer processamento.
BDC_INSERT
Chamada para cada transação no processamento Batch.
BDC_CLOSE_GROUP
Chamada após todo processamento para que a pasta de processamento Batch seja criada.
Título del documento
117
|
BDC SESSION�CRIANDO A PASTA BATCH INPUT
Função BDC_OPEN_GROUP
Os seguintes parâmetros são passados para a função:
CLIENT - Mandante do SAP que será processada a sessão
GROUP - Nome para a pasta de Batch input (não precisa ser único)
HOLDDATE - Suspende o processamento da pasta de Batch input até a data especificada
KEEP - Mantém a pasta de Batch Input após o processamento
USER - Nome de usuário que executará o Batch Input.
Título del documento
118
|
BDC SESSION�CRIANDO A PASTA BATCH INPUT
Função BDC_INSERT
Os seguintes parâmetros são passados para a função:
TCODE - Código da transação na qual será executada a tabela BDC
DYNPROTAB - Nome da tabela interna utilizada para gerar a pasta de Batch (tabela BDC)
Função BDC_CLOSE_GROUP
Título del documento
119
|
BDC SESSION�SM35
Título del documento
120
|
BDC SESSION�UTILIZANDO A TABELA BDC
Instrução CALL TRANSACTION
CALL TRANSACTION <trans> [USING <bdctab> MODE <mode> MESSAGE <t_msg>].
Onde: <bdctab> - TYPE TABLE OF bdcdata
<t_msg> - TYPE TABLE OF bdcmsgcoll
Os modos para executar este comando são:
A Mostra todas as telas
E Mostra apenas telas com erros
N Não mostra as telas
P Em background e depurável (break-point)
Além do SY-SUBRC, na tabela t_msg teremos todas as mensagens de retorno da transação (sucesso, alertas e erros)
Título del documento
121
|
BDC SESSION�EXERCÍCIO
Exercício
Criar um programa ZEXER_BATCH_## que recebe um arquivo de entrada com uma única coluna de valores. O programa deve ler o arquivo e executar a transação FB01 para cada linha. Imprimir as mensagens de retorno da transação na tela.
BLDAT = sy-datum no formato dd.mm.aaaa
BUDAT = sy-datum no formato dd.mm.aaaa
WRBTR = valor do arquivo
ZFBDT = sy-datum no formato dd.mm.aaaa
VALUT = sy-datum no formato dd.mm.aaaa
Demais campos passar valor do SHDB entre aspas simples
Título del documento
122
|
BDC SESSION�EXERCÍCIO
Exercício – SHDB FB01 (EXER_BATCH)
SAPMF05A 0100 X
BDC_CURSOR RF05A-NEWKO
BDC_OKCODE /00
BKPF-BLDAT 05.04.2013
BKPF-BLART AB
BKPF-BUKRS 0005
BKPF-BUDAT 05.04.2013
BKPF-WAERS EUR
FS006-DOCID *
RF05A-NEWBS 31
RF05A-NEWKO 100
BDC_SUBSCR SAPMF05A 1300APPL_SUB_T
BDC_SUBSCR SAPLSEXM 0200APPL_SUB
SAPMF05A 0302 X
BDC_CURSOR RF05A-NEWKO
BDC_OKCODE /00
BSEG-WRBTR 100
BSEG-MWSKZ V1
BSEG-ZFBDT 05.04.2013
RF05A-NEWBS 40
RF05A-NEWKO 10900050
SAPMF05A 0300 X
BDC_CURSOR BSEG-WRBTR
BDC_OKCODE =BU
BSEG-WRBTR 100
BSEG-MWSKZ V1
BSEG-VALUT 05.04.2013
BDC_SUBSCR SAPLKACB 0001BLOCK
DKACB-FMORE X
SAPLKACB 0002 X
BDC_CURSOR COBL-GSBER
BDC_OKCODE =ENTE
BDC_SUBSCR SAPLKACB 9999BLOCK1
Título del documento
123
|
ON LINE�PROGRAMAÇÃO ON LINE
Online ou Dialog programming: processamento de telas, que alterna com o processamento de uma listagem.
O processamento é transferido entre estes dois processadores alternadamente.
Título del documento
124
|
ON LINE�PROGRAMAÇÃO ON LINE
PAI – Process After Input
Tela
PBO – Process Before Output
Exibição (campos)
A execução de cada tela é dividida em dois eventos:
Título del documento
125
|
ON LINE�PROGRAMAÇÃO ON LINE
Programa Principal
Screen 1
Screen 2
Screen 3
GUI-01
GUI-02
Módulos PBO tela 1
Módulos PAI tela 1
Módulos PBO tela 2
Módulos PAI tela 2
Módulos PBO tela 3
Módulos PAI tela 3
Título del documento
126
|
ON LINE�PROGRAMAÇÃO ON LINE
Programa principal
Estrutura de um programa
Include TOP
Include Módulos PAI
Include Subrotinas (Forms)
Include Módulos PBO
A estruturação de programas on line em includes não é obrigatória, porém facilita a organização do código e é incentivada pelo editor.
Título del documento
127
|
ON LINE�PROGRAMAÇÃO ON LINE
Processo geral de programação on line
TOP
Telas
Módulos
Forms
Nome e Descrição do Programa e declaração das variáveis
Programação da lógica (encapsulada em subrotinas)
Definição dos módulos PBO e PAI
Definição das telas e campos
Título del documento
128
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
129
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
130
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
131
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
132
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
133
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
134
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
135
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
136
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
137
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
138
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
139
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
140
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
141
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
142
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
143
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
144
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
145
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
146
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
147
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
148
|
ON LINE�PROGRAMAÇÃO ON LINE
Exemplo de Programa Online
Título del documento
149
|
ON LINE�EXERCÍCIO 1
Criar o programa online ZEXER_ON_01_## para dar manutenção na tabela criada no módulo de dicionário de dados ZTBL_##.
Opções de criar, exibir e alterar dados.
Registro não deve existir para ser criado, e registro deve existir para alterar ou exibir.
Na exibição, deixar os campos fechados utilizando o comando abaixo:
LOOP AT SCREEN.� IF screen-group1 = 'G1'.� CLEAR screen-input.� MODIFY SCREEN.� ENDIF.� ENDLOOP.
Título del documento
150
|
ON LINE�EXERCÍCIO 1
Título del documento
151
|
ON LINE�EXERCÍCIO 2
Criar um programa online para simular uma calculadora no SAP, com o nome ZEXER_ON_02##.
Título del documento
152
|
ON LINE�USO DE TABLESTRIP
Para incluir o tablestrip na tela, utilizar o assistente.
Título del documento
153
|
ON LINE�USO DE TABLESTRIP
Título del documento
154
|
ON LINE�USO DE TABLESTRIP
Título del documento
155
|
ON LINE�USO DE TABLESTRIP
Título del documento
156
|
ON LINE�USO DE TABLESTRIP
Título del documento
157
|
ON LINE�USO DE TABLESTRIP
Título del documento
158
|
ON LINE�USO DE TABLESTRIP
Título del documento
159
|
ON LINE�USO DE TABLESTRIP
Título del documento
160
|
ON LINE�USO DE TABLESTRIP
Título del documento
161
|
ON LINE�TABLE CONTROL
Table control é um componente que permite a exibição e manipulação de dados de tabelas internas de forma muito amigável pelo usuário, com exibição semelhante a uma planilha.
A visualização é realizada em várias linhas simultaneamente e, quando corretamente codificado, pode contar com paginação e seleção das linhas para posterior ação.
As table controls são declaradas como controles nos programas e seus dados associados a tabelas internas do programa.
Considere utilizar o assistente para a criação de table controls.
Título del documento
162
|
ON LINE�TABLE CONTROL
Título del documento
163
|
ON LINE�TABLE CONTROL
Título del documento
164
|
ON LINE�TABLE CONTROL
Título del documento
165
|
ON LINE�TABLE CONTROL
Título del documento
166
|
ON LINE�TABLE CONTROL
Título del documento
167
|
ON LINE�TABLE CONTROL
Título del documento
168
|
ON LINE�TABLE CONTROL
Título del documento
169
|
ON LINE�TABLE CONTROL
Título del documento
170
|
ON LINE�TABLE CONTROL
Título del documento
171
|
ON LINE�TABLE CONTROL
Título del documento
172
|
ON LINE�EXERCÍCIO 3
Criar o report ZEXER_ON_03_##, com um parâmetro obrigatório com o código da empresa aérea (CARRID) e um intervalo de valores, não obrigatório da data do vôo (SFLIGHT-FLDATE).
A primeira tela de resultados deve mostrar os seguintes valores:
Em uma tabela:
Título del documento
173
|
O usuário apenas poderá selecionar linhas com quantidade de vôos maior que zero, caso em que uma segunda tela de detalhes mostra a lista dos vôos disponíveis para a conexão selecionada, com os seguintes campos:
Em uma tabela:
Nota: o programa deve mostrar mensagem de erro se a empresa indicada não tem conexões cadastradas, deixando o campo aberto para outra empresa.
ON LINE�EXERCÍCIO 3
Título del documento
174
|
SAPSCRIPT�FORMULÁRIOS SAPSCRIPT
Conceitos iniciais
O Sapscript é a forma original de criar formulários com precisão dentro do SAP. Os formulários são gravados em separado em repositório acessível pela transação SE71.
Os formulários Sapscript são utilizados em vários pontos do SAP, gerados por programas. Estes programas recebem o nome de “programa de povoamento”.
Lógica de negócio
Formatação
Programa de povoamento
(abap)
Formulário Sapscript
Dados
Título del documento
175
|
SAPSCRIPT�PROGRAMA DE POVOAMENTO
Programa ABAP
Um programa de povoamento deve seguir a seguinte estrutura:
Título del documento
176
|
SAPSCRIPT�PROGRAMA DE POVOAMENTO
Abertura de formulário
call function 'OPEN_FORM'
exporting
DEVICE = 'PRINTER'
* DIALOG = 'X'
FORM = (Nome do Formulário)
LANGUAGE = (Idioma do Formulário)
OPTIONS = ITCPO
exceptions
canceled = 1
device = 2
form = 3
options = 4
unclosed = 5
others = 6.
A estrutura ITCPO define parâmetros de impressão: nº cópias, Impressora, saída imediata, etc.
Título del documento
177
|
SAPSCRIPT� PROGRAMA DE POVOAMENTO
Inicialização de formulário
call function 'START_FORM'
exporting
FORM = ' '
LANGUAGE = ' '
exceptions
form = 1
format = 2
unended = 3
unopened = 4
unused = 5
others = 6.
Não é obrigatório para o primeiro formulário, pois o comando de abertura inicializa automaticamente. Necessário quando utilizamos mais de um formulário (a partir do segundo)
Título del documento
178
|
SAPSCRIPT� PROGRAMA DE POVOAMENTO
Impressão dos dados
Os dados são enviados em estruturas
A janela MAIN tem comportamento diferente das demais janelas.
call function 'WRITE_FORM'
exporting
ELEMENT = ' '
WINDOW = 'MAIN'
exceptions
element = 1
function = 2
type = 3
unopened = 4
unstarted = 5
window = 6
others = 7.
Título del documento
179
|
SAPSCRIPT� PROGRAMA DE POVOAMENTO
Finalização de formulário
Finaliza os formulários inicializados
CALL FUNCTION 'END_FORM'.
* IMPORTING
* RESULT =
* EXCEPTIONS
* UNOPENED = 1
* BAD_PAGEFORMAT_FOR_PRINT = 2
* OTHERS = 3
Título del documento
180
|
SAPSCRIPT� PROGRAMA DE POVOAMENTO
Fechando o formulário
Fecha os formulários abertos
CALL FUNCTION 'CLOSE_FORM'.
* IMPORTING
* RESULT =
* RDI_RESULT =
* TABLES
* OTFDATA =
* EXCEPTIONS
* UNOPENED = 1
* BAD_PAGEFORMAT_FOR_PRINT = 2
* SEND_ERROR = 3
* OTHERS = 4
Título del documento
181
|
SAPSCRIPT� FORMULÁRIO
Transação SE71
A SAP disponibiliza muitos formulários para serem copiados e alterados (p.ex.: cartas, comunicados, boletos, cheques)
Título del documento
182
|
SAPSCRIPT� FORMULÁRIO
Tipos de janelas
Janelas MAIN
Janela principal e a única obrigatória.
Podemos ter mais de uma janela MAIN
Preenchimento seqüencial das janelas�(forçado com /: NEXT-WINDOW)
Título del documento
183
|
SAPSCRIPT� FORMULÁRIO
Tipos de janelas
Janelas VAR
Dados podem mudar, durante o preenchimento do formulário
Janelas CONST
Dados permanecem constantes após o primeiro preenchimento.
Título del documento
184
|
SAPSCRIPT� PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT – SE71
Título del documento
185
|
SAPSCRIPT� PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT – SE71
Título del documento
186
|
SAPSCRIPT� PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT – SE71
Título del documento
187
|
SAPSCRIPT� PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT – SE71
Título del documento
188
|
SAPSCRIPT� PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT – SE71
Título del documento
189
|
SAPSCRIPT� PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT – SE71
Título del documento
190
|
SAPSCRIPT� PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT – SE71
Utilização: similar a HTML: <B>Texto</>
Título del documento
191
|
SAPSCRIPT� PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT – SE71
Título del documento
192
|
SAPSCRIPT� PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT – SE71
Título del documento
193
|
SAPSCRIPT� PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT – SE71
Título del documento
194
|
SAPSCRIPT� FORMULÁRIO
Comandos dentro do formulário
Os comandos são indicados por /:
IF..ELSE..ENDIF
CASE..WHEN
DEFINE
PERFORM..USING..CHANGING
BOX..FRAME
INCLUDE
Exemplo:
/: INCLUDE name OBJECT object ID id LANGUAGE spras
Título del documento
195
|
SAPSCRIPT� FORMULÁRIO
Tabuladores
Definidos nos parágrafos, com posicionamento em caracteres(CH), centímetros (CM) ou milímetros (MM)
IL Linha de item
Atributos standard
Espacej.linhas 1.00 LN
Alinhamento Alinh.esq.
Tabuladores
6.00 CH Alinh.à esquerda
25.00 CH Alinh.à esquerda
54.00 CH Alinh.à esquerda
73.00 CH Alinh.à esquerda
Uso:
IL &EKPO-EBELP&,,&EKPO-EMATN&,,&EKPO-TXZ01&
Título del documento
196
|
SAPSCRIPT� PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT – SE71
Título del documento
197
|
SAPSCRIPT�EXERCÍCIO
Criar programa de povoamento ZEXERC_SS_## com parâmetro de entrada CARRID e um formulário Sapscript ZEXERSS_## para imprimir os vôos (SFLIGHT) para a companhia selecionada.
Exemplo de saída:
DADOS DE VÔO DA COMPANHIA LH
_______________________________
Relatório de Vôos
Companhia Vôo Data
LH 0400 28.02.1995
LH 0454 17.11.1995
LH 9981 21.12.2002
Título del documento
198
|
SMARTFORMS�O QUE É?
Função do formulário
Formulário Smartform
Dados
Recuperar o nome dinamicamente
Título del documento
199
|
SMARTFORMS�BENEFÍCIOS
Título del documento
200
|
SMARTFORMS�SAP SMARTFORMS – 1ª TELA
Na transação SMARTFORMS é possível criar:
Formulário: é a interface de saída dos dados, onde é criado o layout do formulário.
Estilo: é um conjunto de parágrafos e formatos de caracteres que serão associados ao formulário.
Módulo de texto: serve para se armazenar textos padrões que podem ser utilizados em mais de um formulário.
Título del documento
201
|
SMARTFORMS�SMARTFORM BUILDER
Quadro de Manutenção
Form Painter
Menu de navegação
Título del documento
202
|
SMARTFORMS�SMARTFORM BUILDER
Menu de navegação: Exibe os nós contidos no formulário, e permite incluir novos nós, alterar posição no formulário, eliminar, etc.
Quadro de manutenção: Exibe as propriedades do nó selecionado no menu de navegação.
Form Painter: Exibe e permite manipular as janelas e alguns outros objetos(nós) do formulário em formato gráfico.
Título del documento
203
|
SMARTFORMS�FUNÇÕES DE EXECUÇÃO
Função para obter o nome da função do formulário:
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'� EXPORTING� FORMNAME = 'ZEXEMPLO_00'� IMPORTING� FM_NAME = V_SMART� EXCEPTIONS� NO_FORM = 1� NO_FUNCTION_MODULE = 2� OTHERS = 3.
Título del documento
204
|
SMARTFORMS�FUNÇÕES DE EXECUÇÃO
Função do formulário. Onde V_SMART indica o nome da função do formulário (chamada dinâmica).
CALL FUNCTION V_SMART� TABLES� T_SPFLI = T_SPFLI� T_SFLIGHT = T_SFLIGHT� T_SCARR = T_SCARR� T_SAPLANE = T_SAPLANE� EXCEPTIONS� FORMATTING_ERROR = 1� INTERNAL_ERROR = 2� SEND_ERROR = 3� USER_CANCELED = 4� OTHERS = 5.
Título del documento
205
|
SMARTFORMS�EXEMPLO
Título del documento
206
|
SMARTFORMS�EXEMPLO
Título del documento
207
|
SMARTFORMS�EXEMPLO
Título del documento
208
|
SMARTFORMS�EXEMPLO
Título del documento
209
|
SMARTFORMS�EXEMPLO
Título del documento
210
|
SMARTFORMS�EXEMPLO
Título del documento
211
|
SMARTFORMS�EXEMPLO
Título del documento
212
|
SMARTFORMS�EXEMPLO
Título del documento
213
|
SMARTFORMS�EXEMPLO
Título del documento
214
|
SMARTFORMS�EXEMPLO
Opções de saída: definir linha e coluna
Título del documento
215
|
SMARTFORMS�EXEMPLO
Título del documento
216
|
SMARTFORMS�EXEMPLO
Título del documento
217
|
SMARTFORMS�EXEMPLO
Título del documento
218
|
SMARTFORMS�EXEMPLO
Título del documento
219
|
SMARTFORMS�EXEMPLO
Título del documento
220
|
SMARTFORMS�EXEMPLO
Título del documento
221
|
SMARTFORMS�EXEMPLO
Título del documento
222
|
SMARTFORMS�EXEMPLO
Título del documento
223
|
SMARTFORMS�ATIVIDADE
Desenvolver um programa que selecione a companhia aérea e exiba os vôos e datas desta companhia num Smartform. (mesmo layout do Sapscript criado)
Opcional: incluir imagem no cabeçalho conforme exemplo abaixo
Título del documento
224
|