Вы находитесь на странице: 1из 224

TREINAMENTO ABAP

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

Cada ambiente composto de 1 banco de dados,


1 instncia central,
n servidores de aplicao e
m servidores de
apresentao

Arquitetura 3 camadas

Ttulo del documento

| 3

CURSO BSICO

MANDANTES E OBJETOS DO REPOSITRIO


Viso das aplicaes por mandante (em cada ambiente)

Tabela dependente de mandante


=
Primeira chave o mandante

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

Ttulo del documento

| 5

CURSO BSICO

TRANSAES
Chamadas aos programas

Principais transaes para desenvolvedores:


SE80
transao central de desenvolvimento
SE38
abre o editor ABAP/4
SE37
criao de funes
SE16
permite a visualizao do contedo de tabelas do
SAP
SE11 permite a visualizao da arquitetura de uma
tabela/estrutura do SAP e criao de demais objetos do dicionrio
SE43
criao de menus
SE93
criao de transaes
SE71
criao e manuteno de formulrios SAPscripts
CMOD criao de projetos Enhancements (Field Exits, User
Exits, ...)

Ttulo del documento

| 6

CURSO BSICO

PADRES DE NOMENCLATURA

Nota SAP 16466

Maioria dos objetos: Y* e Z*


Exemplo de exceo: funes Y_* ou Z_*
Ttulo del documento

| 7

CURSO BSICO

BARRA DE BOTES

Barra de botes da primeira tela SE38


Verificar: verifica a sintaxe e consistncia do cdigo.
Ativar: ativa o programa, alm de efetuar a verificao de sintaxe e consistncia do
cdigo.
Executar: executa o programa (opo vlida apenas para programas do tipo
executvel).
Lista de utilizaes: verifica onde existem chamadas do programa.
Anlise do ambiente: avalia os componentes do programa e lista um relatrio no
final que permite a navegao nestes componentes.
Ajuda online: exibe ajuda online da documentao do SAP.
Eliminar: elimina programas.
Copiar: efetua cpia de programas.
Renomear: renomeia programas.
: Depurao: executa programa em modo de depurao (opo vlida
apenas para programas do tipo executvel).
: Executar c/ variante: executa programa com variante de seleo j
carregada em tela (opo vlida apenas para programas do tipo executvel).
: Variantes: permite o gerenciamento das variantes de seleo.
Ttulo del documento

| 8

CURSO BSICO

BARRA DE BOTES

Barra de botes do editor ABAP

Objeto anterior: permite a navegao ao objeto anterior.


Objeto seguinte: permite a navegao ao objeto seguinte (caso tenha ocorrido
retorno no editor).
Exibir/Modificar: permite exibir ou modificar o programa.
Ativo/Inativo: permite navegar entre as verses ativa e inativa do programa.
Outro objeto: permite navegar entre outros objetos.
Ampliar: permite utilizar pontos de ampliao disponveis no programa.
Verificar: verifica a sintaxe e consistncia do cdigo.
Ativar: ativa o programa, alm de efetuar a verificao de sintaxe e consistncia do
cdigo.
Executar: executa o programa (opo vlida apenas para programas do tipo
executvel).
Lista de utilizaes: verifica onde existem chamadas do programa.

Ttulo del documento

| 9

CURSO BSICO

BARRA DE BOTES

Barra de botes do editor ABAP (continuao)

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.

Ttulo del documento

| 10

CURSO BSICO

PRIMEIROS EXEMPLOS DE ABAP


Exemplo 1
REPORTZEXEMP_01.
WRITE:'111111'.
WRITE:'222222',
'333333'.
WRITE:/'111111'.
WRITE:15'333333'.
WRITE:/text-001.
ULINE.
ULINE8(6).
SKIP.
SKIP2.
WRITE:8sy-langu.
WRITE:/sy-datumUNDERsy-langu.

Variveis de ambiente: estrutura SYST


Ttulo del documento

| 11

CURSO BSICO

PRIMEIROS EXEMPLOS DE ABAP


Exemplo 2
REPORTZEXEMP_02.
TOP-OF-PAGE.
WRITE:'EXEMPLO2-CURSOABAP/4',
80'Page',
SY-PAGNO.

Ttulo del documento

| 12

CURSO BSICO

PRIMEIROS EXEMPLOS DE ABAP


