You are on page 1of 260

TREINAMENTO ABAP

TREINAMENTO
ABAP
Wander Rodrigues
Claudia Oliveira

Wander Rodrigues / Claudia Oliveira v09

Pgina 1 de 260

Customer
Classe
Entrando
Arquitetura.......................................................................................62
Principais
Tabelas
SELECT............................................................................................78
Comando
IF...................................................................................................91
APPEND...........................................................................................94
Includes.........................................................................................104
Eventos...........................................................................................99
Domnios........................................................................................116
Lista
ALV
PBO
eBsica....................................................................................172
Conceitos
Telas
SET/GET
PAI.......................................................................................174
de
Transparentes........................................................................71
no
MOVE................................................................................84
caractersticas....................................................................58
funes..............................................................................65
desenvolvimento.................................................................59
Exits...............................................................................196
de
ECC
Seleo
PARAMETER
Bsicos...................................................................173
(R/3)......................................................................63
(standard).......................................................67
ID.........................................................113
TREINAMENTO
ABAP
Requests..........................................................................................59
A
Tabelas
WHERE............................................................................................80
Comando
CASE...............................................................................................92
COLLECT..........................................................................................94
Opes
Elementos
Lista
Definio
User
tela
Exits.......................................................................................197
Interativa................................................................................172
principal
de
internas................................................................................71
de
MOVE-CORRESPONDING......................................................84
de
Impresso.......................................................................104
Telas
dados.........................................................................116
do
(screen
SAP
R/3.................................................................63
painter)....................................................177

Demais Telas...........................................................................67
SUBMIT................................................................................113
Estruturas........................................................................................71
ORDER
Comando
DO..................................................................................................92
Tabelas..........................................................................................116
Botes
Field
Exits......................................................................................198
de
BY........................................................................................81
WRITE...............................................................................85
Funo............................................................................177
SORT...............................................................................................95
Mensagens..............................................................................67
EXPORT/IMPORT....................................................................113
Tipos...............................................................................................72
FOR
Converses
WHILE.............................................................................................92
LOOP...............................................................................................95
Estruturas......................................................................................118
PF-Status
Table
ALL
enhancements........................................................................199
ENTRIES.............................................................................81
e
entre
Titlebar
campos
(menuepainter)...................................................177
estruturas.................................................87
Listas..............................................................................................70
PERFORM..............................................................................114
Variveis..........................................................................................72
UP
Clculos
CHECK.............................................................................................93
READ...............................................................................................96
Ajudas
Table
Text
TO
enhancements..........................................................................199
controls.................................................................................179
n
de
ROWS.................................................................................82
de
pesquisa3........................................................................118
valores............................................................................88

LEAVE...................................................................................114
Ranges............................................................................................73
INNER
Sub-campos
CONTINUE.......................................................................................93
INSERT/MODIFY................................................................................96
Views............................................................................................118
Tabstrip
Frmulas,
JOIN......................................................................................82
control...............................................................................179
requerimentos,
(strings)........................................................................88
controle de cpias (SD, MM, LIS, SOP)..........199
Constantes.......................................................................................74
OUTER
Clculos
STOP...............................................................................................93
DELETE............................................................................................97
ndice............................................................................................118
BTE
- Business
JOIN.....................................................................................83
com datas............................................................................89
Transaction Events (FI)...............................................200
Opes para
Operaes
EXIT................................................................................................93
DESCRIBE
Contedo
de
TABLE..............................................................................97
com
tela
tabelas........................................................................119
cadeias
de seleo...............................................................74
de caracteres..................................................89
Elementos
Nveis
de Controle
de texto...........................................................................76
dentro de um LOOP.................................................97
Inicializao dos objetos....................................................................76
Variveis de sistema (estrutura SYST)..................................................76

Dicionrio de
Introduo
ao dados
SAP.............................................................................................................6
- Criao de tabelas......................................................................123
Conceitos bsicos............................................................................................................58
SM30.............................................................................................................................126
OBJETOS DE
Dicionrio
de dados
DESENVOLVIMENTO..........................................................................59
- Criao de estruturas..................................................................135
Mdulos...........................................................................................................................60
Dicionrio
de dados - Criao de Categorias de tabela.................................................138
Profissionais SAP............................................................................................................62
EVENTOS.....................................................................................................................141
Entrando
Alguns
eventos
no ECC.............................................................................................................63
(verificar o help dos commandos).......................................................143
CONCEITOS
Tabelas
Internas.............................................................................................................145
BSICOS DE ABAP...............................................................................64
EDITORtabelas
Usando
ABAP...............................................................................................................65
internas.................................................................................................146
Sintaxe.............................................................................................................................66
Escolhendo
um tipo de tabela........................................................................................147
INTERAO
Declarando
tabelas
COMinternas...........................................................................................148
USURIO.....................................................................................67
DEFINIES DE
OPERAES
COM
OBJETOS
TABELAS
NOINTERNAS..............................................................149
PROGRAMA...........................................................71
ABAP OPEN SQL...........................................................................................................78
OPERAES
COM MAIS DE UMA TABELA INTERNA.......................................151
ATRIBUIO
Grupo
de Funes..........................................................................................................152
DE VALORES........................................................................................84
COMANDOS DE CONTROLE E EXPRESSES LGICAS......................................91
Funo...........................................................................................................................156
OPERAES
Ajuda
para pesquisa.......................................................................................................168
COM TABELAS INTERNAS................................................................94
MODULARIZAO
Objetos
de bloqueio.......................................................................................................169
DOS PROGRAMAS...................................................................99
Sub-rotinas.....................................................................................................................103
Vises............................................................................................................................170
PROGRAMAS..............................................................................................................105
Listas
X ALV.................................................................................................................171
Programas Comando DATA.......................................................................................108
LISTAS..........................................................................................................................172
Programas Comando WRITE.....................................................................................109
ALV173
Programas
Module
Pool..................................................................................................................174
- Parmetros de seleo - Parameter............................................................110
Programas - Parmetros de Seleo Select-Options...................................................111
Transao.......................................................................................................................183
VARIANTES.................................................................................................................112
Debug............................................................................................................................185
VINCULANDO
COMO
ATIVAR PROGRAMAS...................................................................................113
O MODO DEBUGGING..................................................................186
DICIONRIO
PROCURA
DEDE
CAMPOS
DADOS..........................................................................................115
EM TABELAS...................................................................195
Dicionrio de dados - Criao de domnios..................................................................120
Exits...............................................................................................................................196
MODIFICAES EM PROGRAMAS STANDARD.............................................196
- Field exit Utilizada sobre um determinado elemento de dados, a exit de campo ser
executada, por padro, em todos os campos de tela que fizerem referncia ao elemento
de dados utilizado..........................................................................................................200
- User exit o espao, dentro do programa standard, em que podemos inserir um
cdigo sem abrir o objeto e perder sua garantia............................................................205
Badi 210
Enhancement.................................................................................................................213
Sapscript........................................................................................................................217
Estrutura de Chamada e Controle do SAPSCRIPT.......................................................218
O formulrio..................................................................................................................219
Partes de um formulrio................................................................................................220
Smartforms....................................................................................................................233
Smart Form Builder.......................................................................................................234
BAPI / Batch Input........................................................................................................236
Wander Rodrigues / Claudia Oliveira v09

Pgina 2 de 260

O que SQL?................................................................................251
Execuo
em background.................................................................247
TREINAMENTO ABAP
Escalonamento
SELECT
- Selecionando
/ Acompanhamento...................................................247
registros...................................................252
INSERT Inserindo registros em uma tabela...............................254
UPDATE Atualizando registros...................................................255
DELETE Excluindo registros.......................................................256

Batchinput......................................................................................................................239
SHDB............................................................................................................................241
Batch Input/Call transaction..........................................................................................242
Gerao do SHDB.........................................................................................................243
JOBs..............................................................................................................................247
Performance...................................................................................................................248
SM50 - Process Overview.............................................................................................250

Wander Rodrigues / Claudia Oliveira v09

Pgina 3 de 260

TREINAMENTO ABAP

Introduo ao SAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 4 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 5 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 6 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 7 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 8 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 9 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 10 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 11 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 12 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 13 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 14 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 15 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 16 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 17 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 18 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 19 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 20 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 21 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 22 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 23 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 24 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 25 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 26 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 27 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 28 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 29 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 30 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 31 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 32 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 33 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 34 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 35 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 36 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 37 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 38 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 39 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 40 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 41 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 42 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 43 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 44 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 45 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 46 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 47 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 48 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 49 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 50 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 51 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 52 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 53 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 54 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 55 de 260

TREINAMENTO ABAP

Conceitos bsicos
Principais caractersticas
O R/3 um sistema de gesto empresarial (ERP) que integra as diversas
reas da empresa (contabilidade, vendas, distribuio, controle de materiais,
manuteno, recursos humanos, produo, etc). O sistema R/3 foi
desenvolvido pela empresa alem SAP.
INTEGRAO
Elementos organizacionais, dados e processos so integrados
Eliminao de dados redundantes
Integridade dos dados
Banco de Dados comum
FLEXIBILIDADE
SAP R/3 permite que seus usurios parametrizem os diferentes
mdulos de negcios para adaptar o sistema Empresa
SAP R/3 permite configurar telas, processamento e relatrios
Permite interface com softwares externos (Mastersaf)
SISTEMA ABERTO
Possibilita fazer interfaces com outros softwares internos da empresa.
Possibilita interfaces com aplicaes especializadas como Rdio
Freqncia, leitura de cdigo de barras, etc

Integrao com a Internet

PROCESSAMENTO INTERATIVO
Vrios usurios podem alterar dados simultaneamente. O SAP R/3
controla estas alteraes.
Os relatrios e outras transaes de negcios so atualizados em
tempo real.
O banco de dados gerenciado pelo SAP R/3 para garantir a
constncia dos dados, assim como as necessidades do negcio.
USO MUNDIAL
Suporta uso em vrias lnguas
Permite transaes em diversas moedas
Possui funcionalidades especficas para cada pas como: impostos,
relatrios governamentais (balano), etc
Possibilita utilizao multi-companhias .

Wander Rodrigues / Claudia Oliveira v09

Pgina 56 de 260

TREINAMENTO ABAP

OBJETOS DE DESENVOLVIMENTO
Classe de desenvolvimento
Todos os objetos so agrupados em classes.
Serve para organiz-los por assunto/tipo e facilita a busca.
A classe de desenvolvimento solicitada no momento da sua gravao.
Se a gravao for local, dever ser informado $TMP, caso contrrio, uma
classe que j foi definida via Object Browser (transao SE80) deve ser
informada.

Requests
Como as empresas que possuem o R/3, tem necessariamente no mnimo
duas mquinas (uma para desenvolvimento e outra para produo e,
eventualmente, outra para homologao), para se manter a integridade dos
objetos, foi criado o mecanismo de Requests.
Quando uma analista/programador inicia uma modificao em um objeto
no local (classe de desenvolvimento diferente de $TMP), necessrio
associar esta manuteno a uma request.
Se outro programador tentar alterar o mesmo objeto, o sistema emite aviso
informando que o programa j est sendo alterado.
Nunca se deve fazer alteraes de objetos em outro ambiente que no seja
o de desenvolvimento, para no perdermos esta integridade, ou seja, para
no ter uma verso mais atualizada em produo do que em
desenvolvimento ou no ambiente de qualidade. Neste caso, num prximo
transporte do objeto, a verso mais atualizada seria perdida.
Para atualizar os demais ambientes, temos que liberar e transportar as
requests.
A maioria dos objetos da parametrizao e desenvolvimentos so
dependentes de mandante , portanto, necessitam estar associados a
requests para serem transportados.
importante no associar a uma s requets diversos objetos com aplicaes
diferentes, pois na hora do transporte teriam de ser desmembrados.
A ferramenta que mostra as requests que o usurio tem em aberto, bem
como possibilita sua liberao, o Customizing Organizer - transao SE10
ou SE09 (somente para ABAP).

Wander Rodrigues / Claudia Oliveira v09

Pgina 57 de 260

TREINAMENTO ABAP

Mdulos

FI

SD
MM

CO

PP

AM

R/3

PS

QM
PM

WF
HR

IS

SD Vendas e Distribuio - Vendas / Faturamento / Expedio /


Transportes / Preos / Descontos / Impostos
MM Gerenciamento de Materiais - Reviso e centralizao dos
Cadastros / Estoques / Compras / Planejamento Materiais / Recebimento
PP Planejamento da Produo - Planejamento de Produo /
Capacidade / Cho de Fbrica / Controle de Processo / Custeio do Produto
QM Gerenciamento da Qualidade - Plano de Testes / Especificaes /
Aferies / Estatstica / Documentao
PM Gerenciamento da Manuteno - Manuteno ( Fabril e Frota )
Preventiva / Corretiva / Anlise de Problemas / Alocao de Recursos
FI Contabilidade Financeira - Contas a Pagar / Receber /
Contabilidade / Plano de Contas / Tesouraria
CO Controladoria - Controladoria / Oramentos / Custos Centros de
Custos / Custeio do Produto
AM Ativo Fixo - Controle de Ativo Fixo
WF Workflow
IS Industry Solution
Wander Rodrigues / Claudia Oliveira v09

Pgina 58 de 260

TREINAMENTO ABAP

PS Gerenciamento de projetos - Controle de Projetos


HR Recursos Humanos - Plano de Treinamento / Avaliao de
Desempenho / Evoluo de Carreira / Recrutamento / Administrao de
Tempos/ Benefcios/ Remunerao/ Folha de Pagamentos

Wander Rodrigues / Claudia Oliveira v09

Pgina 59 de 260

TREINAMENTO ABAP

Profissionais SAP
Analista Basis profissional responsvel pela estrutura do sistema,
envolvendo controle de hardware, instalao do sistema R/3, configurao
de perfis de usurio, etc).
Analista Funcional profissional responsvel pela configurao do sistema
e adaptao do R/3 realidade da empresa. O analista funcional o elo
entre o usurio final e o desenvolvedor ABAP. Cada mdulo tem seu prprio
analista funcional ( o mdulo de SD tem um ou mais analistas funcionais de
SD, o mdulo MM tem um ou mais analistas funcionais MM, etc).
Analista desenvolvedor ABAP profissional responsvel pelas melhorias
e manutenes no sistema R/3, criando principalmente programas que
complementam as funcionalidades do sistema original.

Arquitetura
O sistema R/3 instalado principalmente nos ambientes UNIX ou Windows
NT, ambos com front end WINDOWS.
O sistema R/3 exige no mnimo duas mquinas, uma para desenvolvimento
de funcionalidades e outra onde as funcionalidades so utilizadas
(Produo). Os programas e outras funcionalidades so transportadas de
uma mquina para outra atravs de requests.
Arquitetura Client-Server R/3 (trs camadas):

Wander Rodrigues / Claudia Oliveira v09

Pgina 60 de 260

TREINAMENTO ABAP

Entrando no ECC
Entrando no ECC (R/3)

Mandante onde toda e qualquer


transao acontecer

Campo que define o acesso do usurio ao R/3.


Dependendo da funo, algumas transaes
no estaro disponveis.

Idioma no qual
se estar trabalhando.

A tela principal do SAP R/3

Ente
r

Barra
de
ttulo

Opo para
Funes
pessoais

cones
de
funo
Opo para
customizae
s
pessoais

Campo de
comando

Nmero
da
sesso
Barra
principal
do menu

Wander Rodrigues / Claudia Oliveira v09

Identifica
o
do sistema

Barra
de
status

Pgina 61 de 260

TREINAMENTO ABAP

CONCEITOS BSICOS DE ABAP


A linguagem de desenvolvimento do R/3 chama-se ABAP (Advanced Business
Application Programming). A linguagem ABAP foi desenvolvida exclusivamente para
o desenvolvimento de programas que compe o R/3. O ABAP uma linguagem
interpretvel capaz de reconhecer e traduzir comandos SQL, por isso o R/3 pode
ser implementado com qualquer banco de dados relacional (ORACLE, INFORMIX,
SYBASE, etc...).
Qualquer objeto criado, deve ter seu nome iniciando com Z ou Y. Este o padro
adotado pela SAP, para diferenciar os objetos criados pelo cliente dos objetos
standard.

Wander Rodrigues / Claudia Oliveira v09

Pgina 62 de 260

TREINAMENTO ABAP

EDITOR ABAP
Principais funes
CHECANDO A SINTAXE DO PROGRAMA
O compilador pode ser acionado atravs do cone ou do comando Check ,
sua atuao interrompida a cada erro, e dependendo do erro, este pode
ser corrigido automaticamente pelo sistema, caso a ao de Corrigir
esteja correta e seja requerida.

VERIFICANDO A LISTA DE UTILIZAES


Informa todos os objetos onde o referido programa utilizado.
Esta opo, de lista de utilizaes, se aplica a maioria dos
objetos de desenvolvimento.
EXECUTANDO O DOWNLOAD
A operao de download solicitada atravs do comando PC ( Download )
ou pode ser solicitada atravs da rea de menu, pela opo Utilities ->
Download.

Est conduta ser tomada quando se deseja fazer a gravao


do programa no seu prprio disco, caso tenha necessidade.
EXECUTANDO O UPLOAD
A operao de upload solicitada atravs do comando PCF ( Upload ) ou
pode ser solicitada atravs da rea de menu, pela opo Utilities -> Upload.

Est conduta ser tomada quando se deseja restaurar o


programa com base na gravao existente no seu prprio disco.
Alm das funes descritas acima, editor abap tambm nos permite
RENOMEAR, COPIAR e ELIMINAR programas.

Wander Rodrigues / Claudia Oliveira v09

Pgina 63 de 260

TREINAMENTO ABAP

Sintaxe
O ABAP utiliza :
Ponto - . no final de cada declarao.
Barra - / - para indicar nova linha.
Dois pontos e vrgulas - : - para aplicar encadear um mesmo comando.
Os comandos podem ocupar mais de uma linha. Somente quando for
encontrado o ponto que ser considerado o final do comando.
Ex:

WRITE: /001
/001
060
/030
/001

sy-uline,
sy-datum,
sy-uzeit,
text-001,
sy-uline.

COMENTRIOS
Para inserir comentrios no programa podemos usar :
* - astersco - quando o comentrio comea na primeira coluna
aspas duplas - quando o comentrio comea em qualquer
coluna

Wander Rodrigues / Claudia Oliveira v09

Pgina 64 de 260

TREINAMENTO ABAP

INTERAO COM USURIO


Existem, basicamente, quatro formas de interao do sistema com o usurio, so
elas:

Telas de Seleo (standard)


So telas standard, onde informamos os parmetros de seleo necessrios
e a forma de apresentao desejada, sem a necessidade de codificao das
suas funes.
Adiante em DEFINIES DE OBJETOS NO PROGRAMA / OPES PARA TELA
DE SELEO, poderemos observar como definimos este tipo de tela.

Demais Telas
Telas criadas utilizando o screen painter, ou mesmo declaradas
dentro do programa, de acordo com a necessidade do cliente.
Mensagens
As mensagens podem ser definidas:
Dentro do programa:
No pode ser reutilizada em outro programa;
Sempre h a necessidade de traduzir a mensagem.
Fora do programa:
Pode-se utilizar uma j existente, portanto j traduzida;
possvel associar um help a mensagem.
No necessrio alterar o programa para traduzir ou
alterar a mensagem.
Se um usurio entra um dado invlido no programa, voc
poder enviar uma mensagem de erro usando o comando
MESSAGE
Ex:

MESSAGE E001.

Este comando interrompe o programa e envia uma mensagem


ao usurio.

Wander Rodrigues / Claudia Oliveira v09

Pgina 65 de 260

TREINAMENTO ABAP
A letra especifica o tipo de mensagem.
E

error

abend

exit

warning

information

success

O usurio pressiona <enter> para limpar a mensagem, mas o


sistema responde diferentemente dependendo do tipo.
ESPECIFICANDO UM MESSAGE ID
Alm do tipo e do nmero da mensagem , voc deve tambm
especificar uma MESSAGE ID.
Normalmente voc especifica isto como parte da instruo
Report.
REPORT ZSRTEST1 MESSAGE-ID Z1.
Alternativamente, voc pode especificar isto como parte parte
de uma instruo de mensagem:
Ex:

MESSAGE ID Z1 TYPE E NUMBER 001.

ou

MESSAGE E001(Z1).
Isto muito usado se voc est usando diferentes MESSAGE
ID no mesmo programa.
COLOCAR VARIVEIS NUMA MENSAGEM
Para tornar uma mensagem mais descritiva voc deve colocar
variveis.
Ex: I001 Documento 0123987 foi entregue.
Para ativar isto, a mensagem deve ser definida com
placeholders (&) para variveis. Pode existir no mximo 4
placeholders em uma mensagem.
Ex: 001 Documento & foi entregue.
Wander Rodrigues / Claudia Oliveira v09

Pgina 66 de 260

TREINAMENTO ABAP

A instruo MESSAGE ento, tem um parmetro adicional para


preencher os placeholders (&) .
Ex:

MESSAGE I001 WITH <field1> <fieldn>.


Onde <field> uma constante ou uma varivel.

Os placeholders so mostrados na ordem em que so


preenchidos na instruo MESSAGE.
A mensagem pode ser definida apenas com placeholders, para
permitir que voc crie uma mensagem livre.

CLASSE DE MENSAGEM
Contm vrias mensagens referentes a um tema.
Transao SE80 /objetos locais/classes de mensagens/
procurar.
Usar atualizao individual para atualizar somente a mensagem
alterada e no todas as mensagens da classe.
+livre vai para o prximo nmero de mensagem livre
texto descritivo onde define o help para a mensagem
Ex:

No programa declara message E312(v1) with 654.


Onde 654 substitui a varivel & no corpo da msg.

Para procurar uma mensagem em todas as classes, usar:


Utilitrios/pesquisa global.
Caminho: Ferramentas> ABAP Workbench > Desenvolvimeto >
Ambiente> Mensagens.
Trata-se de um agrupamento de mensagens comuns a
determinada funcionalidade. Por exemplo podemos ter a classe
de mensagens ZHR onde sero criadas as mensagens do
mdulo HR referentes a aplicaes do cliente.

Wander Rodrigues / Claudia Oliveira v09

Pgina 67 de 260

TREINAMENTO ABAP
Listas
So os relatrios emitidos utilizando as diversas ferramentas disponibilizadas como
report, ALV, report painter, report writer, etc. Podem ser simples ou interativos. A
seguir, veremos mais detalhadamente a definio de algumas destas listas.

Wander Rodrigues / Claudia Oliveira v09

Pgina 68 de 260

TREINAMENTO ABAP

DEFINIES DE OBJETOS NO PROGRAMA


Tabelas Transparentes
Na declarao TABLES, informamos as tabelas transparentes.
Ex:
TABLES: MARA. Mestre de Mareriais

Tabelas internas
Trata-se de um conceito muito utilizado em programas ABAP. As tabelas
internas so criadas com uma estrutura fixa e armazenadas em memria.
Os dados so armazenados linha a linha e cada linha tem a mesma
estrutura. Cada componente de uma linha chamado de coluna. As tabelas
internas so importantes principalmente para armazenar em tempo de
execuo dados que so selecionados de tabelas do banco de dados.
O parmetro OCCURS indica um tamanho inicial para o sistema alocar uma
memria principal. Ele no define um limite da tabela, dessa forma nunca
ocorrer um overflow nas tabelas internas .
Ex:

DATA: BEGIN OF I_TAB OCCURS 0,


MATNR
LIKE MARA-MATNR,
MTART(4) TYPE C,
MBRSH
LIKE MARA-MBRSH.
DATA: END OF I_TAB.

Quando criamos uma tabela interna na maneira vista acima,


automaticamente criada uma estrutura auxiliar ligada tabela interna
chamada HEADER LINE ou WORK AREA. O HEADER LINE tem a mesma
estrutura e nome da tabela interna. O HEADER LINE como uma rea
auxiliar para insero de dados na tabela interna ou seleo de dados da
tabela interna.

Estruturas
Declarada da mesma forma que a tabela, exceto pelo parmetro OCCURS.
Sintaxe:
DATA: BEGIN OF <fld string>,
<components>,
END OF <fld string>.
A estrutura toda possui tipo C e seu tamanho o resultado da soma dos
tamanhos dos campos individualmente.
Voc se refere a um campo de uma estrutura da seguinte forma:
<Field string>-<field name>
Exemplo:
Data: begin of estrut.
Wander Rodrigues / Claudia Oliveira v09

Pgina 69 de 260

