Você está na página 1de 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)

Mandt Chave Valor

100 A 1
100 B 2
100 C 3
Tabela dependente de mandante
200 A 2
=
Primeira chave o mandante 200 B 3
200 D 4
300 C 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 A 1

100 C 3

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

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 Data elem. Type Length Short text _


MANDT MANDT CLNT 3 Mandante
HKONT HKONT CHAR 10 Conta do Razo
BELNR BELNR_D CHAR 10 N documento contbil
GJAHR GJAHR NUMC 4 Exerccio
BKTXT BKTXT CHAR 25 Texto de cabealho de doc.
BLART BLART CHAR 2 Tipo de documento
BLDAT BLDAT DATS 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 Comentrios
ltima atualizao (padro cliente)
Descrio
Histrico de Modificaes

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. O servidor de aplicao determina se o dado est no


buffer local e pode ser lido (tabelas buferizadas).
2. 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.
3. O otimizador determina a melhor estratgia de consulta,
levando em conta as estatsticas disponveis.
4. Caches de dados do banco de dados so considerados
para as consultas.
5. 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 Melhor
Call transaction performance
Pasta batch input
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
Mdulos PBO
Screen 1 tela 1

Mdulos PAI tela


1

GUI-01

Mdulos PBO
Programa
Principal Screen 2 tela 2

Mdulos PAI tela


2

GUI-02

Mdulos PBO
Screen 3 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 TOP


declarao das variveis

Definio das telas e campos


Telas

Definio dos mdulos PBO e PAI Mdulos

Programao da lgica (encapsulada em subrotinas) 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 (SFLIGHT-
FLDATE).
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 Vo Data
LH 0400 28.02.1995
LH 0454 17.11.1995
LH 9981 21.12.2002

Ttulo del documento | 198


SMARTFORMS
O QUE ?

Nova tecnologia para substituir o Recuperar o nome


Sapscript dinamicamente

Transao SMARTFORMS Funo do formulrio

Impresso atravs de funo gerada Dados

A funo contm todo o


Formulrio Smartform
processamento do formulrio

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 Quadro de Form


navegao Manuteno 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