Exemplo 3
REPORTZEXEMP_03.
FORMATCOLORCOL_HEADING.
WRITE:'FUNDOAZUL'.

Ttulo del documento

| 13

CURSO BSICO

PRIMEIROS EXEMPLOS DE ABAP


Exemplo 4
REPORTZEXEMP_04.
DATA:nome(20)TYPEc,
rgTYPEi,
dataTYPEbkpf-budat,
hora(8)VALUE'14:05:45'.
MOVE'SolutionCenter'TOnome.
COMPUTErg=42159818+1.
data='19970530'."aaaammdd

Ttulo del documento

| 14

CURSO BSICO

PRIMEIROS EXEMPLOS DE ABAP


Exemplo 5
REPORTZEXEMP_05.
PARAMETER:P_NOME1(15)TYPECOBLIGATORY,
P_NOME2(15)TYPECDEFAULT'Abap
Factory'LOWERCASE,
P_BOTAO1RADIOBUTTONGROUPG1,
P_BOTAO2RADIOBUTTONGROUPG1.
SELECT-OPTIONS:s_dataFORsy-datum.

Ttulo del documento

| 15

CURSO BSICO

PRIMEIROS EXEMPLOS DE ABAP

Ttulo del documento

| 16

CURSO BSICO

PRIMEIROS EXEMPLOS DE ABAP


Exemplo 6
REPORTZEXEMP_06.
DATA:ti_t005hTYPETABLEOFt005h,
wa_t005hTYPEt005h.
SELECT*
FROMt005h
INTOTABLEti_t005h
WHEREland1=p_pais
ANDspras=sy-langu
ORDERBYcityc.

Ttulo del documento

| 17

CURSO BSICO

PRIMEIROS EXEMPLOS DE ABAP


Exemplo 7
REPORTZEXEMP_07.
LOOPATtg_t005hINTOwa_t005h.
ONCHANGEOFwa_t005h-land1.
IFv_var1=0.
NEW-PAGE.
ENDIF.
FORMATCOLOROFF.
WRITE'COUNTRYCITY'.
CLEARv_var1.
ENDON.
()
ENDLOOP.
Ttulo del documento

| 18

CURSO BSICO

PRIMEIROS EXEMPLOS DE ABAP


Exemplo 8
REPORTZEXEMP_08.
CALLFUNCTION'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.

Ttulo del documento

| 19

CURSO BSICO

PRIMEIROS EXEMPLOS DE ABAP


Exemplo 9
REPORTZEXEMP_09.
CALLFUNCTION'GUI_UPLOAD'
EXPORTING
filename=vg_arquivo
TABLES
data_tab=tg_spfli
EXCEPTIONS
file_open_error=1
file_read_error=2
OTHERS=17.

Ttulo del documento

| 20

CURSO BSICO

EDITOR ABAP
Upload/Download de cdigos

Todo cdigo ABAP aberto!


Ttulo del documento

| 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

Ttulo del documento

| 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:

Ttulo del documento

| 24

CURSO BSICO

CRIANDO TRANSAES
Transao SE93

Ttulo del documento

| 25

CURSO BSICO

CRIANDO TRANSAES
Transao SE93
Atributos da transao

Ttulo del documento

| 26

CURSO BSICO

CRIANDO TRANSAES
Transao SE93
Atributos da transao

Ttulo del documento

| 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

Ttulo del documento

| 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

Ttulo del documento

| 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

Ttulo del documento

| 30

DATA DICTIONARY

BANCO DE DADOS RELACIONAL


Implementao fsica do modelo relacional
Entidades Tabelas (linhas x colunas)
Atributos Colunas
Ocorrncias Linhas (registros)
Chave = conjunto de atributos que garantes a unicidade das
ocorrncias
Toda tabela deve ter pelo menos um campo chave, que ser
denominado chave primria
Chave estrangeira = atributo que chave primria de outra
tabela

Ttulo del documento

| 31

DATA DICTIONARY

BANCO DE DADOS RELACIONAL


SQL - Structured Query Language
DDL: Data Definition Language Comandos especficos para
definio de objetos do banco de dados.
Ambiente SAP pelo dicionrio de dados (SE11)
DML: Data Manipulation Language - Comandos especficos
para tratamento dos dados armazenados nos objetos do banco
ABAP define Open SQL

Ttulo del documento

| 32

DATA DICTIONARY

DICIONRIO DE DADOS
Transao SE11