TREINAMENTO ABAP
Campo1(5) type c,
Campo2(2) type n.
Data: end of estrut.
Move teste to estrut-campo1.
Move 10
to estrut-campo2.

Tipos
Usado para definir um tipo de dado que ser utilizado no programa,
diferente dos tipos de campo standard pr-definidos.
Sintaxe:
TYPES <type>[(length)]
[TYPE <t>]
[DECIMALS <d>].
Voc no pode usar o parmetro VALUE na instruo TYPES, porque no
existe memria associada com este tipo de dado.

Variveis
Todos os parmetros so opcionais.
O tipo default C (char) e tamanho 1.

TYPE pode ser um tipo de campo ou tipo de dado.


Sintaxe: DATA <field>[(length)] [TYPE <t>] [VALUE <v>] [DECIMALS
<d>].
Tipos de dados vlidos so:
Tipo de Tamanho Intervalo de
Dado
inicial
Tamanho

Valor inicial

Significado

1 - 65535

SPACE

Texto, character (caracteres


alfanumricos)

'00000000'

Data (formato: YYYYMMDD)

Floating point number

Nmero inteiro

1 - 65535

'00...0'

Texto numeric

1 - 16

Packed number (nmero com


casas decimais)

Wander Rodrigues / Claudia Oliveira v09

Pgina 70 de 260

TREINAMENTO ABAP

'000000'

Hora (formato: HHMMSS)

1 - 65535

X'00'

Hexadecimal

Tipos de campos F, I, D e T so de tamanho fixo.


Note que o tamanho do campo sempre escrito imediatamente
aps a varivel, sem qualquer espao entre eles.
USANDO LIKE / TYPE
Sintaxe:
DATA <field> LIKE <DD field>.
DATA <f>
LIKE LINE OF <itab>. (<itab> deve ser uma
tabela interna)
A opo LIKE faz com que o campo definido adote os
atributos do dicionrio de dados. Recomenda-se usar LIKE para
assegurar a integridade do campo.
Ex:

DATA: W_TEXT(10) TYPE C.

Ex2: DATA:W_MATNR LIKE MARA-MATNR.


Ex3: DATA: W_AMOUNT TYPE P DECIMALS 2.

Ranges
Determina um intervalo que ser usado como condio de seleo.
Internamente, monta uma tabela com os campos: SIGN, OPTION, LOW e
HIGH.

Sintaxe:
* declarao do range
RANGES: ACCOUNT FOR LFA1-LIFNR.
...
* Preenchimento do range. Lembre-se de executar o comando append.
ACCOUNT-SIGN
= I. (Include/Exclude)
ACCOUNT-OPTION
= BT. (operadro EQ,NE,BT)
ACCOUNT-LOW
= 00000001. (valor inicial do intervalo)
Wander Rodrigues / Claudia Oliveira v09

Pgina 71 de 260

TREINAMENTO ABAP
ACCOUNT-HIGH
APPEND ACCOUNT.

= 00000100. (valor final do intervalo)

Constantes
uma varivel de valor fixo.
Sintaxe:
CONSTANTS <c>[(length)]
[TYPE <t>]
VALUE <v>
[DECIMALS <d>].
VALUE um parmetro obrigatrio.
O valor inicial no pode se mudado.
Como o parmetro VALUE obrigatrio, para definir uma constante com o
seu valor
default use:
CONSTANTS <FIELD> TYPE <T> VALUE IS INITIAL.
Para definir uma valor que no seja default use:
CONSTANTS <FIELD><LENGTH> TYPE <C> VALUE TESTE.

Opes para tela de seleo


SELECT-OPTIONS
Default
Memory id
Obligatory
No-extension
No intervals

SELEO MLTIPLA

Exibe um valor default fixo para o campo


Exibe um o ltimo valor digitado para este campo
Obriga digitao
Omite a opo de extenso ->...
Omite a opo de intervalo at ____

Sintaxe:
SELECT-OPTIONS <text> FOR <field>.
Exemplo:
SELECT-OPTIONS COUNTRY FOR LFA1-LAND1.
Internamente cria a
COUNTRY-SIGN
COUNTRY-OPTION
COUNTRY-LOW
COUNTRY-HIGH

tabela COUNTRY
include/exclude
operator
from value
to value

<text>deve ter no mximo 8 caracteres.


Wander Rodrigues / Claudia Oliveira v09

Pgina 72 de 260

TREINAMENTO ABAP

PARAMETERS
Default
Memory id
Obligatory
Value check
matchcode.

- SELEO NICA
Exibe um valor default fixo para o campo
Exibe um o ltimo valor digitado para este campo
Obriga digitao
No permite digitar valores diferentes dos mencionados no

RADIO BUTTON mltipla escolha.default determina qual a opo ser a


default.
CHECK BOX opo simples do tipo sim/no. Default determina se o campo
estar marcado ou no.
Sintaxe:
PARAMETERS:
<p1>(<length>) TYPE <type>,
<p2> LIKE <field>.
<type> pode ser qualquer tipo elementar ou definido pelo usurio.
<field> pode ser qualquer campo conhecido
<length> opcional; se no especifica-lo o tamanho do tipo default.
Se nem o tamanho nem o tipo so especificados o default CHAR1.
Ao contrrio do SELECTION-OPTIONS, um campo definido como
PARAMETERS
ter uma nica entrada.
O tamanho mximo do nome de um parmetro 8 caracteres.
Voc pode criar um texto de seleo para um parmetro da mesma forma
que foi
criada para SELECT-OPTIONS.
PARMETROS ADICIONAIS
LIKE - define o parmetro com o mesmo tipo do campo que voc
referenciou.
PARAMETERS P_TEST LIKE LFA1-LIFNR.
TYPE - Voc determina o tipo de varivel que ser usada (P,I,C,F....).
PARAMETERS P_TEST(5) TYPE C.
DEFAULT - Voc define um valor inicial para o parmetro.
PARAMETERS P_TEST(5) TYPE C DEFAULT TESTE.

Wander Rodrigues / Claudia Oliveira v09

Pgina 73 de 260

TREINAMENTO ABAP
LOWER CASE - Mantm o parmetro da maneira que foi digitado. Se no
usado o valor de um
parmetro aaa passar para AAA por exemplo.
PARAMETERS P_TEST(5) TYPE C DEFAULT teste.
OBLIGATORY - necessrio preencher o campo de entrada.
PARAMETERS P_TEST(5) TYPE C OBLIGATORY.
AS CHECKBOX - Disponibiliza uma caixinha (BOX) que conter valor X ou
.
PARAMETERS P_TEST AS CHECKBOX.

Elementos de texto
Os tipos de textos previstos so :
TITULO E CABEALHO - Permite a manuteno do titulo do relatrio,
que ser alojado na barra de ttulos, e do titulo da lista, que ser
posicionado logo abaixo da barra de aplicao. Alm disso, permite montar
o cabealho das linhas detalhes, a qual pode ser montada em tempo de
execuo, atravs da opo System -> List -> List header.
TEXTOS E SELEO
- Permite alterar a descrio que precede ao
campo onde ser informado os parmetros de entrada. Texto de seleo
so linhas de comentrios as quais automaticamente aparecem na tela de
seleo onde a instruo SELECT-OPTIONS ou PARAMETERS usada.
SIMBOLOS DE TEXTOS Permite associar descries as variveis
dinmicas de textos. Tais variveis so muito utilizadas na descrio de
mensagens de erro, pois atravs delas deixa de ser necessria a alterao
do programa fonte, quando se desejar que ela seja exibida em outra lngua.

Inicializao dos objetos


CLEAR
Limpa variveis e header lines.
REFRESH
Deleta todas as linhas da tabela interna.
FREE
Deleta todas as linhas da tabela interna e libera a memria utilizada por ela.

Variveis de sistema (estrutura SYST)


Trata-se de uma estrutura que contm campos atualizados dinamicamente
pelo sistema. Por exemplo, o campo SYUNAME que contm o nome do
usurio que logou no SAP.

Wander Rodrigues / Claudia Oliveira v09

Pgina 74 de 260

TREINAMENTO ABAP
Sempre que necessrio verifique no dicionrio de dados a estrutura SYST
para verificar se existe alguma varivel que possa ser til aos seus futuros
programas.
Segue abaixo uma relao dos mais importantes campos de sistema.
SY-SUBRC cdigo de retorno dinmico que indica se a execuo de um
comando foi bem sucedida. Quando um comando foi executado com sucesso
o campo SY- SUBRC fica igual a 0, caso contrrio ficar com outro valor que
depende do comando. Para ver as possibilidades de retorno no campo SYSUBRC chame o help do comando.
SY-DATUM data do sistema. Esta armazenada no formato AAAAMMDD.
Quando se quer somete o ms pode-se usar a seguinte instruo:
V_VARIAVEL = SY-DATUM+4(2).
Alguns campos de datas em determinadas tabelas transparentes, esto
armazenadas em formato convertido (principalmente quando fazem parte
da chave primria), por exemplo tabela TCURR. Verificar para estes casos a
rotina de converso do campo (CONVERSION_ EXIT_ XXXX_INPUT).
SY-UZEIT hora do sistema
SYLANGU linguagem de logon
SY-TABIX linha corrente de uma tabela interna.
SY-ULINE - similar ao comando ULINE, porm permite linhas menores que o
tamanho definido no LINE-SIZE do REPORT, por exemplo: WRITE : /SYULINE (10).
SY-VLINE - caracter de fechamento lateral de quadro.
SY- PAGNO nmero da pgina corrente no relatrio.
SY-LINNO linha corrente no relatrio.
SY-UNAME - usurio de logon.
SY- BATCH indicativo de execuo em Background.
SY-UCOMM comando escolhido em relatrios interativos.
SY-LISEL linha selecionada em relatrios interativos.
Para mostrar a lista de variveis de sistema disponveis do editor ABAP/4,
escreva SHOW SY no box da linha de comando ou com a transao SE11
verifique a estrutura SYST.
As variveis de sistema podem ser mudadas pelo programa, mas a
SAP no recomenda que voc faa isso.
SPACE um tipo especial de campo de sistema; ele no uma varivel e
no pode ser mudado.

Wander Rodrigues / Claudia Oliveira v09

Pgina 75 de 260

TREINAMENTO ABAP

ABAP OPEN SQL


O ABAP possui a sua prpria instruo SQL. Abaixo, algumas formas desta
instruo:

SELECT
SELECT SINGLE (SELECIONANDO UM NICO REGISTRO)
Sintaxe:
SELECT SINGLE <campo1 campo2>
INTO <rea de trabalho>
FROM <tabela>
WHERE <condio>.
Possui performance excelente, no entanto:
- A clusula WHERE deve conter a chave primria completa da tabela
especificada.
- As condies na clusula WHERE devem apenas serem ligadas com AND.
SEMPRE VERIFIQUE O CDIGO DE RETORNO DEPOIS DE UM SELECT
SINGLE.
Se a chave completa no for especificada no SELECT SINGLE o sistema
retornar um erro de sintaxe.
Se o acesso no for bem sucedido (no encontrar registro) o sistema
devolver o SY-SUBRC = 4.
Ex:
SELECT SINGLE * FROM CUSTOMERS
WHERE ID = 87654321.
IF SY-SUBRC EQ 0.
WRITE: CUSTOMERS-NAME.
ENDIF.
Sempre use a instruo SELECT SINGLE, quando a chave COMPLETA for
conhecida.
SELECT ... ENDSELECT (SELECIONANDO VRIOS REGISTROS)
L vrios registros sequencialmente, formando um loop no prprio comando.
No necessita da chave completa. Possui performance ruim.
Sintaxe:
SELECT <campo1 campo2>
INTO <rea de trabalho>
FROM <tabela>
WHERE <condio>.
< processamento do registro >
ENDSELECT.
Ex:

SELECT kunnr
INTO i_knb1
FROM knb1

Wander Rodrigues / Claudia Oliveira v09

Pgina 76 de 260

TREINAMENTO ABAP
WHERE bukrs = B001.
...
WRITE: / i_knb1-kunnr.
...
ENDSELECT.
SELECT ... INTO TABLE ...

(SELECIONANDO VRIOS REGISTROS)

L vrios registros, todos de uma nica vez, guardando os dados em uma


tabela interna. No necessita da chave completa
Possui boa performance. Esta a mais eficiente forma de se utilizar a
instruo SELECT.
Sintaxe:
SELECT <campo1 campo2>
INTO TABLE <tab interna>
FROM <tabela>
WHERE <condio>.
LOOP AT <tab interna>.
< processamento do registro >
ENDLOOP.
Neste caso, ENDSELECT no usado.
Ex:

SELECT kunnr
INTO TABLE i_knb1
FROM knb1
WHERE bukrs = B001.

LOOP AT i_knb1.
WRITE: / i_knb1-kunnr.
ENDLOOP.
RECUPERANDO DADOS DE COLUNAS INDIVIDUAIS
Sintaxe:
SELECT <s1> <s2> ... <sn>
INTO (<f1>, <f2>, ... <fn>)
FROM <table>
[WHERE ...]
As duas listas devem conter o mesmo nmero de elementos.
Outra alternativa seria:
SELECT * FROM <table> INTO CORRESPONDING FIELDS OF <itab>

Wander Rodrigues / Claudia Oliveira v09

Pgina 77 de 260

TREINAMENTO ABAP

OBTENDO INFORMAES ESTATSTICAS


Para recuperar o nmero de registros que satisfaam uma condio
particular.
SELECT COUNT(*) FROM CUSTOMERS
INTO CUST_COUNT WHERE ...
Para recuperar o valor mximo de uma coluna especfica. Valores
estatsticos alternativos:
SELECT MAX( ID ) FROM CUSTOMERS
INTO CUST_ID_MAX.
SELECT MIN( fld )
SELECT AVG( fld )
SELECT SUM( fld )
SUM, AVG, MIN e MAX so mais eficientes que usar os clculos do ABAP/4,
como o COLLECT.

WHERE
CONDIO SIMPLES
Sintaxe:
SELECT * INTO TABLE I_T005T FROM T005T
WHERE LAND1 EQ D.
WRITE: T005T-SPRAS.
ENDSELECT.
Usar a clusula WHERE para selecionar os registros a serem lidos.
Apenas os registro onde o campo LAND1 contenha D sero lidos para
processamento.
MAIS DE UMA CONDIO
Sintaxe:
SELECT * FROM CUSTOMERS
WHERE ID
EQ 87654321
AND DISCOUNT GE 10.
Voc pode usar todos os operadores standards: EQ NE LT LE GT GE e
seus smbolos equivalentes.
Voc pode combinar condies usando os operadores lgicos AND e OR.
SELECT COM WHERE E PARMETRO ADICIONAL
INTERVALO
Sintaxe:
SELECT * FROM CUSTOMERS
WHERE ID BETWEEN 12345678
AND 87654321.
TEMPLATE
Sintaxe:
SELECT * FROM CUSTOMERS
Wander Rodrigues / Claudia Oliveira v09

Pgina 78 de 260

TREINAMENTO ABAP
WHERE NAME LIKE E%.
Percentual % indica que ser obtido todos os nomes que comecem com a
letra E.
Como no segundo exemplo, voc pode usar um underscore (_) para
mascarar um caracter qualquer. Por exemplo, WHERE NAME LIKE B_ll
retornar todos os Bill, Ball, Bull e Bell.
LIST
SELECT * FROM CUSTOMERS
WHERE NAME IN (Smith,
Jones, Jay).
RANGES
SELECT * FROM CUSTOMERS
WHERE POSTCODE IN ZIP.
ZIP pode ser uma tabela de seleo declarada com RANGES.

ORDER BY
Sintaxe:
SELECT * FROM <table>
[WHERE ...]
ORDER BY PRIMARY KEY
ORDER BY <f1> <f2> ...
PRIMARY KEY pode ser usada para todas as tabelas da base de dado SAP.
A direo default do sort ASCENDING, mas voc pode tambm especificar
com direo DESCENDING ou uma mistura dos dois.

FOR ALL ENTRIES


A partir de uma tabela interna, seleciona os registros no banco de dados.
MUITA ATENO ao utilizar este recurso, pois:
- Se a tabela interna estiver vazia, o sistema seleciona todos os registros da
tabela do banco de dados. Isto, alm de representar um erro, pode acarretar
em srios problemas de performance. Por este motivo SEMPRE VALIDAR o
contedo da tabela interna, antes de executar este recurso.
- Alm disso, os campos da chave primria da tabela devem ser informados
no SELECT.
- A tabela interna deve estar ordenada de acordo com a seleo que ser
efetuada.

Wander Rodrigues / Claudia Oliveira v09

Pgina 79 de 260

TREINAMENTO ABAP

Exemplo:
SELECT werks matnr strgr lvorm
INTO TABLE t_marc
FROM marc
WHERE werks IN s_werks
AND strgr EQ Y1.
IF NOT t_marc[] IS INITIAL.
SELECT bwkey matnr mtorg mtuse lvorm
INTO TABLE t_mbew
FROM mbew
FOR ALL ENTRIES IN t_marc
WHERE bwkey EQ t_marc-werks
AND matnr EQ t_marc-matnr.
ENDIF.

UP TO n ROWS
Limita o nmero de registros selecionados .
Sintaxe:
SELECT *
UP TO <n> ROWS
FROM <table>
[WHERE ...]

INNER JOIN
Utilizando INNER JOIN, vrias tabelas so combinadas para formar uma
tabela resultante. Esta tabela resultante contm somente os registros que
possuam registros correspondentes em cada uma das tabelas componentes.
A condio JOIN no limitada a campos-chave. Geralmente, a forma
mais eficiente de ler do banco de dados. O banco de dados responsvel
por decidir que tabela lida primeiro e qual ndice ser usado(DB optimizer).
Quando vrios campos so lidos da tabela da esquerda e a tabela da direita
contm os muitos dos mesmos campos, isso leva a grande quantidade de
dados redundantes. De maneira a evitar isso, devemos sempre trabalhar
informando os campos realmente necessrios no SELECT do INNER JOIN.
Ex:
Tabela_A
Tabela_B
A
B
C
A
D
E
a1
b1
c1
a1
d1
e1
a2
b2
c2
a3
d2
e2
a3
b3
c3
a3
d3
e3

A
a1
a3
a3

Tabela_INNER_JOIN
B
C
D
E
b1
c1
d1
e1
b3
c3
d2
e2
b3
c3
d3
e3

Wander Rodrigues / Claudia Oliveira v09

Pgina 80 de 260

TREINAMENTO ABAP
Sintaxe do exemplo:
SELECT<tabela_A>~<campo_A> <tabela_A>~<campo_B>
<tabela_A>~<campo_C>
<tabela_B>~<campo_D> <tabela_B>~<campo_E>
INTO TABLE tabela_inner_join
FROM tabela_A
INNER JOIN tabela_B
ON <tabela_A>~<campo_A> = <tabela_B>~<campo_A>
WHERE <tabela_A>~<campo_A> BETWEEN a1 AND a3.

OUTER JOIN
Usando LEFT OUTER JOIN as tabelas de resultado contm entradas da
tabela designada esquerda, mesmo sem a presena de dados
correspondentes na tabela da direita. Esses campos sero inicializados de
acordo com o seu tipo.
Faz sentido usar LEFT OUTER JOIN, quando os dados da tabela esquerda so
necessrios e no tem correspondncia na tabela da direita.
Comparaes dentro da clusula where no permitiro campos da tabela da
direita.
Ex:
A
a1
a2
a3

Tabela_A
B
C
b1
c1
b2
c2
b3
c3

A
a1
a2
a3
a3

A
a1
a3
a3

Tabela_B
D
E
d1
e1
d2
e2
d3
e3

Tabela_OUTER_JOIN
B
C
D
E
b1
c1
d1
e1
b2
c2
b3
c3
d2
e2
b3
c3
d3
e3

Sintaxe do exemplo:
SELECT
<tabela_A>~<campo_A>
<tabela_A>~<campo_B>
<tabela_A>~<campo_C>
<tabela_B>~<campo_D> <tabela_B>~<campo_E>
INTO TABLE tabela_outer_join
FROM tabela_A
LEFT OUTER JOIN tabela_B
ON <tabela_A>~<campo_A> = <tabela_B>~<campo_A>
WHERE <tabela_A>~<campo_A> BETWEEN a1 AND a3.

Wander Rodrigues / Claudia Oliveira v09

Pgina 81 de 260

TREINAMENTO ABAP

ATRIBUIO DE VALORES
Comando MOVE
Sintaxe:
MOVE FIELD1 TO FIELD2.
Exemplos:
MOVE LFA1-NAME1 TO W-NAME1.
MOVE TESTE TO W-NAME1.
MOVE LFA1-NAME1+5(20) TO W-NAME.
Voc pode usar tambm:
write teste to w-name.
w_name = teste.

Comando MOVE-CORRESPONDING
Move os campos de uma estrutura para campos de outra estrutura que
tenham o mesmo nome.
MOVE-CORRESPONDING <string1> TO <string2>.
Exemplo:
DATA: BEGIN OF ADDRESS,
FIRSTNAME(20)
VALUE
SURNAME(20)
VALUE
INITIALS(4)
VALUE
STREET(20)
VALUE
NUMBER TYPE I
VALUE
POSTCODE TYPE N VALUE
CITY(20)
VALUE
END OF ADDRESS.

'Fred',
'Flintstone',
'FF',
'Cave Avenue,
'11'.
'98765'.
'Bedrock',

DATA: BEGIN OF NAME,


SURNAME(20),
FIRSTNAME(20),
INITIALS(4),
TITLE(10) VALUE 'Mister',
END OF NAME.
MOVE-CORRESPONDING ADDRESS TO NAME.
Neste exemplo, os valores de NAME-SURNAME, NAME-FIRSTNAME e NAMEINITIALS so preenchidos com 'Flintstone', 'Fred', e 'FF'. NAME-TITLE
continua com o valor 'Mister'.

Wander Rodrigues / Claudia Oliveira v09

Pgina 82 de 260

TREINAMENTO ABAP

Comando WRITE
Sintaxe:
WRITE <field>.
WRITE [/][pos][(len)] <field>.
WRITE ... <field> <option>.
WRITE AT [/][pos][(len)] <fld>.
WRITE <symbol name> AS SYMBOL.
WRITE <icon name> AS ICON.
WRITE <field> AS CHECKBOX.
WRITE <f1> TO <f2> <option>.
A ltima sintaxe (WRITE TO <option>) particularmente usada se voc
precisa converter um campo em um processo de movimentao de valores.
Executar os programas SHOWSYMB and SHOWICON para mostrar uma lista
de
todos os smbolos e cones.
Opes de formato para todos os tipos de dados

Opo

Descrio

LEFT-JUSTIFIED

Sada movida para esquerda

CENTERED

Sada centralizada

RIGHT-JUSTIFIED

Sada movida para a direita

UNDER <g>

A sada inicia diretamente abaixo do campo <g>.

NO-GAP

Espaos em branco so omitidos

USING EDIT MASK <m>

Usa uma mscara especfica

USING NO EDIT MASK

Desativa a mscara standard especificada no


dicionrio

NO-ZERO

O valor 0 no impresso. Se o campo contm


apenas zeros, estes so alterados por brancos.

Opes de formato para campos numricos

Wander Rodrigues / Claudia Oliveira v09

Pgina 83 de 260

TREINAMENTO ABAP

Opo

Descrio

NO-SIGN

O sinal de um nmero no exibido em lista

DECIMALS <d>

Define o nmero de decimais aps a vrgula decimal

EXPONENT <e>

Em campos tipo F, o expoente definido em <e>.

ROUND <r>

Variveis tipo P so multiplicadas por 10**(-r) e ento


arredondadas

CURRENCY <c>

Formato de acordo com a moeda <c> na tabela


TCURX.

UNIT <u>

O nmero de casas decimais fixado de acordo com


a unidade <u> especificada na tabela T006 para
campos do tipo P.

Opes para campos tipo data

Opo

Descrio

DD/MM/YY

Separador definido no registro mestre do usurio

MM/DD/YY

Separador definido no registro mestre do usurio

DD/MM/YYYY

Separador definido no registro mestre do usurio

MM/DD/YYYY

Separador definido no registro mestre do usurio

DDMMYY

Sem separador

MMDDYY

Sem separador

YYMMDD

Sem separador

Exemplos

Cdigo ABAP

Sada em tela
DATA: G(5) VALUE 'Hello',
F(5) VALUE 'Dolly'.
Hello Dolly

Wander Rodrigues / Claudia Oliveira v09

Pgina 84 de 260

