Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
NDICE
Curso Bsico
Data Dictionary
Transportes
Report
Performance
BDC Session
On Line
Sapscript
Smartform
Ttulo del documento
| 2
CURSO BSICO
INSTNCIA
Instalao tpica composta de 3 ambientes
Arquitetura 3 camadas
| 3
CURSO BSICO
Mandt
Chave
Valor
100
100
100
200
200
200
300
2
Ttulo del documento
| 4
CURSO BSICO
ORDENS DE TRANSPORTE
Dois tipos principais:
Configurao (customizing): dados, usualmente dependente
de mandante
Repositrio (workbench): levam contedo independente de
mandante (objetos do repositrio), mas podem levar dados,
inclusive os dependente de mandante.
Ordem aberta
Ordem fechada
Ordem
Mandt
Chave
Valor
100
100
| 5
CURSO BSICO
TRANSAES
Chamadas aos programas
| 6
CURSO BSICO
PADRES DE NOMENCLATURA
| 7
CURSO BSICO
BARRA DE BOTES
| 8
CURSO BSICO
BARRA DE BOTES
| 9
CURSO BSICO
BARRA DE BOTES
Exibir lista de objetos: exibe lista de projetos ligados ao programa (includes, tabelas,
telas, variveis, tabelas internas, etc).
Exibir janela de navegao: exibe pilha de navegao de objetos.
Ajuda online: exibe ajuda online da documentao do SAP.
Definir/eliminar ponto parada sesso: permite definir um ponto de parada para
depurao para a sesso ativa.
Definir/eliminar ponto parada externo: permite definir um ponto de parada para
depurao para uma chamada externa (RFC, por exemplo).
Modelo: permite incluir modelos de chamadas funes, mensagens, classes, etc.
Pretty Printer: efetua identao e efetua converses de maisculas e
minsculas de acordo com a configurao do editor.
| 10
CURSO BSICO
| 11
CURSO BSICO
| 12
CURSO BSICO
| 13
CURSO BSICO
| 14
CURSO BSICO
| 15
CURSO BSICO
| 16
CURSO BSICO
| 17
CURSO BSICO
| 18
CURSO BSICO
| 19
CURSO BSICO
| 20
CURSO BSICO
EDITOR ABAP
Upload/Download de cdigos
| 21
CURSO BSICO
EXERCCIO I
Desenvolver o programa ZEXER01_## conforme print:
Variveis 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 descrio:
Academia de Talentos Grupo 01 Aluno ##
Anotar o nmero da change request para ser utilizado durante todo este curso
Ttulo del documento
| 22
CURSO BSICO
EXERCCIO II
Desenvolver o programa ZEXER02_## que resulte o cabealho seguinte:
Variveis de sistema utilizadas:
SY-UNAME
SY-DATUM
| 23
CURSO BSICO
EXERCCIO III
Desenvolver o programa ZEXER03_## que simule uma calculadora com
4 operaes ( +, -, /, * ) e dois campos obrigatrios para entrada de
nmeros (decimais). Layout:
| 24
CURSO BSICO
CRIANDO TRANSAES
Transao SE93
| 25
CURSO BSICO
CRIANDO TRANSAES
Transao SE93
Atributos da transao
| 26
CURSO BSICO
CRIANDO TRANSAES
Transao SE93
Atributos da transao
| 27
DATA DICTIONARY
MODELO RELACIONAL
Modelo Entidade Relacionamento
Entidade: agrupamento de objetos do mesmo tipo
Clientes, fornecedores, banco, moedas
Atributo: qualificador de uma entidade
Nome, RG, nmero da agncia, cdigo internacional
Domnio: conjunto de valores permissveis a um atributo
Texto at 40 caracteres, quatro nmeros, meses
Relacionamento: associao entre duas entidades
Conta de um cliente, conta de uma agncia
| 28
DATA DICTIONARY
MODELO RELACIONAL
Cardinalidades
Um-para-um: uma ocorrncia da Entidade A est relacionada
com apenas uma ocorrncia da Entidade B
Pessoa RG e Pessoa Me
Um-para-N: uma ocorrncia da Entidade A est relacionada
com uma ou vrias ocorrncias da Entidade B
Pessoa Telefone e Pessoa Nacionalidade
N-para-N: vrias ocorrncias da Entidade A esto relacionadas
com vrias ocorrncias da Entidade B
Pessoa Chefe e Autor Livro
| 29
DATA DICTIONARY
MODELO RELACIONAL
Formas Normais
Evitar as redundncias, ajudando a estabelecer as entidades.
As trs primeiras so:
1 FN: No ter elementos multivalorados
2 FN: Em chaves primrias compostas, nenhum campo
depende s de parte da chave
3 FN: No deve haver dependncias entre atributos
| 30
DATA DICTIONARY
| 31
DATA DICTIONARY
| 32
DATA DICTIONARY
DICIONRIO DE DADOS
Transao SE11
| 33
DATA DICTIONARY
| 34
DATA DICTIONARY
| 35
DATA DICTIONARY
| 36
DATA DICTIONARY
| 37
DATA DICTIONARY
| 38
DATA DICTIONARY
| 39
DATA DICTIONARY
| 40
DATA DICTIONARY
| 41
DATA DICTIONARY
| 42
DATA DICTIONARY
| 43
DATA DICTIONARY
| 44
DATA DICTIONARY
| 45
DATA DICTIONARY
EXEMPLOS
Criao de uma tabela
| 46
DATA DICTIONARY
EXEMPLOS
Criao de uma tabela
| 47
DATA DICTIONARY
EXEMPLOS
Criao de uma tabela
| 48
DATA DICTIONARY
EXEMPLOS
Criao do dilogo de manuteno
| 49
DATA DICTIONARY
EXEMPLOS
Criao do dilogo de manuteno
| 50
DATA DICTIONARY
EXEMPLOS
Criao da transao para o dilogo de manuteno
| 51
DATA DICTIONARY
EXEMPLOS
Criao da transao para o dilogo de manuteno
| 52
DATA DICTIONARY
AJUDA DE PESQUISA
Criando ajuda de pesquisa
| 53
DATA DICTIONARY
AJUDA DE PESQUISA
Definindo a fonte e caractersticas
| 54
DATA DICTIONARY
AJUDA DE PESQUISA
Utilizando a ajuda de pesquisa (F4)
| 55
DATA DICTIONARY
EXERCCIO 1
Criar uma ESTRUTURA com as seguintes caractersticas:
Nome:
ZESTRUT_##
Descrio: Estrutura de preenchimento do layout
Field NameKey
MANDT
x
BELNR
x
TXT50
Data Element
MANDT
BELNR D
TXT50_SKAT
Type Length
CLNT
3
CHAR
10
CHAR
50
Short Text
Client
Acc. Doc Num
G/L acct long txt
| 56
DATA DICTIONARY
EXERCCIO 2
Criar uma tabela com as seguintes caractersticas:
Nome: ZTBL_##
Descrio: Tabela para manuteno via transao SM30
Field name
MANDT
HKONT
BELNR
GJAHR
BKTXT
BLART
BLDAT
Data elem.
MANDT
HKONT
BELNR_D
GJAHR
BKTXT
BLART
BLDAT
Type
CLNT
CHAR
CHAR
NUMC
CHAR
CHAR
DATS
Length
Short text
3
Mandante
10 Conta do Razo
10 N documento contbil
4
Exerccio
25 Texto de cabealho de doc.
2
Tipo de documento
8
Data no documento
| 57
DATA DICTIONARY
COMANDO SELECT
Detalhando o comando de leitura de dados
1-) SELECT*FROMdbtab.
....
ENDSELECT.
ifSY-SUBRC<>
1a-)WHERECondition
1b-)ORDERBYf1fn
ORDERBYPRIMARYKEY
1c-)UPTOnROWS
| 58
DATA DICTIONARY
COMANDO SELECT
Detalhando o comando de leitura de dados
2-) SELECT*FROMdbtabINTOTABLEitab.
2a-) WHERE
2b-) ORDERBY
2c-) UPTOnROWS
3-) SELECT*FROMdbtabAPPENDINGTABLEitab.
3a-) WHERE
3b-) ORDERBY
3c-) UPTOnROWS
4-) SELECTSINGLE*FROMdbtabINTOwaWHEREf1=
g1AND
| 59
DATA DICTIONARY
COMANDO SELECT
Detalhando o comando de leitura de dados
5-) SELECT*FROMdbtabAPPENDINGCORRESPONDING
FIELDSOFTABLEitab.
5a-) SELECT*FROMdbtabINTOCORRESPONDINGFIELDSOF
TABLEitab.
6-) SELECT*FROMdtab
FORALLENTRIESINitabwhere
Nota: verificar se a tabela no est vazia, caso em que todos registros sero
selecionados
IFNOT(itab[]ISINITIAL).
SELECT*FROMdtabFORALLENTRIESinitab
wherecampo=itab-campo
ENDIF.
| 60
DATA DICTIONARY
COMANDO SELECT
Consideraes sobre os vrios tipos de SELECTs
1 - SELECT*FROM<tabela>
2 - SELECT*FROM<tabela>WHERE<campo>EQ<var>
3 - SELECT*FROM<table>WHERE<tablefield>BETWEEN
<field1>and<field2>.
4 - SELECT*FROM<table>WHERE<tablefield>LIKE
._R%.
5 - SELECT*FROM<table>WHERE<tablefield>IN
(var1,var2).
6 - SELECT*FROM<table>WHERE<tablefield>IN
<internaltable>.
Ttulo del documento
| 61
DATA DICTIONARY
COMANDO SELECT
Consideraes sobre os vrios tipos de SELECTs
7 - SELECT*FROM<table>ORDERBY<field1>
<field2>PRIMARYKEY.
8 - SELECT*FROM<table>BYPASSINGBUFFER.
(Usado para ler diretamente da tabela original, e no do buffer).
9 - SELECT*FROM<table>APPENDINGTABLE
<internaltable>.
10 - SELECTFROM<table>INTOTABLE<INTERNAL
TABLE>.
| 62
DATA DICTIONARY
COMANDO SELECT
Consideraes sobre os vrios tipos de SELECTs
11 - SELECT.INTOCORRESPONDINGFIELDSOFTABLE
<itab>.
12 - SELECT..APPENDINGCORRESPONDINGFIELDSOF
TABLE<itab>.
13 - SELECTSINGLE*FROMSPFLIWHERE
..<campo>..EQ<contedo>
14 - SELECT<a1><a2>INTO(<f1>,<f2>,)FROM
.<tabela>WHERE.
| 63
DATA DICTIONARY
COMANDO SELECT
Consideraes sobre os vrios tipos de SELECTs
15 - SELECTMAX(campo)
MIN(campo)
AVG(campo)
COUNT(*)
FROM<table>INTO(..,,..,.)
WHERE.
AVG e SUM: somente para campos numricos.
No se usa endselect.
| 64
DATA DICTIONARY
COMANDO SELECT
Consideraes sobre os vrios tipos de SELECTs
16 - SELECT*FROMSFLIGHTWHEREPRICEINITAB.
17 - SELECT*FROM(<table>)INTO<workarea>.
Exemplo:
data: begin of WA,
line(100),
end of WA.
Parameters: tabname(10) default SPFLI.
Select * from (tabname) into WA
Write / WA .
Endselect.
| 65
DATA DICTIONARY
COMANDO SELECT
Consideraes sobre os vrios tipos de SELECTs
18- SELECT*FROM<table>FORALLENTRIESIN
<internaltable>WHERE
campo1=<contedo>and
campo2=<contedo>
19 - SELECTMIN(price)max(price)INTO
(minimum,maximum)FROMsflightWHERE...
19a - SELECTcarridMIN(price)max(price)
INTOTABLEitabFROMsflightWHERE
GROUPBYcarrid.
| 66
EXERCCIOS EXTRAS
EXERCCIO IV
Desenvolver o programa ZEXER04_## que possua as seguintes
caractersticas:
Parmetros: SPFLI-CITYFROM e SPFLI-CITYTO com valores default
Opes: Informaes e Reserva
Validaes: buscar dados dos vos que correspondam aos parmetros
informados; exibir a aeronave utilizada e o preo da passagem apenas
quando for uma operao de reserva.
Campos para seleo:
SPFLI-CARRID
SPFLI-CITYFROM
SPFLI-CITYTO
SPFLI-FLTIME
SPFLI-ARRTIME
SPFLI-DEPTIME
SFLIGHT-FLDATE
SFLIGHT-PLANETYPE
SFLIGHT-PRICE
| 67
EXERCCIOS EXTRAS
EXERCCIO IV
| 68
EXERCCIOS EXTRAS
EXERCCIO 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 area.
Exibio de mensagem tanto no caso de sucesso na criao do arquivo
final como no caso da ocorrncia de algum erro.
Campos utilizados: SFLIGHT-CARRID e SFLIGHT-PLANETYPE
Arquivo de entrada:
Tipo de aeronave (1 linha por tipo)
Arquivo de sada:
Tipo de aeronave
; (separador fixo)
Companhia area
| 69
EXERCCIOS EXTRAS
EXERCCIO V
| 70
TRANSPORTE
ORDENS DE TRANSPORTE
| 71
TRANSPORTE
ORDENS DE TRANSPORTE
Telas iniciais SE09 ou SE10
| 72
TRANSPORTE
ORDENS DE TRANSPORTE
Localizando as ordens j criadas
| 73
TRANSPORTE
ORDENS DE TRANSPORTE
Lista das ordens de transporte
| 74
TRANSPORTE
ORDENS DE TRANSPORTE
Histricos: ao e transporte
Ir para
Log de ao
Log de transporte
| 75
TRANSPORTE
ORDENS DE TRANSPORTE
Caractersticas das ordens de transporte
| 76
TRANSPORTE
ORDENS DE TRANSPORTE
Lista de objetos das ordens/tarefas
| 77
TRANSPORTE
ORDENS DE TRANSPORTE
Documentao da ordem de transporte
| 78
RELATRIOS
PROGRAMAO DE REPORTS
Conceito: Programao estruturada baseada em eventos
No apenas destinada a relatrios, podemos construir
programas de atualizao de dados com esta tcnica.
Podemos acrescentar elementos adicionais (botes, menus,
ttulos e telas adicionais)
Tela de seleo
Exibio
Tela 1000
| 79
RELATRIOS
PROGRAMAO DE REPORTS
Processo geral de programao de relatrios
Nome e Descrio do Programa
Declarao de Variveis
| 80
RELATRIOS
PROGRAMAO DE REPORTS
Modelo de um programa (template)
Nome do Programa e Descrio (cabealho)
No. de linhas e colunas classe de mensagem
Declarao de dados (variveis, constantes e tabelas internas)
Parmetros de entrada da tela do usurio
Lgica da tela de seleo
Seleo e Impresso de Dados ou outra lg. (performs)
Ao comando do usurio (caso haja algum boto)
Cabealho e Rodap
Seo das Sub-rotinas (forms)
Ttulo del documento
| 81
RELATRIOS
PROGRAMAO DE REPORTS
Descrio do modelo (comandos utilizados)
Nome do Programa e Descrio (cabealho):
Nome do Programa
Data
ltima atualizao
Descrio
Histrico de Modificaes
Comentrios
(padro cliente)
| 82
RELATRIOS
PROGRAMAO DE REPORTS
Descrio do modelo (comandos utilizados)
Declarao de Dados:
Include ZZIHEADR
Tabelas
Constantes e Variveis
Tabelas Internas
Parmetros de Entrada:
Select-Option
Parameters
Selection-screen
Lgica da Tela de Seleo (eventos):
Initialization
At Selection-Screen
| 83
RELATRIOS
PROGRAMAO DE REPORTS
Descrio do modelo (comandos utilizados)
Seleo e Impresso de Dados:
Start-of-Selection
Ao Comando do Usurio:
At User-Command
At Line Selection
Cabealho e Rodap
Top-of-page
End-of-page
Seo das Sub-rotinas
Forms Section
| 84
RELATRIOS
PROGRAMAO DE REPORTS
Programas exemplos
ZEXEMP_10a - Navegao em telas drill down
ZEXEMP_10b Acrescentando ttulos e status.
Respondendo a comandos do usurio.
| 85
RELATRIOS
EXERCCIOS
Exerccio 1
Desenvolver um programa ZEXER_REP_01_## que mostre as
conexes (tabela SPFLI) para a seleo do usurio realizada com os
seguintes campos:
SPFLI-CARRID e SPFLI-CONNID
A primeira tela deve mostrar: ID da empresa, Conexo, Origem e
Destino.
O usurio pode selecionar qualquer linha com conexo, para obter as
datas de vos para a conexo selecionada (tabela SFLIGHT).
Opcional: na primeira tela, realizar uma quebra a cada companhia
area, indicando o total de conexes encontradas.
Dica: dentro do loop utilize AT END OF carrid. ... ENDAT
| 86
RELATRIOS
EXERCCIOS
Exerccio 1
| 87
RELATRIOS
EXERCCIOS
Exerccio 2
Desenvolver um programa ZEXER_REP_02_##, relatrio de
reservas, que imprima os campos abaixo:
Nome de uma companhia area (SCARR-CARRNAME)
Cdigo da conexo de vo individual (SPFLI-CONNID)
Durao do vo (SPFLI- FLTIME)
Data do vo (SFLIGHT-FLDATE)
Preo do vo (SFLIGHT-PRICE)
N de marcao (SBOOK-BOOKID)
Nome do passageiro (SCUSTOM- NAME)
Classe vo (SBOOK-CLASS)
Nome da agncia de viagens (STRAVELAG- NAME)
Data marcao (SBOOK- ORDER_DATE)
A tela de seleo deve conter as chaves das tabelas consultadas.
(companhia area deve ser obrigatria)
Ttulo del documento
| 88
RELATRIOS
EXERCCIOS
Exerccio 2
| 89
PERFORMANCE
EXERCCIOS
Exerccio 3
Copiar o programa ZEXER_REP_01_## com o nome
ZEXER_REP_03_##.
Acrescentar ttulo (TITLE BAR) e status na primeira tela.
Incluir botes para ordenao da lista, de forma crescente e
decrescente.
Voc pode inserir os comandos do status PRINCIPAL do
programa exemplo ZEXEMP_10B
(Suplemento Ajustar Modelo)
| 90
PERFORMANCE
TPICOS
Pensando em performance
Acesso ao banco de dados
Manipulao dos dados
Caso particular de migraes
| 91
PERFORMANCE
REGRAS E EXCEES
Ao tratarmos de performance em programas estaremos
continuamente tratando de regras e excees
Porque tanta excees: o nmero de componentes
envolvidos e a contnua mudana trazem uma complexidade
que no deve ser desprezada
Apenas trs regras so absolutas:
Pensar
Pesquisar
Testar
| 92
PERFORMANCE
O QUE PERFORMANCE?
O conceito de performance est diretamente ligado ao conceito
de tempo requerido para realizar determinada tarefa em
determinadas condies.
Mais rpido = mais performtico
Indiretamente, uma vez que trabalhamos com recursos
limitados, valores como menor consumo de memria e menor
utilizao de processamento tambm esto associados a melhor
performance, uma vez que a performance total que nos
interessa, e esta ocorrer em ambiente com disputa pelos
recursos limitados
Mais econmico = mais performtico
Estes dois requisitos podem resultar em decises conflitantes.
No raro desenvolvedores negligenciarem demasiadamente o
segundo requisito.
| 93
PERFORMANCE
| 94
HIERARQUIA DE ACESSO
SELECT campos FROM tabela(s) WHERE condies
| 95
ARQUITETURA SAP
O banco
nico
Rede e
estaes
Comunicao Banco
x Aplicao
Limitao nos
servidores de
aplicao
| 96
1.
2.
3.
4.
5.
| 97
BUFERIZAO DE TABELAS
Nem todas tabelas permitem buferizao.
As regras negcio devem permitir acesso a dados obsoletos
sem impactos ( sincronizao da ordem de 1 a 2 minutos ).
Dados que sofrem muitas mudanas ( + 1% dos acessos for de
atualizao ) podem degradar a performance do ambiente se as
tabelas forem buferizadas. Tipicamente recomendada para
dados de configurao e para alguns dados mestres.
Diferentes tipos de buferizao e regras em que o servidor pula
o bufer e fora a leitura no banco devem ser consideradas.
| 98
| 99
| 100
NDICES
Os ndices so tabelas auxiliares, organizadas como um
estrutura "rvore", cujos registros esto ordenados segundo
os campos do ndice.
Principais cuidados:
No criar ndices demasiados para tabelas com muita
atualizao, pois os ndices degradam estas operaes.
Criar ndices disjuntos (campos distintos) e bem seletivos.
Levar em conta a semntica do campo.
Campo MANDT no necessrio (foi no passado)
| 101
RECOMENDAES GERAIS
| 102
TABELAS INTERNAS
Enorme mito: sempre melhor trazer os dados e
manipul-los internamente no programa
Levar em contra o consumo de memria e o tempo na
manipulao de grandes volumes de dados.
(particularmente se uma seleo menor for possvel)
Considerar a otimizao dos programas tambm na
manipulao interna dos dados.
| 103
RECOMENDAES GERAIS
| 104
PERFORMANCE
| 105
PERFORMANCE
MIGRAO DE DADOS
Tipos de programas de carga
Direct input
BAPI
iDoc
Call transaction
Pasta batch input
Melhor
performance
| 106
PERFORMANCE
TRANSAES ANALISADAS
ST05 Performance analysis
DB05 Anlise de tabelas relativamente a campos
indexados
SAT Run time analysis (antiga SE30)
Comando GET RUN TIME na anlise de performance de
comandos
| 107
PERFORMANCE
READ TABLE
READ TABLE <ITAB>
[INTO <WA>]
[WITH KEY <CAMPO> = <VALOR>]
[INDEX n]
[BINARY SEARCH]
[TRANSPORTING NO FIELDS]
| 108
PERFORMANCE
EXERCCIOS
Exerccio 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 nmeros inteiros.
O programa deve preencher esta tabela com n nmeros
inteiros, seqenciais (1, 2, 3... ), onde n informado por
parmetro do usurio.
O programa deve fazer a busca do nmero m informado
tambm por parmetro, utilizando as duas opes de busca.
Comparar os tempos obtidos utilizando o comando
GET RUN TIME FIELD
Ttulo del documento
| 109
BDC SESSION
CONCEITOS INICIAIS
| 110
BDC SESSION
TABELA BDC
A tabela BDC uma tabela interna com estrutura BDCDATA.
Campo
Tipo
Descrio
program
dynpro
dynbegin
Char(1)
fnam
fval
| 111
BDC SESSION
| 112
BDC SESSION
TRANSAO SHDB
| 113
BDC SESSION
TRANSAO SHDB
| 114
BDC SESSION
TRANSAO SHDB
| 115
BDC SESSION
TRANSAO SHDB
| 116
BDC SESSION
| 117
BDC SESSION
| 118
BDC SESSION
| 119
BDC SESSION
SM35
| 120
BDC SESSION
| 121
BDC SESSION
EXERCCIO
Exerccio
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 transao FB01 para cada linha.
Imprimir as mensagens de retorno da transao 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
| 122
BDC SESSION
EXERCCIO
Exerccio 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-NEWBS31
RF05A-NEWKO100
BDC_SUBSCR SAPMF05A1300APPL_SUB_T
BDC_SUBSCR SAPLSEXM0200APPL_SUB
SAPMF05A 0302 X
BDC_CURSOR RF05A-NEWKO
BDC_OKCODE /00
BSEG-WRBTR 100
BSEG-MWSKZ V1
BSEG-ZFBDT 05.04.2013
RF05A-NEWBS40
RF05A-NEWKO10900050
SAPMF05A 0300 X
BDC_CURSOR BSEG-WRBTR
BDC_OKCODE =BU
BSEG-WRBTR 100
BSEG-MWSKZ V1
BSEG-VALUT 05.04.2013
BDC_SUBSCR SAPLKACB0001BLOCK
DKACB-FMOREX
SAPLKACB 0002 X
BDC_CURSOR COBL-GSBER
BDC_OKCODE =ENTE
BDC_SUBSCR SAPLKACB9999BLOCK1
| 123
ON LINE
PROGRAMAO ON LINE
| 124
ON LINE
PROGRAMAO ON LINE
Tela
| 125
ON LINE
PROGRAMAO ON LINE
Screen 1
Mdulos PBO
tela 1
Mdulos PAI tela
1
GUI-01
Programa
Principal
Screen 2
Mdulos PBO
tela 2
Mdulos PAI tela
2
GUI-02
Screen 3
Mdulos PBO
tela 3
Mdulos PAI tela
3
| 126
ON LINE
PROGRAMAO ON LINE
Estrutura de um programa
Programa principal
Include TOP
Include Mdulos PBO
Include Mdulos PAI
Include Subrotinas (Forms)
A estruturao de programas on line em includes no
obrigatria, porm facilita a organizao do cdigo e
incentivada pelo editor.
| 127
ON LINE
PROGRAMAO ON LINE
Processo geral de programao on line
Nome e Descrio do Programa e
declarao das variveis
TOP
Telas
Mdulos
Forms
| 128
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 129
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 130
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 131
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 132
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 133
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 134
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 135
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 136
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 137
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 138
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 139
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 140
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 141
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 142
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 143
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 144
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 145
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 146
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 147
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 148
ON LINE
PROGRAMAO ON LINE
Exemplo de Programa Online
| 149
ON LINE
EXERCCIO 1
Criar o programa online ZEXER_ON_01_## para dar
manuteno na tabela criada no mdulo de dicionrio de
dados ZTBL_##.
Opes de criar, exibir e alterar dados.
Registro no deve existir para ser criado, e registro deve
existir para alterar ou exibir.
Na exibio, deixar os campos fechados utilizando o
comando abaixo:
LOOP AT SCREEN.
IF screen-group1 = 'G1'.
CLEAR screen-input.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
| 150
ON LINE
EXERCCIO 1
| 151
ON LINE
EXERCCIO 2
Criar um programa online para simular uma calculadora no
SAP, com o nome ZEXER_ON_02##.
| 152
ON LINE
USO DE TABLESTRIP
Para incluir o tablestrip na tela, utilizar o assistente.
| 153
ON LINE
USO DE TABLESTRIP
| 154
ON LINE
USO DE TABLESTRIP
| 155
ON LINE
USO DE TABLESTRIP
| 156
ON LINE
USO DE TABLESTRIP
| 157
ON LINE
USO DE TABLESTRIP
| 158
ON LINE
USO DE TABLESTRIP
| 159
ON LINE
USO DE TABLESTRIP
| 160
ON LINE
USO DE TABLESTRIP
| 161
ON LINE
TABLE CONTROL
Table control um componente que permite a exibio e
manipulao de dados de tabelas internas de forma muito
amigvel pelo usurio, com exibio semelhante a uma
planilha.
A visualizao realizada em vrias linhas simultaneamente
e, quando corretamente codificado, pode contar com
paginao e seleo das linhas para posterior ao.
As table controls so declaradas como controles nos
programas e seus dados associados a tabelas internas do
programa.
Considere utilizar o assistente para a criao de table
controls.
| 162
ON LINE
TABLE CONTROL
| 163
ON LINE
TABLE CONTROL
| 164
ON LINE
TABLE CONTROL
| 165
ON LINE
TABLE CONTROL
| 166
ON LINE
TABLE CONTROL
| 167
ON LINE
TABLE CONTROL
| 168
ON LINE
TABLE CONTROL
| 169
ON LINE
TABLE CONTROL
| 170
ON LINE
TABLE CONTROL
| 171
ON LINE
TABLE CONTROL
| 172
ON LINE
EXERCCIO 3
Criar o report ZEXER_ON_03_##, com um parmetro
obrigatrio com o cdigo da empresa area (CARRID) e um
intervalo de valores, no obrigatrio da data do vo (SFLIGHTFLDATE).
A primeira tela de resultados deve mostrar os seguintes
valores:
SCARR-CARRID - Denominao breve
SCARR-CARRNAME Nome da companhia
Em uma tabela:
SPFLI-CONNID Conexo
CITYFROM Origem
CITYTO Destino
Total de vos no intervalo de datas (pode ser zero)
| 173
ON LINE
EXERCCIO 3
O usurio apenas poder selecionar linhas com quantidade de
vos maior que zero, caso em que uma segunda tela de
detalhes mostra a lista dos vos disponveis para a conexo
selecionada, com os seguintes campos:
SPFLI-CARRID Denominao breve
SPFLI-CONNID Conexo
Em uma tabela:
SFLIGHT-FLDATE
SFLIGHT-PRICE
SFLIGHT-CURRENCY
Nota: o programa deve mostrar mensagem de erro se a
empresa indicada no tem conexes cadastradas, deixando o
campo aberto para outra empresa.
| 174
SAPSCRIPT
FORMULRIOS SAPSCRIPT
Conceitos iniciais
O Sapscript a forma original de criar formulrios com preciso
dentro do SAP. Os formulrios so gravados em separado em
repositrio acessvel pela transao SE71.
Os formulrios Sapscript so utilizados em vrios pontos do SAP,
gerados por programas. Estes programas recebem o nome de
programa de povoamento.
Lgica de negcio
Programa de povoamento
(abap)
Dados
Formatao
Formulrio Sapscript
| 175
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Programa ABAP
Um programa de povoamento deve seguir a seguinte estrutura:
Abertura de um formulrio
Inicializao de um formulrio
Seleo dos dados do formulrio
Impresso dos dados nas janelas do formulrio
Finalizao do formulrio
Fechamento do formulrio
| 176
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Abertura de formulrio
callfunction'OPEN_FORM'
exporting
DEVICE
= 'PRINTER'
*DIALOG='X'
FORM
= (Nome do Formulrio)
LANGUAGE
= (Idioma do Formulrio)
OPTIONS=ITCPO
exceptions
canceled=1
device=2
form=3
options=4
unclosed=5
others=6.
| 177
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Inicializao de formulrio
callfunction'START_FORM'
exporting
FORM=''
LANGUAGE=''
exceptions
form=1
format=2
unended=3
unopened=4
unused=5
others=6.
No obrigatrio para o primeiro formulrio, pois o comando
de abertura inicializa automaticamente. Necessrio quando
utilizamos mais de um formulrio (a partir do segundo)
| 178
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Impresso dos dados
Os dados so enviados em estruturas
callfunction'WRITE_FORM'
exporting
ELEMENT=''
WINDOW='MAIN'
exceptions
element=1
function=2
type=3
unopened=4
unstarted=5
window=6
others=7.
A janela MAIN tem comportamento diferente das demais janelas.
| 179
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Finalizao de formulrio
Finaliza os formulrios inicializados
CALLFUNCTION'END_FORM'.
*IMPORTING
*RESULT=
*EXCEPTIONS
*UNOPENED
= 1
*
BAD_PAGEFORMAT_FOR_PRINT =2
*OTHERS=3
| 180
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Fechando o formulrio
Fecha os formulrios abertos
CALLFUNCTION'CLOSE_FORM'.
*IMPORTING
*RESULT=
*RDI_RESULT=
*TABLES
*OTFDATA=
*EXCEPTIONS
*UNOPENED=1
*BAD_PAGEFORMAT_FOR_PRINT=2
*SEND_ERROR=3
*OTHERS=4
| 181
SAPSCRIPT
FORMULRIO
Transao SE71
Criar novos formulrios (definir o idioma do formulrio)
Copiar de outros formulrios no mandante, com ou sem
mudana de idioma
Traduzir formulrios
Copiar de outros mandantes
A SAP disponibiliza muitos formulrios para serem copiados e
alterados (p.ex.: cartas, comunicados, boletos, cheques)
| 182
SAPSCRIPT
FORMULRIO
Tipos de janelas
Janelas MAIN
Janela principal e a nica obrigatria.
Podemos ter mais de uma janela MAIN
Preenchimento seqencial das janelas
(forado com /: NEXT-WINDOW)
| 183
SAPSCRIPT
FORMULRIO
Tipos de janelas
Janelas VAR
Dados podem mudar, durante o preenchimento do formulrio
Janelas CONST
Dados permanecem constantes aps o primeiro preenchimento.
| 184
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71
| 185
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71
| 186
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71
| 187
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71
| 188
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71
| 189
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71
| 190
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71
| 191
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71
| 192
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71
| 193
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71
| 194
SAPSCRIPT
FORMULRIO
Comandos dentro do formulrio
Os comandos so indicados por /:
IF..ELSE..ENDIF
CASE..WHEN
DEFINE
PERFORM..USING..CHANGING
BOX..FRAME
INCLUDE
Exemplo:
/: INCLUDE name OBJECT object ID id LANGUAGE spras
| 195
SAPSCRIPT
FORMULRIO
Tabuladores
Definidos nos pargrafos, com posicionamento em
caracteres(CH), centmetros (CM) ou milmetros (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&
Ttulo del documento
| 196
SAPSCRIPT
PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71
| 197
SAPSCRIPT
EXERCCIO
Criar programa de povoamento ZEXERC_SS_## com
parmetro de entrada CARRID e um formulrio Sapscript
ZEXERSS_## para imprimir os vos (SFLIGHT) para a
companhia selecionada.
Exemplo de sada:
DADOSDEVODACOMPANHIALH
_______________________________
RelatriodeVos
Companhia
LH
LH
LH
Vo
0400
0454
9981
Data
28.02.1995
17.11.1995
21.12.2002
| 198
SMARTFORMS
O QUE ?
Nova tecnologia para substituir o
Sapscript
Transao SMARTFORMS
Impresso atravs de funo gerada
A funo contm todo o
processamento do formulrio
Recuperar o nome
dinamicamente
Funo do formulrio
Dados
Formulrio Smartform
| 199
SMARTFORMS
BENEFCIOS
Ambiente grfico para desenvolvimento
Maior flexibilidade no desenvolvimento e manuteno
O programa de impresso, basicamente, s seleciona os
dados
Alteraes no layout do formulrio no requerem alterar o
programa, exceto nos casos em que se altere a quantidade
ou tipo de dados
independente de mandante.
| 200
SMARTFORMS
| 201
SMARTFORMS
SMARTFORM BUILDER
Menu de
navegao
Quadro de
Manuteno
Form
Painter
| 202
SMARTFORMS
SMARTFORM BUILDER
Menu de navegao: Exibe os ns contidos no formulrio, e
permite incluir novos ns, alterar posio no formulrio,
eliminar, etc.
Quadro de manuteno: Exibe as propriedades do n
selecionado no menu de navegao.
Form Painter: Exibe e permite manipular as janelas e alguns
outros objetos(ns) do formulrio em formato grfico.
| 203
SMARTFORMS
FUNES DE EXECUO
Funo para obter o nome da funo do formulrio:
CALLFUNCTION'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME='ZEXEMPLO_00'
IMPORTING
FM_NAME=V_SMART
EXCEPTIONS
NO_FORM=1
NO_FUNCTION_MODULE=2
OTHERS=3.
| 204
SMARTFORMS
FUNES DE EXECUO
Funo do formulrio. Onde V_SMARTindica o nome da
funo do formulrio (chamada dinmica).
CALLFUNCTIONV_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.
| 205
SMARTFORMS
EXEMPLO
| 206
SMARTFORMS
EXEMPLO
| 207
SMARTFORMS
EXEMPLO
| 208
SMARTFORMS
EXEMPLO
| 209
SMARTFORMS
EXEMPLO
| 210
SMARTFORMS
EXEMPLO
| 211
SMARTFORMS
EXEMPLO
| 212
SMARTFORMS
EXEMPLO
| 213
SMARTFORMS
EXEMPLO
| 214
SMARTFORMS
EXEMPLO
| 215
SMARTFORMS
EXEMPLO
| 216
SMARTFORMS
EXEMPLO
| 217
SMARTFORMS
EXEMPLO
| 218
SMARTFORMS
EXEMPLO
| 219
SMARTFORMS
EXEMPLO
| 220
SMARTFORMS
EXEMPLO
| 221
SMARTFORMS
EXEMPLO
| 222
SMARTFORMS
EXEMPLO
| 223
SMARTFORMS
ATIVIDADE
Desenvolver um programa que selecione a companhia area e
exiba os vos e datas desta companhia num Smartform.
(mesmo layout do Sapscript criado)
Opcional: incluir imagem no cabealho conforme exemplo abaixo
| 224