Ttulo del documento

| 33

DATA DICTIONARY

DICIONRIO DE DADOS - TABELA


Estrutura de uma tabela

Ttulo del documento

| 34

DATA DICTIONARY

DICIONRIO DE DADOS - TABELA


Entradas possveis e verificaes

Ttulo del documento

| 35

DATA DICTIONARY

DICIONRIO DE DADOS - TABELA


Opes tcnicas

Ttulo del documento

| 36

DATA DICTIONARY

DICIONRIO DE DADOS - TABELA


Categoria de ampliao
No menu: Suplementos Categoria de ampliao...

Ttulo del documento

| 37

DATA DICTIONARY

DICIONRIO DE DADOS - TABELA


ndices

O ndice para chave primria obrigatrio e criado automaticamente


<tabela>~0
Ttulo del documento

| 38

DATA DICTIONARY

DICIONRIO DE DADOS - VISO


Tabelas e condies de join

A viso criada no banco de dados


Ttulo del documento

| 39

DATA DICTIONARY

DICIONRIO DE DADOS - VISO


Campos da viso

Ttulo del documento

| 40

DATA DICTIONARY

DICIONRIO DE DADOS - ELEMENTO


Categoria de dados

Ttulo del documento

| 41

DATA DICTIONARY

DICIONRIO DE DADOS - ELEMENTO


Caractersticas adicionais

Ttulo del documento

| 42

DATA DICTIONARY

DICIONRIO DE DADOS - ELEMENTO


Denominao do campo

Ttulo del documento

| 43

DATA DICTIONARY

DICIONRIO DE DADOS - DOMNIO


Definio e rotina de converso

Ttulo del documento

| 44

DATA DICTIONARY

DICIONRIO DE DADOS - DOMNIO


Intervalo de valores

Ttulo del documento

| 45

DATA DICTIONARY

EXEMPLOS
Criao de uma tabela

Ttulo del documento

| 46

DATA DICTIONARY

EXEMPLOS
Criao de uma tabela

Ttulo del documento

| 47

DATA DICTIONARY

EXEMPLOS
Criao de uma tabela

Ttulo del documento

| 48

DATA DICTIONARY

EXEMPLOS
Criao do dilogo de manuteno

Ttulo del documento

| 49

DATA DICTIONARY

EXEMPLOS
Criao do dilogo de manuteno

Ttulo del documento

| 50

DATA DICTIONARY

EXEMPLOS
Criao da transao para o dilogo de manuteno

Ttulo del documento

| 51

DATA DICTIONARY

EXEMPLOS
Criao da transao para o dilogo de manuteno

Ttulo del documento

| 52

DATA DICTIONARY

AJUDA DE PESQUISA
Criando ajuda de pesquisa

Ttulo del documento

| 53

DATA DICTIONARY

AJUDA DE PESQUISA
Definindo a fonte e caractersticas

Ttulo del documento

| 54

DATA DICTIONARY

AJUDA DE PESQUISA
Utilizando a ajuda de pesquisa (F4)

Ttulo del documento

| 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

Ttulo del documento

| 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

Criar um dilogo de manuteno com as seguintes caractersticas:


Function Group: ZCURSOFG##
Utilizar a transao SM30 para manuteno desta tabela.

Ttulo del 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

Ttulo del documento

| 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

Ttulo del documento

| 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.

Ttulo del documento

| 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>.

Ttulo del documento

| 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.

Ttulo del documento

| 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.

Ttulo del documento

| 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.

Ttulo del documento

| 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.

Ttulo del documento

| 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

Ttulo del documento

| 67

EXERCCIOS EXTRAS

EXERCCIO IV

Ttulo del documento

| 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

Ttulo del documento

| 69

EXERCCIOS EXTRAS

EXERCCIO V

Ttulo del documento

| 70

TRANSPORTE

ORDENS DE TRANSPORTE

Principais tipos de ordens de transporte

Transaes SE09 ou SE10


Ttulo del documento

| 71

TRANSPORTE

ORDENS DE TRANSPORTE
Telas iniciais SE09 ou SE10

Ttulo del documento

| 72

TRANSPORTE

ORDENS DE TRANSPORTE
Localizando as ordens j criadas

Ttulo del documento

| 73

TRANSPORTE

ORDENS DE TRANSPORTE
Lista das ordens de transporte

Ttulo del documento

| 74