TREINAMENTO ABAP

WRITE: G, F.
WRITE: /10 G,
/ F UNDER G.

Hello
Dolly
HelloDolly

WRITE: / G NO-GAP, F.
DATA TIME TYPE T VALUE
'154633'.
WRITE: TIME,
/(8) TIME USING EDIT MASK

154633
15:46:33

'__:__:__'.

WRITE: '000123',
/ '000123' NO-ZERO.

000123
123

WRITE: SY-DATUM,
/ SY-DATUM YYMMDD.

06/27/1995
950627

Outros exemplos:
WRITE LFA1-NAME1.
WRITE /13(20) LFA1-NAME1.
WRITE /(10) VENDOR UNDER ACCNT.
WRITE AT /POS(LEN) ACCOUNT.
WRITE 10 SYM-GLASSES AS SYMBOL.
WRITE / ICON-SEARCH AS ICON.
WRITE /10 MARK1 AS CHECKBOX.
Note que nova linha(/)+posio+tamanho so sempre escritos como uma
palavra.
Qualquer um dos trs (3) podem ser omitidos, porm quando usados
devem aparecer em uma nica palavra.
WRITE AT deve ser usados ao invs de WRITE quando a posio e o
tamanho so especificados usando variveis.

Converses entre campos e estruturas


Dois campos so compatveis quando possuem mesmo tamanho, tipo e
casas decimais.
Duas estruturas so compatveis quando possuem os mesmos elementos e
estes elementos tambm so compatveis.
As regras de converso existem para permitir operaes entre campos ou
estruturas que no so compatveis.
Existem regras de converso para todas combinaes de tipos de campos,
exceto as do tipo D (data) e T (hora).
REGRAS DE CONVERSO PARA CAMPOS:
Wander Rodrigues / Claudia Oliveira v09

Pgina 85 de 260

TREINAMENTO ABAP
CAMPO ORIGEM
TIPO TAMANHO

CAMPO DESTINO

VALOR

TIPO TAMANHO

VALOR

A___

ABCD

AB

-47110_

47110-

12345-

_12345-

Os campos do tipo C so alinhados esquerda. So preenchidos com


brancos se menores que o campo de destino e trucados se foram maiores
que o campo de destino.
Para converter um campo C em P, somente sero permitidos nmeros e os
sinais + e no campo.
Quando convertemos um campo P em C, os zeros esquerda so
convertidos em brancos.
EXEMPLO DE CONVERSO DE ESTRUTURA
REPORT . . .
DATA: BEGIN OF REC1,
TEXT1(3)
TYPE
TEXT2(2)
TYPE
PACK
TYPE
TEXT3(10) TYPE
END OF REC1.

C
VALUE
C
VALUE
P DECIMALS 2 VALUE
C
VALUE

AAA ,
BB
,
2.26 ,
XY ,

DATA: BEGIN OF REC2,


TEXT1(5)
TYPE C
VALUE CCCCC,
PACK
TYPE P DECIMALS 2 VALUE 72.34 ,
TEXT3(1)
TYPE C
VALUE Z ,
END OF REC2.
MOVE REC1 TO REC2.
REC1

AAA BB

2,26 XY

REC2

CCCCC

72,34 Z

REC2

AAABB

2,26 X

Clculos de valores
EXPRESSES ARITMTICAS
ADD <f1> TO <f2>.
SUBTRACT <f1> FROM <f2>.
MULTIPLY <f2> BY <f1>.
DIVIDE <f2> BY <f1>.

Wander Rodrigues / Claudia Oliveira v09

OU
OU
OU
OU

<f2>
<f2>
<f2>
<f2>

=
=
=
=

<f1>
<f2>
<f2>
<f2>

+ <f2>.
- <f1>.
* <f1>.
/ <f1>.

Pgina 86 de 260

TREINAMENTO ABAP
Para clculos mais complexos devemos usar parnteses para separar as
operaes. Devemos deixar um espao em branco entre os parnteses,
variveis e operadores.
Exemplo:
CAMPO1 = ( ( CAMPO1 + 10 ) / 123 * CAMPO2.
Para executar operaes aritmticas de campos correspondestes entre
estruturas, usar: ADD-CORRESPONDING, SUBTRACT-CORRESPONDING,
MULTIPLY-CORRESPONDING, DIVIDE-CORRESPONDING.
Ex:
Data: begin of aaaa.
X(10) type n.
Y(10) type n.
Data: end of aaaa.

Data: begin of bbbb.


X(10) type n.
Y(10) type n
Data: end of bbbb.

Add-corresponding aaaa to bbbb


Obs: soma os campos x e y das tabelas.

Sub-campos (strings)
Voc pode obter uma parte de um determinado
instruo MOVE ou WRITE.

campo

atravs

da

MOVE F1+3(3) TO F2+1(3).


ABC123
_123__
Voc pode especificar somente as posies que deseja pular ou somente
o tamanho que lhe interessa. Se as posies no forem especificadas o
default 0. Se o tamanho no for especificado, ele ser o do campo inteiro
ou a partir das posies (se especificado).

Clculos com datas


ABAP/4 permite adicionar ou subtrair dos campos de datas.
DATA:LAST_DAY TYPE D.
LAST_DAY = SY-DATUM.
LAST_DAY+6(2) = 01.
LAST_DAY = LAST_DAY - 1.
O exemplo mostra um clculo para obter a data do ltimo dia do ms
anterior.

Wander Rodrigues / Claudia Oliveira v09

Pgina 87 de 260

TREINAMENTO ABAP
Operaes com cadeias de caracteres
Comando REPLACE
REPLACE ABC WITH 123 INTO TEXT_FLD.
ABC123DEF
123123DEF
Comando TRANSLATE
TRANSLATE FIELD1 TO LOWER CASE.
TRANSLATE FIELD1 TO UPPER CASE.
TRANSLATE TEXT_FLD USING A1B2C3.
AABBCCDDEE
112233DDEE
Comando CONDENSE
CONDENSE TEXT_FLD.
A C E

ACE

CONDENSE TEXT_FLD NO-GAPS.


A C E

ACE

Comando CONCATENATE
CONCATENATE sum mer blues INTO TEXT_FLD.
summer blues
CONCATENATE summer blues INTO TEXT_FLD SEPARATED BY -***-.
summer-***-blues
Comando SPLIT
SPLIT Peter,Paul AT , INTO FLD1 FLD2.
Peter
Paul
Em cada um dos exemplos acima, uma varivel pode ser usada ao invs de
uma literal.

Comando SEARCH
Busca cadeia de caracteres em variveis ou tabelas internas.
SEARCH <c> FOR <str> <options>.
Exemplo:
DATA STRING(30) VALUE 'This is a little sentence.'.
WRITE: / 'Searched', 'SY-SUBRC', 'SY-FDPOS'.
ULINE /1(26).
SEARCH STRING FOR 'X'.
WRITE: / 'X', SY-SUBRC UNDER 'SY-SUBRC',
SY-FDPOS UNDER 'SY-FDPOS'.

Wander Rodrigues / Claudia Oliveira v09

Pgina 88 de 260

TREINAMENTO ABAP
SEARCH STRING FOR 'itt '.
WRITE: / 'itt ', SY-SUBRC UNDER 'SY-SUBRC',
SY-FDPOS UNDER 'SY-FDPOS'.
A sada aparece como segue:
SEARCHED SY-SUBRC SY-FDPOS
X
4
0
itt
0
13
Comando SHIFT
Usado para mover o contedo de uma varivel para direita ou esquerda e
eliminar zeros e espaos.
SHIFT <c> LEFT DELETING LEADING <str>.
SHIFT <c> RIGHT DELETING TRAILING <str>.
Exemplo:
DATA: T(14) VALUE ' abcdefghij',
STRING LIKE T,
STR(6) VALUE 'ghijkl'.
STRING = T.
WRITE STRING.
SHIFT STRING LEFT DELETING LEADING SPACE.
WRITE / STRING.
STRING = T.
SHIFT STRING RIGHT DELETING TRAILING STR.
WRITE / STRING.
A sada aparece como segue:
abcdefghij
abcdefghij
abcdef

Wander Rodrigues / Claudia Oliveira v09

Pgina 89 de 260

TREINAMENTO ABAP

COMANDOS DE CONTROLE E EXPRESSES LGICAS


OPERAES LGICAS

EQ =
NE
GT
LT
GE
LE

>< <>
>
<
>= =>
<= =<

<a>
<a>
<a>
<a>
<a>
<a>

is
is
is
is
is
is

equal to <b>
not equal to <b>
greater than <b>
less than <b>
greater than or equal to <b>
less than or equal to <b>

Usado em IF, WHILE e CHECK (e SELECT). <a> e <b> devem ser campos da base
de dados, campos internos ou constantes.
OUTROS OPERADORES DE COMPARAO
CO contains only
CN contains not only
CA contains any
NA contains not any
CS contains string
NS contains no string
CP contains pattern
CN contains no pattern
Estes operadores podem ser usando nos comandos IF, WHILE e CHECK.
Eles devem ser usados somente para comparao de campos tipo caracteres e
numricos.
Ex:

IF 1A2B3C CO 123456 --> FALSO


IF 314256 CO 123456 --> VERDADEIRO
IF
Sintaxe:
IF [condition].
[processing].
ELSEIF [condition].
[processing].
...
ELSE.
[processing].
ENDIF.

opcional

A instruo pode ser encadeada, e usar ELSEIF quando possvel.


Podemos usar uma ou mais operaes de comparao unidas por AND ou
OR.

Wander Rodrigues / Claudia Oliveira v09

Pgina 90 de 260

TREINAMENTO ABAP

CASE
Sintaxe:
CASE <field>.
WHEN <value1>.
[processing].
WHEN <value2>.
[processing].
...
WHEN OTHERS.
[processing].
ENDCASE.
A instruo CASE usada como alternativa para substituir um IF, quando
todos os processos dependem de um valor de um campo particular. Este
campo pode ser um campo da base de dados ou da tabela interna.
A instruo CASE deve estar encadeada.
WHEN OTHERS uma opo que ser executada quando as outras opes
anteriores no forem satisfeitas.

DO
Sintaxe:
DO.
[processing].
ENDDO.
ou
DO x TIMES.
[processing].
ENDDO.
A sintaxe 1 mostra uma forma bsica do comando DO. Ele executar
infinitamente por isso devemos providenciar um final do loop.
A sintaxe 2 mostra o comando DO de uma forma que ser executada com
um determinado limite, um nmero de vezes definido.

WHILE
Sintaxe:
WHILE <a> <op> <b>.
[processing].
ENDWHILE.
O loop ser executado enquanto a condio seja satisfeita.
Pode ter os mesmos operadores que o IF.

Wander Rodrigues / Claudia Oliveira v09

Pgina 91 de 260

TREINAMENTO ABAP

CHECK
Sintaxe:
CHECK <a> <op> <b>.
Use CHECK para saltar todos os processos subseqentes dentro do loop.
Se o resultado de um CHECK for falso, ABAP/4 no executar os comandos
seguintes do loop e ir executar a prxima ocorrncia.

CONTINUE
O processamento se posiciona no prximo registro dentro do loop.

STOP
Depois do comando STOP, o sistema processa o evento END-OF-SELECTION
e termina a execuo do programa.

EXIT
Use EXIT para finalizar o processo de loop completamente.
A instruo EXIT dentro de um loop, causa o trmino do
processamento do loop completamente. Se existir vrios loops
encadeados a instruo EXIT terminar somente o loop em
processamento.

Wander Rodrigues / Claudia Oliveira v09

Pgina 92 de 260

TREINAMENTO ABAP

OPERAES COM TABELAS INTERNAS


APPEND
CARREGANDO TABELAS INTERNAS (APPEND)
Insere dados que esto no HEADER LINE dentro da tabela interna

MOVE-CORRESPONDING STRING1 TO TABLE1.


002 JONES 052596 HILLSBORO USA
002 JONES 052596 HILLSBORO
USA
001 SMITH 072696 BRIDGEWATER USA
003 BONES 010793 NOTTINGHAM UK
APPEND TABLE1.
002 JONES 052596 HILLSBORO
USA
001 SMITH 072696 BRIDGEWATER USA
003 BONES 010793 NOTTINGHAM UK
002 JONES 052596 HILLSBORO
USA

COLLECT
COMPRESSO DE TABELAS INTERNAS (COLLECT)
Para registros com a mesma parte alfa-numrica, o comando COLLECT
insere um registro somando todos os campos numricos.

MOVE-CORRESPONDING STRING1 TO TABLE1.


002 JONES HILLSBORO 320,000.21

002 JONES HILLSBORO


320,000.21
001 SMITH BRIDGEWATER
194.98
003 BONES NOTTINGHAM
1,000.99
002 JONES HILLSBORO
111.11
COLLECT TABLE1.
002 JONES HILLSBORO
320,000.21
001 SMITH BRIDGEWATER
194.98
003 BONES NOTTINGHAM
1,000.99
002 JONES HILLSBORO
320,111.32
O comando COLLECT procura por um registro na tabela com o mesma
Chave. Neste caso a chave qualquer campo no numrico (tipo F, I, P) .
Wander Rodrigues / Claudia Oliveira v09

Pgina 93 de 260

TREINAMENTO ABAP

O comando COLLECT junta e acumula todos os registros que contenham a


mesma chave.
Voc pode usar COLLECT para evitar duplicidade de registros em uma
tabela.

SORT
CLASSIFICANDO UMA TABELA INTERNA (SORT)
TABLE1
001 SMITH 072696 BRIDGEWATER USA
003 BONES 010793 NOTTINGHAM UK
002 JONES 052596 HILLSBORO USA
SORT TABLE1.
001 SMITH 072696 ...
002 JONES 052596 ...
003 BONES 010793 ...
SORT TABLE1 BY NAME.
003 BONES 010793 ...
002 JONES 052596 ...
001 SMITH 072696 ...
SORT TABLE1 BY NAME DESCENDING.
001 SMITH 072696 ...
002 JONES 052596 ...
003 BONES 010793 ...
O default da ordem do comando SORT ASCENDENTE. Voc pode
especificar DESCENDING no final de uma lista dos campos a serem
sorteados para identificar que
todos sero classificados em ordem
descendente
ou
pode
especificar ASCENDING/DESCENDING
individualmente para cada campo.

LOOP
PROCESSANDO UMA TABELA INTERNA (LOOP)
LOOP AT TABLE1.
WRITE / TABLE1-NAME.
ENDLOOP.
BONES
JONES
SMITH

2
3

1
SY-TABIX

SY-TABIX possui o ndice do registro lido.


LOOP termina automaticamente quando todos os registros da tabela
forem processados.

Wander Rodrigues / Claudia Oliveira v09

Pgina 94 de 260

TREINAMENTO ABAP
Voc pode usar o CHECK para terminar o processamento do registro lido ou
EXIT para terminar o processamento de loop completo.
Para restringir voc pode utilizar a clusula WHERE (como no SELECT).
Existe diferena quando se executa loop para tabela interna com ou sem
header line, conforme podemos observar abaixo:

READ
LENDO UMA NICA ENTRADA DA TABELA (READ)
A chave de uma tabela interna com header line consiste de todos os
campos os quais no so tipo P, F ou I, ou espao.
IMPLICIT KEY - no need to specify anything else
READ TABLE ITAB.
EXPLICITY KEY - much more efficient than an implicit key
READ TABLE ITAB WITH KEY NAME = BONES.
DIRECT READ - the most efficient option
READ TABLE ITAB INDEX 3.
O primeiro mtodo no slide funciona somente quando a tabela for declarada
usando BEGIN OF ... END OF .... Se a tabela for declarada usando LIKE esse
mtodo no funcionar.
Aps uma leitura bem sucedida, o SY-TABIX conter o ndice do registro lido
e o SY-SUBRC ser 0.
ATENO: Para ler uma tabela grande sem conhecer o ndice, a maneira
mais rpida usando WITH KEY <Chave> BINARY SEARCH. Para usar
isso a tabela deve primeiro ser organizada (SORT) pela chave informada.

INSERT/MODIFY
ALTERANDO UMA TABELA INTERNA (INSERT/MODIFY)
INSERT Insere uma nova linha na tabela interna sem auxlio do HEADER
LINE.
Ex:
Wander Rodrigues / Claudia Oliveira v09

Pgina 95 de 260

TREINAMENTO ABAP
TABLE1-NO = 004.
INSERT TABLE1 INDEX 4.
Se voc conhece o ndice da linha e deseja adicionar ou alterar, o
comando muito simples. Apenas preencha os campos definidos na
estrutura e insira ou modifique com o ndice conhecido.
Ex:
TABLE1-NAME = OATES.
MODIFY TABLE1 INDEX 2.
Voc nunca poder ter ndice em branco em uma tabela. Para adicionar um
novo registro usando INSERT com INDEX, voc deve estar certo que j
existe contedo na tabela (novo ndice - 1). Com um ndice igual ou menor a
0 ocorrer o cancelamento do programa.

DELETE
Excluindo registros da tabela interna (DELETE)
Apagar registro atual dentro do loop.
DELETE TABLE1.
Apagar registro especfico.
DELETE TABLE1 INDEX 4.
Apagar parte dos registros.
DELETE TABLE1 WHERE NO = 002.
Apagar todos os registros da tabela interna.
REFRESH TABLE1.

DESCRIBE TABLE
Retorna o nmero de linhas da tabela interna ou o valor da clusula
OCCURS.
DESCRIBE TABLE <tabela interna> [LINES <nlin>] [OCCURS nocc]

Nveis de Controle dentro de um LOOP


AT FIRST
... ENDAT.
Executa procedimentos aps a leitura do primeiro registro da tabela
(somente aps o primeiro).
AT NEW (Field)
... ENDAT.
Executa procedimentos aps a mudana de contedo (quebra) do campo
definido no comando.
AT END OF (field) ... ENDAT.
Executa procedimentos antes da mudana de contedo (quebra) do
campo definido no comando (aps o ltimo obtido com o mesmo
contedo).
AT LAST
... ENDAT.
Executa procedimentos aps a leitura do ltimo registro da tabela (somente
aps o ltimo).
Wander Rodrigues / Claudia Oliveira v09

Pgina 96 de 260

TREINAMENTO ABAP

NVEIS DE CONTROLE CALCULANDO TOTAIS


AT FIRST.
SUM ... ENDAT.
AT NEW (Field)
SUM ... ENDAT.
AT END OF (field)
SUM ... ENDAT.
AT LAST.
SUM ... ENDAT.
SUM - Acumula todos os campos numricos especificados .
Quando se usa os nveis de controle AT ..., temos que observar a posio e a
ordenao dos campos dentro da tabela interna. Os campos devem estar em
ordem e na mesma posio das quebras especificadas dentro do LOOP.
ON CHANGE OF
ENDON.
Comando para ser executado em conjunto com o comando LOOP, identifica o
primeiro registro de uma sequncia em tabela interna que est sendo
percorrida. Neste caso no necessrio observar a posio do campo na
tabela interna.
LOOP AT <tabela interna>
....
ON CHANGE OF <tabela interna>-campo1.
...
ENDON.
...
ENDLOOP.

Wander Rodrigues / Claudia Oliveira v09

Pgina 97 de 260

TREINAMENTO ABAP

MODULARIZAO DOS PROGRAMAS


Eventos
Os programas ABAP ON-LINE so orientados a eventos (nas verses mais
atuais so orientados a objetos tambm). Os eventos servem para
estruturar e facilitar o entendimento da lgica de um programa.
Um evento termina quando comea o prximo e independente do seu
posicionamento no cdigo fonte, a sequncia de execuo destes subprogramas a seguinte:

Evento

Descrio

INITIALIZATION

Evento em que se inicializa parmetros de


seleo antes que a tela do programa seja
exibida

AT SELECTION-SCREEN

Evento em que as informaes passadas pelos


usurios so validadas

START-OF-SELECTION

Evento em que os dados so selecionados

END-OF-SELECTION

Evento em que os dados devem ser tratados


para exibio

Os seguintes eventos ocorrem durante o processamento de listas de sada


em programa executveis tipo report:

Evento

Descrico

TOP-OF-PAGE

Evento acionado quando uma nova pgina iniciada

END-OF-PAGE

Evento acionado quando uma pgina finalizada

Os seguintes eventos ocorrem durante a exibio de listas em programas


executveis tipo report interativo:

Event keyword

Event

AT LINE-SELECTION

Evento acionado quando o usurio seleciona uma linha

AT USER-COMMAND

Evento em que uma ao do usurio tratada

Wander Rodrigues / Claudia Oliveira v09

Pgina 98 de 260

TREINAMENTO ABAP
INITIALIZATION
o primeiro evento a ser executado. Ele processado antes de mostrar a
tela de seleo de parmetros.
Este evento normalmente usado para determinar valores iniciais para
parmetros, apesar de existir um outro evento para isso.
a primeira instruo a ser executado aps s definies de variveis,
constantes, etc.
Pode ser usado mesmo que o programa no tenha uma tela de seleo.
Ex:
INITIALIZATION.
DATE = SY-DATUM.
DATE+6(2) = 01.
AT SELECTION-SCREEN OUTPUT
um evento que ser executado antes de mostrar a tela de seleo de
parmetros.
Este evento normalmente usado para determinar valores iniciais para
parmetros.
Ele ser executado aps a instruo INITIALIZATION (se existir).
Ex:
AT SELECTION-SCREEN OUTPUT.
MOVE TESTE TO P-TEST.
AT SELECTION-SCREEN
Este evento executado aps a tela de seleo de parmetros.
usado para verificar o valor de entrada dos parmetros e select-options.
Ex:
AT SELECTION-SCREEN.
IF P-TEST NE TESTE.
MESSAGE E016(DS) ERRO.
ENDIF.
START-OF-SELECTION
Este evento executado aps a tela de seleo de parmetros, aps o at
selection screen (se existir).
Nele normalmente se escreve a lgica principal do programa. Onde podemos
abrir arquivos, inicializar contadores, montar a lgica.
No use este evento para codificar o cabealho de relatrios, pois existe
outro evento para isso.
Ex:
START-OF-SELECTION.
MOVE Y TO W_TEST.
PERFORM READ_MARA.
END-OF-SELECTION
Este evento executado antes de finalizar o programa.
Ele normalmente usado para emisso de totais de controle, para fechar
arquivos e etc
Ex:
END-OF-SELECTION .
CLOSE FILE1.
WRITE: /001 END OF PROGRAM

Wander Rodrigues / Claudia Oliveira v09

Pgina 99 de 260

TREINAMENTO ABAP

TOP-OF-PAGE
Define o cabealho de pgina dentro do relatrio
Executado pelo sistema imediatamente antes da primeira impresso da
pgina.
O evento TOP-OF-PAGE no ir substituir automaticamente o cabealho
standard produzido pelo sistema.
Para substitu-lo adicione o parmetro NO STANDARD PAGE HEADING na
instruo REPORT.
Ex:
REPORT Z001 LINE-COUNT 60 LINE-SIZE 90 NO STANDARD PAGE HEADING.

TOP-OF-PAGE.
WRITE: /001 DATA, SY-DATUM,
025 LISTA DE CLIENTES,
060 PAGE, SY-PAGNO.
END-OF-PAGE
O evento ser executado no final de cada pgina.
Normalmente usado para impresso de informaes como nmero de
pgina ou rodap.
Ex:
END-OF-PAGE.
WRITE:
/060 SUB-TOTAL:, W_SUBTOT.

NEW-PAGE
Causa um salto de pgina no relatrio
Usar LINE-COUNT e LINE-SIZE para ajustar o nmero de linhas por pgina e
o nmero de colunas por linha.
RESERV
Sintaxe:
RESERVE <n> LINES.
O sistema executar um salto de pgina se o nmero de linhas definido no
RESERVE for maior que o nmero de linhas restantes a serem impressas
pelo relatrio para aquela pgina.
Usar para assegurar que certas informaes sejam sempre impressas juntas.
FORMAT
Sintaxe:
FORMAT <option 1> ...
<option n> [OFF].
Options:
RESET desliga os formatos
INTENSIFIED mostrar com brilho
INPUT disponibiliza para entrada de dados
INVERSE altera cores ao redor
COLOR <n> liga uma cor

Wander Rodrigues / Claudia Oliveira v09

Pgina 100 de 260

TREINAMENTO ABAP
Use FORMAT para determinar atributos ( cores, brilhos, etc ) de sada para
os dados na tela. OFF pode ser usado com todas as opes exceto com
RESET.
Qualquer formato que voc defina, ser aplicado na prxima instruo
WRITE. O formato vlido at que voc aplique um novo formato ou que
ocorra um evento.
Se voc desejar definir um formato especfico para um determinado(s)
campo(s) dentro da instruo WRITE, ento voc pode especificar o formato
dentro do prprio comando.
Exemplos:
FORMAT INTENSIFIED. FORMAT INPUT OFF.
WRITE: HELLO INTENSIFIED OFF , BYE BYE INPUT, HI .
Como resultado o HELLO aparecer em display normal e no abrir para
input.
BYE BYE aparecer com brilho e abrir para input e HI aparecer com brilho
e no abrir para input.
REPORT ZTESTE2.
LOOP AT TABINI.
AT NEW ANLKL.
NEW-PAGE.
FORMAT COLOR 6 INTENSIFIED OFF.
WRITE:/002 'Classe : ', TABINI-ANLKL.
ENDAT.
AT END OF ANLKL.
FORMAT COLOR 5 INVERSE.
ENDAT.
Opes para configurar o formato de sada de um relatrio
FORMAT COLOR <n> [ON] INTENSIFIED [ON|OFF] INVERSE [ON|
OFF].

<n>
OFF Ou
COL_BACKGROUND

<c>

Color

Intended for

Depende do
GUI

background

Ou COL_HEADING

grey-blue

headings

Ou COL_NORMAL

light grey

list bodies

Ou COL_TOTAL

Yellow

totals

Ou COL_KEY

blue-green

key columns

Ou COL_POSITIVE

Green

positive threshold value

Wander Rodrigues / Claudia Oliveira v09

Pgina 101 de 260

TREINAMENTO ABAP

Ou COL_NEGATIVE

Red

negative threshold value

Ou COL_GROUP

Violet

group levels

Wander Rodrigues / Claudia Oliveira v09

Pgina 102 de 260

TREINAMENTO ABAP

Sub-rotinas
Utilizando sub-rotinas a lgica do programa se torna mais clara e com isso
mais fcil de fazer manuteno.
Quando um processo for executado mais de uma vez no programa, evita
duplicao de cdigo.
Tambm usado para reduzir instrues muito grandes, para uma de
tamanho mais manejvel.
Em um programa estruturado, a instruo PERFORM sempre far
referncia a uma rotina que estar escrita abaixo.
As rotinas FORM devem ser escritas em ordem de chamada ou agrupadas
por assunto.
Para se tornar um programa de fcil entendimento utilize nome descritivos
( por exemplo: READ_T005T ou WRITE_ITEM_LINE ).
Embora hfens (-) sejam permitidos em nomes de subrotina, a SAP
aconselha que seja usado underscore (_) como nos programas standards.

PERFORM READ_TAB.
FORM READ_TAB.
LOOP AT I_TAB.
WRITE /001 I_TAB-MATNR.
ENDLOOP.
ENDFORM.
VARIVEIS GLOBAIS x LOCAIS
GLOBAIS
Declaradas no corpo do programa, fora de uma rotina. Devem ter nome
nico no programa.
REPORT ZSRTEST.
DATA: COUNTER TYPE P,
FLAG.
...
LOCAIS
Declaradas dentro de uma rotina. O nome no precisa ser nico, pois a
varivel local somente valida na rotina onde foi declarada.
FORM READ_TABLE.
DATA: COUNTER TYPE P,
MARKER.
...

Wander Rodrigues / Claudia Oliveira v09

Pgina 103 de 260

TREINAMENTO ABAP
Dados definidos localmente s podem ser tratados dentro da sub-rotina ao
qual eles foram definidos. Se dentro de uma sub-rotina for definido um
campo com o mesmo nome de um dado global, o programa guardar o
valor do campo global e iniciar o processamento da sub-rotina com o
valor do campo local. Aps processamento o valor global voltar.
Os dados locais definidos com a instruo DATA, somente conservam
o seu contedo durante o processamento da sub-rotina. Logo que o
terminar o processamento da sub-rotina o valor do dado local inicializado.

Includes
O ABAP/4 nos oferece a opo de escrever um programa, e increment-lo a
outro por meio da instruo INCLUDE.
Sintaxe:
INCLUDE <nome-programa>.
A compilao do programa principal abranger a lgica de todos os
programas definidos com INCLUDE e seguir a ordem que foram escritos.
Em alguns casos, usado para separar a lgica de grandes programas.
Ex:
Report ZAABB001.
--> programa principal.
INCLUDE ZAATOP01.
--> define variveis.
INCLUDE ZAAPROC01. --> programa de processamento.
INCLUDE ZAAEMIS01. --> programa para impresso.

Opes de Impresso
Quando executamos um report online, o relatrio aparece na tela. No caso
executarmos o report em background, o relatrio enviada para o spool do
usurio.
Podemos imprimir o relatrio a partir da visualizao na tela ou via spool.
Inclusive, na impresso via spool, temos a oportunidade de alterar as opes
de impresso default.
No entanto, em alguns casos, surge a necessidade de alterar as opes
default de impresso durante a execuo do report.
Atravs do comando NEW-PAGE PRINT ON, podemos alterar os parmetros.
Por exemplo, mesmo executando o report online necessitamos que a lista
gerada sempre seja enviada para o spool do usurio. Neste caso, usaramos:
NEW-PAGE PRINT ON
DESTINATION 'LOCL'
COVER TEXT 'COMISS'
IMMEDIATELY ' '
KEEP IN SPOOL 'X'
LAYOUT
'X_65_255'
LINE-SIZE
'200'
NO DIALOG.

Wander Rodrigues / Claudia Oliveira v09

Pgina 104 de 260

TREINAMENTO ABAP

PROGRAMAS
Reports so programas executveis que podem servir a diferentes propsitos:
- Exibio de relatrios em tela
- Exbio de listas
- ALV
- Interfaces de carga ou extrao de dados
- Consultas
- Algumas atualizaes
Programas do tipo Report podem ser executados atravs da transao SE38 ou criandose uma transao.
Para criar um programa, entre na transao SE38, informe o nome do programa e clique
em Criar

Wander Rodrigues / Claudia Oliveira v09

Pgina 105 de 260

TREINAMENTO ABAP

Informe os atributos do programa. O Tipo de programa 1 define o programa como


Report. Clique em Gravar

Wander Rodrigues / Claudia Oliveira v09

Pgina 106 de 260

TREINAMENTO ABAP
Para executar o programa a partir do editor, salve, ative o programa e pressione F8.

Wander Rodrigues / Claudia Oliveira v09

Pgina 107 de 260

TREINAMENTO ABAP

Programas Comando DATA


O comando DATA serve para definir variveis.
A sintaxe do comando DATA bem extensa ento vamos ver alguns exemplos de
declaraes de variveis.
Este comando declara uma varivel V_DIA que definida como um campo
NUMRICO com 2 posies, ou seja, esta varivel aceita somente valores entre 00 e
99.
DATA v_dia TYPE n LENGTH 2.
Logo aps o comando DATA vemos o nome da varivel, seguida do comando TYPE n,
onde n o tipo de dado NUMRICO e finalmente o comando LENGTH que identifica
o tamanho da varivel.
O campo telefone por exemplo, alm de nmeros ele pode aceitar parntesis e um hfen.
Ento ao declarar uma varivel para armazenar o nmero do telefone ela no poderia ser
numrica. Veja o exemplo abaixo:
DATA v_telefone TYPE c LENGTH 20.
Este comando cria uma varivel caracter (TYPE c) com tamanho de 20 posies, ou
seja, ela poderia armazenar tanto um nmero (Ex.: 34632040) como tambm um
nmero formatado (Ex.: +55 (31) 3463-2040 )
So vrios os tipos de variveis que podemos criar. Alguns deles so mais utilizados:
- TYPE c Varivel caracter
- TYPE n Varivel numrica, mais utilizada em cdigos, por exemplo, nmero de NF
- TYPE i Varivel numrica, mais utilizada para clculos
- TYPE p Varivel numrica com casas decimais
- TYPE d Varivel do tipo data no formato AAAAMMDD
- TYPE t Varivel do tipo hora no formato HHMMSS
Existem diversos outros tipos de variveis mas por enquanto vamos trabalhar somente
com esses.
Com o tempo voc ir se acostumar com o melhor tipo de dados a ser utilizado. Ex.:
Para criar uma varivel que armazene o salrio, o melhor tipo de varivel seria o tipo P,
pois um tipo numrico e que aceita casas decimais.

Wander Rodrigues / Claudia Oliveira v09

Pgina 108 de 260

TREINAMENTO ABAP

Programas Comando WRITE


O comando WRITE serve para fazer relatrios ou para imprimir uma informao na
tela.
Por exemplo, veja o comando abaixo:
WRITE Treinamento abap.
Este comando, quando executado dentro de um programa, imprime na tela o texto:
Treinamento abap
Para saltar de linha voc pode usar o comando /:
WRITE Treinamento.
WRITE / abap.
Este cdigo imprime na tela o texto:
Treinamento
abap
Tambm possvel posicionar o texto:
WRITE Treinamento.
WRITE AT 40 abap.
Treinamento

abap

Note que, como no foi usado o comando /, o texto abap impresso na coluna 40 mas
na mesma linha do texto Treinamento.
A sintaxe do WRITE pode variar muito e ao longo do curso vamos aprender novas
formas de utilizar este comando.

Wander Rodrigues / Claudia Oliveira v09

Pgina 109 de 260

TREINAMENTO ABAP

Programas - Parmetros de seleo - Parameter


Os parmetros de entrada (PARAMETERS) criam uma tela com critrios de seleo
para serem utilizados como filtro pelo programa.
PARAMETERS
Este comando deve ser utilizado para criar um campo na tela para que o usurio possa
entrar um valor.
O exemplo

Produz como resultado um campo na tela para o usurio digitar o cdigo da empresa.

Wander Rodrigues / Claudia Oliveira v09

Pgina 110 de 260

TREINAMENTO ABAP

Programas - Parmetros de Seleo Select-Options


Este comando cria na tela um range de valores para serem utilizados como filtro pelo
usurio
O exemplo

Produz o resultado

Wander Rodrigues / Claudia Oliveira v09

Pgina 111 de 260

TREINAMENTO ABAP

VARIANTES
Armazena parmetros, que sero utilizados na execuo de um programa.
O sistema possibilita a gravao das variantes de execuo e a modificao de seus
atributos.
A gravao permite que o programa possa ser executado de modo automtico,
pois ela poder ser associada com um job.
No momento da execuo, uma variante pode ser criada, atravs da opo Goto
-> Save as variant , e desta forma sua execuo poder ser repetida quando for
necessrio.
Est opo similar ao boto de Criar que existe dentro do tpico de Variantes.

Wander Rodrigues / Claudia Oliveira v09

Pgina 112 de 260

TREINAMENTO ABAP

VINCULANDO PROGRAMAS
SET/GET PARAMETER ID
uma forma de transferncia de dados, utilizando rea de memria SAP.
Os campos chaves, principalmente, so associados a um PARAMETER ID nas
transaes standard.
Mesmo quando criamos uma nova transao, podemos fazer esta
associao.
Podemos identificar o parameter id teclando F1 e verificando as informaes
tcnicas do campo.
Quando executamos uma lista interativa onde desejamos navegar para outra
transao, podemos transferir a informao de campos chave utilizando SET
PARAMETER ID no evento AT LINE-SELECTION.
Por exemplo, num relatrio de itens de ordens de venda, ao clicar sobre o
cdigo do material, desejamos acessar a transao MMBE para verificar sua
disponibilidade no centro.
Sintaxe do exemplo acima:
AT LINE-SELECTION.
Check not v_matnr is initial.
SET PARAMETER ID 'MAT' FIELD v_matnr.
SET PARAMETER ID 'WRK' FIELD v_werks.
CALL TRANSACTION 'MMBE'.
Neste exemplo, as variveis v_matnr e v_werks, teriam de ser includas no
comando HIDE do report ou poderiam ser calculadas pela sua posio dentro
da varivel sy-lisel.

SUBMIT
Aciona outro programa executvel.
Sintaxe:
SUBMIT <rep> [AND RETURN] [<options>].
A opo AND RETURN aciona o programa em uma nova sesso e permite
retornar ao programa que fez a chamada.
Podemos transferir parmetros utilizando a opo complementar WITH.

EXPORT/IMPORT
Outra forma de transferir dados utilizando a memria SAP. Os dados so
armazenados num MEMORY ID, atravs do comando IMPORT no programa
Wander Rodrigues / Claudia Oliveira v09

Pgina 113 de 260

TREINAMENTO ABAP
de origem e recuperados no programa de destino atravs do comando
EXPORT.
Esta funes permitem que dados sejam passados em campos, estruturas e
tabelas interns, de um programa para outro. No entanto, os objetos devem
ter mesmas caractersticas nos dois programas.
Sintaxe:
No programa de origem:
EXPORT <obj1> TO MEMORY ID <id>.
SUBMIT <program2>
No programa de destino:
IMPORT <obj1> FROM MEMORY ID <id>.

PERFORM
Pode-se utilizar o comando PERFORM para executar sub-rotina de outro
programa.
Sintaxe:
PERFORM sub_rotina1(programa2) AND RETURN.

LEAVE
Para retornar ao programa que originou a chamada.
Sintaxe:
LEAVE PROGRAM.

Wander Rodrigues / Claudia Oliveira v09

Pgina 114 de 260

TREINAMENTO ABAP

DICIONRIO DE DADOS
O dicionrio abap utilizado para descrever e gerenciar todas as definies de dados
usadas pelo sistema.
Transao: SE11

Principais objetos: tabelas, vises, estruturas, elementos de dados, domnios e


ajuda de pesquisa.

Transao SE11 - Visualizao/manuteno dos objetos no dicionrio.

Wander Rodrigues / Claudia Oliveira v09

Pgina 115 de 260

TREINAMENTO ABAP

Domnios
Define as CARACTERSTICAS TCNICAS de um campo.
Campos diferentes com mesmas caractersticas, tem mesmo domnio.
Quando altera o domnio, reflete em todos os campos associados.
Ex:
TAB1
TAB2
TAB3

DATA ELEMENT 1

DATA ELEMENT 2

DOMAIN

No domnio ficam as informaes de tamanho, formato, decimais e


checktables (validao fixa ou via tabelas auxiliares).
|-- No dom/interv vlrs/ tab valores

Elementos de dados
o objeto que descreve o significado dos campos de tabelas ou estruturas.
Campos com mesmo significado referem-se ao mesmo elemento.
Em textos, cada campo tm 3 denominaes. A denominao breve a que
aparece em relatrios e telas.
No elemento pode incluir documentao explicando o contedo de um
campo. Esta informao a que aparece teclando F1.

Tabelas
So compostas de campos, associados aos elementos de dados e domnios.
Ao alterarmos a estrutura de uma tabela que j possui dados cadastrados, o
sistema verifica se a alterao exige uma converso dos dados. Caso
necessrio, podemos executar a converso, mantendo os dados atuais.
As tabelas Pooled e Cluster so tipos especiais de tabelas no ABAP/4
Dictionary.
So formadas por um grupo de vrias tabelas definidas logicamente no
dicionrio de dados(ABAP/4 Dictionary) e juntas fisicamente em uma nica
tabela fsica no banco de dados(DBMS).
Desvantagens:
No podem ser utilizadas como View ou ABAP JOINs
No possuem ndices secundrios
No utilizao de GROUP BY, ORDER BY, ...
No pode ser acessada utilizando o acesso nativo (NATIVE SQL)
No possuem appends( campos adicionais)
Wander Rodrigues / Claudia Oliveira v09

Pgina 116 de 260

TREINAMENTO ABAP
Por este motivo, deve-se observar mais atentamente a performance do
programa, quando for utilizar uma destas tabelas. Ex: BSEG.
Adiante em DICAS DE PERFORMANCE, voltaremos a abordar este assunto.
TABELAS POOL

Formada pela unio de vrias tabelas lgicas do ABAP/4 Dictionary que no


so dependentes de chave entre si.
A definio de uma tabela pool consiste essencialmente de dois campos
(tabname e varkey) e de um campo longo de argumento(vardata) .
TABELAS CLUSTER

Nas tabelas tipo cluster, os esto distribudos entre vrias


tabelas e agrupadas em uma nica tabela de banco de dados.
Wander Rodrigues / Claudia Oliveira v09

Pgina 117 de 260

TREINAMENTO ABAP
As tabelas so dependentes entre si para formao da
chave(cluster key).
Estruturas
Criadas da mesma forma que as tabelas, as estruturas no
possuem mais de uma ocorrncia. So reas de memria muito
utilizadas para reunir campos de diversas tabelas em um s
registro (layout).
Ajudas de pesquisa3
uma funo standard do sistema R/3 que disponibiliza ao usurio uma
lista das possibilidades de entrada para um campo de uma tela.
Isto ocorre automaticamente sempre que, na definio do campo
informamos a sua tabela de validao.
Esta funo, chamada com o acionamento da tecla F4.

Views
Os dados para uma aplicao, geralmente esto distribudos em vrias
tabelas.
Viso o objeto do dicionrio que permite combinar estes dados, de uma
maneira otimizada, sobre uma estrutura.
possvel visualizar os dados de uma viso, com a transao SE16.
Os dados de uma viso derivam de uma ou mais tabelas, mas no so
armazenados fisicamente.

ndice
uma cpia de uma base de dados com campos reduzidos, que permitem
um acesso mais rpido a um registro.
Nesta base de dados reduzida esto os campos ordenados de maneira a
promover a classificao desejada.
Esta base de dados sempre classificada e nela contm pointers que
apontam para o registro correspondente na base de dados original.
O ndice PRIMRIO formado pelos campos chaves da tabela original. O
ndice primrio gerado automaticamente, quando um registro includo na
tabela.
possvel criar outros ndices para uma mesma tabela, eles so chamados ndices
SECUNDRIOS. Estes so criados para melhorar a performance de programas caso
a chave primria no possa ser utilizada.

Contedo de tabelas
Transao SE16 - Visualizao dos dados de uma tabela ou view.
Wander Rodrigues / Claudia Oliveira v09

Pgina 118 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 119 de 260

TREINAMENTO ABAP

Dicionrio de dados - Criao de domnios


Um domnio descreve os atributos formais de um campo, como formato (caractere,
numrico, data...) e o tamanho.
Para criar um domnio, execute a transao SE11 e clique em Criar

Informe os parmetros Categoria de dados e nmero de posies

Salve

e ative

o domnio.

Wander Rodrigues / Claudia Oliveira v09

Pgina 120 de 260

TREINAMENTO ABAP

Dicionrio de dados - Criao de elementos de dados


Um elemento de dados contm informaes sobre um determinado campo como, por
exemplo, o tipo de dado (domnio), o help on-line (F1), a lista de valores possveis para
o campo (matchcode) e a descrio funcional do campo.
Para criar um elemento de dados, execute a transao SE11, marque Categoria dados,
informe o nome do elemento de dados e clique em Criar.

Na tela seguinte, marque Elemento de dados e clique em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 121 de 260

TREINAMENTO ABAP

Preencha a descrio do elemento de dados e informe o domnio onde o tipo de dados


deve ser definido. Em seguida clique na guia Denomin.Campo

Na guia Denomin.campo informe as descries, breve, mdia e longa e o ttulo do


elemento de dados. Salve e ative o elemento de dados.

Wander Rodrigues / Claudia Oliveira v09

Pgina 122 de 260

TREINAMENTO ABAP

Dicionrio de dados - Criao de tabelas


Pool de tabelas
possvel utilizar as tabelas pool para arquivar dados de controle (por exemplo,
seqncias de telas, parmetros de programa ou dados temporrios). possvel agrupar
vrias tabelas pool em um pool de tabela. Ao pool de tabela corresponde uma tabela
fsica no banco de dados, na qual esto arquivados todos os registros das tabelas pool
atribudas.
Tabela cluster
Em tabelas cluster possvel arquivar textos continuos como, por exemplo,
documentao. possvel agrupar vrias tabelas cluster em um cluster de tabela. Nesta
categoria de tabela, so agrupadas vrias linhas lgicas de diferentes tabelas em um
registro fsico. Desse modo, possvel uma gravao por objeto ou um acesso por
objeto. Como condio prvia para o agrupamento de tabelas em clusters, necessrio
que exista uma correspondncia pelo menos entre partes da sua chave. Vrias tabelas
cluster so gravadas em uma tabela correspondente no banco de dados.
Tabela transparente
Existe uma tabela fsica no banco de dados para uma tabela transparente. Os nomes da
tabela fsica e da definio lgica de tabela so coincidentes no ABAP Dictionary.
Todos os dados empresariais e dados de aplicao so arquivados em tabelas
transparentes.
Para criar uma tabela transparente, execute a transao SE11, informe o nome da tabela
e clique em Criar.

Wander Rodrigues / Claudia Oliveira v09

Pgina 123 de 260

TREINAMENTO ABAP

Informe a descrio, Classe de entrega, Tipo de atualizao e clique em Campos

Na guia de Campos informe o nome dos campos definindo-os atravs dos respectivos
elementos de dados. O primeiro campo deve ser sempre o mandante definido pelo
elemento de dados MANDT.

Wander Rodrigues / Claudia Oliveira v09

Pgina 124 de 260

TREINAMENTO ABAP

Salve a tabela. No ative ainda. Clique em Configuraes tcnicas. Preencha a categoria


de dados e categoria de tamanho

Salve novamente e clique em Voltar para retornar tela principal de atualizao de


tabelas. Ative a tabela

Wander Rodrigues / Claudia Oliveira v09

Pgina 125 de 260

TREINAMENTO ABAP

SM30
Ao criarmos uma nova tabela na transao SE11, podemos utilizar o recurso de gerao
automtica de atualizaes para que o sistema crie automaticamente uma tela de
manuteno. ( no menu acessar Utilitrios / gerador de atualizao de tabela)
No entanto, necessrio que j esteja criado um grupo de funes onde possamos
associar esta tela de manuteno.
Para criar este grupo de funes, usamos a transao SE80 e somente podemos utiliz-lo
depois de ativado.
Pode-se criar um grupo de funes por mdulo, para agrupar todas as telas de
atualizao. No entanto, a quem prefira criar um grupo de funo por tabela, para evitar
problemas de transporte.
Para criar um programa que faa a manuteno da tabela transparente, proceder da
seguinte forma:

Crie a tabela (transao SE11) conforme solicitado. Neste caso


utilizaremos a tabela de exemplo ZTCLIENTE

Certifique-se de que a tabela est ativa.

Wander Rodrigues / Claudia Oliveira v09

Pgina 126 de 260

TREINAMENTO ABAP

Ainda na transao SE11, na tela de modificao da tabela (tela acima),


clique no menu Utilirios \ Gerador de atualizao de tabelas

Wander Rodrigues / Claudia Oliveira v09

Pgina 127 de 260

TREINAMENTO ABAP
Voc ver a tela abaixo:

No campo Grupo autorizaes informe &NC&, Grupo de funes informe o


mesmo nome da tabela ZTCLIENTE, marque o radiobutton Nvel nico e preencha
Tela de sntese com o valor 1.

Em seguida, clique em Criar (boto com uma folha em branco)

Wander Rodrigues / Claudia Oliveira v09

Pgina 128 de 260

TREINAMENTO ABAP
Na tela abaixo, preencha o campo Pacote com $TMP e clique em Gravar

Nesta tela, clique em objeto local

Wander Rodrigues / Claudia Oliveira v09

Pgina 129 de 260

TREINAMENTO ABAP
O resultado final dever ser uma tela conforme a figura abaixo:

Wander Rodrigues / Claudia Oliveira v09

Pgina 130 de 260

TREINAMENTO ABAP
Para exibir, criar ou modificar registros da tabela, execute a transao SM30

Coloque o nome da sua tabela (neste exemplo ZTCLIENTE) e clique em Exibir ou


Atualizar.

Wander Rodrigues / Claudia Oliveira v09

Pgina 131 de 260

TREINAMENTO ABAP
Se a sua tabela estiver vazia, voc ver a tela abaixo:

Clique no boto Entradas novas para incluir novos registros.

Wander Rodrigues / Claudia Oliveira v09

Pgina 132 de 260

TREINAMENTO ABAP
Para criar uma transao para o programa de atualizao da tabela, execute a transao
SE93

Preencha o campo Cdigo de transao com o cdigo da transao a ser criado e clique
em Criar
Na tela abaixo, preencha o texto breve da transao, clique no boto Transao com
parmetros e clique em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 133 de 260

TREINAMENTO ABAP
Role a tela abaixo para ver o quadro ao final e preencha conforme a figura:

Transao: SM30
Marcar o checkbox Ignorar 1. Tela
Preencher o quadro ao final de acordo com a figura
VIEWNAME ZTCLIENTE
UPDATE
X

Salve a transao. Para executar basta digitar o cdigo de transao criado na linha de
comando (Neste exemplo ZCADCLI)

Wander Rodrigues / Claudia Oliveira v09

Pgina 134 de 260

TREINAMENTO ABAP

Dicionrio de dados - Criao de estruturas


Estruturas so agrupamentos de campos. So muito teis para facilitar a manipulao
dos dados em programas, podem facilitar o trabalho de criao de funes, servem para
formatar relatrios e tambm para a troca de dados entre programas.
A criao de uma estrutura similar criao de uma tabela transparente. Mas a
semelhana termina a. Tabelas transparentes so criadas para armazenar informaes
no banco de dados enquanto que estruturas s armazenam informaes durante a
execuo do programa, ou seja, funcionam como se fossem variveis.
Para criar uma estrutura, entre na transao SE11.

Marque a opo Categoria de dados, digite o nome ZEXX_TESTE e clique em Criar.


Na tela abaixo, seleciona Estrutura e clique em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 135 de 260

TREINAMENTO ABAP

Voc ver a seguinte tela:

Preencha o campo Descrio breve com o texto Teste de criao de estrutura e


preencha as colunas conforme exemplo a seguir:

Clique em Salvar.
Na tela abaixo, clique em Objeto local

Wander Rodrigues / Claudia Oliveira v09

Pgina 136 de 260

TREINAMENTO ABAP

Clique em Ativar para ativar a estrutura

Pronto agora a estrutura j est criada e pode ser utilizada nos programas, funes e
objetos abap.

Wander Rodrigues / Claudia Oliveira v09

Pgina 137 de 260

TREINAMENTO ABAP

Dicionrio de dados - Criao de Categorias de tabela


Categorias de tabelas so objetos que utilizam estruturas para definir tabelas internas.
Voc pode criar uma estrutura e em seguida criar uma categoria de tabela para esta
estrutura. Depois, no seu programa, voc cria uma tabela interna a partir da categoria de
tabela criada.
Para criar uma categoria de tabela, execute a transao SE11

Preencha o campo Categoria dados com o nome ZCXX_CAT_TAB e clique em Criar

Na tela abaixo, selecione Categoria de tabela e clique em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 138 de 260

TREINAMENTO ABAP

Voc ver a tela abaixo:

Preencha o campo Descrio breve e Tipo de linha conforma mostrado a seguir

Clique em Salvar.

Wander Rodrigues / Claudia Oliveira v09

Pgina 139 de 260

TREINAMENTO ABAP

Na tela abaixo clique em Objeto local

Clique em Ativar

para ativar sua Categoria de tabela

Quando receber a mensagem abaixo o objeto estar pronto para ser utilizado

Wander Rodrigues / Claudia Oliveira v09

Pgina 140 de 260

TREINAMENTO ABAP

EVENTOS
Os programas escritos em abap trabalham com alguns eventos pr-definidos
Ateno: EVENTOS possuem momentos especficos para execuo. No importa o
local do programa onde so executados e sim a ORDEM de execuo deles.
Exemplo:

Report zwander.
START-OF-SELECTION.
Write abap.
INITIALIZATION.
Write Treinamento.
Mesmo com o evento initialization declarado no final do programa, ele executado
SEMPRE ANTES do start-of-selection. O resultado impresso ser Treinamento abap
O evento AT SELECION-SCREEN ON.... serve para validar campos na tela.
Exemplo:
REPORT zrxx_consiste_campo.
PARAMETERS p_nome TYPE c LENGTH 30.
AT SELECTION-SCREEN ON p_nome. Consiste o campo p_nome da tela
IF p_nome IS INITIAL.
MESSAGE e398(00) WITH Nome obrigatrio.
ENDIF.
O evento AT SELECION-SCREEN. serve para validar todos os campos na tela.
Exemplo:
REPORT zrxx_consiste_campos.
PARAMETERS p_nome
PARAMETERS p_tel

TYPE c LENGTH 30.


TYPE c LENGTH 20.

AT SELECTION-SCREEN. Consiste todos os campos da tela


IF p_nome IS INITIAL
AND p_tel IS INITIAL.
MESSAGE e398(00) WITH Informe Nome e telefone.
ENDIF.

Wander Rodrigues / Claudia Oliveira v09

Pgina 141 de 260

TREINAMENTO ABAP
O programa abaixo (EXEMPLO), possui 3 eventos: 2 AT SELECTION-SCREEN ON...
para validar campos especficos da tela e 1 AT SELECTION-SCREEN para validar
todos os campos da tela.
*&---------------------------------------------------------------------*
*& Report ZTESTE_REPORT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zteste_report.
DATA v_vbeln TYPE vbak-vbeln.
DATA v_matnr TYPE vbap-matnr.
* Parmetros de entrada
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME.
PARAMETERS
p_vbeln TYPE vbak-vbeln OBLIGATORY. "Ordem de venda
PARAMETERS
p_posnr TYPE vbap-posnr OBLIGATORY. "Item
PARAMETERS
p_matnr TYPE vbap-matnr OBLIGATORY. "Material
SELECTION-SCREEN END OF BLOCK bl1.
* Consiste a ordem de venda
AT SELECTION-SCREEN ON p_vbeln.
SELECT SINGLE vbeln
INTO v_vbeln
FROM vbak
WHERE vbeln = p_vbeln.
IF sy-subrc NE 0.
MESSAGE e398(00) WITH 'Ordem no existe'.
ENDIF.
* Consiste ordem de venda e item (Bloco BL1)
AT SELECTION-SCREEN ON BLOCK bl1.
SELECT SINGLE vbeln
INTO v_vbeln
FROM vbap
WHERE vbeln = p_vbeln AND
posnr = p_posnr.
IF sy-subrc NE 0.
MESSAGE e398(00) WITH 'Ordem/Item no existem'.
ENDIF.
* Consiste todos os campos da tela
AT SELECTION-SCREEN.
SELECT SINGLE matnr
INTO v_matnr
FROM vbap
WHERE vbeln = p_vbeln AND
posnr = p_posnr.
IF v_matnr NE p_matnr.
MESSAGE e398(00) WITH 'Material informado difere do item'.
ENDIF.

Wander Rodrigues / Claudia Oliveira v09

Pgina 142 de 260

TREINAMENTO ABAP

Alguns eventos (verificar o help dos commandos)


LOAD-OF-PROGRAM
Este evento executado UMA NICA VEZ, ao iniciar a execuo do programa.
Se ele existir, o primeiro evento a ser executado. Para ser executado novamente
necessrio sair do programa e entrar de novo.
Voc pode usar para determinar variveis que devem ser preenchidas uma nica
vez como por exemplo a hora em que o programa comeou a ser executado, ou
para inicializar alguma varivel.
INITIALIZATION
Este evento executado antes de aparecer a tela de seleo (tela de parameters e
select-options), ou seja, na primeira vez que voc executa o programa este
evento, se existir, executado. O usurio ento preenche os campos da tela e
clica em executar. O programa vai exibir o relatrio na tela. Quando o usurio
clica em Voltar (seta verde) para retornar tela de seleo, o programa executa
o INITIALIZATION novamente.
Resumindo: executado sempre antes da tela de seleo aparecer.
Este evento til para manipular os parameters e select-options ou para
reinicializar variveis e tabelas internas.
START-OF-SELECTION
Este evento, quando existe, executado sempre que o usurio preenche os
parmetros de seleo e clica em executar ou pressiona F8. Caso no exista
parameters nem select-options no programa ele executado automaticamente.
Normalmente neste evento que fazemos a leitura dos dados nas tabelas
transparentes.
END-OF-SELECTION
Este evento executado aps o start-of-selection ou automaticamente, caso o
start-of-selection no exista.
o local indicado para criar a lgica do programa, ou seja, no start-of-selection
voc faz os selects e popula as tabelas internas e no end-of-selection voc faz os
loops, reads, writes e lgicas que voc precisa.
AT LINE-SELECTION
Este evento, se existir, executado quando o usurio clica 2x sobre alguma linha
do relatrio que est na tela.
indicado para construir a lista secundria a partir da linha que o usurio clicou
ou para fazer qualquer outro processo que envolva somente a linha escolhida
pelo usurio.

Wander Rodrigues / Claudia Oliveira v09

Pgina 143 de 260

TREINAMENTO ABAP

AT SELECTION-SCREEN
Este evento utilizado para fazer consistncias e para modificar atributos de
campos da tela. Ele, e suas variaes abaixo, ocorrem quando o usurio manda
executar o programa ou pressionar ENTER.
AT SELECTION-SCREEN ON p_campo
Este evento consiste um parameter da tela.
AT SELECTION-SCREEN ON so_campo-low
e AT SELECTION-SCREEN ON so_campo-high.
Evento para consistir os campos de e at do Select-options.
AT SELECTION-SCREEN.
Evento utilizado para consistir TODOS os parameters e select-options ao
mesmo tempo.
AT SELECTION-SCREEN OUTPUT.
Este evento executado imediatamente antes da tela de seleo ser exibida.
indicado quando se quer proteger ou desproteger um campo, por exemplo.
TOP-OF-PAGE
Evento utilizado para criar o cabealho da primeira lista (lista bsica ou lista
primria)
TOP-OF-PAGE DURING LINE-SELECTION
Evento utilizado para criar o cabealho da segunda lista (lista secundria).

Wander Rodrigues / Claudia Oliveira v09

Pgina 144 de 260

TREINAMENTO ABAP

Tabelas Internas
Tabelas internas so um meio de armazenar dados com uma estrutura particular na memria ABAP. Os dados so armazenados linha por linha na memria,
E cada linha tm a mesma estrutura. As colunas individuais de uma linha so
conhecidas como colunas da tabela interna.
Tabela interna um dos dois tipos de dados estruturados (o outro a
Estrutura) em ABAP.
o Tipo de tabela
O tipo de tabela define a maneira pela qual o ABAP acessa as entradas
Individuais da tabela. Existem trs tipos de tabela:
Tabela interna tem um ndice linear. Voc pode acess-las usando ou
o ndice ou a chave. Se voc usar a chave, o tempo de resposta estar em relao linear com o nmero de entradas da tabela. A chave de
uma tabela padro sempre no nica, e voc no pode incluir qualquer especificao para a singularidade na definio da tabela.
Tabelas interna Sorted so sempre corretamente salvas pela chave. Elas
tambm tm uma chave linear, e, como as tabelas padro, voc pode
acess-las usando ou o ndice da tabela ou pela chave. Quando voc
usa a chave, o tempo de resposta estar em relao logartimica com o
nmero de entradas da tabela, desde que o sistema usa uma pesquisa
binria. A chave de uma tabela classificada pode ser nica, ou no
nica, e voc deve especificar ou UNIQUE (nica) ou NON-UNIQUE (no
nica) na definio da tabela.
Tanto as tabelas padro quanto as tabelas classificadas pertencem ao
Grupo genrico de tabelas ndices.
Tabelas interna Hashed no tm ndice linear interno. Voc s pode acessar tabelas mistas especificando a chave. O tempo de resposta constante, independente do nmero de entradas da tabela, desde que a pesquisa usa um algortimo misto. A chave de uma tabela mista deve ser
nica, e voc deve especificar UNIQUE (nica) na definio da tabela.
Ao contrrio de outros tipos de dados ABAP definidos pelo usurio, voc no
tm de especificar o tipo de uma tabela interna completamente. Por exemplo,
Quando voc cria um tipo de dados para uma tabela interna, voc pode omitir
somente a chave ou o tipo de linha e a chave.

Wander Rodrigues / Claudia Oliveira v09

Pgina 145 de 260

TREINAMENTO ABAP

Usando tabelas internas


Tabelas internas em ABAP oferecem a funo de matrizes (arrays), e voc sempre
deve usar tabelas internas quando voc quer processar conjuntos de dados
com uma estrutura definida dentro de um programa. Um uso particularmente
importante para tabelas internas salvar e formatar os contedos de tabelas de bancos de dados dentro de um programa. Elas tambm so a melhor ma neira de usar estruturas de dados muito complexas dentro de um programa
ABAP.
Trocando dados usando tabelas internas
Se voc acessa as entradas individuais da tabela, voc no trabalha diretamente com os dados na tabela. Ao invs disso, voc trabalha em um objeto de
dados separado chamado de rea de trabalho. A rea de trabalho chamada de
Header da tabela interna, e deve ser do mesmo tipo que a tabela interna.
Quando voc l dados de uma linha da tabela, ela lida para a rea de trabalho.
Voc pode, ento, trabalhar com os contedos da rea de trabalho em seu
programa. Quando voc grava dados em tabelas internas, voc deve,
primeiramente grav-los no header da tabela interna e ento, transferi-los para
a tabela interna.
Operaes de tabelas internas
As seguintes operaes so tpicas para trabalhar com tabelas internas:
o Preencher:
- APPEND
- COLLECT
o Ler:
- READ
- LOOP
o Modificar:
- MODIFY
o Deletar:
- DELETE

Wander Rodrigues / Claudia Oliveira v09

Pgina 146 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 147 de 260

TREINAMENTO ABAP

Escolhendo um tipo de tabela


O tipo de tabela (e especialmente o tipo de acesso) que voc escolhe, de pende de quais operaes acima voc ir usar mais, para as entradas em sua
Tabela:
o Standard Tables (Tabelas padro):
Este tipo de tabela particularmente apropriado se voc quiser acessar
As entradas individuais da tabela usando o ndice. Esta a maneira mais
Rpida para acessar as entradas da tabela. Para preencher uma tabela paDro, inclua linhas usando a declarao (APPEND). Voc deve ler, modifiCar e deletar linhas referenciando-se o ndice (opo INDEX com o comanDo ABAP relevante).
O tempo de resposta para se acessar uma tabela padro est em relao
Linear com o nmero de entradas da tabela. Se voc precisa usar acesso
Pela chave, tabelas padro so apropriadas se voc puder preencher e
Processar a tabela em passos separados. Por exemplo, voc pode preencher
Uma tabela padro incluindo registros ao final, e ento classific-los.
Se voc ento usar o acesso pela chave com a opo de pesquisa binria
(BINARY), o tempo de resposta estar em relao logartimica com o nmero de entradas da tabela.
o Sorted Tables (Tabelas classificadas)
Este tipo de tabela particularmente apropriado se voc quiser que a
Tabela seja classificada enquanto voc ainda estiver adicionando entraDas a ela. Voc preenche a tabela usando a declarao (INSERT), de acorDo com a sequncia de classificao definida na chave da tabela. As en Tradas da tabela que no se ajustam so reconhecidas antes que elas seJam inseridas. O tempo de resposta para o acesso usando a chave est em
Relao logartimica com o nmero de entradas da tabela, desde que o
Sistema automaticamente usa uma pesquisa binria. As tabelas classificaDas so apropriadas para o processamento sequencial parcial em um LOOP,
Contanto que a condio WHERE contenha o incio da chave da tabela.
o Hashed Tables (Tabelas mistas)
Este tipo de tabela particularmente apropriado se voc quiser usar
O acesso por chave para as entradas da tabela. Voc no pode acessar
Tabelas mistas usando o ndice. Quando voc usa o acesso por chave, o
Tempo de resposta permanece constante, independentemente do nmero de
Entradas da tabela. Da mesma forma que as tabelas de banco de dados, a
chave de uma tabela mista sempre nica. Tabelas mistas so, portanto, uma
maneira til de construir e usar tabelas internas que sejam similares a tabelas
de banco de dados.

Wander Rodrigues / Claudia Oliveira v09

Pgina 148 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 149 de 260

TREINAMENTO ABAP

Declarando tabelas internas


Da mesma forma que outros objetos de dados ABAP, voc pode declarar tabelas
Internas primeiro como um tipo de dados (declarao TYPES), e ento,
declarar objetos de dados referindo-se ao tipo. Alternativamente, voc pode
declar-los diretamente como um objeto de dados (declarao DATA). Quando
voc cria uma tabela interna como um objeto de dados, voc deve notar que
apenas os detalhes administrativos pertencentes tabela so declarados
estaticamente; a quantidade de memria requerida , ao contrrio de todos
os outros objetos ABAP, no fixada. As entradas reais da tabela so geradas
dinamicamente em tempo de execuo por declaraes de preenchimento
operacionais.
Igualmente, quando voc deleta uma entrada, a linha da tabela que foi ocuPada dinamicamente deletada.
Quando voc declara uma tabela interna, voc pode determinar a memria iniCial alocada usando as adies OCCURS ou INITIAL SIZE. Isto pode, em certas
Circunstncias, Ter um efeito no tempo de resposta quando voc preencher a
Tabela interna (veja notas de performance para tabelas internas).
Tabelas internas como parmetros para rotinas
Voc pode passar tabelas internas sem linhas de cabealho para subrotinas
Ou mdulos de funo, ou por valor ou por referncia. Voc tambm pode
Passar tabelas sem linhas de cabealho para subrotinas, mas apenas por reFerncia, usando a adio TABLES.
Se voc passar uma tabela sem linha de cabealho como um parmetro atual
Para um parmetro formal com linha de cabealho (TABLES), o sistema autoMaticamente gera uma linha de cabealho. Se voc quer passar o corpo de uma
Tabela com uma linha de cabealho como uma parmetro atual para um
Parmetro formal, sem uma linha de cabealho, voc pode fazer isso
colocando um par de parnteses quadrados ([]) aps o nome da tabela, como
descrito acima.

Wander Rodrigues / Claudia Oliveira v09

Pgina 150 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 151 de 260

TREINAMENTO ABAP

OPERAES COM TABELAS INTERNAS


APPEND
APPEND LINES OF i_tab1 INTO i_tab2.
mais eficiente que
LOOP AT i_tab1.
APPEND i_tab1 TO i_tab2.
ENDLOOP.
Da mesma forma INSERT LINES OF i_tab1 INTO i_tab2.
READ TABLE
READ TABLE TAB WITH KEY K = 'X' BINARY SEARCH.
MUITO mais eficiente que
READ TABLE TAB WITH KEY K = 'X'.
OBS: No entanto, para o BINARY SEARCH funcionar. A tabela deve estar ordenara
pela chave de pesquisa.
Clusula WHERE no LOOP
LOOP AT itab WHERE k = kval.
" ...
ENDLOOP.
mais eficiente que
LOOP AT itab.
CHECK itab-k = kval.
" ...
ENDLOOP.
Apagando sequncia de registros
DELETE itab FROM 450 TO 550.
mais eficiente que
DO 101 TIMES.
DELETE itab INDEX 450.
ENDDO.
Apagando conjunto de registros
Wander Rodrigues / Claudia Oliveira v09

Pgina 152 de 260

TREINAMENTO ABAP
DELETE itab WHERE k = kval.
mais eficiente que
LOOP AT itab WHERE k = kval.
DELETE itab.
ENDLOOP.
Apagando duplicidades
DELETE ADJACENT DUPLICATES FROM itab COMPARING key.
mais eficiente que
READ TABLE itab INDEX 1 INTO prev_line.
LOOP AT itab FROM 2.
IF itab = prev_line.
DELETE itab.
ELSE.
prev_line = itab.
ENDIF.
ENDLOOP.

Wander Rodrigues / Claudia Oliveira v09

Pgina 153 de 260

TREINAMENTO ABAP

OPERAES COM MAIS DE UMA TABELA INTERNA


Juntando contedo e eliminando duplicidades
LOOP AT itab1.
APPEND itab1 TO itab2.
ENDLOOP.
SORT itab2 BY K.
DELETE ADJACENT DUPLICATES FROM itab2 COMPARING K.
mais eficiente que
LOOP AT itab1.
READ TABLE itab2 WITH key k = itab1-k BINARY SEARCH.
IF SY-SUBRC <> 0.
INSERT itab1 INTO itab2 INDEX SY-TABIX.
ENDIF.
ENDLOOP.
Copiando contedo
TAB_DEST[] = TAB_SRC[].
mais eficiente que
LOOP AT TAB_SRC INTO TAB_DEST.
APPEND TAB_DEST.
ENDLOOP.
Comparando se contedo igual
Usar :
" ...
ENDIF.

IF itab1[] = itab2[].

Wander Rodrigues / Claudia Oliveira v09

Pgina 154 de 260

TREINAMENTO ABAP

Grupo de Funes
Cada funo pertence a um grupo de funo.
Um grupo de funo um programa ABAP do tipo F, o qual criado
exclusivamente para conter mdulos de funes.
Grupos de funo no so executados.
Os mdulos de funo so rotinas externas. Voc no escreve as funes no
programa que faz a sua chamada.
Quando voc chama uma funo, o sistema carrega o grupo de funo
inteiro para memria para chamar o programa.
Todas as funes associadas a um mesmo grupo de funes devem ter um
tema comum. Por exemplo, todas as funes do grupo SCAL executam
clculos com datas.
Para criarmos um grupo de funo utilizamos a transao SE80 (Repository
Browser).
IMPORTANTE: Um grupo de funo somente reconhecido no sistema aps ser
ativado.

Um grupo de funes serve para agrupar funes que tem objetivos semelhantes, ou que
se relacionam para um determinado propsito, por ex.:
1) Funes similares
a. Consiste dgito verificador da conta corrente
b. Consiste dgito verificador do nmero da matrcula do empregado
c. Consiste dgito verificador do CPF
d. Consiste dgito do CNPJ
...
2) Funes interrelacionadas
a. L os dados do funcionrio
b. Atualiza dados do funcionrio
c. Mostra um relatrio com informaes do funcionrio
d. Consiste informaes do funcionrio