TRANSPORTE

ORDENS DE TRANSPORTE
Histricos: ao e transporte

Ir para
Log de ao
Log de transporte

Ttulo del documento

| 75

TRANSPORTE

ORDENS DE TRANSPORTE
Caractersticas das ordens de transporte

Ttulo del documento

| 76

TRANSPORTE

ORDENS DE TRANSPORTE
Lista de objetos das ordens/tarefas

Ttulo del documento

| 77

TRANSPORTE

ORDENS DE TRANSPORTE
Documentao da ordem de transporte

Ttulo del documento

| 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

Detalhes de uma linha

Tela 1000

Ttulo del documento

| 79

RELATRIOS

PROGRAMAO DE REPORTS
Processo geral de programao de relatrios
Nome e Descrio do Programa

Declarao de Variveis

Montagem da Tela de parmetros do usurio

Montagem e Impresso do Relatrio ou outra lgica

Ttulo del documento

| 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)

Report: No. de Linhas, Colunas e Classe de Mensagem:


No Standard Page Heading
Line-Size
Line-Count
Message - ID

Ttulo del documento

| 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

Ttulo del documento

| 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

Ttulo del documento

| 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.

Ttulo del documento

| 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

Ttulo del documento

| 86

RELATRIOS

EXERCCIOS
Exerccio 1

Ttulo del documento

| 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

Ttulo del documento

| 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)

Ttulo del documento

| 90

PERFORMANCE

TPICOS

Pensando em performance
Acesso ao banco de dados
Manipulao dos dados
Caso particular de migraes

Ttulo del documento

| 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

Ttulo 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 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.

Ttulo del documento

| 93

PERFORMANCE

SEMPRE MELHORAR A PERFORMANCE?


Boa performance apenas uma das dimenses de
qualidade de um desenvolvimento.
Outras dimenses podem ser conflitantes com a otimizao
da performance:
Manutenabilidade
Finalidade
Usabilidade
Robustez
Consistncia
Confiabilidade
A soluo de compromisso entre estas dimenses
determina o ponto adequado para a otimizao da
performance do desenvolvimento.
Levar em conta o uso do desenvolvimento e o ganho real com a
melhoria de performance para o negcio.
Ttulo del documento

| 94

ACESSO AO BANCO DE DADOS

HIERARQUIA DE ACESSO
SELECT campos FROM tabela(s) WHERE condies

Ttulo del documento

| 95

ARQUITETURA SAP

ARQUITETURA CLIENTE SERVIDOR

O banco
nico

Rede e
estaes

Comunicao Banco
x Aplicao

Limitao nos
servidores de
aplicao

Ttulo del documento

| 96

ACESSO AO BANCO DE DADOS

COMO OCORRE O ACESSO


Quando um programa realiza uma requisio de dado, o
seguinte caminho seguido (simplificado):

1.
2.
3.
4.
5.

O servidor de aplicao determina se o dado est no


buffer local e pode ser lido (tabelas buferizadas).
O servidor do banco de dados verifica se a consulta tem
uma estratgia j definida (cache de estratgias SQL).
Realiza a consulta com a estratgia encontrada.
O otimizador determina a melhor estratgia de consulta,
levando em conta as estatsticas disponveis.
Caches de dados do banco de dados so considerados
para as consultas.
Acesso aos dados em arquivos do banco de dado com a
melhor estratgia (leitura completa ou via ndice)

Ttulo del documento

| 97

ACESSO AO BANCO DE DADOS

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.

Ttulo del documento

| 98

ACESSO AO BANCO DE DADOS

OTIMIZADOR DO BANCO DE DADOS


O otimizador define a estratgia de acesso e guarda esta
estratgia em um cache para utilizao futura.
As estratgias consideradas:
Em uma nica tabela:
Leitura completa (full scan)
Leitura direta por ndice (index unique scan)
Leitura com apoio de ndices (index range scan)
Em vrias tabelas:
Seqncia de acesso entre as tabelas (Join)
A escolha definida pelo custo estimado (quantidade de
acessos e dados transferidos), baseado nas estatsticas
disponveis.

Ttulo del documento

| 99

ACESSO AO BANCO DE DADOS

REDAO DAS CONSULTAS