Wander Rodrigues / Claudia Oliveira v09

Pgina 155 de 260

TREINAMENTO ABAP
Para criar um grupo de funes, proceder da seguinte forma:
Execute a transao SE80. A tela ser parecida com a que exibida logo abaixo:

Na lista de opes selecione Grupo de funes

Wander Rodrigues / Claudia Oliveira v09

Pgina 156 de 260

TREINAMENTO ABAP

Informe o nome do grupo de funes ZGXX_GRUPO_TESTE e tecle ENTER

Na tela abaixo clique em SIM

Preencha a descrio do grupo de funo e clique em GRAVAR

Na tela de catlogo de objetos, abaixo, clique em Objeto Local

Wander Rodrigues / Claudia Oliveira v09

Pgina 157 de 260

TREINAMENTO ABAP
Pronto. O grupo de funo est criado. Porm ainda est Inativo

Para ativar o grupo de funes, clique com o boto direito sobre o nome do grupo e
selecione ativar

Agora o grupo est est ativo e as funes j podem ser armazenadas neste grupo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 158 de 260

TREINAMENTO ABAP

Funo
Funo um mdulo que pode ser criado dentro do SAP para executar um determinado
processo. A principal caracterstica da funo o fato de que uma vez que esteja criada,
ela pode ser reaproveitada em diversos programas. Por exemplo, se voc tem vrios
programas que calculam o dgito verificador do CPF, voc pode fazer uma funo que
verifique o dgito do CPF e, em seguida, chamar esta funo em todos os programas
onde precisar fazer esta validao. Desta forma o cdigo que verifica o CPF ser escrito
uma vez s, dentro da funo, e somente ser necessrio colocar a chamada da funo
em cada programa. Uma outra vantagem decorrente disto que, se houver uma
modificao no clculo do dgito verificador do CPF, voc s precisar modificar o
cdigo da funo uma vez, e todos os programas j estaro corrigidos.
Uma funo trabalha, resumidamente, da seguinte forma:
- Recebe os campos com as quais vai trabalhar (por exemplo, o nmero do CPF e o
dgito).
- Faz o processamento (por exemplo, calcula o dgito verificador do CPF)
- Retorna um resultado (por exemplo, diz se o dgito que ela recebeu igual ao dgito
que ela calculou ou no)
Os campos que a funo recebe so chamados de parmetros de entrada. O resultado
chamado de parmetros de sada.
CHAMANDO MDULO DE FUNES
Sintaxe:
CALL FUNCTION <function name>
EXPORTING <parameter> = <value>
<parameter> = <value>
...
IMPORTING <parameter> = <value>
<parameter> = <value>

EXCEPTIONS <except.> = <value>.


Use O BOTO MODELO + <nome da funo> para inserir a estrutura de um
mdulo de funo.
<parameters> deve sempre ser uma palavra reservada.
<value> deve ser um parmetro, uma varivel ou uma constante entre
aspas (x).
O nome da funo deve estar sempre entre aspas (x).
O parmetro EXPORTING permite que voc passe dados do REPORT para a
FUNO.
Todos os parmetros que no tenham um valor default deve ser
especificados.