A ordem que as tabelas aparecem em uma consulta com "join",
a ordem dos campos consultados e a ordem dos campos na
clusula "where" no afetam a estratgia do otimizador, que
preparado para procurar a melhor opo da ordem de consulta.
Porm, expresses iguais permitem evitar o acionamento do
otimizador e ganhar este tempo de anlise.
Recomenda-se utilizar a ordem que os elementos aparecem no
banco de dados como padronizao das expresses de acesso
ao banco.
A utilizao de HINTS tambm evita a utilizao do otimizador,
mas neste caso, podendo fazer uma consulta por uma
estratgia pior. Evite usar, a menos que for necessrio.

Ttulo del documento

| 100

ACESSO AO BANCO DE DADOS

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)

Ttulo del documento

| 101

ACESSO AO BANCO DE DADOS

RECOMENDAES GERAIS

Diminua os valores possveis (WHERE)


Mantenha o custo da pesquisa pequeno. Ateno

estratgia de acesso: ndices podem ter grande impacto


nas leituras, porm degradam as atualizaes

Diminua a quantidade de dados transferida entre o


banco de dados e o servidor de aplicao

Diminua o nmero de acessos ao banco de dados

Ttulo del documento

| 102

MANIPULAO DOS DADOS

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.

Ttulo del documento

| 103

MANIPULAO DOS DADOS

RECOMENDAES GERAIS

Escolha o tipo adequado de tabela interna, utilize

SORTED e HASHED se necessrio


Utilize binary search em tabelas standard grandes
Libere a memria de tabelas internas aps o uso
(REFRESH)
Ordene tabelas internas apenas pelos campos
necessrios
Transfira apenas os campos necessrios
Utilize ponteiros para manipular grandes tabelas
Evite converses desnecessrias, indique os valores no
formato das variveis

Ttulo del documento

| 104

PERFORMANCE

PODE SER DEMAIS?


Cuidado com o excesso de otimizao!
A anlise e otimizao de performance importantssima e
falhas podem impactar a utilizao do sistema, porm sempre
considere as demais dimenses da qualidade
Ganhos de otimizao encontram-se na escala de segundos,
minutos e at mesmo horas, para programas longos
Capacidade de manuteno encontra-se na escala de horas,
dias e at mesmo meses
Nosso foco atender o negcio, no ter apenas os
programas mais performticos!

Ttulo del documento

| 105

PERFORMANCE

MIGRAO DE DADOS
Tipos de programas de carga

Direct input
BAPI
iDoc
Call transaction
Pasta batch input

Melhor
performance

Estes mtodos podem ser utilizados via transao LSMW


ou diretamente a partir de programao

Ttulo del documento

| 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

Ttulo del documento

| 107

PERFORMANCE

READ TABLE
READ TABLE <ITAB>
[INTO <WA>]
[WITH KEY <CAMPO> = <VALOR>]
[INDEX n]
[BINARY SEARCH]
[TRANSPORTING NO FIELDS]

Ttulo del documento

| 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

O que so sesses BDC


Batch Data Communication
Uso da transao SM35
Uso da transao SHDB

Relao com Call transaction

Ttulo del documento

| 110

BDC SESSION

TABELA BDC
A tabela BDC uma tabela interna com estrutura BDCDATA.
Campo

Tipo

Descrio

program

Char(40) Nome do programa da transao

dynpro

Numc(4) Nmero da tela da transao

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 Sesso Batch Input ou a


instruo call transaction

Como obter as informaes nas telas SAP


Ttulo del documento

| 111

BDC SESSION

PREENCHENDO A TABELA BDC


REPORTzxxxxxxx.
DATA:BEGINOFtbdcOCCURS100.
INCLUDESTRUCTUREbdcdata.
DATA:ENDOFtbdc.
*Inciodoprogramaprincipal
MOVEsapmf02kTOtbdc-program.
MOVE0100TOtbdc-dynpro.
MOVExTOtbdc-dynbegin.
APPENDtbdc.
MOVErf02k-lifnrTOtbdc-fnam.
MOVE0010010TOtbdc-fval.
APPENDtbdc.
MOVErf02k-ekorgTOtbdc-fnam.
MOVEcntlTOtbdc-fval.
APPENDtbdc.

Ttulo del documento

| 112

BDC SESSION

TRANSAO SHDB

Ttulo del documento

| 113

BDC SESSION

TRANSAO SHDB

Ttulo del documento

| 114

BDC SESSION

TRANSAO SHDB

Ttulo del documento

| 115

BDC SESSION