Wander Rodrigues / Claudia Oliveira v09

Pgina 159 de 260

TREINAMENTO ABAP
O parmetro IMPORTING retorna o resultado da FUNO para o REPORT.
Todos os parmetros IMPORTING so opcionais.
O parmetro TABLES usado para passar tabelas internas.
O tipo de dados (TYPE) do parmetro formal (palavra reservada) deve ser o
mesmo do parmetro atual.
PROCESSANDO EXCEES
NO PROGRAMA QUE CHAMA O MDULO DE FUNO
Sintaxe:
CALL FUNCTION ...
EXCEPTIONS NOT_FOUND = 1
OTHERS = 2.
CASE SY-SUBRC.
WHEN 1. <processing>.
WHEN 2. <processing>.
ENDCASE.
Quando usado MESSAGE....RAISING na funo, voc deve definir uma
message id. Se uma exceo ocorrer o sistema preencher os seguintes
campos que podem ser acessados no Report:
SY-MSGTY - Tipo de mensagem.
SY-MSGNO - Nmero de mensagem.
SY-MSGAG - rea de trabalho.
SY-MSGV1 at SY-MSGV4- Contedo dos 4 possveis parmetros de
mensagem.
Quando especificado o parmetro EXCEPTION voc poder tratar algumas
condies de erros individualmente.
OTHERS uma palavra reservada para tratar todas as excees que no
foram tratadas individualmente.
Assim que a funo executar a instruo RAISE o processamento voltar para o
programa que a chamou e o erro poder ser tratado.

Wander Rodrigues / Claudia Oliveira v09

Pgina 160 de 260

TREINAMENTO ABAP
Veja um exemplo de como funciona uma funo:
PROGRAMA

FUNO

Programa pede ao usurio


que digite o CPF e o dgito
verificador

Programa chama a funo


que consiste o dgito
verificador

Funo recebe o CPF e o


dgito verificador

Funo calcula o dgito


internamente e confere se
igual ao que recebeu

Programa recebe o
resultado

Funo retorna um
resultado dizendo se o
dgito est ok ou no

Programa envia
mensagem de erro para o
usurio se no estiver ok

Wander Rodrigues / Claudia Oliveira v09

Pgina 161 de 260

TREINAMENTO ABAP
Para criar uma funo execute a transao SE37

Coloque o nome da funo no campo Mdulo de funo e clique em Criar

Preencha o campo Grupo de funes, com o nome do Grupo de funo criado no tpico
Grupo de funes anteriormente. Preencha tambm o campo Texto breve com uma
descrio que identifique o que esta funo ir fazer. Em seguida, clique em Gravar

Wander Rodrigues / Claudia Oliveira v09

Pgina 162 de 260

TREINAMENTO ABAP
Voc ver a tela abaixo:

Clique em Salvar

para gravar a funo

Agora vamos entender as abas que esto na tela.


Clique na primeira aba Caractersticas

Wander Rodrigues / Claudia Oliveira v09

Pgina 163 de 260

TREINAMENTO ABAP
nesta aba que podemos modificar a descrio da funo. Verifique que ela um
mdulo de funo Normal. Alm disso voc pode ver o usurio que criou e o ltimo
que efetuou modificaes na funo, assim como a data da ltima modificao.
Clique na aba Importao

nesta aba que colocamos os parmetros de entrada da funo, ou seja, que campos,
estruturas ou tabelas internas ela vai receber.
Vamos fazer um exemplo bem simples. Para isso crie um parmetro de importao com
o nome de I_VALOR1 e outro com o nome de I_VALOR2, ambos do tipo inteiro (type
I). Adicione tambm um texto breve para cada um. Veja como deve ficar na figura
abaixo.

Estes dois campos sero os valores que a funo ir receber.

Wander Rodrigues / Claudia Oliveira v09

Pgina 164 de 260

TREINAMENTO ABAP

Clique na aba Exportao

nesta aba que colocamos o resultado que a funo ir devolver, que poder ser um
campo, uma estrutura ou uma tabela interna.
No nosso exemplo, o resultado ser a soma dos dois valores entrados. Crie um
parmetro de exportao E_RESULTADO do tipo inteiro, conforme figura a seguir:

As abas Modific. e Tabelas ainda so muito utilizadas em funes standard, porm


j so obsoletas e por isso no as utilizaremos neste treinamento.

Wander Rodrigues / Claudia Oliveira v09

Pgina 165 de 260

TREINAMENTO ABAP

Clique na Aba Excees.

Excees so erros que podem ocorrer dentro da funo. Imagine um exemplo bem
simples. Voc fez uma funo que recebe 2 valores e divide o primeiro pelo segundo e
devolve um resultado. Porm, se o segundo valor for zero, voc no pode efetuar a
diviso por zero. Neste caso voc precisa retornar uma exceo dizendo que o segundo
valor zero e a diviso no ser efetuada.
No nosso exemplo vamos fazer o seguinte teste: Se os dois valores de entrada estiverem
vazios vamos retornar uma exceo dizendo Parmetros de entrada no informados.
Crie uma exceo ERRO_PARAM com o texto breve Os parmetros de entrada no
foram informados. Veja figura abaixo:

Wander Rodrigues / Claudia Oliveira v09

Pgina 166 de 260

TREINAMENTO ABAP

Clique na Aba Texto fonte.

aqui que vamos colocar toda a lgica de processamento da funo. Repare que a
funo j traz os parmetros de entrada, sada e as excees no incio do cdigo como
comentrio.
Parmetros de entrada (Importao)

Parmetros de sada (Exportao)

Cdigos de retorno (Excees)

Wander Rodrigues / Claudia Oliveira v09

Pgina 167 de 260

TREINAMENTO ABAP
A nossa funo dever executar o seguinte procedimento.
- Se o campo I_VALOR1 estiver vazio e o campo I_VALOR2 estiver vazio, encerrar a
funo retornando a exceo ERRO_PARAM.
- Se estiverem preenchidos, somar os dois campos e atualizar o campo
E_RESULTADO.
O cdigo ficaria assim:

Salve e ative a funo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 168 de 260

TREINAMENTO ABAP

Para testar a funo, basta pressionar F8 ou clicar em Testar/Executar


Voc ver a tela inicial do teste da funo

Preencha o campo I_VALOR1 com 10 e o campo I_VALOR2 com 20 e pressione F8 ou


clique em Executar

O resultado da execuo da funo pode ser visto na varivel de retorno


E_RESULTADO

Wander Rodrigues / Claudia Oliveira v09

Pgina 169 de 260

TREINAMENTO ABAP
Agora faa um novo teste, clique em Voltar, preencha com zero nos dois campos e
execute novamente.

Veja que agora a funo mostra a exceo ERRO_PARAM que no havia


anteriormente.

Uma vez que a funo est pronta, basta fazer um report que chame esta funo para
podermos test-la dentro de um programa.

Wander Rodrigues / Claudia Oliveira v09

Pgina 170 de 260

TREINAMENTO ABAP

Ajuda para pesquisa


Uma ajuda para pesquisa um objeto do ABAP Dictionary que permite definir as
entradas possveis em um campo. possvel criar objetos para as novas tabelas criadas
ou ainda utilizar ajudas prontas (search help standard).

Para utilizar um matchcode standard necessrio descobrir o seu nome para associa-lo
ao campo desejado.

Wander Rodrigues / Claudia Oliveira v09

Pgina 171 de 260

TREINAMENTO ABAP

Objetos de bloqueio
O acesso simultneo de vrios usurios ao mesmo conjunto de dados, controlado por
um mecanismo de bloqueio no sistema SAP. A definio e a liberao de bloqueios, so
efetuadas dentro dos programas, mediante a chamada de mdulos de funo gerados
automaticamente a partir da definio do objeto de bloqueio.

Ao ativar um objeto de bloqueio EVVBAKE, so gerados os mdulos de funo


ENQUEUE_ EVVBAKE (definio de bloqueios) e DEQUEUE_ EVVBAKE
(liberao de bloqueios).

Wander Rodrigues / Claudia Oliveira v09

Pgina 172 de 260

TREINAMENTO ABAP

Vises
Uma viso uma representao lgica de uma ou vrias tabelas. A viso no
arquivada fisicamente, mas deriva de uma ou de vrias tabelas.
A viso pode consistir em ocultar um ou vrios campos de uma tabela (projeo) ou em
transferir apenas determinadas entradas de uma tabela para a viso (seleo).
As vises mais complexas podem envolver vrias tabelas (JOIN). Atravs da definio
de vises, possvel gerar vises lgicas ajustadas na aplicao que permitem um
acesso direto aos dados. A estrutura deste tipo de viso determinada atravs da
indicao das tabelas e campos implicados na viso.

Wander Rodrigues / Claudia Oliveira v09

Pgina 173 de 260

TREINAMENTO ABAP

Listas X ALV
Listas so relatrios produzidos com o comando WRITE. Normalmente tem layout
parecido com o da figura abaixo:

ALV so listas com uma interface grfica aprimorada e com uma srie de funes prdefinidas como, por exemplo, envio do relatrio por email, grficos, filtros dinmicos,
subtotais e totais definidos pelo usurio, etc...
criado atravs do uso de funes e/ou mtodos j existentes no sap. Ex. funo
REUSE_ALV_GRID_DISPLAY.

Wander Rodrigues / Claudia Oliveira v09

Pgina 174 de 260

TREINAMENTO ABAP

LISTAS
Lista Bsica
considerada uma lista bsica, quando o report no permite a interao
com o usurio.
As informaes so estticas e no criada nenhuma funo alm das
standard. Como por exemplo: navegao para outra transao, exibio de
telas a partir de boto de funo, etc...

Lista Interativa
1 - Permite a mudana na visualizao dos dados utilizando menus, botes
ou duplos clicks na linha do relatrio.
2 - Permite a navegao para outros relatrios ou transaes standard.
3 - Permite a digitao de dados em uma linha do relatrio na forma de
check box ou campo aberto.
4 - Permite a criao de sub-listas em janelas (Window)
Reports interativos so relatrios que aceitam a interveno do usurio aps
exibio em tela. Normalmente esta interao serve para exibio de uma
segunda lista de detalhando alguma informao da primeira lista.
Podemos citar como exemplo a gerao de um relatrio com informaes
bsicas de cliente, que com duplo clique em cima do cdigo do cliente
apresenta as informaes adicionais do mesmo.
Existem diversas transaes no sistema R/3, que se utilizam deste tipo de
relatrios.
O comando HIDE tem o objetivo de guardar o contedo de um determinado
campo e a linha em que este se localiza no relatrio principal.
O comando AT determina os eventos disponveis para serem utilizados pelo
usurio (AT LINE SELECTION, AT USER-COMMAND e AT PF).
O comando SET TITLEBAR gera um novo ttulo para a prxima tela a ser
exibida. O comando SET PF-STATUS monta a tela com botes e funes
associados.

Wander Rodrigues / Claudia Oliveira v09

Pgina 175 de 260

TREINAMENTO ABAP

ALV
ALV Conceitos Bsicos
Utilizando ALV, o relatrio se torna mais flexvel, permitindo ao usurio:

Escolher quais colunas sero impressas.


Escolher ordenao de registros e sequncia de campos.
Formatar layout do relatrio
Marcar (destacar) registros.
Baixar automaticamente dados para o Excel (sem a criao de
arquivos texto e com recursos de totalizao).

O ALV padroniza e simplifica a exibio e operao de listas e relatrios no


sistema R/3. Fornece interfaces e formatos padronizados para todas as listas
e relatrios.
Listagens ALV so dinmicas por definio. O programador vai escolher qual
ou quais recursos ir disponibilizar em seu relatrio.
Muito similar a uma planilha do Microsoft Excel, cada coluna perfeitamente
ajustvel, podem ser trocadas entre si, as linhas da grade e cores so
automticas. Recursos simples que j eliminam um grande esforo de
programao, principalmente em alteraes.
Todos os demais recursos esto concentrados em uma barra de ferramentas
que a funo disponiliza junto a barra standard do R/3 (Na parte superior do
relatrio).
Alguns cones so bem comuns e com funes simples, mas est tudo pronto para
o uso, sem digitao de uma linha de cdigo a mais no programa.

O ALV permite a incluso de logotipo em tela, porm no permite a impresso. Para


modificar fonte, cores, desenhar quadros e incluir logotipo deve-se utilizar a ferramenta
de sapscript ou smartform.

Wander Rodrigues / Claudia Oliveira v09

Pgina 176 de 260

TREINAMENTO ABAP

Module Pool
Abaixo, temos apenas um overview sobre programas module pool ou programas
online, como tambm so conhecidos.
Aps uma breve descrio de seus elementos, desenvolveremos alguns programas
de exemplo para melhor ilustrao.
Caminho: Ferramentas > ABAP/4 Workbench > Object Browser
ou
TRANSAO SE80
Por padro os programas MODULE POOL, no standar, devem possuir a seguinte
nomenclatura (SAPM + Zou Y + 3 posies livres). O object browser o local mais
indicado para este tipo de desenvolvimento/manuteno.
A seqncia para a gerao deste tipo de programa , a criao da SCREEN, e a
programao desta SCREEN. No include TOP deve estar as tabelas e as variveis do
programa. No final, devemos criar uma transao associada.
Os componentes do programa ABAP/4 mais importantes so encontrados nos
seguintes objetos:
Global data ou Estruturas do Dicionrio no programa include TOP
(declaraes data)
Evento PBO (Process Before Output Processos antes de Apresentar
a Tela)
Evento PAI (Process After Input Processos aps Entrada de Dados)
Sub-rotinas (se necessrio)

PBO e PAI
O fluxo lgico da tela dividido em dois eventos para cada tela:
O evento PBO executado antes da tela ser apresentada.
O evento PAI executado aps o usurio pressionar ENTER ou
qualquer comando na tela.
O sistema processa os mdulos de cada evento numa seqncia.
Em cada mdulo, o controle passa do processador de dilogo para o
processador ABAP/4. Depois do processamento, o controle retornado para
o processador de dilogo.
Quando todos os mdulos do PBO forem processados, o contedo dos
campos da rea de trabalho ABAP/4 so copiados para os campos de mesmo
nome da rea de trabalho da tela.
Antes do mdulo PAI ser processado, o contedo dos campos na rea de
trabalho da tela so copiados para campos de mesmo nome na rea de
trabalho ABAP/4.

Wander Rodrigues / Claudia Oliveira v09

Pgina 177 de 260

TREINAMENTO ABAP

O PBO e o PAI, possuem um editor diferente do editor de programas online, chamado FLOW LOGIC. Somente comandos pertinentes ao FLOW
LOGIC, sero compeendidos neste momento.
No FLOW LOGIC, faremos chamadas a MODULES, que so na verdade miniprogramas, neste momento todos os comando apreendidos at o momento
funcionaro normalmente.
Basicamente os comandos do FLOW LOGIC so MODULE ( para chamada dos
mini-programas). CHAIN e FIELD ( Para consistncia dos dados inputados).
MODULE
Voc especifica a definio de seus Mdulos de comandos na lgica do fluxo.

PORCESS BEFORE
OUTPUT.
MODULE
INITIALIZE.
PROCESS AFTER
INPUT.
MODULE
READ_SPFLI.

Se voc escolhe um mdulo com duplo clique, o sistema cria os comandos


adequados MODULE ... ENDMODULE no programa include apropriado. Este
conhecido como navegao adiantada.
Se no existe o programa include, o sistema criar um se voc permitir. Ele
tambm insere um comando INCLUDE no programa principal.
Os comandos do ABAP/4 do MODULE para PBO contm uma adio OUTPUT,
quando os comandos do mdulo for do mdulo PAI contm uma adio
INPUT.

Wander Rodrigues / Claudia Oliveira v09

Pgina 178 de 260

TREINAMENTO ABAP
MODULE INITIALIZE
OUTPUT.
CLEAR SPFLI.
ENDMODULE.

MODULE READ_SPFLI INPUT.


SELECT SINGLE * FROM SPFLI
WHERE CARRID = SPFLI-CARRID
AND
CONNID = SPFLI-CONNID.
.
.
.
ENDMODULE.

FIELD
Se voc quer checar valores de entrada no MODULE POOL e iniciar um
dilogo de erro de um resultado negativo, voc usa o comando FIELD com a
adio MODULE. Isto significa que o relevante mdulo executado somente
para o campo especificado no comando FIELD.
Se o mdulo resulta numa mensagem de erro (E) ou warning (W), a tela
reapresentada sem o processamento dos mdulos PBO. O texto da
mensagem apresentado e somente o campo checado por este mdulo
apresentado para entrada de dados novamente.
PROCESS AFTER INPUT.
FIELD <screen field> MODULE <module>.

MODULE module INPUT.


...
MESSAGE
ENDMODULE.

E...

CHAIN
Se voc quer checar muitos campos de entrada de dados, voc deve
especificar todos no comando FIELD, concatenar os mesmos para checagem
usando o comando CHAIN junto com o MODULE, onde ocorrer a validao.
Um campo pode ser usado em diferentes CHAINs.
PROCESS AFTER INPUT.
CHAIN.
FIELD: screen field1,
screen field2,
...
screen fieldn.
MODULE module.
ENDCHAIN.
MODULE module INPUT.
...
MESSAGE E ... .
Wander Rodrigues / Claudia Oliveira v09

Pgina 179 de 260

TREINAMENTO ABAP
ENDMODULE.

Definio de Telas (screen painter)


Para criar uma tela, siga os seguintes passos:
Defina as caractersticas bsicas da tela (screen atributes)
Projete um layout de tela (in full screen editor)
Defina os atributos dos campos (field list)
Escreva o fluxo lgico da tela (programa)
A interface do Graphical Screen Painter contm funes fceis de usar para
definir os vrios elementos da tela (ex.: campos de entrada e sada, campos
textos, caixas, etc.).
Voc escolhe cada elemento da tela e posiciona na tela usando o mouse.
Para deletar elementos da tela, voc seleciona o elemento com o mouse e
ento escolhe Delete.
Para mover elementos da tela, voc usa o mouse para arrastar o elemento
para a posio desejada.
A seqncia de telas pode ser alterada dinamicamente, como segue:
O comando SET SCREEN nnnn altera temporariamente a prxima
tela.
A tela nnnn deve ter uma tela no mesmo module pool.
A prxima tela processada depois da tela atual, a menos que voc
termine a tela atual com o comando LEAVE SCREEN.
Se voc quer encerrar a tela atual e ir diretamente para a prxima
tela num nico passo, voc pode usar o comando LEAVE TO SCREEN
nnn.

Botes de Funo
Cada boto deve ter um cdigo de funo.
Quando o usurio pressionar o boto, o mdulo PAI acionado.
Quando o usurio chama uma funo (pelo significado do boto, menu de
entrada ou tecla de funo), o cdigo de funo aparece no campo de OK
code (sy-ucomm).

PF-Status e Titlebar (menu painter)


Programas ABAP possibilitam uma grande variedade de funes que
compem diferentes categorias de interface de usurio. Para diferenciar e
tratar as funcionalidades de um programa ABAP o R3 disponibiliza o Menu
Painter.
O GUI STATUS (botes, funes) e o GUI TITLE (ttulo do menu) definem
como o usurio far interface com o programa.
Wander Rodrigues / Claudia Oliveira v09

Pgina 180 de 260

TREINAMENTO ABAP

O Menu Painter uma ferramenta de gerao de Menus das telas dos


programas. Com esta ferramenta tambm possivel a modificao do titulo
que aparecer no relatrio, por exemplo podemos desejar um ttulo para a
tela de seleo e outra para a tela de resultado.
Para a gerao de telas de menu para Report e principalmente para Reports
Interativos (Veremos mais adiante que para Module Pool tambm), podemos
diretamente do programa ABAP digitar o comando SET TITLEBAR XXX ou
SET PF-STATUS 999 e com duplo clique nos nomes XXX e 999 ser
disponibilizada a tela de criao dos mesmos.
As funes associadas aos botes e/ou aos Menus ficaro armazenadas na
varivel
SY-UCOMM aps a interveno do usurio na transao.
Os padres para a STANDARD TOOLBAR so: BACK Voltar/Exit, RWCancela, PRI Imprime, %SC - Pesquisa, %SC+ Pesquisa Prxima, P-- Primeira Pgina, P- - page Up, P+ - Page Down, P++ - Ultima Pgina.
Os nomes de Ttulos ou Status devem estar com letras maisculas nos
comandos SET TITLEBAR e SET PF-STATUS.
A incluso de funes deve ser feita atravs do seguinte caminho: Processar
> Inserir > Funo. Aps a criao da funo podemos coloc-la na barra de
tarefas ou no Menu.

Wander Rodrigues / Claudia Oliveira v09

Pgina 181 de 260

TREINAMENTO ABAP

Table controls
Utilizado para manipular o contedo de uma tabela dentro de uma tela.
Atravs do wizard do screen painter para esta funo, podemos facilmente
criar uma table control j com alguns comandos bsicos .
IMPORTANTE: Se pretendemos selecionar linhas da tabela interna para
alguma funo, devemos criar um campo (char) que servir como marcador,
antes de utilizar o wizard para montar a table control.

Tabstrip control
Para incluir ares com diversos folders na tela. Cada folder corresponde a
uma sub-tela.

Module pool so programas geralmente utilizados para entrada de dados / interface com
o usurio. Devem ter, obrigatoriamente, uma transao para execuo.
A transao SE80 mostra a lista de objetos de um module pool

Wander Rodrigues / Claudia Oliveira v09

Pgina 182 de 260

TREINAMENTO ABAP

Os programas do tipo Module Pool possuem basicamente dois eventos


PROCESS BEFORE OUTPUT
Cdigo que ser executado antes da tela ser exibida para o usurio

Wander Rodrigues / Claudia Oliveira v09

Pgina 183 de 260

TREINAMENTO ABAP
PROCESS AFTER INPUT
Cdigo que ser executado quando o usurio teclar ENTER ou clicar em algum
boto de funo, por exemplo, Salvar, Page Up, ESC...

Wander Rodrigues / Claudia Oliveira v09

Pgina 184 de 260

TREINAMENTO ABAP
Todo module pool possui um include com a terminao TOP. Neste include toda
varivel, tabela, estrutura, constante declarada ter escopo global, ou seja, ser vista
em todos os pontos do programa.

Para executar um programa do tipo Module pool, necessrio criar uma transao.

Wander Rodrigues / Claudia Oliveira v09

Pgina 185 de 260

TREINAMENTO ABAP

Transao
A transao para criao de transaes a SE93.
Informe o cdigo da transao e clique em Criar

Preencha a descrio, escolha a opo de transao de dilogo e clique em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 186 de 260

TREINAMENTO ABAP

Informe o nome do programa, a tela inicial e clique em SALVAR

Wander Rodrigues / Claudia Oliveira v09

Pgina 187 de 260

TREINAMENTO ABAP

Debug

Teclas de funo
F5 Avano de linha
F6 Executar (form, funo, submit)
F7 - Retorno (Ex.: Se voc entrou em um form, ao pressionar F7 o programa termina a
execuo do form e passa para a prxima instruo)
F8 Avanar (at o cursor ou executar tudo sem debug)
Trata-se de uma ferramenta muito til no dia a dia tanto para encontrar erros em
programas desenvolvidos, como para entender processamentos standard. Para
programas Standard, o Debugging pode ser muito difcil e demorado.
Podemos marcar Breakpoints nos programas a serem debugados, parando o
processamento e disponibilizando neste momento, valores de variveis, tabelas
internas, tabela SY, e outros dados. Podemos at mesmo mudar o contedo da
varivel para continuar execuo, dependendo do ambiente e da configurao de
basis.
Alm do Breakpoint (parada esta que acontece somente para o usurio que gerou o
Breakpoint), outra maneira de debugar um programa colocar /H, na linha de
comando.

Wander Rodrigues / Claudia Oliveira v09

Pgina 188 de 260

TREINAMENTO ABAP

COMO ATIVAR O MODO DEBUGGING