TRANSAO SHDB

Ttulo del documento

| 116

BDC SESSION

UTILIZANDO A TABELA BDC


Processando como pasta batch input
Uso da transao SM35
Funes para criao da pasta:
BDC_OPEN_GROUP
Abre a sesso de BDC e necessita ser chamada antes de qualquer
processamento.
BDC_INSERT
Chamada para cada transao no processamento Batch.
BDC_CLOSE_GROUP
Chamada aps todo processamento para que a pasta de
processamento Batch seja criada.

Ttulo del documento

| 117

BDC SESSION

CRIANDO A PASTA BATCH INPUT


Funo BDC_OPEN_GROUP
Os seguintes parmetros so passados para a funo:
CLIENT - Mandante do SAP que ser processada a sesso
GROUP - Nome para a pasta de Batch input (no precisa ser nico)
HOLDDATE - Suspende o processamento da pasta de Batch input
at a data especificada
KEEP - Mantm a pasta de Batch Input aps o processamento
USER - Nome de usurio que executar o Batch Input.

Ttulo del documento

| 118

BDC SESSION

CRIANDO A PASTA BATCH INPUT


Funo BDC_INSERT
Os seguintes parmetros so passados para a funo:
TCODE - Cdigo da transao na qual ser executada a tabela BDC
DYNPROTAB - Nome da tabela interna utilizada para gerar a pasta
de Batch (tabela BDC)
Funo BDC_CLOSE_GROUP

No existem parmetros a serem passados para esta funo.


Pasta criada

Ttulo del documento

| 119

BDC SESSION

SM35

Ttulo del documento

| 120

BDC SESSION

UTILIZANDO A TABELA BDC


Instruo 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 so:
A Mostra todas as telas
E Mostra apenas telas com erros
N No mostra as telas
P Em background e depurvel (break-point)

Alm do SY-SUBRC, na tabela t_msg teremos todas as


mensagens de retorno da transao (sucesso, alertas e erros)
Ttulo del documento

| 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

Ttulo del documento

| 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

Ttulo del documento

| 123

ON LINE

PROGRAMAO 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.

Ttulo del documento

| 124

ON LINE

PROGRAMAO ON LINE
Tela

PBO Process Before Output


Exibio (campos)
PAI Process After Input

A execuo de cada tela dividida em dois eventos:


PBO execuo antes da exibio
PAI execuo aps a exibio

Ttulo del documento

| 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

Ttulo del documento

| 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.

Ttulo del documento

| 127

ON LINE

PROGRAMAO ON LINE
Processo geral de programao on line
Nome e Descrio do Programa e
declarao das variveis

Definio das telas e campos

Definio dos mdulos PBO e PAI

Programao da lgica (encapsulada em subrotinas)

TOP

Telas

Mdulos

Forms

Ttulo del documento

| 128

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 129

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 130

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 131

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 132

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 133

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 134

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 135

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 136

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 137

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 138

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 139

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 140

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 141

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 142

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 143

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 144

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 145

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 146

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 147

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 148

ON LINE

PROGRAMAO ON LINE
Exemplo de Programa Online

Ttulo del documento

| 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.

Ttulo del documento

| 150

ON LINE

EXERCCIO 1

Ttulo del documento

| 151

ON LINE

EXERCCIO 2
Criar um programa online para simular uma calculadora no
SAP, com o nome ZEXER_ON_02##.

Ttulo del documento

| 152

ON LINE

USO DE TABLESTRIP
Para incluir o tablestrip na tela, utilizar o assistente.

Ttulo del documento

| 153

ON LINE

USO DE TABLESTRIP

Ttulo del documento

| 154

ON LINE

USO DE TABLESTRIP

Ttulo del documento

| 155

ON LINE

USO DE TABLESTRIP

Ttulo del documento

| 156

ON LINE

USO DE TABLESTRIP

Ttulo del documento

| 157

ON LINE

USO DE TABLESTRIP

Ttulo del documento

| 158

ON LINE

USO DE TABLESTRIP

Ttulo del documento

| 159

ON LINE

USO DE TABLESTRIP

Ttulo del documento

| 160

ON LINE

USO DE TABLESTRIP

Ttulo del documento

| 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.

Ttulo del documento

| 162

ON LINE

TABLE CONTROL

Ttulo del documento

| 163

ON LINE

TABLE CONTROL

Ttulo del documento

| 164

ON LINE

TABLE CONTROL

Ttulo del documento

| 165

ON LINE

TABLE CONTROL

Ttulo del documento

| 166

ON LINE

TABLE CONTROL

Ttulo del documento

| 167

ON LINE

TABLE CONTROL

Ttulo del documento

| 168

ON LINE

TABLE CONTROL

Ttulo del documento

| 169

ON LINE

TABLE CONTROL

Ttulo del documento

| 170

ON LINE

TABLE CONTROL

Ttulo del documento

| 171

ON LINE

TABLE CONTROL

Ttulo del documento

| 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)

Ttulo del documento

| 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.

Ttulo del documento

| 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

Ttulo del documento

| 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

Ttulo del documento

| 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.

A estrutura ITCPO define parmetros de impresso: n cpias,


Impressora, sada imediata, etc.
Ttulo del documento

| 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)

Ttulo del documento

| 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.

Ttulo del documento

| 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

Ttulo del documento

| 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

Ttulo del documento

| 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)

Ttulo del documento

| 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)

Ttulo del documento

| 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.

Ttulo del documento

| 184

SAPSCRIPT

PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71

Ttulo del documento

| 185

SAPSCRIPT

PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71

Ttulo del documento

| 186

SAPSCRIPT

PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71

Ttulo del documento

| 187

SAPSCRIPT

PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71

Ttulo del documento

| 188

SAPSCRIPT

PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71

Ttulo del documento

| 189

SAPSCRIPT

PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71

Ttulo del documento

| 190

SAPSCRIPT

PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71

Utilizao: similar a HTML: <B>Texto</>


Ttulo del documento

| 191

SAPSCRIPT

PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71

Ttulo del documento

| 192

SAPSCRIPT

PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71

Ttulo del documento

| 193

SAPSCRIPT

PROGRAMA DE POVOAMENTO
Exemplo SAPSCRIPT SE71

Ttulo del documento

| 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

Ttulo del documento

| 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

Ttulo del documento

| 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

Ttulo del documento

| 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

O nome da funo gerado


dinamicamente por ambiente
Existe outra funo para encontrar o
nome funo do formulrio no
ambiente
Ttulo del documento

| 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.

Ttulo del documento

| 200

SMARTFORMS

SAP SMARTFORMS 1 TELA

Na transao SMARTFORMS possvel criar:


Formulrio: a interface de sada dos dados, onde
criado o layout do formulrio.
Estilo: um conjunto de pargrafos e formatos de
caracteres que sero associados ao formulrio.
Mdulo de texto: serve para se armazenar textos padres
que podem ser utilizados em mais de um formulrio.

Ttulo del documento

| 201

SMARTFORMS

SMARTFORM BUILDER

Menu de
navegao

Quadro de
Manuteno

Form
Painter

Ttulo del documento

| 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.

Ttulo del documento

| 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.

Ttulo del documento

| 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.

Ttulo del documento

| 205

SMARTFORMS

EXEMPLO

Ttulo del documento

| 206

SMARTFORMS

EXEMPLO

Ttulo del documento

| 207

SMARTFORMS

EXEMPLO

Ttulo del documento

| 208

SMARTFORMS

EXEMPLO

Ttulo del documento

| 209

SMARTFORMS

EXEMPLO

Ttulo del documento

| 210

SMARTFORMS

EXEMPLO

Ttulo del documento

| 211

SMARTFORMS

EXEMPLO

Ttulo del documento

| 212

SMARTFORMS

EXEMPLO

Ttulo del documento

| 213

SMARTFORMS

EXEMPLO

Ttulo del documento

| 214

SMARTFORMS

EXEMPLO

Opes de sada: definir linha e coluna


Ttulo del documento

| 215

SMARTFORMS

EXEMPLO

Ttulo del documento

| 216

SMARTFORMS

EXEMPLO

Ttulo del documento

| 217

SMARTFORMS

EXEMPLO

Ttulo del documento

| 218

SMARTFORMS

EXEMPLO

Ttulo del documento

| 219

SMARTFORMS

EXEMPLO

Ttulo del documento

| 220

SMARTFORMS

EXEMPLO

Ttulo del documento

| 221

SMARTFORMS

EXEMPLO

Ttulo del documento

| 222

SMARTFORMS

EXEMPLO

Ttulo del documento

| 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

Ttulo del documento

| 224