Existem diferentes caminhos para voc ativar o modo debugging:
Inicie um programa chamando a funo de debugging ( no ABAP/4 EDITOR INITIAL
SCREEN).
Defina breakpoints no programa ( escolha UTILITIES -> BREAKPOINTS ->SET ) e
inicie o programa ( escolha PROGRAM -> EXECUTE ).
Se voc quiser testar uma transao ( screen debugging ), entre /H na linha de
comando, pressione ENTER e escolha EXECUTE.
AS FUNES DE DEBUGGING MAIS IMPORTANTES
Single step
Executa a prxima linha do programa.
Execute
Em contraste com single step, ele executa todos os passos de uma
rotina sem
mostrar passo a passo.
Continue
Executa o programa at o prximo breakpoint ou at o final do
programa.
Table
Mostra o contedo de uma tabela interna.
Breakpoint
Voc usa funes do menu para definir breakpoints.
Replace
Permite que voc altere valores dos campos no debugging.

Wander Rodrigues / Claudia Oliveira v09

Pgina 189 de 260

TREINAMENTO ABAP
Para inspecionar o contedo de variveis basta clicar 2x sobre ela

Wander Rodrigues / Claudia Oliveira v09

Pgina 190 de 260

TREINAMENTO ABAP

Para visualizar uma tabela interna, clicar no boto


tabela interna

e digitar o nome da

possvel criar pontos de parada clicando 2x depois do ponto final de uma determina
linha. Desta forma, ao se pressionar F8, o programa ser executado at alcanar o ponto
de parada

Wander Rodrigues / Claudia Oliveira v09

Pgina 191 de 260

TREINAMENTO ABAP

Outra opo de ponto de parada o Watchpoint. Com o watchpoint possvel fazer o


programa parar para debug somente se uma varivel receber um determinado valor
O exemplo abaixo faz com que o programa pare somente quando a varivel sy-tabix for
igual a 2.

Wander Rodrigues / Claudia Oliveira v09

Pgina 192 de 260

TREINAMENTO ABAP
Para colocar o ponto de parada em uma instruo especfica:
Entrar na transao que ser depurada

Iniciar o debug com o comando /H e ENTER

Clicar na opo desejada para iniciar a depurao (neste exemplo: ENTER)

Wander Rodrigues / Claudia Oliveira v09

Pgina 193 de 260

TREINAMENTO ABAP
A tela de debug ser exibida

Clicar em Ponto de parada, ponto de parada em, Instruo abap

Ser exibida a tela para informar o comando onde o programa deve parar

Wander Rodrigues / Claudia Oliveira v09

Pgina 194 de 260

TREINAMENTO ABAP
Informe o comando desejado e clique em OK

Clique em F8 para executar at o ponto de parada ser atingido

Wander Rodrigues / Claudia Oliveira v09

Pgina 195 de 260

TREINAMENTO ABAP
Para criar um ponto de parada antes do programa ser executado.
Entrar na transao SE38 (ou se80) e editar a parte do cdigo onde o ponto de parada
deve ser includo

Wander Rodrigues / Claudia Oliveira v09

Pgina 196 de 260

TREINAMENTO ABAP
Coloque o cursor na linha onde deseja que o programa inicie a depurao e clique no
boto STOP

O sistema ir indicar que o ponto foi definido

Execute o programa normalmente. Quando o ponto de parada for atingido o programa


iniciar a depurao

Wander Rodrigues / Claudia Oliveira v09

Pgina 197 de 260

TREINAMENTO ABAP

PROCURA DE CAMPOS EM TABELAS


No existe um local exato que indique em qual tabela um campo est gravado.
Por este motivo, necessrio fazer vrias tentativas e truques para tentar
localizar a tabela.
1 - Buscar no help (F1 / F9) do prprio campo;
2 - Buscar no help de outros campos da tela;
3 - Analisar o SQL Trace;
4 - Pesquisar quais tabelas usam o mesmo elemento de dados;
5 - Analisar o programa via Debug;
6 - Procurar uma function module que retorne o campo desejado.
Tentativa 1
Buscar no help (F1 / F9) do prprio campo.
Evite telas de sntese (elas normalmente usam estruturas). Procure telas de
detalhe.
Busque o mesmo campo em outras telas.
Estrutura no uma tabela, apenas um lay-out. Qualquer outro nome pode ser
considerado tabela (Pooled, Cluster, View, Transparent, etc)
Tentativa 2
Buscar no help de outros campos da tela.
Algumas vezes, outro campo da tela aponta para a mesma tabela do campo
procurado.
Tentativa 3
Analisar o SQL Trace
SQL Trace (ST05) uma ferramenta que registra todos os acessos a tabelas
(leitura e gravao) em um determinado perodo.
Pode-se usar esta ferramenta usando os seguintes passos:
Ligar o SQL Trace (a partir deste momento, a ferramenta ir registrar todos os
acessos a tabelas).
Executar a transao at visualizar o campo.
Desligar o SQL Trace
Visualizar no relatrio gerado pela ferramenta o nome das tabelas lidas (procurar
comando Select).
Outra opo:
Ligar o SQL Trace.
Executar a transao que mostra o campo, alterar o campo e salvar.
Desligar o SQL Trace
Visualizar no relatrio gerado pela ferramenta o nome das tabelas modificadas
(procurar comandos Update ou Insert).
Tentativa 4
Pesquisar quais tabelas usam o mesmo elemento de dados. F/F9, duplo click no
elemento, boto de lista de utilizao.
Tentativa 5
Analisar o programa via Debug
Mtodos de debug:
Ligar o Watchpoint para o campo procurado
Ligar Breakpoint para os comandos Select e Import

Wander Rodrigues / Claudia Oliveira v09

Pgina 198 de 260

TREINAMENTO ABAP

Exits
MODIFICAES EM PROGRAMAS STANDARD
CPIAS somente em ltimo caso, pois a cada novo release, hotpackage, etc
deve ser refeita/testada. SAP no d suporte.
ALTERAES NUNCA USAR.
ENHANCEMENTS
Enhancements (Ampliaes), so aberturas do sistema disponibilizadas pela SAP
para fazer customizao nos programas, telas, menus e tabelas.
Se desenvolvida corretamente, as alteraes no iro afetar os outros pases.
A aplicao de Hot Packages no ir apagar as alteraes.
Durante o upgrade, a alterao no ser apagada pela SAP, porm ser necessrio
analis-la / test-la.
A alterao feita em uma rea permitida pela SAP. Portanto, o suporte SAP para o
programa est mantido.

Customer Exits
Function module exit implementao de rotina adicional

Ex:
Prog: SAPLL03A
Instruo 1
Instruo 2
Call customer-function
001
Exporting
Importing
Instruo 3
EXIT_SAPLL03A_002
Call customer-function
002
Exporting
Importing
Instruo 4 ...

Funo:
EXIT_SAPLL03A_001
Rotina
Cliente

Funo:

(vazio)

Screen exit permite incluir campos na tela de um programa.


Menu exit permite incluir um menu do cliente dentro do menu standard.
Include tables permite incluir campos em tabelas. Somente se for
disponibilizado pela SAP.

Wander Rodrigues / Claudia Oliveira v09

Pgina 199 de 260

TREINAMENTO ABAP
COMO PROCURAR UM CUSTOMER EXIT PARA UM
PROGRAMA STANDARD:
-

Acessar a transao. Ex: ME22

Entrar em sistema/status

Anotar nome do programa SAPMM06E

Na transao CMOD procurar ampliaes (enhancement)


para este programa em utilitrios/ampliaes SAP/Botao
Todas as Selees/ Seleoes adicionais/ nome do
componente = *SAPMM06E* - nome do programa entre
asterscos.

Verificar na documentao de cada enhancement, se atende


a necessidade. Teclar EXIBIR DOC SAP lembrar de fazer
login em ingls para documentao aparecer.

User Exits
Est disponvel somente para o mdulo de SD. Possui a mesma finalidade do
customer exit, porm utiliza um mtodo mais antigo. As alteraes so
feitas diretamente em Includes disponibilizados pela SAP. Neste caso no
se usa a transao CMOD.
Obs.: O mdulo SD tambm possui customer-exits.

Programa: SAPMV45A
MV45AFZB
Instruo 1
Instruo 2
Perform userexit_check_vbak
Instruo 3
Perform userexit_save_document
Instruo 4 ...

Include:
Form userexit_check_vbak.
Rotina cliente.
Endform.

Include:
MV45AFZZ
Form userexit_save_document
Endform.

COMO PROCURAR UM USER EXIT PARA UM PROGRAMA


STANDARD:
-

Acessar a tx SE80 repository browser

Pesquisar todos programas com pacote = VMOD

Na pasta includes, esto os user exits. Ex: mv45afzz.

Cada include possui vrias rotinas de user-exit. Cada rotina


possui uma breve descrio de sua finalidade. No h
documentao SAP para este tipo de enhancement.

Wander Rodrigues / Claudia Oliveira v09

Pgina 200 de 260

TREINAMENTO ABAP

Field Exits
Rotina disponibilizada para fazer tratamento em um campo especfico da
tela.

Est disponvel para todos os campos de qualquer tela


(Module Pools) com referncia a um elemento de dados (ver
F1/Informaes Tecnicas).

Campos protegidos para digitao no possuem field-exit.

O que pode ser feito via field exit:

Obrigar digitao de um campo

Consistir campos

Alterar o contedo digitado


-

Adicionar mscara (99.999.999/9999-99, 99999-999 ...)


Converter para maisculas / minsculas
Completar com zeros
Alinhar para esquerda / direita, centralizar
Converter cdigo para nome
Etc.

Definir valor default

Verificar se o contedo digitado existe em uma tabela

Verificar autorizaes

O que NO pode ser feito via field exit:

Exibir mensagens I (informao) ou W (advertncia).


Somente permitido usar mensagens E (erro).

Chamar outra tela, matchcode ou tela de aviso/confirmao.

Mudar atributo de campo obrigatrio para opcional.

COMO LOCALIZAR UM FIELD EXIT J CRIADO:

Acessar a tx. Ex: ME21

Entrar em informao tcnica e anotar: NOME DO


PROGRAMA, NO. TELA E ELEMENTO DADOS DO CAMPO

Transao CMOD, e na linha de dispara trans =PRFB

Em ampliaes globais/exits campos (field-exits) marcar o


elemento de dados e visualizar o programa via boto
PROCESSAR MF

Wander Rodrigues / Claudia Oliveira v09

Pgina 201 de 260

TREINAMENTO ABAP
Table enhancements
Permite adicionar campos em tabelas/estruturas standard.
A adio no feita diretamente na tabela standard. necessrio criar uma
estrutura e ento anex-la a tabela. O SAP anexa esta estrutura com a
opo .APPEND

Text enhancements
Permite alterar a descrio de campos (label) ou sua documentao (F1) nas
transaes SAP.
Para alterar a descrio de um campo:

Obter o nome do elemento de dados do campo (F1/F9)

Utilizar a transao CMOD

digitar o idioma e o elemento de dados do campo

Para consultar os textos j alterados, entrar em: ampliaes globais/palavras


chave/exibir.
Pode-se voltar o texto original posicionando o cursor no
campo/processar/restaurar orig SAP.

Frmulas, requerimentos, controle de cpias (SD, MM,


LIS, SOP)
So rotinas ABAP que complementam as configuraes (customizing) de:

Esquemas de determinao de preo (pricing SD/MM)

Regras de atualizao de dados reais em estruturas LIS


(Logistic Information System) ou SOP (Sales & Operations
Planning)
Frmula - Rotina para calcular/converter valores ou quantidades.
Requerimento - Definio de pr-requisitos para a execuo de uma
rotina subsequente.
Controle de cpia - Determinao de regras para cpia de dados entre
documentos. Na criao de um documento com referncia a outro, pode-se
modificar o contedo de alguns campos durante a cpia.

Transao VOFM - Transao para consulta e criao de novas rotinas.


(Controle de cpia e Requerimentos/Frmulas para pricing):
Condio para cpia = requerimento para controle de cpia
Transferncia de dados = controle de cpia
Requisitos = requerimentos
Frmulas
Wander Rodrigues / Claudia Oliveira v09

Pgina 202 de 260

TREINAMENTO ABAP

Transao MC1B/MC1D - Transaes para consulta e criao de novas


rotinas para Update Rules (LIS / SOP)
A SAP j disponibiliza vrias rotinas prontas.
Novas rotinas devem ser criadas com numerao de 900 a 999.

BTE - Business Transaction Events (FI)


Enhancement criado pela SAP especialmente para o mdulo de FI. Permite
processar rotinas do cliente quando um evento disparado.
A tabela TBE01 contm alguns eventos pr-determinados pela SAP.

Tipos de exit

- Field exit Utilizada sobre um determinado elemento de dados, a exit de campo


ser executada, por padro, em todos os campos de tela que fizerem referncia ao
elemento de dados utilizado.
Ex.: Se for criada uma field exit para o elemento de dados VBELN_VA (Documento de
vendas), a field exit ser executada em toda tela que possuir um campo de entrada que
faa referncia a este elemento de dados.
Em tese a field exit s deve ser utilizada para validar o contedo do campo ao qual se
relaciona, mas possvel verificar/modificar o contedo de outros campos dentro de
uma field exit. Para isso, cada caso deve ser avaliado individualmente.
Para que uma field exit possa ser executada necessrio verificar se ela ser associada a
um campo do dicionrio.
Para verificar esta opo entre na transao onde est o campo para o qual a field exit
ser criada

Wander Rodrigues / Claudia Oliveira v09

Pgina 203 de 260

TREINAMENTO ABAP
Coloque o cursor no campo e pressione F1

Clique no boto da ferramenta

Wander Rodrigues / Claudia Oliveira v09

Pgina 204 de 260

TREINAMENTO ABAP

Clique 2x sobre o nmero da tela

Clique no boto Layout

Clique 2x sobre o campo desejado


Na tela de atributos, verifique se o flag Do Dict. est marcado.

Se sim, a field exit ser executada, caso contrrio ela no pode ser criada.

Wander Rodrigues / Claudia Oliveira v09

Pgina 205 de 260

TREINAMENTO ABAP

possvel tambm filtrar a field-exit para que ela funcione em somente uma tela.
Como a field exit est associada a um elemento de dados, ao ser ativada ele ser
executada em todas as telas que contenham campos definidos por aquele elemento de
dados. Para indicar somente uma tela, entre na transao CMOD e digite PRFB na linha
de comando.

A lista de field exits ser exibida

Wander Rodrigues / Claudia Oliveira v09

Pgina 206 de 260

TREINAMENTO ABAP

Marque a field exit desejada e clique em atribui progr/tela

Informe o nome do programa e o nmero da tela onde a field exit deve ser executada e
clique em Gravar.

Wander Rodrigues / Claudia Oliveira v09

Pgina 207 de 260

TREINAMENTO ABAP

- User exit o espao, dentro do programa standard, em que podemos inserir


um cdigo sem abrir o objeto e perder sua garantia.
- Customer function identificada facilmente pelo comando
CALL CUSTOMER-FUNCTION...

Este tipo de exit est associada a uma ampliao, que, por sua vez, deve ser
associada a um projeto e este projeto deve ser ativado para que a exit seja
executada.
Para localizar este tipo de exit, deve-se procurar pelo programa a constante
CUSTOMER-FUNCION.
Aps encontrada a exit a mesma deve ser codificada, includa em um projeto e ativada
para que possa ser executada.
Para adicionar a exit em um projeto:
Localizar a exit dentro do programa

Wander Rodrigues / Claudia Oliveira v09

Pgina 208 de 260

TREINAMENTO ABAP
Clique 2x sobre o nmero em frente ao customer-function (neste exemplo, 002). A
funo da exit ser exibida

Copie o nome da exit (EXIT_SAPMV45A_002)


Entre na transao SMOD

Wander Rodrigues / Claudia Oliveira v09

Pgina 209 de 260

TREINAMENTO ABAP
Clique no menu Utilitrios, Procurar

Clique no boto Todas as selees para expandir a tela

Wander Rodrigues / Claudia Oliveira v09

Pgina 210 de 260

TREINAMENTO ABAP
Cole o nome da exit no campo Nome de componente e clique em executar

A ampliao ser exibida

Toda exit est associada a uma ampliao e esta ampliao que deve ser includa em
um projeto para poder ser ativada.

Wander Rodrigues / Claudia Oliveira v09

Pgina 211 de 260

TREINAMENTO ABAP

- Form Neste caso, a exit est criada e j est sendo executada, porm sem
cdigo. Basta inserir o cdigo e salvar que ele ser executado. Para localizar este tipo
de exit deve-se procurar por EXIT ou USEREXIT ou ainda verificar se h alguma
documentao no customizing que informe quais so as exits disponveis.

Wander Rodrigues / Claudia Oliveira v09

Pgina 212 de 260

TREINAMENTO ABAP

Badi
Badi (Business Add In) a nova tcnica de ampliao da SAP.
Para utilizar uma badi so necessrias duas etapas:
Definio: Na seo de definio criada uma ampliao a ser chamada dentro do
cdigo. Um badi standard j possui a definio criada atravs da transao SE18

Wander Rodrigues / Claudia Oliveira v09

Pgina 213 de 260

TREINAMENTO ABAP
Implementao: onde gravado o cdigo que ser executado no momento em que os
mtodos da badi forem chamados.

Wander Rodrigues / Claudia Oliveira v09

Pgina 214 de 260

TREINAMENTO ABAP

Uma das formas utilizadas para se encontrar uma badi em um programa pesquisar pelo
mtodo get_instance.
No exemplo abaixo o mtodo get_instance est verificando se a badi EHS_PS_002 est
implementada ou no. Se estiver ativa ele ir chamar o mtodo ENTRY_INQUIERY.

Wander Rodrigues / Claudia Oliveira v09

Pgina 215 de 260

TREINAMENTO ABAP

Enhancement
Com o conceito de Enhancement, podemos fazer modificaes no cdigo Standard sem,
no entanto, perder a garantia do programa. Enhancements podem ser implementados em
inmeros programas a partir da verso 7.0.
Existem 2 formas de enhancement:
- Enhancement Explcito
So ampliaes que podem ser identificadas no programa pelos comandos
ENHANCEMENT-POINT ou ENHANCEMENT-SECTION.
- Enhancement Implcito
So pontos de ampliaes que so encontrados nos seguintes locais:
- Depois da ltima linha do cdigo fonte de programas executveis,
grupos de funes, module pools e programas include.
- Depois da primeira linha de um FORM (logo aps o comando
FORM...) e na ltima linha antes do comando ENDFORM.
Exemplo de utilizao de um enhancement implcito.
Problema: Foi criado um programa para fazer a impresso automtica de boletos
bancrios. Porm era necessrio imprimir o boleto no mesmo momento em que a Nota
Fiscal era impressa. Para isso, foi necessrio fazer uma ampliao no programa standard
RSNAST00 que faz a impresso da Nota Fiscal.
Deve-se localizar no programa rsnast00 o form objekt_entsperren:

Ir para a ltima linha do form

Clicar no boto Ampliar

Wander Rodrigues / Claudia Oliveira v09

Pgina 216 de 260

TREINAMENTO ABAP

Em seguida clicar no Menu Processar / Operaes de Ampliao /


Visualizar Pontos ampliao Implcitos

Voc ver a ampliao oculta logo acima do comando ENDFORM


(Linha formado por vrias aspas duplas)

Wander Rodrigues / Claudia Oliveira v09

Pgina 217 de 260

TREINAMENTO ABAP

Clique com o boto DIREITO sobre qualquer uma das aspas duplas
desta linha e selecione Implementao de ampliao / Criar

Na tela seguinte, clique em Codif.

Na tela de Implementao do Enhancement, clique no boto de


Criar (folha em branco)

Wander Rodrigues / Claudia Oliveira v09

Pgina 218 de 260

TREINAMENTO ABAP
Preencha os campos da tela de criao do enhancement conforme
figura abaixo e clique em OK.

Selecione o pacote correspondente

Na tela abaixo, marque a ampliao que foi criada e clique em OK

O cdigo abaixo ser inserido no programa

Entre os comandos ENHANCEMENT e ENDENHANCEMENT, inserir a


chamada do programa novo para imprimir o boleto.

Wander Rodrigues / Claudia Oliveira v09

Pgina 219 de 260

TREINAMENTO ABAP

Sapscript
Um formulrio SAPscript utilizado para criar layout de pginas e para a impresso de
imagens.
Um formulrio tem no mximo 16 caracteres e pode ser constitudo por letras
maisculas e nmeros. O nome tem de comear por uma letra.

O SAPSCRIPT a ferramenta do SAP para criao de formulrios. A opo pela


utilizao desta ferramenta se d pela necessidade de alguns recursos grficos que no
podem ser obtidos atravs de cdigo de ABAP comum (Reports). Com o SAPSCRIPT
possvel criar um formulrio com logotipo, letras formatadas de vrios tamanhos,
criao de grades, cdigo de barras, etc.
Apesar de ser uma ferramenta poderosa na gerao de formulrios, o SAPscript ainda
apresenta uma srie de limitaes, o seu verificador de erros e debug no possuem as
mesmas caractersticas do editor ABAP. Caso, seja digitado um comando com grafia
errada ou sem sentido lgico dentro de um formulrio, no ser detectado pelo mesmo e
poder no ser executado, passando s vezes despercebido pelo programador.
Para que o SAPSCRIPT funcione necessrio um programa ABAP que dever conter
algumas funes de chamada e controle do SCRIPT

Wander Rodrigues / Claudia Oliveira v09

Pgina 220 de 260

TREINAMENTO ABAP

Estrutura de Chamada e Controle do SAPSCRIPT

CALL FUNCTION
OPEN_FORM

CALL FUNCTION
START_FORM

CALL FUNCTION
WRITE_FORM

CALL FUNCTION
END_FORM

CALL FUNCTION
CLOSE_FORM

Esta seqncia de funes dever ser inserida no programa ABAP que ir iniciar
o SAP SCRIPT.

Wander Rodrigues / Claudia Oliveira v09

Pgina 221 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 222 de 260

TREINAMENTO ABAP

O formulrio
Trabalhar com um formulrio SAPscript no complicado, desde que se entenda
seus componentes da maneira correta. Um formulrio comeado de maneira errada pode
ser um grande problema pois para ser corrigido pode ser necessrio o mesmo ou mais
tempo que a criao de um novo.
Para isto aconselhvel que se saiba qual o tipo de impressora utilizada, se a
impressora for do tipo matricial aconselhvel que as medidas utilizadas na construo
do formulrio seja LN(Linha) e CH (Caracteres); se a impressora for laser, jato de tinta,
trmica ou qualquer tipo de impressora grfica deve-se utilizar CM (Centmetro),
MM(Milmetro). importante salientar que se estivermos utilizando uma impressora
matricial a ordem de impresso muito importante para a correta edio do formulrio
pois os comandos de posio funcionam mas devemos lembrar que a cabea de
impresso no volta ou seja a leitura do formulrio feita linha a linha, j as
impressoras grficas isso no ocorre pois a leitura feita pgina a pgina.
O SAP possui vrios formulrios standards includos, estes formulrios esto
localizados no mandante 000 e atravs deles possvel fazer uma cpia e alter-los. Os
formulrios standard funcionam como programas standards, e os formulrios criados
devem ser iniciados pelas letras Z ou Y. Para modificar um formulrio standard
necessrio fazer uma cpia do mesmo, modificar a cpia e, em seguida, alterar a
configurao no R/3 para que utilize o novo formulrio.

Wander Rodrigues / Claudia Oliveira v09

Pgina 223 de 260

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 224 de 260

TREINAMENTO ABAP

Partes de um formulrio

1.

Dados Administrativos Nome, descrio do formulrio, idiomas


criados, autor, e status so algumas das informaes exibidas neste item.

Wander Rodrigues / Claudia Oliveira v09

Pgina 225 de 260

TREINAMENTO ABAP
2.

Configuraes globais

- Informaes gerais do formulrio, como


formato e orientao da pgina que sero utilizados, pargrafo e fontes utilizados
como default (quando nenhum for especificado).

Wander Rodrigues / Claudia Oliveira v09

Pgina 226 de 260

TREINAMENTO ABAP

Pginas -

So definidas uma ou vrias pginas, que devem ocorrer no formulrio.


Dos atributos de uma pgina fazem parte o nome da pgina seguinte, assim como o tipo
de numerao de pginas. Atravs da indicao da pgina seguinte assim como da
definio de uma pgina inicial do formulrio nos dados de cabealho, o usurio
determina a seqncia de pginas.
So os elementos responsveis pelo agrupamento das janelas. Voc deve criar uma
pgina para cada layout de impresso definido. Por ex.: Para um relatrio que ter
sempre um cabealho e linhas de detalhe voc s ira precisar de uma pgina mas, para
uma Nota Fiscal que tem uma layout para a primeira pgina e um outro diferente para as
pginas seguintes, voc ter que definir 2 pginas.

Wander Rodrigues / Claudia Oliveira v09

Pgina 227 de 260

TREINAMENTO ABAP

Note que a primeira pgina (FIRST) tem como pgina seguinte a NEXT. Na pgina
NEXT a pgina seguinte ela mesma.

A primeira pgina do relatrio ter o layout da FIRST. Todas as demais tero o layout da
NEXT.

Wander Rodrigues / Claudia Oliveira v09

Pgina 228 de 260

TREINAMENTO ABAP

Janelas -

As janelas representam unidades lgicas, ainda no tm nenhuma


expanso fsica, mas um nome, que indica a finalidade do texto a sair na janela. Por
exemplo, uma janela de endereo, uma janela para o cabealho de uma carta, etc.
A cada janela est atribuda uma categoria de janela. A categoria mais importante a
janela principal. Na janela principal aparece texto "corrido", possvel se estender
atravs de janelas principais de vrias pginas. Ao contrrio, as outras categorias de
janela no permitem que o texto que j no cabe na janela, seja prosseguido em uma das
pginas seguintes quando ocorrer novamente a janela.
As janelas so a base da construo do layout. As janelas podem ser criadas sem limites
e tem por finalidade dividir espacialmente as regies de um formulrio para operaes
independentes. Fica a critrio do desenvolvedor, no caso da criao de formulrios
novos, a quantidade, a localizao e o tamanho das janelas a serem criadas.

Wander Rodrigues / Claudia Oliveira v09

Pgina 229 de 260

TREINAMENTO ABAP
Essas janelas podem ser criadas basicamente em 3 tipos distintos:
MAIN - janelas do tipo MAIN so as mais importantes do relatrio (janela pela
qual o formulrio se guia). Somente permitido um tipo de janela MAIN por
formulrio, e a nica janela obrigatria em uma pgina, ou seja, todo
formulrio deve conter pelo menos a janela main. Pode-se criar mais de uma
janela MAIN por pgina, no entanto essas janelas, na verdade, s so divididas
fisicamente, uma vez que seus elementos e processamento obedecem aos
mesmos comandos, e no podem ter nomes diferentes. A passagem de uma
janela MAIN para outra pode ser automtica ou forada pelo usurio. Quando o
espao fsico de uma janela MAIN est tomado e necessita-se de mais dados na
mesma, o formulrio automaticamente passa prxima janela MAIN do
formulrio. atravs desse princpio que uma relatrio ganha nmero de
pginas automaticamente quando da execuo de um relatrio desse tipo,
conforme os dados so preenchidos. Para forar a passagem de uma janela
MAIN para outra, o usurio poder utilizar o comando:
/: NEXT-WINDOW
A lgica de sequncia das janelas MAIN de um formulrio segue sempre a um
critrio. Dentro de uma pgina a navegao de uma MAIN para outra segue de
acordo com os ndices dessas janelas dentro do formulrio, e quando uma nova
pgina gerada, a contagem segue a mesma disposio, continuamente.
O exemplo abaixo, figura a situao de uma diagramao conforme uma pgina
de jornal. A sequncia de preenchimento dos dados na pgina atravs do
povoamento normal segue:

VAR - essa janela apresenta uma caracterstica prpria, que necessita de


verificao constante do formulrio com seus dados, que podem variar durante a
execuo do relatrio. Esse tipo de janela deve ser utilizado quando se pretende
trabalhar com textos e valores que variam, como exemplos de mensagens que
podem mudar durante o decorrer da execuo do formulrio. Janelas do tipo
VAR podem ter tamanhos diferentes em cada pgina.
CONST - so janelas onde os dados so constantes desde seu primeiro
preenchimento at o fechamento do formulrio. Geralmente nesse tipo de janela
so includos objetos e textos que permanecem os mesmos durante todo o
relatrio, independente do nmero de pginas, como logos e rodaps. Janelas do
tipo CONST devem ter o mesmo tamanho em todas as pginas.

Wander Rodrigues / Claudia Oliveira v09

Pgina 230 de 260

TREINAMENTO ABAP

Janelas de pgina o local onde as janelas so associadas s pginas.


As Janelas de pgina podem ser entendidas pelo nosso conceito de layout propriamente
dito. So os elementos responsveis pelo aparecimento ou no das janelas dentro de
uma determinada pgina, bem como seu posicionamento em relao folha impressa.
tambm atravs das Janelas de pgina que o desenvolvedor ter acesso aos Text
Elements de cada uma dessas janelas, responsveis pelo tratamento dos dados em tempo
de execuo do formulrio

Wander Rodrigues / Claudia Oliveira v09

Pgina 231 de 260

TREINAMENTO ABAP

No nosso formulrio, algumas janelas sero exibidas somente na pgina FIRST,


outras somente na NEXT e algumas sero exibidas nas 2 pginas.

Wander Rodrigues / Claudia Oliveira v09

Pgina 232 de 260

TREINAMENTO ABAP

Formatos de pargrafo -

Os pargrafos so as unidades de layout em


SAPscript. Todos os textos entrados no editor so compostos por pargrafos diferentes.
O incio de um pargrafo est marcado pela marcao de pargrafo na coluna esquerda
do editor. No formulrio so definidos os nomes e as caractersticas dos pargrafos.
Das caractersticas, ou atributos, que podem ser definidos para os pargrafos, faz parte,
por exemplo, o alinhamento do texto, o espacejamento de linhas, a famlia de caracteres
utilizada, etc.
So elementos que podem ser criados pelo usurio e apresentam informaes dos textos
de uma determinada janela. Nesses pargrafos so determinados tipos de fontes,
tabulaes, negrito ou sublinhado, etc... So configuraes especficas para um
determinado pargrafo a ser impresso

Wander Rodrigues / Claudia Oliveira v09

Pgina 233 de 260

TREINAMENTO ABAP

Formatos de caracteres -

As cadeias de caracteres so elementos de


layout, que atuam em uma seo de texto de um pargrafo. As cadeias de caracteres so
inseridas no texto atual. O incio da seo de texto marcado com a combinao de
caracteres <XX> e o fim com </>. XX que corresponde ao nome da cadeia de caracteres
que definido no formulrio.
So informaes semelhantes s do pargrafo, no que diz respeito a formatao de
textos, no entanto podem ser aplicados a trechos de textos e no necessariamente a
linhas inteiras do formulrio.

Exemplo:
Para imprimir o texto abaixo,
Texto normal Texto em Negrito
A codificao no Sapscript seria da seguinte forma:
Texto normal - <B>Texto em Negrito</>

Wander Rodrigues / Claudia Oliveira v09

Pgina 234 de 260

TREINAMENTO ABAP

Elementos de texto -

Corresponde lgica de processamento e


comportamento de uma janela durante a execuo do formulrio. responsvel pelos
valores que sero impressos no mesmo, bem como seu posicionamento dentro da janela
e seu tipo de caracter.
No boto Janelas de pgina, possvel selecionar qualquer uma das janelas existentes
em uma determinada pgina, simplesmente clicando o mouse sobre o seu nome e
apertando o boto selecionar, ou mesmo dando um double-click diretamente sobre o
nome da janela desejada. Uma vez selecionada a janela e clicando em
de Texto) ser exibida a tela para criao dos textos a serem impressos.

Wander Rodrigues / Claudia Oliveira v09

(Elementos

Pgina 235 de 260

TREINAMENTO ABAP

Nesses elementos do SAPscript, o programador poder utilizar alguns comandos


semelhantes ao do ABAP/4, com a indicao de que se trata de uma linha de comando
para o formulrio (/: esquerda da linha). Abaixo, alguns dos comandos que podem ser
utilizados de dentro dos elementos de texto de uma janela em SAPscript:
IF..ELSE..ENDIF
CASE..WHEN
DEFINE
PERFORM..USING..CHANGING
BOX..FRAME
INCLUDE
O comando include dentro de uma janela de um formulrio SAPscript serve para
inserir um objeto. Esse objeto pode ser desde um logo, at um texto com vrias
linhas.
Ex.:
/: INCLUDE name OBJECT object ID id LANGUAGE spras

Wander Rodrigues / Claudia Oliveira v09

Pgina 236 de 260

TREINAMENTO ABAP

Smartforms
1. INTRODUO
Esse documento tem como objetivo apresentar a ferramenta de criao de formulrios da SAP
SMART FORMS.

1.2)
O que Smart Forms
Smart Forms uma nova tecnologia SAP para impresso de formulrios.
Substitui o SapScript como ferramenta de desenvolvimento de formulrios,
oferecendo um ambiente grfico para criar e alterar os formulrios.
Est acessvel atravs da transao SMARTFORMS, e o processo de impresso se
d atravs da chamada a uma funo gerada por esta transao, que contem todo o
processamento do formulrio.
1.3)
Alguns benefcios do Smart Forms
Ambiente grfico para desenvolvimento
Maior flexibilidade no desenvolvimento e maior facilidade de manuteno
Publicar formulrios na WEB
O programa de impresso basicamente s seleciona os dados e faz chamada a
funo que executa o formulrio enviando os dados. Em caso de alteraes no
formulrio, elas se concentraro exclusivamente no formulrio, sem
necessidade de se alterar o programa, exceto nos casos em que se altere os
dados.
No precisa ser copiado de um ambiente para outro para ser testado.
Seu teste em desenvolvimento apresenta a aparncia real do formulrio mais

prxima do real.

Wander Rodrigues / Claudia Oliveira v09

Pgina 237 de 260

TREINAMENTO ABAP

Smart Form Builder

Navigation Menu: Exibe os ns contidos no formulrio, e permite incluir


novos ns, alterar posio no formulrio, eliminar, etc.
Maintenance Frame: Exibe as propriedades do n selecionado no menu.
Form Painter: Exibe e permite manipular as janelas e alguns outros
objetos(ns) do formulrio em formato grfico.
OBSERVAES: Ao clicar no item de menu: Utilitrios => Lista de
Campos on/off sero exibidos os campos do form. Estes campos podero ser
arrastados e colados em um elemento de texto.
O processo completo de impresso de um formulrio Smart Form possui trs objetos
principais no SAP. So eles:
Smart Form Print Form Template:
o formulrio, onde criado ou pr-configurado o modelo.
Smart Form function module:
Modulo de funo a ser chamado para executar o formulrio. gerada
automaticamente quando ativamos um smart form e contm todo o processamento do
mesmo.
Smart Form print program:
Programa ABAP que executar o formulrio. Dever selecionar os dados, fazer
chamada a funo 'SSF_FUNCTION_MODULE_NAME' passando o nome do
formulrio como parmetro. Esta funo retorna o nome da function module que ser
chamada para executar o formulrio.

Wander Rodrigues / Claudia Oliveira v09

Pgina 238 de 260

TREINAMENTO ABAP
Os programas do Smart Form no so os mesmos que os dos formulrios de SapScript,
e voc no pode utilizar os programas de impresso de SapScript para imprimir um
Smart Form.

Viso da tela contendo os ns de um Smart Form

Wander Rodrigues / Claudia Oliveira v09

Pgina 239 de 260

TREINAMENTO ABAP

BAPI / Batch Input


BAPI
A transao utilizada para visualizar todas as BAPIs a BAPI.

BAPIs podem ser entendidas como funes (SE37) que so acessadas de dentro do sap
ou remotamente (RFC) para um determinado propsito. Em alguns caso elas
substituem totalmente um batchinput. Em outros casos pode ser necessrio chamar 2 ou
mais bapis em seqncia para obter o mesmo resultado.

Wander Rodrigues / Claudia Oliveira v09

Pgina 240 de 260

TREINAMENTO ABAP

Ex.: A BAPI BAPI_SALESORDER_GETLIST lista todas as ordens de venda de um


cliente de acordo com parmetros de entrada informados

Wander Rodrigues / Claudia Oliveira v09

Pgina 241 de 260

TREINAMENTO ABAP
O boto verde na frente de cada parmetro exibe uma documentao sobre o que deve
ser preenchido naquele campo

Para utilizar a bapi, dentro do sap ou remotamente, ela deve estar com o status liberado

Wander Rodrigues / Claudia Oliveira v09

Pgina 242 de 260

TREINAMENTO ABAP

Batchinput
Os programas de batchinput so criados, na maioria das vezes, para fazer a entrada de
dados no SAP. Atravs de arquivos texto, planilhas excel ou outra origem, o programa l
os dados, faz um mapeamento das telas e executa a transao que ir gravar as
informaes no sap.
Para fazer o mapeamento das telas deve-se utilizar a transao SHDB

Exemplo de mapeamento das telas da transao ZTBB01

Wander Rodrigues / Claudia Oliveira v09

Pgina 243 de 260

TREINAMENTO ABAP

Em algumas transaes, principalmente nas transaes enjoy (com N no final: VT01 ->
VT01N) no possvel executar totalmente o batchinput. Estes casos devem ser
avaliados individualmente para escolher a melhor opo: Utilizar a transao antiga,
checar se a parte onde o batchinput funciona atende ao que solicitado, verificar se
existem bapis com a mesma funcionalidade, combinar o uso de batchinput com bapi,
verificar outra transao para entrar com dados.

Wander Rodrigues / Claudia Oliveira v09

Pgina 244 de 260

TREINAMENTO ABAP

SHDB
Ferramenta utilizada para mapear todos os campos/telas de uma
determinada transao. A partir deste mapeamento, podemos montar um
programa de batch input que execute a transao de forma automtica para
uma ou mais ocorrncias.
Para gravar o mapeamento, entramos com o comando SHDB, nova
gravao, nome do arquivo, cdigo da transao e executar transao.
Simula na tela exatamente a entrada dos dados que pretande fazer
automaticamente (no pode ter erros, caso acontea, cancelar a gravao e
recomear).

Na hora de montar o programa de batch input, que vai utilizar este


mapeamento, observar mscara para os campos de datas e valores.

Wander Rodrigues / Claudia Oliveira v09

Pgina 245 de 260

TREINAMENTO ABAP

Batch Input/Call transaction


primordial para integridade dos dados que as tabelas standard no seja
atualizadas diretamente via os comandos INSERT, MODIFY, UPDATE, pois por
mais que conheamos uma transao no podemos garantir com certeza
quais as tabelas que so armazenadas quando uma transao executada.
Somente poderemos garantir a integridade dos dados fazendo a atualizao
da base de dados via transao.
O programa de batch input chama as telas de uma transao e insere
valores nos campos dessas telas, executando todos os passos de um
processamento manual.
No entanto, muitas atualizaes standard podem ser executadas via BAPIS
de forma muito mais eficiente. Por isso, antes de optar pelo batch input,
devemos sempre verificar se j no existe uma BAPI com esta funo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 246 de 260

TREINAMENTO ABAP

Gerao do SHDB
Para gerar o SHDB, execute a transao SHDB conforme abaixo:

Nesta tela clique em New recording

Wander Rodrigues / Claudia Oliveira v09

Pgina 247 de 260

TREINAMENTO ABAP

Preencha os campos abaixo e clique em OK

Preencha a primeira tela do cadastro de bancos (FI01) e tecle ENTER

Wander Rodrigues / Claudia Oliveira v09

Pgina 248 de 260

TREINAMENTO ABAP

Preencha o nome do banco e clique em Salvar

Wander Rodrigues / Claudia Oliveira v09

Pgina 249 de 260

TREINAMENTO ABAP

Ser exibida a tela final do SHDB. CLIQUE EM SALVAR.

Clique em Voltar para retornar primeira tela da transao SHDB

Wander Rodrigues / Claudia Oliveira v09

Pgina 250 de 260

TREINAMENTO ABAP

JOBs
Para a criao de JOBS, escolher Sistema > Servios > Jobs > Definio de jobs
(transao SM36)

Execuo em background
importante salientar que todo JOB executado em background.
Qualquer programa pode ser executado em background (na tela de execuo
do programa, escolher Programa > Exec. em Background).
Deve-se neste momento especificar a impressora, se o relatrio vai direto
para a impressora ou se vai ser gerado novo SPOOL.

Escalonamento / Acompanhamento
Para a Monitorao do JOB, escolher Sistema > Servios > Jobs > Sntese de
jobs.
Para a verificao do SPOOL do usurio, escolher Sistema > Servios >
Controle de Sada.
O SPOOL de relatrios possui um nmero limitado de impresso de linhas,
porm existe um boto dentro do SPOOL atravs do qual podemos aumentar
este limite.

Wander Rodrigues / Claudia Oliveira v09

Pgina 251 de 260

TREINAMENTO ABAP

Performance
Conceitos Bsicos - Arquitetura Cliente-Servidor
O R/3 trabalha com a filosofia de cliente/servidor de 3 nveis:
Database Server: responsvel pelo acesso e pela atualizao de dados
Application Server: responsvel pelo processamento de aplicao (tempo gasto com a
interpretao de comandos ABAP)
Frontend: responsvel pelo processamento dos grficos (tempo gasto pelo sistema R/3,
ou seja, o middleware e o kernel).
A carga de processamento entre estes 3 nveis pode ser visualizada da seguinte forma:

Quando se utiliza um logon service a alocao de servidores de aplicao definida


automaticamente no momento do logon ( utilizado o servidor que est menos
carregado).

Sendo assim, para obteno de melhor performance, deve-se minimizar o tempo


de comunicao entre os trs nveis. Com o intuito de auxiliar esta tarefa, iremos
apresentar alguns pontos que devem ser observados na criao de programas.
Wander Rodrigues / Claudia Oliveira v09

Pgina 252 de 260

TREINAMENTO ABAP

ST05 - SQL Trace


Nesta transao, temos a relao de todas as tabelas acessadas durante o perodo em que
o Trace permaneceu ligado, juntamente com o nmero de registros lidos, os campos
utilizados para pesquisa, qual ndice secundrio foi utilizado, o nmero de
prepare/fetch/open executados pelo banco de dados, entre outras funcionalidades.

Wander Rodrigues / Claudia Oliveira v09

Pgina 253 de 260

TREINAMENTO ABAP

SM50 - Process Overview


Durante a execuo de uma transao (ou programa), podemos analisar quais tabelas
esto sendo acessadas, se o acesso sequencial ou direto, e at se uma transao que
est sobrecarregando o servidor.

Wander Rodrigues / Claudia Oliveira v09

Pgina 254 de 260

TREINAMENTO ABAP

O que SQL?
SQL significa Structured Query Language (Linguagem de pequisa estruturada). O
sql usado para fazer a comunicao com o banco de dados. Os comandos SQL so
utilizados para efetuar tarefas como atualizao do banco de dados ou para
recuperar dados de um banco de dados. Alguns sistemas de gerenciamento de
banco de dados comuns so: Oracle, Sybase, Microsoft SQL Server, Access, Ingres,
etc... Embora a maior parte dos sistemas de base de dados utilizem o SQL, boa
parte deles tem suas extenses proprietrias que so utilizadas somente em seus
sistemas. No entanto, os comandos SQL padres tais como select, insert,
update e delete podem ser utilizados para suprir quase todas as necessidades
de trabalho com banco de dados.
Este tutorial ir prov-lo com as instrues bsicas do SQL.

Tabelas
Um banco de dados contm um ou mais objetos chamados tabelas. Os dados ou
informaes so armazenados nestas tabelas. Estas tabelas so identificadas pelos
seus nomes e so constitudas por linhas e colunas.
As colunas contm o nome da coluna, o tipo de dado e outros atributos relevantes.
As linhas contm os registros de dados das colunas.
Exemplo de uma tabela simples chamada CLIMA.
CLIMA
Cidade

Estado Min Max

Belo Horizonte MG

15

35

Rio de Janeiro

RJ

20

42

So Paulo

SP

35

Curitiba

PR

03

40

Cidade, Estado, Min e Max so as colunas. As linhas contm os dados da tabela (4


linhas, uma para cada cidade)

Wander Rodrigues / Claudia Oliveira v09

Pgina 255 de 260

TREINAMENTO ABAP

SELECT - Selecionando registros


O comando SELECT usado para pesquisar o banco de dados e retornar as linhas que
atendem ao critrio de pesquisa que voc utilizou.
Veja abaixo o formato de um comando select simples:
select"coluna1"[,"coluna2",etc]
from"nome_da_tabela"
[where"condio"]

Os nomes das colunas que seguem o comando SELECT determinam que colunas sero
retornadas aps a pesquisa no banco. Voc pode utilizar quantas colunas da tabela voc
quiser, ou pode selecionar * para buscar todas as colunas.
O nome da tabela que segue a palavra FROM especifica qual tabela ser pesquisada
para obter as colunas desejadas.
A Clusula WHERE (opcional), especifica quais linhas sero retornadas ou exibidas,
baseadas no critrio descrito aps a palavra WHERE.
Condies de seleo utilizadas na clusula where:
=

Igual

>

Maior que

<

Menor que

>= Maior ou igual a


<= Menor ou igual a
<> Diferente de
LIKE *Veja nota abaixo

O operador LIKE pode tambm ser utilizado na condio do where. Like um operador
que permite a voc selecionar linhas que so semelhantes ao que voc especificou. O
sinal de percentagem % pode ser utilizado como um coringa para encontrar
qualquer possibilidade de caracteres que possam aparecer antes ou depois de um
caracter especificado. Por exemplo:
selectnome,sobrenome,cidade
fromempregados
wherenomeLIKE'Ana%';

Este comando SQL ir retornar todos os registros onde a coluna nome comece com
Ana.

Wander Rodrigues / Claudia Oliveira v09

Pgina 256 de 260

TREINAMENTO ABAP

Ou voc pode escrever:


selectnome,sobrenome,cidade
fromempregados
wherenomeLIKE'%er';

Este comando SQL ir retornar todos os registros onde a coluna nome termine com er.
Exemplo com sinal de igualdade:
select*fromempregados
wherenome='Diego';

Este comando ir retornar apenas as linhas onde a coluna nome contenha exatamente o
termo Diego.

Wander Rodrigues / Claudia Oliveira v09

Pgina 257 de 260

TREINAMENTO ABAP

INSERT Inserindo registros em uma


tabela
O comando INSERT utilizado para adicionar linha(s) em uma tabela.
Para inserir registros em uma tabela, utilize a palavra chave INSERT INTO, seguida
pelo nome da tabela, um abre parntesis, o nome das colunas separadas por vrgula e um
fecha parntesis. Depois voc coloca a palavra chave VALUES e a lista de valores das
colunas seguido pelo fecha parntesis.
Os valores que voc entrar sero includos como uma nova linha na tabela.
insertinto"nome_da_tabela"
(primeira_coluna,...ultima_coluna)
values(primeiro_valor,...ultimo_valor);

No exemplo abaixo, a coluna Nome ir receber o valor Lucas, e a coluna estado


ir receber o valor MG.
Exemplo:
insertintoempregados
(nome,sobrenome,matricula,idade,cidade,estado)
values
('Lucas','Martineli',99324,18,'BeloHorizonte','MG');

Nota: Todos os valores de texto devem estar entre aspas simples => Texto.

Wander Rodrigues / Claudia Oliveira v09

Pgina 258 de 260

TREINAMENTO ABAP

UPDATE Atualizando registros


O comando UPDATE usado para modificar registros na tabela, que atendam a uma
determinada condio.
update"nome_da_tabela"
set"coluna1"="valor1"
[,"coluna2"="valor2"...]
where"nome_da_coluna"OPERATOR"value"
[and|or"Outra_column"OPERATOR"value2"];
[]=opcional

Exemplos:
updateagenda
setddd=31
whereestado=MG;
updateagenda
setsobrenome='Souza',
bairro=Centro
wherenome='Carlos';
updateempregados
setidade=28
wherenome='Claudio'
andsobrenome=Carvalho

Wander Rodrigues / Claudia Oliveira v09

Pgina 259 de 260

TREINAMENTO ABAP

DELETE Excluindo registros


O comando DELETE usado para eliminar uma ou vrias linhas da tabela.
deletefrom"nome_da_tabela"
where"coluna1"OPERATOR"value1"
[and|or"coluna2"OPERATOR"value2"];
[]=opcional

Exemplos:
deletefromempregados;

Nota: Se voc no incluir a clusula WHERE, todos os registros sero excludos.


deletefromempregados
wheresobrenome='Rodrigues';
deletefromempregados
wherenome='Wander'ornome='Leroy';

Para deletar um registro de uma tabela, digite delete from, seguido do nome da tabela,
where e a condio para excluir os registros. Se voc omitir a clusula where, todos
os registros da tabela so eliminados.

Wander Rodrigues / Claudia Oliveira v09

Pgina 260 de 260