Sei sulla pagina 1di 654

TREINAMENTO ABAP

TREINAMENTO
ABAP
Wander Rodrigues
Claudia Oliveira

Wander Rodrigues / Claudia Oliveira v09

Pgina 1 de 654

TREINAMENTO ABAP

Introduo ao SAP ............................................................................................................ 7


Conceitos bsicos ........................................................................................................... 59
Principais caractersticas................................................................................................. 59
OBJETOS DE DESENVOLVIMENTO ........................................................................ 60
Classe de desenvolvimento............................................................................................. 60
Requests .......................................................................................................................... 60
Mdulos .......................................................................................................................... 61
Profissionais SAP ........................................................................................................... 63
Arquitetura ...................................................................................................................... 63
Entrando no ECC ............................................................................................................ 64
Entrando no ECC (R/3) .................................................................................................. 64
A tela principal do SAP R/3 ........................................................................................... 64
Barra de Ferramentas ...................................................................................................... 65
Ajuda do Sistema R/3 ..................................................................................................... 65
Ajuda de campos ............................................................................................................ 66
Trabalhando com Sesses....................................................................................... 66
CONCEITOS BSICOS DE ABAP .............................................................................. 67
EDITOR ABAP .............................................................................................................. 68
Principais funes ........................................................................................................... 68
Sintaxe ............................................................................................................................ 69
INTERAO COM USURIO .................................................................................... 70
Telas de Seleo (standard) .................................................................................... 70
Demais Telas .......................................................................................................... 70
Mensagens .............................................................................................................. 70
Listas ............................................................................................................................... 73
DEFINIES DE OBJETOS NO PROGRAMA .......................................................... 74
Tabelas Transparentes .................................................................................................... 74
Tabelas internas .............................................................................................................. 74
Estruturas ........................................................................................................................ 74
Tipos ............................................................................................................................... 75
Variveis ......................................................................................................................... 75
Ranges ............................................................................................................................ 76
Constantes....................................................................................................................... 77
Opes para tela de seleo ............................................................................................ 77
Elementos de texto ......................................................................................................... 79
Inicializao dos objetos ................................................................................................. 79
Variveis de sistema (estrutura SYST) ........................................................................... 79
ABAP OPEN SQL ......................................................................................................... 81
SELECT ......................................................................................................................... 81
WHERE .......................................................................................................................... 83
ORDER BY .................................................................................................................... 84
FOR ALL ENTRIES ...................................................................................................... 84
UP TO n ROWS ............................................................................................................. 85
INNER JOIN .................................................................................................................. 85
OUTER JOIN ................................................................................................................. 86
ATRIBUIO DE VALORES ...................................................................................... 87

Wander Rodrigues / Claudia Oliveira v09

Pgina 2 de 654

TREINAMENTO ABAP
Comando MOVE ............................................................................................................ 87
Comando MOVE-CORRESPONDING ......................................................................... 87
Comando WRITE ........................................................................................................... 88
Converses entre campos e estruturas ............................................................................ 90
Clculos de valores ......................................................................................................... 91
Sub-campos (strings) ...................................................................................................... 91
Clculos com datas ......................................................................................................... 92
Operaes com cadeias de caracteres ............................................................................. 92
COMANDOS DE CONTROLE E EXPRESSES LGICAS ..................................... 94
IF..................................................................................................................................... 94
CASE .............................................................................................................................. 95
DO.... .............................................................................................................................. 95
WHILE ........................................................................................................................... 95
CHECK........................................................................................................................... 96
CONTINUE .................................................................................................................... 96
STOP .............................................................................................................................. 96
EXIT ............................................................................................................................... 96
OPERAES COM TABELAS INTERNAS ............................................................... 97
APPEND......................................................................................................................... 97
COLLECT ...................................................................................................................... 97
SORT .............................................................................................................................. 98
LOOP .............................................................................................................................. 98
READ ............................................................................................................................. 99
INSERT/MODIFY ......................................................................................................... 99
DELETE ....................................................................................................................... 100
DESCRIBE TABLE ..................................................................................................... 100
Nveis de Controle dentro de um LOOP ...................................................................... 100
MODULARIZAO DOS PROGRAMAS ................................................................ 102
Eventos ......................................................................................................................... 102
Sub-rotinas .................................................................................................................... 106
Includes......................................................................................................................... 107
Opes de Impresso .................................................................................................... 107
PROGRAMAS ............................................................................................................. 109
Programas Comando DATA ..................................................................................... 112
Programas Comando WRITE .................................................................................... 113
Programas - Parmetros de seleo - Parameter ........................................................... 114
Programas - Exerccio 1 - Report ................................................................................. 115
Programas - Exerccio 2 - Report ................................................................................. 116
Programas - Exerccio 3 - Report ................................................................................. 117
Programas - Exerccio 4 - Report ................................................................................. 118
Programas - Exerccio 5 Report................................................................................. 122
Programas - Exerccio 6 Report................................................................................. 123
Programas - Parmetros de Seleo Select-Options .................................................. 125
VARIANTES ............................................................................................................... 126
VINCULANDO PROGRAMAS .................................................................................. 127
SET/GET PARAMETER ID ................................................................................ 127
SUBMIT ............................................................................................................... 127
EXPORT/IMPORT .............................................................................................. 127
PERFORM ........................................................................................................... 128
LEAVE ................................................................................................................. 128
Wander Rodrigues / Claudia Oliveira v09

Pgina 3 de 654

TREINAMENTO ABAP
DICIONRIO DE DADOS ......................................................................................... 129
Domnios ...................................................................................................................... 130
Elementos de dados ...................................................................................................... 130
Tabelas .......................................................................................................................... 130
Estruturas ...................................................................................................................... 132
Ajudas de pesquisa3 ..................................................................................................... 132
Views ............................................................................................................................ 132
ndice ............................................................................................................................ 132
Contedo de tabelas ...................................................................................................... 133
Dicionrio de dados - Criao de domnios.................................................................. 134
Exerccio 1 - Dicionrio de Dados - Domnio .............................................................. 135
Dicionrio de dados - Criao de elementos de dados ................................................. 136
Exerccio 2 - Dicionrio de Dados Elemento de dados ............................................. 138
Dicionrio de dados - Criao de tabelas ..................................................................... 139
Exerccio 3 - Dicionrio de Dados Tabela................................................................. 142
Exerccio 4 - Dicionrio de Dados Domnio Elemento de dados - Tabela............. 144
Exerccio 5 - Dicionrio de Dados Domnio Elemento de dados - Tabela............. 145
SM30 ............................................................................................................................ 146
Dicionrio de dados - Criao de estruturas ................................................................. 155
Dicionrio de dados - Criao de Categorias de tabela ................................................ 158
EVENTOS .................................................................................................................... 161
Alguns eventos (verificar o help dos commandos) ...................................................... 163
Exerccio 1 - Evento ..................................................................................................... 165
REPORT zcalculadora3. ............................................................................................... 168
Tabelas Internas ............................................................................................................ 169
Usando tabelas internas ................................................................................................ 170
Escolhendo um tipo de tabela ....................................................................................... 171
Declarando tabelas internas .......................................................................................... 172
OPERAES COM TABELAS INTERNAS ............................................................. 173
OPERAES COM MAIS DE UMA TABELA INTERNA ...................................... 175
Programa Exemplo para manipulao de dados em tabelas internas ........................... 176
Exemplo de manipulao de tabela interna Relacionando 2 tabelas internas ........... 178
Exerccio 1 Tabela Interna......................................................................................... 180
Exerccio 2 Tabela Interna......................................................................................... 188
Grupo de Funes ......................................................................................................... 190
Exerccio 1 Grupo de funes ................................................................................... 194
Funo .......................................................................................................................... 195
Nome do report: ZRXX_CHAMA_FUNCAO ............................................................ 207
Exerccio 1 Funo .................................................................................................... 209
Exerccio 2 Funo .................................................................................................... 210
RFC (Remote Function Call)........................................................................................ 211
Ajuda para pesquisa ...................................................................................................... 212
Objetos de bloqueio ...................................................................................................... 224
Vises ........................................................................................................................... 225
Listas X ALV ............................................................................................................... 226
LISTAS ......................................................................................................................... 227
Lista Bsica .................................................................................................................. 227
Lista Interativa .............................................................................................................. 227
ALV .............................................................................................................................. 228
ALV Conceitos Bsicos ............................................................................................ 228
Wander Rodrigues / Claudia Oliveira v09

Pgina 4 de 654

TREINAMENTO ABAP
Exemplo ALV simplificado ......................................................................................... 234
Exemplo de programa ALV com outras funcionalidades ............................................ 236
Module Pool ................................................................................................................. 241
PBO e PAI .................................................................................................................... 241
Definio de Telas (screen painter) .............................................................................. 244
Botes de Funo ......................................................................................................... 244
PF-Status e Titlebar (menu painter).............................................................................. 244
Table controls ............................................................................................................... 246
Tabstrip control ............................................................................................................ 246
Transao ...................................................................................................................... 250
Passo a Passo para criao de um module pool (CONSULTA) ................................... 252
Passo a Passo para criao de um module pool (CADASTRO) .................................. 312
Passo a Passo para criao de um module pool (CADASTRO 2) ............................... 354
Exemplo de module pool de cadastro de empresa ........................................................ 387
Exemplo de module pool de cadastro de cliente .......................................................... 396
Debug ........................................................................................................................... 404
COMO ATIVAR O MODO DEBUGGING ................................................................ 406
PROCURA DE CAMPOS EM TABELAS ................................................................. 415
Exits .............................................................................................................................. 416
MODIFICAES EM PROGRAMAS STANDARD ................................................ 416
Customer Exits ............................................................................................................. 416
User Exits ..................................................................................................................... 417
Field Exits ..................................................................................................................... 418
Table enhancements ..................................................................................................... 419
Text enhancements ....................................................................................................... 419
Frmulas, requerimentos, controle de cpias (SD, MM, LIS, SOP) ............................ 419
BTE - Business Transaction Events (FI) ...................................................................... 420
- Field exit..................................................................................................................... 420
Exemplo field exit para o campo centro (elemento de dados WERKS_D).................. 425
- User exit ..................................................................................................................... 429
Badi............................................................................................................................... 434
Enhancement ................................................................................................................ 437
Sapscript ....................................................................................................................... 441
Estrutura de Chamada e Controle do SAPSCRIPT ...................................................... 442
PRINCIPAIS COMPONENTES DE UM FORMULRIO ......................................... 444
O formulrio ................................................................................................................. 446
Copiando um formulrio .............................................................................................. 447
Partes de um formulrio ............................................................................................... 452
Criao de sapscript - Exemplo .................................................................................... 465
Programas de impresso ............................................................................................... 478
Comandos de Controle ................................................................................................. 484
Formatando Opes ...................................................................................................... 485
Smartforms ................................................................................................................... 486
Smart Form Builder ...................................................................................................... 487
Criando um Smart Form ............................................................................................... 489
reas de Output ............................................................................................................ 490
Janela, grfico e endereo ............................................................................................. 490
No tem sucessor .......................................................................................................... 491
No tem sucessor .......................................................................................................... 492
Detalhes Adicionais ...................................................................................................... 493
Wander Rodrigues / Claudia Oliveira v09

Pgina 5 de 654

TREINAMENTO ABAP
Publicao de Smart Form na WEB ............................................................................. 494
Exerccio SMARTFORMS .......................................................................................... 495
BAPI / Batch Input ....................................................................................................... 530
Batchinput ..................................................................................................................... 533
Tratamento arquivos externos ...................................................................................... 535
SHDB ........................................................................................................................... 538
Batch Input/Call transaction ......................................................................................... 539
Gerao do SHDB ........................................................................................................ 542
QUERY e QUICK VIEWER - CONCEITOS BSICOS ............................................ 550
Quick Viewer........................................................................................................ 550
JOBs ............................................................................................................................. 558
Execuo em background ............................................................................................. 558
Escalonamento / Acompanhamento ............................................................................. 558
APLICAO DE NOTAS........................................................................................... 559
Performance .................................................................................................................. 560
Comunicao entre Application Server e Database Server .......................................... 562
Selees de mltiplas tabelas ....................................................................................... 566
Clusula For All Entries ............................................................................................ 567
Clusula Left Outer Join ........................................................................................... 569
Tabelas internas e alocao de memria ...................................................................... 572
ST02 - System Workload Analysis: ............................................................................. 574
ST04 - Cursor Cash ...................................................................................................... 575
SE30 - Runtime Analisys ............................................................................................. 577
SM50 - Process Overview ............................................................................................ 578
O que SQL? ............................................................................................................... 579
Tabelas .......................................................................................................................... 580
SELECT - Selecionando registros ................................................................................ 581
EXERCCIO 1 .............................................................................................................. 583
EXERCCIO 2 .............................................................................................................. 586
INSERT Inserindo registros em uma tabela .............................................................. 589
EXERCICIO 3 .............................................................................................................. 590
UPDATE Atualizando registros ................................................................................ 595
EXERCICIO 4 .............................................................................................................. 596
DELETE Excluindo registros .................................................................................... 598
EXERCICIO 5 .............................................................................................................. 599
LSMW - Introduo ..................................................................................................... 600
Princpios bsicos do LSM Workbench ....................................................................... 600
Pr-condies................................................................................................................ 602
Utilizando a ferramenta LSM Workbench ................................................................... 603
Introduza este(s) registro(s) de estrutura(s) no R/3. ..................................................... 605
ITOB-STORT ............................................................................................................... 606
Migrao de Dados Passo a Passo ............................................................................. 607
Batch Input Recording Passo a Passo. ....................................................................... 627

Wander Rodrigues / Claudia Oliveira v09

Pgina 6 de 654

TREINAMENTO ABAP

Introduo ao SAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 7 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 8 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 9 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 10 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 11 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 12 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 13 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 14 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 15 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 16 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 17 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 18 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 19 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 20 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 21 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 22 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 23 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 24 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 25 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 26 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 27 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 28 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 29 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 30 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 31 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 32 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 33 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 34 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 35 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 36 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 37 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 38 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 39 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 40 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 41 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 42 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 43 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 44 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 45 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 46 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 47 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 48 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 49 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 50 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 51 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 52 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 53 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 54 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 55 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 56 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 57 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 58 de 654

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 59 de 654

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 60 de 654

TREINAMENTO ABAP

Mdulos

SD

FI

MM

CO
AM

PP

R/3
QM

PS
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 61 de 654

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 62 de 654

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 63 de 654

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

Enter

Barra de
ttulo

cones
de funo

Opo para
customizaes
pessoais
Campo de
comando
Opo para
Funes pessoais
Nmero
da
sesso
Barra principal
do menu

Wander Rodrigues / Claudia Oliveira v09

Identificao
do sistema

Barra de
status

Pgina 64 de 654

TREINAMENTO ABAP
Podemos acessar as transaes, informando diretamente seu cdigo na linha
de comando, ao invs de navegar pelo menu. Com /o antes do cdigo da
transao, abrimos em uma sesso nova. Com /n abandona a transao e
abre a seguinte, dentro da mesma sesso. Ex: /nse11, /ose38.

Barra de Ferramentas

Entrar

Executar

Salvar

Localizar

Voltar

Classificar

Sair

Imprimir

Cancelar

Criar
Janela

Ajuda

Paginar

Ajuda do Sistema R/3

Obs:

clicar boto direito em favoritos tbm insere.


Campo de valor e quantidade exige que se informe de referncia
Valor associar campo moeda
Qtde informar unidade medida

Wander Rodrigues / Claudia Oliveira v09

Pgina 65 de 654

TREINAMENTO ABAP

Ajuda de campos

F1
F4

?
?

Trabalhando com Sesses

Sesso 2
Sesso 1

Sesso 3
Sesso 6

Centro de custo:
Classe de custo:

Sesso 5

Sesso 4

Nome
Descrio

Wander Rodrigues / Claudia Oliveira v09

Pgina 66 de 654

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 67 de 654

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 68 de 654

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 69 de 654

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 70 de 654

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 71 de 654

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 72 de 654

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 73 de 654

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 74 de 654

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)

'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.
Wander Rodrigues / Claudia Oliveira v09

Pgina 75 de 654

TREINAMENTO ABAP
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)
ACCOUNT-HIGH
= 00000100. (valor final do intervalo)
APPEND ACCOUNT.

Wander Rodrigues / Claudia Oliveira v09

Pgina 76 de 654

TREINAMENTO ABAP
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 77 de 654

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.
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.
Wander Rodrigues / Claudia Oliveira v09

Pgina 78 de 654

TREINAMENTO ABAP

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

Wander Rodrigues / Claudia Oliveira v09

Pgina 79 de 654

TREINAMENTO ABAP
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 80 de 654

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 81 de 654

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 82 de 654

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 83 de 654

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 84 de 654

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 85 de 654

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 86 de 654

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 87 de 654

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


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.

Wander Rodrigues / Claudia Oliveira v09

Pgina 88 de 654

TREINAMENTO ABAP

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

Wander Rodrigues / Claudia Oliveira v09

Pgina 89 de 654

TREINAMENTO ABAP
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:
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.
Wander Rodrigues / Claudia Oliveira v09

Pgina 90 de 654

TREINAMENTO ABAP

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

OU
OU
OU
OU

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

=
=
=
=

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

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

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

Wander Rodrigues / Claudia Oliveira v09

Pgina 91 de 654

TREINAMENTO ABAP

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.

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.

Wander Rodrigues / Claudia Oliveira v09

Pgina 92 de 654

TREINAMENTO ABAP

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'.
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 93 de 654

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 94 de 654

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 95 de 654

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 96 de 654

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 97 de 654

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

1
2
3

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 98 de 654

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 99 de 654

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 100 de 654

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 101 de 654

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

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.
Wander Rodrigues / Claudia Oliveira v09

Pgina 102 de 654

TREINAMENTO ABAP

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

Wander Rodrigues / Claudia Oliveira v09

Pgina 103 de 654

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

Wander Rodrigues / Claudia Oliveira v09

Pgina 104 de 654

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

Ou COL_NEGATIVE

Red

negative threshold value

Ou COL_GROUP

Violet

group levels

Wander Rodrigues / Claudia Oliveira v09

Pgina 105 de 654

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 106 de 654

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'
Wander Rodrigues / Claudia Oliveira v09

Pgina 107 de 654

TREINAMENTO ABAP
NO DIALOG.

Wander Rodrigues / Claudia Oliveira v09

Pgina 108 de 654

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 109 de 654

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 110 de 654

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

Wander Rodrigues / Claudia Oliveira v09

Pgina 111 de 654

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 112 de 654

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 113 de 654

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 114 de 654

TREINAMENTO ABAP

Programas - Exerccio 1 - Report


Objetivo:
Criar um report ZRXX_PRIMEIRO_PROGRAMA para solicitar o nome
do usurio e o telefone na tela e em seguida imprimir uma mensagem.
Tela inicial do usurio.

Nome
Telefone

O campo nome deve ter 20 posies caracteres e o telefone deve ter 15 posies
numricas.
Quando o usurio pressionar F8 ou clicar no boto de executar, imprimir a mensagem
abaixo:
Ol XXXXXXX
Seu telefone YYYYYYYYY
Onde XXXXXXX o nome que o usurio digitou e YYYYYY o telefone que o
usurio digitou.

Wander Rodrigues / Claudia Oliveira v09

Pgina 115 de 654

TREINAMENTO ABAP

Programas - Exerccio 2 - Report


Objetivo:
Criar um report ZRXX_SEGUNDO_PROGRAMA para solicitar dados
do usurio e imprimir um relatrio na tela.
Tela inicial do usurio.

Nome
Endereo
Numero
Complemento
Bairro
Cidade
Estado
Pas
Email

Definio do tamanho dos campos:


Nome
Endereo
Numero
Complemento
Bairro
Cidade
Estado
Pais
Email

Char
Char
Numc
Char
Char
Char
Char
Char
Char

20
30
5
10
20
20
2
2
25

Quando o usurio pressionar F8 ou clicar no boto de executar, imprimir o relatrio


abaixo (observe o alinhamento dos campos):
Nome
XXXXXXXXXXXXXXX
Endereo
XXXXXXXXXXXXXXXXXXXXXX
Numero
99999
Complemento XXXXXXXXXX
Bairro
XXXXXXXXXXXXXXX
Cidade
XXXXXXXXXXXXXXX
Estado
XX
Pas
XX
Email
XXXXXXXXXXXXXXXXXX

Wander Rodrigues / Claudia Oliveira v09

Pgina 116 de 654

TREINAMENTO ABAP

Programas - Exerccio 3 - Report


Criar um report (ZRXX_CALCULADORA) que funcione como uma calculadora que
faz somente SOMA. O programa dever pedir o primeiro valor e o segundo valor.
Quando o usurio executar o relatrio listar na tela a operao completa da seguinte
forma:

Campo1 + Campo2 = Resultado


Para isso, criar 2 parameters para solicitar os 2 valores para o usurio. Em seguida criar
uma varivel que ir armazenar o resultado da soma dos 2 campos. Por ltimo imprimir
o primeiro campo, o sinal de +, o segundo campo, o sinal de = e a varivel de
resultado.

Wander Rodrigues / Claudia Oliveira v09

Pgina 117 de 654

TREINAMENTO ABAP

Programas - Exerccio 4 - Report


Criar um report (ZRXX_CALCULADORA2) que funcione como uma calculadora que
realiza as 4 operaes bsicas. O programa dever pedir o primeiro valor, o sinal, o
segundo valor e quando o usurio executar o relatrio listar na tela a operao completa
da seguinte forma:

campo1 operador campo2 = resultado


O programa dever exibir uma tela semelhante que se segue:

Wander Rodrigues / Claudia Oliveira v09

Pgina 118 de 654

TREINAMENTO ABAP

Quando o usurio preencher os parmetros de entrada e executar o relatrio, exibir uma


tela semelhante tela abaixo:

Listar o primeiro valor, o sinal, o segundo valor, um sinal de = e o resultado da


operao.

Tente fazer este exerccio sozinho. Se tiver


dvidas consulte a soluo na prxima pgina.

Wander Rodrigues / Claudia Oliveira v09

Pgina 119 de 654

TREINAMENTO ABAP

Atravs da transao SE38 criar o report com o nome de


ZRXX_CALCULADORA2.

Ttulo: Calculadora
Categoria: 1 Programa executvel
Status: K Programa de clientes produtivo
Aplicao: * Vlido para vrias aplicaes
Grupo de autorizaes: Em branco
Banco de dados lgico: Em branco
Verso tela seleo: Em branco
Bloqueio do editor: Em branco
Aritmtica em ponto fixo: Marcado
Incio via variante: Em branco

Gravar
Se for solicitada a classe de desenvolvimento e request, definir como Objeto local
Incluir o cdigo abaixo no report criado.

REPORT zrxx_calculadora2.
* Autor: Wander
* Data: 12.05.2009
* Varivel para calcular o resultado
DATA v_total
TYPE p DECIMALS 2.
* Comando que monta uma tela para entrada de dados
* do usurio
PARAMETERS: p_op1
TYPE p DECIMALS 2,
p_sinal
TYPE c LENGTH 1,
p_op2
TYPE p DECIMALS 2.
* Efetua o clculo
IF p_sinal = '+'.
v_total = p_op1 + p_op2.
ELSE.
IF p_sinal = '-'.
v_total = p_op1 - p_op2.
ELSE.
IF p_sinal = '*'.
v_total = p_op1 * p_op2.
ELSE.
IF p_sinal = '/'.
v_total = p_op1 / p_op2.
ENDIF.
ENDIF.
Wander Rodrigues / Claudia Oliveira v09

Pgina 120 de 654

TREINAMENTO ABAP
ENDIF.
ENDIF.
* Imprime o resultado na tela.
WRITE p_op1.
"Operador 1
WRITE p_sinal.
"Sinal
WRITE p_op2.
"Operador 2
WRITE '='.
"Texto fixo
WRITE v_total.
"Varivel de resultado

SALVE, ATIVE e EXECUTE O SEU REPORT.

Wander Rodrigues / Claudia Oliveira v09

Pgina 121 de 654

TREINAMENTO ABAP

Programas - Exerccio 5 Report


Calcular o ndice de massa corporal do usurio e imprimir o resultado.
Nome do programa ZRXX_IMC_SIMPLES
Soliticar na tela (2 parameters) o peso e a altura do usurio.
Peso -> numrico com 2 casas decimais
Altura -> numrico com 2 casas decimais
Quando o usurio clicar em Executar, efetuar os clculos abaixo para obter a varivel
IMC.
Frmula para calcular o IMC (ndice de massa corporal)
IMC =

Peso
(Altura x Altura)

EXEMPLO.: Para saber se uma pessoa de 1,65 m e com 70 quilos de altura encontra-se acima do peso:
IMC =

70
= 25, 7
(1,65 x 1,65)

=> Obesidade leve

Com o resultado do IMC calculado, comparar com os valores do quadro abaixo para
determinar o tipo de obesidade.
Tabela de referncia
Tipo
Abaixo do peso
Normal
Obesidade leve
Obesidade moderada
Obesidade mrbida

Mnimo
0
20,00
25,00
30,00
40,00

Mximo
19,99
24,99
29,99
39,99
100,00

Imprimir na tela as seguintes informaes:


Peso
= Peso que o usurio digitou
Altura
= Altura que o usurio digitou
IMC
= IMC que voc calculou
Resultado
= Coluna TIPO de acordo com o resultado do IMC

Wander Rodrigues / Claudia Oliveira v09

Pgina 122 de 654

TREINAMENTO ABAP

Programas - Exerccio 6 Report


Objetivo: Calcular o ndice de massa corporal do usurio e imprimir uma mensagem
com o resultado.
Nome do programa: ZRXX_IMC_COMPLETO
Soliticar na tela o peso, a altura e o sexo do usurio.
Peso -> numrico com 2 casas decimais
Altura -> numrico com 2 casas decimais
Sexo -> Caracter de 1 posio
Quando o usurio clicar em Executar, efetuar os clculos abaixo para obter a varivel
IMC.
IMC =

Peso
(Altura x Altura)

EXEMPLO.:
Para saber se uma mulher de 1,65 m e com 70 quilos de altura encontra-se
acima do peso:
IMC =
70
= 25, 7 => Obesidade leve
(1,65 x 1,65)
Com o resultado do IMC calculado, comparar com os valores dos quadros abaixo para
determinar o tipo de obesidade.
Se o parmetro sexo for preenchido com M, utilizar o quadro de referncia para o sexo
masculino.
Tabela de referncia Masculino
Tipo
Mnimo
Mximo
Abaixo do peso
0
19,99
Normal
20,00
24,99
Obesidade leve
25,00
29,99
Obesidade moderada
30,00
39,99
Obesidade mrbida
40,00
100,00
Se o parmetro sexo for preenchido com F, utilizar o quadro de referncia para o sexo
feminino.
Tabela de referncia Feminino
Tipo
Mnimo
Mximo
Abaixo do peso
0
18,99
Normal
19,00
23,99
Obesidade leve
24,00
28,99
Obesidade moderada
29,00
38,99
Obesidade mrbida
39,00
100,00
Wander Rodrigues / Claudia Oliveira v09

Pgina 123 de 654

TREINAMENTO ABAP

Imprimir na tela as seguintes informaes:


Peso
= Peso que o usurio digitou
Altura
= Altura que o usurio digitou
Sexo
= Sexo que o usurio digitou
IMC
= IMC que voc calculou
Resultado
= Coluna TIPO de acordo com o resultado do IMC

Wander Rodrigues / Claudia Oliveira v09

Pgina 124 de 654

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 125 de 654

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 126 de 654

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 127 de 654

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 128 de 654

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 129 de 654

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

podem ser utilizadas como View ou ABAP JOINs


possuem ndices secundrios
utilizao de GROUP BY, ORDER BY, ...
pode ser acessada utilizando o acesso nativo (NATIVE SQL)

Wander Rodrigues / Claudia Oliveira v09

Pgina 130 de 654

TREINAMENTO ABAP

No possuem appends( campos adicionais)

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

Wander Rodrigues / Claudia Oliveira v09

Pgina 131 de 654

TREINAMENTO ABAP
Nas tabelas tipo cluster, os esto distribudos entre vrias
tabelas e agrupadas em uma nica tabela de banco de dados.
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.

Wander Rodrigues / Claudia Oliveira v09

Pgina 132 de 654

TREINAMENTO ABAP
Contedo de tabelas
Transao SE16 - Visualizao dos dados de uma tabela ou view.

Wander Rodrigues / Claudia Oliveira v09

Pgina 133 de 654

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 134 de 654

TREINAMENTO ABAP

Exerccio 1 - Dicionrio de Dados - Domnio


Objetivo: Criao dos domnios que sero utilizados durante todo o treinamento.
Criar os domnios abaixo com suas respectivas caractersticas:
NOME
ZD_XX_NUM05
ZD_XX_CHAR50
ZD_XX_CHAR10
ZD_XX_DEC10V2

ZD_XX_DATA
ZD_XX_CHAR01

DESCRIO
Numrico 5
Caracter 50
Caracter 10
Decimal 10
inteiros e 2
decimais
Campo data
Caracter - 1

Wander Rodrigues / Claudia Oliveira v09

TIPO DE
DADO
NUMC
CHAR
CHAR
DEC

DATS
CHAR

TAMANHO
5
50
10
10 inteiros e 2
casas decimais
8
1

Pgina 135 de 654

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 136 de 654

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 137 de 654

TREINAMENTO ABAP

Exerccio 2 - Dicionrio de Dados Elemento de dados


Objetivo: Criao dos elementos de dados.
Criar os elementos de dados descritos abaixo seguindo as orientaes da tabela:
NOME
ZE_XX_CODDEP
ZE_XX_NOME
ZE_XX_CODFUN

ZE_XX_CARGO
ZE_XX_SALARIO
ZE_XX_DTADM
ZE_XX_DTNASC

ZE_XX_GRAUPR

DESCRI
DOMNIO
O
Cdigo do
ZD_XX_NUM05
Dependente
Nome
ZD_XX_CHAR50
Cdigo do
ZD_XX_NUM05
Funcionrio
Cargo
Salrio
Data de
admisso
Data de
Nascimento
Grau de
parentesco

BREVE
Cd.
Dep.
Nome
Cd.
Func.

MDIA
Cd.
Depend.
Nome
Cd.
Funcion.

ZD_XX_CHAR10 Cargo
Cargo
ZD_XX_DEC10V2 Salrio
Salrio
ZD_XX_DATA
Dt. Adm. Dt.
Admisso
ZD_XX_DATA
Dt. Nasc. Dt.
Nascimen
to
ZD_XX_CHAR01 Grau Par. Grau
Parent.

Wander Rodrigues / Claudia Oliveira v09

LONGA

TTULO

Cd.
dependente
Nome
Cdigo
Funcionrio

Cdigo do
dependente
Nome
Cdigo do
Funcion
rio
Cargo
Salrio
Data de
Admisso
Data de
Nascimen
to
Grau de
Parentesco

Cargo
Salrio
Data
Admisso
Data
Nascimento
Grau
Parentesco

Pgina 138 de 654

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 139 de 654

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 140 de 654

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 141 de 654

TREINAMENTO ABAP

Exerccio 3 - Dicionrio de Dados Tabela


Objetivo: Criar as tabelas de Dependente e Funcionrio que sero utilizadas durante
todo o treinamento
Criar as seguintes tabelas abaixo observando a definio das colunas
Tabela ZTXX_FUNC
- Descrio: Tabela de Funcionrios
- Classe de Entrega: A
- Marcar o check box Atual. Tab. Permitida
- Definir as seguintes colunas
NOME CAMPO
MANDT
CODFUN
NOME
CARGO
SALARIO
DATA_ADM

CHAVE

ELEMENTO DE DADOS
MANDT
ZE_XX_CODFUN
ZE_XX_NOME
ZE_XX_CARGO
ZE_XX_SALARIO
ZE_XX_DTADM

- Salvar
- Clicar em Opes tcnicas e preencher tipo de dados com USER1 e categoria de
tamanho com 0.
- Salvar. Clicar em Voltar.
- Clicar em Suplementos e depois em Categoria de ampliao.
- Marcar a opo Amplivel e em forma de caractere ou numrico
- Ativar a tabela

Wander Rodrigues / Claudia Oliveira v09

Pgina 142 de 654

TREINAMENTO ABAP
Tabela ZTXX_DEP
- Descrio: Tabela de Dependentes
- Classe de Entrega: A
- Marcar o check box Atual. Tab. Permitida
- Definir as seguintes colunas
NOME CAMPO
MANDT
CODFUN
CODDEP
NOME
DATA_NASC
PARENTESCO

CHAVE

ELEMENTO DE DADOS
MANDT
ZE_XX_CODFUN
ZE_XX_CODDEP
ZE_XX_NOME
ZE_XX_DTNASC
ZE_XX_GRAUPR

- Salvar
- Clicar em Opes tcnicas e preencher tipo de dados com USER1 e categoria de
tamanho com 0.
- Salvar. Clicar em Voltar.
- Clicar em Suplementos e depois em Categoria de ampliao.
- Marcar a opo Amplivel e em forma de caractere ou numrico
- Ativar a tabela

Wander Rodrigues / Claudia Oliveira v09

Pgina 143 de 654

TREINAMENTO ABAP

Exerccio 4 - Dicionrio de Dados Domnio Elemento


de dados - Tabela
Objetivo: Criar as tabelas de Material, Nota Fiscal e Item que sero utilizadas durante
todo o treinamento
ATENO: Avaliar a necessidade de criao ou reaproveitamento de domnios e
elementos de dados.
Tabela ZTCLXX_MAT
- Descrio: Tabela de Materiais
NOME CAMPO
MANDT
MATERIAL
DESCRICAO
UNIDADE
PRECO

CHAVE

TIPO DE DADO
MANDT
CHAR 10
CHAR 30
CHAR 2
DEC 10 INTEIROS E 2 DECIMAIS

Tabela ZTCLXX_NF
- Descrio: Tabela de notas fiscais
NOME CAMPO
MANDT
NUM_NF
DATA

CHAVE

ELEMENTO DE DADOS
MANDT
NUMC 10
DATS

Tabela ZTCLXX_ITEMNF
- Descrio: Tabela de itens de notas fiscais
NOME CAMPO
MANDT
NUM_NF
ITEM_NF
MATERIAL

CHAVE

Wander Rodrigues / Claudia Oliveira v09

ELEMENTO DE DADOS
MANDT
NUMC 10
NUMC 5
CHAR 10

Pgina 144 de 654

TREINAMENTO ABAP

Exerccio 5 - Dicionrio de Dados Domnio Elemento


de dados - Tabela
Criar as seguintes tabelas:
Tabela
Descrio
Campo
mandt
cod_pais
nome_pais

ZTCLXXR_PAIS
Pases
Chave
Tipo
x
mandt
x
char 3
char 15

Tabela
Descrio
Campo
mandt
cod_emp

ZTCLXXR_EMP
Empresas
Chave
Tipo
x
mandt
x
char 4

nome_emp
cod_pais
cnpj

char 25
char 3
char 16

Descrio
Mandante
Cdigo do pas
Denominao do pas

Descrio
Mandante
Empresa
Denominao da firma ou
empresa
Cdigo do pas
CNPJ

Tabela
Descrio
Campo
mandt
cod_emp
cod_filial
nome_filial
cnpj
cidade

ZTCLXXR_FILIAL
Filiais
Chave
Tipo
x
mandt
x
char 4
x
char 4
char 25
char 16
char 25

Tabela
Descrio
Campo
mandt
cod_emp
cod_filial
cod_dep
desc_dep
est_neg

ZTCLXXR_DEP
Depsito
Chave
Tipo
x
mandt
x
char 4
x
char 4
x
char 4
char 25
char 1

Tabela
Descrio
Campo
mandt
cod_emp
cod_filial
cod_dep
material
qtde

ZTCLXX_ESTDEP
Estoque por depsito
Chave
Tipo
Descrio
x
mandt
Mandante
x
char 4
Empresa
x
char 4
Filial
x
char 4
Cdigo do depsito
x
char 10
Material
dec 10 v 2 Quantidade em estoque

Descrio
Mandante
Empresa
Filial
Nome da filial
CNPJ
Cidade

Descrio
Mandante
Empresa
Filial
Cdigo do depsito
Descrio do depsito
Admite estoque negativo

Wander Rodrigues / Claudia Oliveira v09

Pgina 145 de 654

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 146 de 654

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 147 de 654

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 148 de 654

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 149 de 654

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

Wander Rodrigues / Claudia Oliveira v09

Pgina 150 de 654

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 151 de 654

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 152 de 654

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 153 de 654

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 154 de 654

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 155 de 654

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 156 de 654

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 157 de 654

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 158 de 654

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 159 de 654

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 160 de 654

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 161 de 654

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
PARAMETERS
p_vbeln
PARAMETERS
p_posnr
PARAMETERS
p_matnr
SELECTION-SCREEN END OF

BLOCK
TYPE
TYPE
TYPE
BLOCK

bl1 WITH FRAME.


vbak-vbeln OBLIGATORY.
vbap-posnr OBLIGATORY.
vbap-matnr OBLIGATORY.
bl1.

"Ordem de venda
"Item
"Material

* 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 162 de 654

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 163 de 654

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 164 de 654

TREINAMENTO ABAP

Exerccio 1 - Evento
Criar um report que funcione como uma calculadora. O programa dever pedir o
primeiro valor, o sinal, o segundo valor e quando o usurio executar o relatrio consistir
se os campos foram informados e se o sinal um valor vlido. Em seguida dever listar
na tela a operao completa da seguinte forma:

campo1
operador campo2
-----resultado
Para isto vamos utilizar o evento

AT SELECTION-SCREEN ON campo.
Quando o usurio preenche os campos na tela e manda executar o programa verifica se
existe algum evento at selection-screen para algum campo. Ele executa todos os
eventos desse tipo que houver no programa e em seguida roda o START-OFSELECTION que tem o processamento.

O programa dever exibir a seguinte tela.

Wander Rodrigues / Claudia Oliveira v09

Pgina 165 de 654

TREINAMENTO ABAP

Quando o usurio preencher os parmetros de entrada e executar o relatrio, consistir:


1)

2)

Se os campos foram informados. Se algum campo estiver em branco, enviar


mensagem de erro (Campo XXXXX obrigatrio) onde XXXX o campo que
est com erro.
Verificar se o sinal um sinal vlido. Se for diferente de +, -, *, / enviar
mensagem (Sinal invlido, informe +, -, * ou /).

Listar o primeiro valor na primeira linha, o sinal e o segundo valor na segunda linha, um
trao na terceira linha e o resultado da operao na quarta linha.
O resultado final dever parecer com a tela a seguir.

Wander Rodrigues / Claudia Oliveira v09

Pgina 166 de 654

TREINAMENTO ABAP

Atravs da transao SE38 criar o report com o nome de ZRXX_CALCULADORA3.


Ttulo: Calculadora 2
Categoria: 1 Programa executvel
Status: K Programa de clientes produtivo
Aplicao: * Vlido para vrias aplicaes
Grupo de autorizaes: Em branco
Banco de dados lgico: Em branco
Verso tela seleo: Em branco
Bloqueio do editor: Em branco
Aritmtica em ponto fixo: Marcado
Incio via variante: Em branco
Gravar
Se for solicitada a classe de desenvolvimento e request, definir como Objeto local
Tente fazer o cdigo antes de ver como ele ficaria, na pgina seguinte.

Wander Rodrigues / Claudia Oliveira v09

Pgina 167 de 654

TREINAMENTO ABAP

REPORT zcalculadora3.
* Varivel para calcular o resultado
DATA v_total
TYPE p DECIMALS 2.
* Comando que monta uma tela para entrada de dados
* do usurio
PARAMETERS: p_op1
TYPE p DECIMALS 2,
p_sinal
TYPE c LENGTH 2,
p_op2
TYPE p DECIMALS 2.
* Efetua o clculo
* Para melhorar a legibilidade do cdigo o IF do exerccio
* anterior foi substitudo pelo case
CASE p_sinal.
WHEN '+'.
v_total = p_op1 + p_op2.
WHEN '-'.
v_total = p_op1 - p_op2.
WHEN '*'.
v_total = p_op1 * p_op2.
WHEN '/'.
v_total = p_op1 / p_op2.
ENDCASE.
WRITE
WRITE
WRITE
WRITE
WRITE

AT 3 p_op1. "Posiciona na coluna 3 antes de imprimir.


/ p_sinal.
"A BARRA fora o WRITE a comear na linha seguinte
p_op2.
"Como no tem barra, imprime depois do sinal
/3 '-----------------'.
"Salta linha e imprime na coluna 3
/3 v_total. "Imprime o total na coluna 3 da linha seguinte

* Estes eventos "AT SELECTION-SCREEN" logo abaixo servem para consistir


* campos.
* Consiste o campo p_op1
AT SELECTION-SCREEN ON p_op1.
* Verifica se o campo p_op1 est preenchido
IF p_op1 IS INITIAL.
MESSAGE e398(00) WITH 'Informe o primeiro valor'.
ENDIF.
* Consiste o campo p_op2
AT SELECTION-SCREEN ON p_op2.
* Verifica se o campo p_op2 est preenchido
IF p_op2 IS INITIAL.
MESSAGE e398(00) WITH 'Informe o segundo valor'.
ENDIF.
* Consiste o campo p_sinal
* Note que a consistncia do sinal est depois da consistncia do
* segundo valor. Mas a ordem de execuo dos eventos
* "at selection-screen" a ordem em que eles so exibidos na
* tela e portanto o sinal consistido ANTES do segundo valor.
AT SELECTION-SCREEN ON p_sinal.
* Verifica se o sinal vlido
IF p_sinal <> '+'
AND p_sinal <> '-'
AND p_sinal <> '*'
AND p_sinal <> '/'.
MESSAGE e398(00) WITH 'Informe somente + - * ou /'.
ENDIF.

SALVE, Verifique a sintaxe, ATIVE e EXECUTE O SEU REPORT.


Wander Rodrigues / Claudia Oliveira v09

Pgina 168 de 654

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 169 de 654

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 170 de 654

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 171 de 654

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 172 de 654

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.

Wander Rodrigues / Claudia Oliveira v09

Pgina 173 de 654

TREINAMENTO ABAP
Apagando conjunto de registros
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 174 de 654

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 175 de 654

TREINAMENTO ABAP

Programa Exemplo para manipulao de dados em


tabelas internas
*&-------------------------------------------------------------------*& Report ZTABINTERNA
*&
*&-------------------------------------------------------------------*&
*&
*&-------------------------------------------------------------------REPORT ztabinterna.
DATA: BEGIN OF ti_estados OCCURS 0,
uf
TYPE c LENGTH 2,
nome
TYPE c LENGTH 20,
END OF ti_estados.
ti_estados-uf
= 'MG'.
ti_estados-nome = 'Minas Gerais'.
APPEND ti_estados.
ti_estados-uf
= 'SP'.
ti_estados-nome = 'So Paulo'.
APPEND ti_estados.
ti_estados-uf
= 'RJ'.
ti_estados-nome = 'Rio Janeiro'.
APPEND ti_estados.
ti_estados-uf
= 'RJ'.
ti_estados-nome = 'Rio Janeiro'.
APPEND ti_estados.
ti_estados-uf
= 'ES'.
ti_estados-nome = 'Esprito Santo'.
APPEND ti_estados.
* Imprime todos os estados antes de ordenar
LOOP AT ti_estados.
WRITE: / ti_estados-uf, ti_estados-nome.
ENDLOOP.
* Imprime uma linha de separao na tela
ULINE.
* Ordena os estados pelo cdigo da UF
SORT ti_estados BY uf.
* Imprime todos os estados aps ordenar
LOOP AT ti_estados.
WRITE: / ti_estados-uf, ti_estados-nome.
ENDLOOP.
ULINE.

Wander Rodrigues / Claudia Oliveira v09

Pgina 176 de 654

TREINAMENTO ABAP

* Verifica se existe estado RJ


READ TABLE ti_estados WITH KEY uf = 'RJ'.
IF sy-subrc = 0.
WRITE: / 'Encontrou RJ', ti_estados-nome.
ELSE.
WRITE: / 'No encontrou RJ'.
ENDIF.
ULINE.
* Elimina da tabela interna os estados que so iguais a ES (neste
* exemplo s temos uma linha com UF = ES
DELETE ti_estados WHERE uf = 'ES'.
* Imprime todos os estados e a uf ES no ir aparecer
LOOP AT ti_estados.
WRITE: / ti_estados-uf, ti_estados-nome.
ENDLOOP.
ULINE.
* Imprime somente os estados RJ e SP
LOOP AT ti_estados WHERE uf = 'RJ' OR uf = 'SP'.
WRITE: / ti_estados-uf, ti_estados-nome.
ENDLOOP.
* Acerta a descrio do estado RJ de Rio Janeiro
* para Rio de Janeiro
loop at ti_estados where uf = 'RJ'.
ti_estados-nome = 'Rio de Janeiro'.
MODIFY ti_estados INDEX sy-tabix.
endloop.
ULINE.
* Imprime novamente os estados RJ e SP com a descrio do RJ corrigida
LOOP AT ti_estados WHERE uf = 'RJ' OR uf = 'SP'.
WRITE: / ti_estados-uf, ti_estados-nome.
ENDLOOP.

Wander Rodrigues / Claudia Oliveira v09

Pgina 177 de 654

TREINAMENTO ABAP

Exemplo de manipulao de tabela interna


Relacionando 2 tabelas internas
* Cabealho da nota fiscal
DATA: BEGIN OF i_cabecalho OCCURS 0,
nota(5)
TYPE n,
END OF i_cabecalho.
* Itens da nota fiscal
DATA: BEGIN OF i_itens
nota(5)
item(3)
END OF i_itens.

OCCURS 0,
TYPE n,
TYPE n,

LOOP AT i_cabecalho.
LOOP AT i_itens.
IF i_itens-nota = i_cabecalho-nota.
WRITE: / i_cabecalho-nota,
i_itens-item.
ENDIF.
ENDLOOP.
ENDLOOP.

Esta lgica funciona porm tem um problema de performance. O que acontece que
para cada linha da tabela interna i_cabecalho voc vai ler todas as linhas da tabela
interna i_itens para poder perguntar se a nota igual e ento imprimir.
Considerando uma situao em que existam 100 notas e que cada nota tenha 5 itens
ento a tabela de cabealho ter 100 linhas e a de itens 500 linhas certo? O que vai
acontecer que para cada uma das 100 linhas da tabela de cabealho o programa vai
percorrer todas as linhas de itens, ou seja, ao final, ter percorrido os 500 itens 100
vezes, o que d um total de 50.000 voltas no loop de itens!

Wander Rodrigues / Claudia Oliveira v09

Pgina 178 de 654

TREINAMENTO ABAP

Para isto no acontecer, existe o comando WHERE no loop. Veja o exemplo abaixo:
LOOP AT i_cabecalho.
LOOP AT i_itens
WHERE nota = i_cabecalho-nota. Esta linha pertence ao loop de itens
WRITE: / i_cabecalho-nota,
i_itens-item.
ENDLOOP.
ENDLOOP.

O que mudou foi que em vez de colocar um IF dentro do loop eu coloquei uma clusula
WHERE no loop. Basicamente eu peguei o que estava no IF e coloquei direto no
LOOP, assim eu eliminei o IF e deixei o programa mais rpido.

Para cada linha da tabela de cabealho ele agora passa no loop de itens s para
os itens daquela nota, ou seja, para a primeira nota, roda o loop de itens 5 vezes
(no nosso exemplo so 5 itens por nota, lembra?), para a segunda nota passa no
loop de itens 5 vezes, e da em diante. Ao final ele ter dado 500 voltas na tabela
de itens, bem menos que as 50.000 do exemplo anterior.

Obs.: Repare que depois do WHERE vem o campo nota sem o nome da tabela interna:
WHERE nota = i_cabecalho-nota.

A sintaxe do comando loop...where assim mesmo. Este campo nota sem nome da
tabela interna pertence SEMPRE ao loop onde voc est colocando a clusula where, no
caso, o loop da tabela de itens. Portanto, como se estivesse escrito assim:
LOOP AT i_itens
WHERE i_itens-nota = i_cabecalho-nota.
Mas no escrevemos o i_itens de novo somente o nome do campo e ento o resultado
fica:
LOOP AT i_itens
WHERE nota = i_cabecalho-nota.

Wander Rodrigues / Claudia Oliveira v09

Pgina 179 de 654

TREINAMENTO ABAP

Exerccio 1 Tabela Interna


Em uma turma existem 10 alunos e estes alunos esto cursando 4 disciplinas. Fazer os
exerccios abaixo para gerar alguns relatrios referentes a estes alunos e suas notas em
cada disciplina.
1) Criar um report ZBTR01 com a descrio Exerccio de manipulao de
tabelas internas.
Criar uma varivel na tela para o usurio digitar a Nota Mnima
Esta varivel (parameter) dever ser numrica de 4 posies.

Nota Mnima

Consistir o campo na tela: se ele estiver em branco, dar mensagem de erro Nota
mnima obrigatria (utilizar o evento at selection-screen on...).

2) No incio do report, criar uma tabela interna para armazenar a matrcula e


o nome de cada aluno:
Definio da tabela interna:
Nome:
TI_ALUNOS
Campos:
MATRICULA
NOME

2 posies, numrico
30 posies, caracter

3) Criar uma tabela interna para armazenar as disciplinas:


Definio da tabela interna:
Nome:
TI_DISCIPLINA
Campos:
DISCIPLINA
DESCRICAO

Wander Rodrigues / Claudia Oliveira v09

1 posio, caracter
30 posies, caracter

Pgina 180 de 654

TREINAMENTO ABAP
4) Criar uma tabela interna para armazenar as notas dos alunos em cada
disciplina:
Definio da tabela interna:
Nome:
TI_NOTAS
Campos:
MATRICULA
DISCIPLINA
NOTA

2 posies, numrico
1 posio, caracter
4 posies, numrico

5) Quando o usurio executar o programa, utilizar o comando APPEND para


preencher a tabela interna de ALUNOS de acordo com o exemplo abaixo:
Exemplo de preenchimento da tabela interna:
Matrcula
Nome do aluno
1
Ludmila
2
Rodrigo
3
Guilherme
4
Brbara
5
Marcelo
6
Leandro
7
Mnica
8
Jos
9
Itamar
10
Geraldo

6) Em seguida, imprimir a lista de alunos na tela, conforme layout abaixo:


Matrcula
----------1
2
3
4
5
6
7
8
9
10

Nome do aluno
---------------------------------------Ludmila
Rodrigo
Guilherme
Brbara
Marcelo
Leandro
Mnica
Jos
Itamar
Geraldo

Wander Rodrigues / Claudia Oliveira v09

Pgina 181 de 654

TREINAMENTO ABAP
7) Salve, ative e teste seu exerccio. Verifique se todas as informaes esto
corretas e se o layout est saindo de acordo com o que foi solicitado.

Obs.: Neste momento, a varivel de tela (parameter)


ainda no est sendo utilizada.

Wander Rodrigues / Claudia Oliveira v09

Pgina 182 de 654

TREINAMENTO ABAP
8) Utilizar o comando APPEND novamente, depois da impresso das
matrculas, para preencher a tabela interna de DISCIPLINAS de acordo
com o exemplo abaixo:
Exemplo de preenchimento da tabela interna:
Disciplina
Descrio
P
Portugus
M
Matemtica
H
Histria
G
Geografia

9) Imprimir uma linha de separao (uline), e em seguida a lista de disciplinas,


logo aps a lista de alunos, conforme layout abaixo:
Disciplina
----------P
M
H
G

Descrio
---------------------------------------Portugus
Matemtica
Histria
Geografia

10) Salve, ative e teste seu exerccio. Verifique se todas as informaes esto
corretas e se o layout est saindo de acordo com o que foi solicitado.
A impresso dever mostrar a lista de alunos e a lista de disciplinas embaixo.

Obs.: Neste momento, a varivel de tela (parameter)


ainda no est sendo utilizada.

Wander Rodrigues / Claudia Oliveira v09

Pgina 183 de 654

TREINAMENTO ABAP
11) Utilizar o comando APPEND mais uma vez para preencher a tabela interna
de NOTAS de acordo com o exemplo abaixo:
Exemplo de preenchimento da tabela interna:
Matricula Disciplina
Nota
1
P
5
1
M
4
1
H
8
1
G
10
2
P
3
2
M
6
2
H
7
2
G
9
3
P
6
3
M
7
3
H
2
3
G
9
4
P
5
4
M
4
4
H
8
4
G
4
5
P
4
5
M
9
5
H
8
5
G
10
6
P
5
6
M
4
6
H
8
6
G
9
7
P
3
7
M
6
7
H
7
7
G
9
8
P
5
8
M
7
8
H
4
8
G
9
9
P
10
9
M
10
9
H
8
9
G
4
10
P
4
10
M
7
10
H
9
10
G
10

Wander Rodrigues / Claudia Oliveira v09

Pgina 184 de 654

TREINAMENTO ABAP
12) Imprimir uma linha de separao, e em seguida, a lista de notas do aluno,
conforme layout abaixo:
Matricula
1
1
1
1
2
2
2
2
3
3
3
3
4
4
4
4
5
5
5
5
6
6
6
6
7
7
7
7
8
8
8
8
9
9
9
9
10
10
10
10

Disciplina
P
M
H
G
P
M
H
G
P
M
H
G
P
M
H
G
P
M
H
G
P
M
H
G
P
M
H
G
P
M
H
G
P
M
H
G
P
M
H
G

Nota
5
4
8
10
3
6
7
9
6
7
2
9
5
4
8
4
4
9
8
10
5
4
8
9
3
6
7
9
5
7
4
9
10
10
8
4
4
7
9
10

Wander Rodrigues / Claudia Oliveira v09

Pgina 185 de 654

TREINAMENTO ABAP
13) Salve, ative e teste seu exerccio. Verifique se todas as informaes esto
corretas e se o layout est saindo de acordo com o que foi solicitado.
A impresso dever mostrar a lista de alunos, a lista de disciplinas e a lista de
notas embaixo.

Obs.: Neste momento, a varivel de tela (parameter)


ainda no est sendo utilizada.

Wander Rodrigues / Claudia Oliveira v09

Pgina 186 de 654

TREINAMENTO ABAP
14) Imprimir mais uma linha de separao. Em seguida, de acordo com o
parmetro informado na tela, imprimir a lista de notas do aluno, conforme
layout abaixo, SOMENTE para os alunos que tenham a nota maior ou igual
nota mnima informada na tela:
Exemplo, caso o usurio tenha informado na tela a nota mnima igual a 6:
As notas dos alunos 1 e 2 (includas nos exerccios anteriores) so:
1
P
5
1
M
4
1
H
8
1
G
10
2
P
3
2
M
6
2
H
7
2
G
9
Como a nota mnima 6, o relatrio dever eliminar aqueles que tem nota menor
que 6. Neste caso o resultado s apresentaria as seguintes notas:
1
H
8
1
G
10
2
M
6
2
H
7
2
G
9

Segue layout do relatrio:


Matricula
1
1
2
2
2
...
...
...

Nome
Ludmila
Ludmila
Rodrigo
Rodrigo
Rodrigo

Disciplina
H
G
M
H
G

Descrio
Histria
Geografia
Matemtica
Histria
Geografia

Nota
8
10
6
7
9

15) Salve, ative e teste seu exerccio. Verifique se todas as informaes esto
corretas e se o layout est saindo de acordo com o que foi solicitado.
A impresso dever mostrar a lista de alunos, a lista de disciplinas, a lista de
notas e a lista de notas maiores que a nota mnima embaixo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 187 de 654

TREINAMENTO ABAP

Exerccio 2 Tabela Interna


Em uma turma existem 20 alunos (se preferir, invente outros nomes):
1. Wander
2. Claudia
3. Gabriel
4. Davi
5. Diego
6. Leninha
7. Liza
8. Monica
9. Iraq
10. Ana
11. Felipe
12. Juninho
13. Douglas
14. Lucas
15. Renato
16. Dener
17. Caze
18. Karla
19. Ludmila
20. Celia
. Os alunos esto cursando oito disciplinas:
a.
b.
c.
d.
e.
f.
g.
h.

Portugues
Matematica
Historia
Geografia
Fisica
Quimica
Biologia
Ingles

Wander Rodrigues / Claudia Oliveira v09

Pgina 188 de 654

TREINAMENTO ABAP

Criar um programa (ZRXX_ALUNONOTA) para preencher as notas de cada aluno em


cada disciplina (preencher manualmente as tabelas internas necessrias).
Em seguida emitir um relatrio na tela com o seguinte layout (os valores das notas e das
mdias so somente um exemplo, fique vontade para criar as notas):
Nome
Wander
Claudia
Gabriel
Davi
...

Portugues
5,00
8,00
6,00
8,00
...

Matematica
10,00
10,00
10,00
10,00
...

Historia
3,00
...
...
..
...

Geografia
8,00
...

Fisica
4,00
...

Quimica
3,00
...

Biologia
9,00
...

...
...

...

...

...

Ingles
1,00

Mdia
5,37

...

A primeira coluna (Nome) deve trazer o nome da cada aluno e as demais (disciplinas)
devem trazer a nota correspondente de cada aluno em cada disciplina.
Ao final do relatorio listar tambm as disciplinas, a maior nota, a menor nota e a mdia,
conforme layout:
Disciplina
Portugues
Matematica
...
...

Maior Nota
8,00
10,00
...

Menor Nota
5,00
10,00
..

Mdia
1,35
2,00
..

Os campos devem estar ALINHADOS assim como o exemplo de cada relatrio.


Entre um relatrio e outro usar uma linha de separao.

Wander Rodrigues / Claudia Oliveira v09

Pgina 189 de 654

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 190 de 654

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 191 de 654

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 192 de 654

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 193 de 654

TREINAMENTO ABAP

Exerccio 1 Grupo de funes


1) Criar um grupo de funo conforme descrio abaixo:
i. ZGXX_PRIMEIRO_GRUPO
1. Descrio breve: Primeiro grupo

ii. ZGXX_SEGUNDO_GRUPO
1. Descrio breve: Segundo grupo
No se esquea de ativar os grupos

Wander Rodrigues / Claudia Oliveira v09

Pgina 194 de 654

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 195 de 654

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 196 de 654

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 197 de 654

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 198 de 654

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 199 de 654

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 200 de 654

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 201 de 654

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 202 de 654

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 203 de 654

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 204 de 654

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 205 de 654

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 206 de 654

TREINAMENTO ABAP
Crie um report com o cdigo abaixo e execute-o para verificar se a funo est
funcionando corretamente.

Nome do report: ZRXX_CHAMA_FUNCAO


REPORT zrxx_chama_funcao.
* Armazena o resultado da funo
DATA v_resultado TYPE i.
* Tela para o usurio informar os dois valores
PARAMETERS: p_val1 TYPE i,
p_val2 TYPE i.

START-OF-SELECTION.
* Chama a funo que soma os valores que o usurio digitou
CALL FUNCTION 'Z_FXX_TESTE'
EXPORTING
i_valor1
= p_val1
"Passa o p_val1 para a funo
i_valor2
= p_val2
"Passa o p_val2 para a funo
IMPORTING
e_resultado = v_resultado "Recebe o v_resultado da funo
EXCEPTIONS
erro_param = 1
OTHERS
= 2.
IF sy-subrc <> 0.
WRITE / 'Ocorreu um erro na chamada da funo'.
ELSE.
WRITE: / p_val1, '+', p_val2, '=', v_resultado.
ENDIF.

Salve, ative e execute o report.


A tela de seleo ser exibida.

Preencha os 2 campos e execute o programa.

Wander Rodrigues / Claudia Oliveira v09

Pgina 207 de 654

TREINAMENTO ABAP

O resultado ser exibido

Agora volte e limpe os parmetros de seleo

Execute novamente. O resultado ser impresso

Wander Rodrigues / Claudia Oliveira v09

Pgina 208 de 654

TREINAMENTO ABAP

Exerccio 1 Funo
Criar uma funo para comparar dois nmeros:
i. Nome da funo
Z_FXX_COMPARA_VALOR
ii. Nome do grupo de funo
ZGXX_PRIMEIRO_GRUPO
iii. Parmetros de entrada
1. I_NUM1 Inteiro
2. I_NUM2 Inteiro
iv. Parmetros de sada
3. E_RESULT Inteiro
v. Excees
1. ERRO_PARAM Parmetros no informados
A funo dever receber os dois valores de entrada e proceder da seguinte
forma:
- Se os dois valores estiverem vazios, interromper a funo retornando a exceo
ERRO_PARAM
- Comparar os dois nmeros
- Se o primeiro nmero for maior que o segundo, retornar o parmetro de
sada E_RESULT com o valor do primeiro campo
- Se o segundo nmero for maior que o primeiro, retornar o parmetro de
sada E_RESULT com o valor do segundo campo
- Se os dois campos forem iguais, retornar o parmetro de sada
E_RESULT com a SOMA dos dois campos

Wander Rodrigues / Claudia Oliveira v09

Pgina 209 de 654

TREINAMENTO ABAP

Exerccio 2 Funo
Criar uma funo para dividir dois nmeros:
i. Nome da funo
Z_FXX_DIVIDE
ii. Nome do grupo de funo
ZGXX_SEGUNDO_GRUPO
iii. Parmetros de entrada
1. I_DIVIDENDO Inteiro
2. I_DIVISOR Inteiro
iv. Parmetros de sada
1. E_QUOCIENTE Inteiro
v. Excees
1. ERRO_PARAM Parmetros no informados
2. DIVISAO_POR_ZERO Divisor no informado
A funo dever receber os dois valores de entrada e proceder da seguinte
forma:
- Se os dois valores estiverem vazios, interromper a funo retornando a exceo
ERRO_PARAM
- Se o campo I_DIVISOR estiver vazio, interromper a funo retornando a
exceo DIVISAO_POR_ZERO
- Dividir o primeiro campo pelo segundo e retornar o resultado em
E_QUOCIENTE

Wander Rodrigues / Claudia Oliveira v09

Pgina 210 de 654

TREINAMENTO ABAP

RFC (Remote Function Call)


RFC (Remote Function Call) - uma Function Module comum, porm ela
pode ser chamada por um sistema externo.
A diferena est apenas no atributo da funo que indica o uso externo.
Esta function module ir receber, processar e devolver informaes para o
sistema Externo.
Neste caso, no se usa arquivos texto na interface. A comunicao feita
diretamente entre os programas dos dois sistemas (externo e SAP).

Wander Rodrigues / Claudia Oliveira v09

Pgina 211 de 654

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.
Existem vrias formas para encontrarmos o matchcode:

Wander Rodrigues / Claudia Oliveira v09

Pgina 212 de 654

TREINAMENTO ABAP

1) No help do campo
- Colocar o cursor no campo desejado

- Pressionar F1 e Clicar no cone da ferramenta

Wander Rodrigues / Claudia Oliveira v09

Pgina 213 de 654

TREINAMENTO ABAP

O matchcode ser exibido

2) No campo da tabela no dicionrio de dados


Entrar na transao SE11, informar o nome da tabela e clicar em Exibir

Wander Rodrigues / Claudia Oliveira v09

Pgina 214 de 654

TREINAMENTO ABAP

Clicar 2x sobre o campo desejado

O matchcode ser exibido

Wander Rodrigues / Claudia Oliveira v09

Pgina 215 de 654

TREINAMENTO ABAP

3) No elemento de dados do campo


Entra na se11, exibir a tabela desejada e clicar 2x sobre o elemento de dados do campo

Na tela do elemento de dados clicar sobre a guia Caractersticas adicionais

Wander Rodrigues / Claudia Oliveira v09

Pgina 216 de 654

TREINAMENTO ABAP

O matchcode ser exibido

4) No domnio do campo Valores fixos


Entrar na se11, exibir a tabela desejada e clicar 2x sobre o elemento de dados do campo

Wander Rodrigues / Claudia Oliveira v09

Pgina 217 de 654

TREINAMENTO ABAP

Na tela do elemento de dados clicar 2x sobre o nome do domnio

Na tela do domnio clicar na guia Intervalo de valores

Wander Rodrigues / Claudia Oliveira v09

Pgina 218 de 654

TREINAMENTO ABAP

O matchcode ser exibido

5) No domnio do campo Tabela de valores


Entrar na se11, exibir a tabela, clicar 2x sobre o elemento de dados e em seguida clicar
2x sobre o domnio

Wander Rodrigues / Claudia Oliveira v09

Pgina 219 de 654

TREINAMENTO ABAP

Clicar na guia Intervalo de valores


O matchcode ser exibido

Wander Rodrigues / Claudia Oliveira v09

Pgina 220 de 654

TREINAMENTO ABAP

6) Matchcode dinmino
Entrar na transao onde se encontra o campo e pressionar F1 com o cursor sobre ele.

Na tela de help clicar no cone da ferramenta

Wander Rodrigues / Claudia Oliveira v09

Pgina 221 de 654

TREINAMENTO ABAP

Na tela de informaes tcnicas, clicar 2x sobre o nmero da tela

Ser exibido o cdigo da tela

Wander Rodrigues / Claudia Oliveira v09

Pgina 222 de 654

TREINAMENTO ABAP

Rolar o cdigo at encontrar o comando PROCESS ON VALUE-REQUEST. O


matchcode construdo a partir da programao da exibio dos valores

Wander Rodrigues / Claudia Oliveira v09

Pgina 223 de 654

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 224 de 654

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 225 de 654

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 226 de 654

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 227 de 654

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.
Abaixo, uma breve descrio de suas funes:
Wander Rodrigues / Claudia Oliveira v09

Pgina 228 de 654

TREINAMENTO ABAP

Selecione uma linha e clique nesse


boto. A linha ser destacada em forma
de coluna.
Reapresenta do relatrio.
Marca todas as linhas.
Desmarca todas as linhas.
Selecionando uma coluna e clicando
nesse boto, todo o relatrio ficar
classificado na ordem crescente por
essa coluna.
Idem ao anterior, mas a classificao
na ordem decrescente.
Voc poder filtrar o seu relatrio
baseando-se em valores de campos.
Totaliza a coluna selecionada. A coluna
deve conter um valor. Colunas de
caracteres no podem ser totalizadas.
Apresenta subtotais de um total geral,
para a coluna selecionada. Alguma
coluna j deve estar totalizada, seno
no haver mudana.
Mostra como ir ficar a impresso do
relatrio.
Exporta o relatrio para o Microsoft
Excel.
Exporta o relatrio para o Microsoft
Word.
Grava o relatrio em arquivo.
Envia o relatrio via e-mail atravs do
SAP Office.
Ranking em curva ABC. obrigatrio
selecionar uma coluna de valores. O
R/3 solicita algumas informaes e j
apresenta o resultado
Mostra o resultado em um grfico.
Permite alterar o modo de apresentao
do relatrio.
Recupera algum layout alterado e o
aplica no relatrio.
Wander Rodrigues / Claudia Oliveira v09

Pgina 229 de 654

TREINAMENTO ABAP
Permite gravar um layout alterado.
Informaes como nmero de registros
retornados, filtros sendo utilizados,
campos sumarizados, etc. apresentado
por esse boto.
No programa de exemplo, que montaremos durante os exerccios,
poderemos observar que o ALV possui estruturas configurveis para
definio do relatrio.

Abaixo, a descrio de algumas destas estruturas e as funcionalidades


passveis de configurao.

SLIS_FIELDCAT_ALV Tabela que o catlogo de campos. Vai conter toda


informao necessria sobre cada campo do relatrio. formada por um grupo de
tipos, aqui descrevemos os mais utilizados. Obrigatrio (Ou no mnimo)
preencha os campos que esto sublinhados.
FIELDNAME

Tam. 30, tipo


caracter

TABNAME

Tam.
30,
caracter

ICON

Tam. 1, tipo caracter

Preencha com X, caso


represente um cone.

campo

SYMBOL

Tam. 1, tipo caracter

Preencha com X, caso


represente um smbolo.

campo

CHECKBOX

Tam. 1, tipo caracter

Preencha
com
X,
caso
deseje
apresentar um checkbox na coluna.
Utilizado para campos do tipo flag.

JUST

Tam. 1, tipo caracter

Justificar a texto do campo. Use R,


C ou L (Direita, Esquerda ou
Centro).

LZERO

Tam. 1, tipo caracter

Preencher com X,
zeros esquerda.

NO_SIGN

Tam. 1, tipo caracter

Preencher
com
X,
para
apresentar sinal em valores.

NO_ZERO

Tam. 1, tipo caracter

Preencher com X, para no exibir

Wander Rodrigues / Claudia Oliveira v09

Nome do campo, que vai


coluna do seu relatrio.

ser

uma

tipo Nome da tabela que possui o campo


definido acima. Essa tabela deve os
registros
(linhas)
do
seu
relatrio.

para

eliminar
no

Pgina 230 de 654

TREINAMENTO ABAP
valores zerados.
DO_SUM

Tam. 1, tipo caracter

Se a coluna um valor, preencha


com X, caso queira a sumarizao j
na apresentao do relatrio.

NO_OUT

Tam. 1, tipo caracter

Preencher com X, se deseja que a


coluna no aparea.

OUTPUTLEN

Tam. 6, tipo numrico

Aqui voc indica o tamanho do seu


campo.

INTTYPE

Tam. 1, tipo caracter

Tipo do campo, veja os tipos


principais:
C-Cadeia de caracteres
N-Cadeia de caracteres (S nmero)
D-Data (data: AAAAMMDD)
T-Momento (hora:HHMMSS)
X-Seqncia de byte (hexadecimal)
I-N inteiro (4 byte c/sinal)
P-Compactado
F-Ponto flutuante

REPTEXT_DDIC

Tam.
30,
caracter

HOTSPOT

Tam. 1, tipo caracter

tipo Label da coluna do relatrio.


Preencher com X, caso deseje que ao
passar o mouse por cima do campo,
aparea o cone de uma mo.
Indicando que existe alguma ao ao
clicar sobre esse campo.

SLIS_T_LISTHEADER Tabela para criao do cabealho de seu relatrio. O


preenchimento de todos os campos, inclusive a prpria utilizao dessa tabela
no obrigatria.
TYP

H = Header, S =
Selection, A = Action

Dependendo do tipo (H,S


tipo de letra modifica.

ou

A)

KEY

Tam. 20, tipo caracter No precisa preencher.

INFO

Tam. 60, tipo caracter o texto que voc quer que aparea
no cabealho. Voc pode utilizar n
linhas. Veja no programa exemplo.

SLIS_SORTINFO_ALV Tabela que vai indicar para funo como a classificao


dos campos do relatrio. O preenchimento de todos os campos, inclusive a
prpria utilizao dessa tabela no obrigatria.
FIELDNAME

Tam. 30, tipo caracter Nome do campo, que vai


coluna do seu relatrio

TABNAME

Tam. 30, tipo caracter Nome da tabela que possui o campo


definido acima.

UP

Tam. 1, tipo caracter

Marque esse campo com X para


classificar em ordem crescente.

DOWN

Tam. 1, tipo caracter

Marque esse campo com X para


classificar em ordem decrescente.

Wander Rodrigues / Claudia Oliveira v09

ser

uma

Pgina 231 de 654

TREINAMENTO ABAP
SUBTOT

Tam. 1, tipo caracter

Marque com X para que no relatrio


aparea um subtotal por esse campo.

SPOS

Tam. 2, tipo numrico

Seqncia de ordenao dos campos

SLIS_LAYOUT_ALV Define o formato de sada do relatrio. O preenchimento de


todos os campos, inclusive a prpria utilizao dessa estrutura no
obrigatria.
NO_COLHEAD

Tam. 1, tipo caracter

Preencha com X para


relatrio
no
tenha
colunas.

ZEBRA

Tam. 1, tipo caracter

Preencher com X para


listagem aparea zebrada.

NO_VLINE

Tam. 1, tipo caracter

Preencher com X para que as colunas


do relatrio no tenham divises.

NUMC_SUM

Tam. 1, tipo caracter

Preencher
com
X,
para
que
o
relatrio permita totalizao de
campos
to
tipo
N
(Caracteres
numricos).

EDIT

Tam. 1, tipo caracter

Preencher com X para que o usurio


possa editar o valor do campo no
relatrio.

NO_INPUT

Tam. 1, tipo caracter

Preencher com X
apenas de sada.

COLWIDTH_OPTIMIZE

Tam. 1, tipo caracter

Marcar com X para que a largura da


coluna fique de acordo com o maior
tamanho: Label ou Detalhe

NO_TOTALLINE

Tam. 1, tipo caracter

Preenchendo esse campo com X, em


seu relatrio no ir aparecer
linha de total.

TOTALS_BEFORE_ITEMS

Tam. 1, tipo caracter

Preencher com X para que os totais


apaream
antes
das
linhas
de
detalhe.

TOTALS_ONLY

Tam. 1, tipo caracter

Preencher
relatrio
totais.

TOTALS_TEXT

Tam. 60, tipo caracter Texto para as linhas de total

SUBTOTALS_TEXT

Tam. 60, tipo caracter Texto para as linhas de subtotal

se

que o
label

com X para
apaream

que

campo

que em
apenas

seu
das
sua

for

seu
os

SLIS_PRINT_ALV Informao para a impresso. O preenchimento de todos


campos, inclusive a prpria utilizao dessa estrutura no obrigatria.
X

para

os

PRINT

Tam. 1, tipo caracter

Preencher com
impresso.

permitir

PRNT_TITLE

Tam. 1, tipo caracter

Preencher com X para permitir a


impresso do ttulo do relatrio.

NO_PRINT_LISTINFOS

Tam. 1, tipo caracter

Preencher
com
X
para
que
impresso
no
apaream
informaes da listagem.

na
as

SLIS_SELFIELD Informao sobre o registro selecionado. As informaes so


retiradas do catlogo.
TABNAME

Tam. 30, tipo caracter Nome da tabela que d origem aos


dados.

Wander Rodrigues / Claudia Oliveira v09

Pgina 232 de 654

TREINAMENTO ABAP
TABINDEX

Sy-tabix

Vai indicar a posio do registro


dentro
da
tabela.
Se
precisar
recuperar os valores utilize esse
ndice em um comando read table ...
index slis_selfield-tabindex.

COL_STABLE

Tam. 1, tipo caracter

Marque
com
X,
para
manter
o
relatrio na coluna em que estava
antes do drill down.

ROW_STABLE

Tam. 1, tipo caracter

Marque
com
X,
para
manter
o
relatrio
na
linha
selecionada
antes do drill down.

REFRESH

Tam. 1, tipo caracter

Para
atualizar
preencher com X.

Wander Rodrigues / Claudia Oliveira v09

relatrio,

Pgina 233 de 654

TREINAMENTO ABAP

Exemplo ALV simplificado


*&---------------------------------------------------------------------*
*& Report ZPRIMEIROALV
*&
*&---------------------------------------------------------------------*
*& Exibe um relatrio do tipo ALV, simplificado
*&
*&---------------------------------------------------------------------*
REPORT zprimeiroalv.
* Tabela interna com os dados que sero exibidos
DATA: BEGIN OF ti_alv OCCURS 0,
cod_filial
TYPE ztfilial-cod_filial,
nome_filial
TYPE ztfilial-nome_filial,
cidade
TYPE ztfilial-cidade,
END OF ti_alv.
*----------------------------------------------------------------------* Definies de tipos, necessrias para o alv
*----------------------------------------------------------------------TYPE-POOLS: kkblo.
* Tabela interna para armazenar as definies de campos no alv
DATA: ti_campos
TYPE slis_t_fieldcat_alv WITH HEADER LINE.
* Parmetros de seleo
PARAMETERS: p_codemp
TYPE ztfilial-cod_emp OBLIGATORY.
* Incio do processamento (F8)
START-OF-SELECTION.
PERFORM f_seleciona.
"Chama o form que faz a seleo dos dados
PERFORM f_catalogo.
"Chama o form que monta o catlogo de campos
PERFORM f_relatorio.
"Chama o form que exibe o relatrio
*&--------------------------------------------------------------------*
*&
Form f_seleciona
*&--------------------------------------------------------------------*
*
Seleo dos dados
*---------------------------------------------------------------------*
FORM f_seleciona.
* Seleciona os dados da filial, na mesma sequncia em que eles esto
* definidos na tabela interna
SELECT cod_filial
nome_filial
cidade
FROM ztfilial
INTO TABLE ti_alv
WHERE cod_emp = p_codemp.
IF sy-subrc EQ 0.
SORT ti_alv BY cod_filial.
ENDIF.
ENDFORM.
"f_seleciona
*&--------------------------------------------------------------------*
*&
Form f_catalogo
*&--------------------------------------------------------------------*
*
Definio das colunas do ALV
*---------------------------------------------------------------------*
FORM f_catalogo.
CLEAR ti_campos.
REFRESH ti_campos.
* Cdigo da filial
ti_campos-fieldname
APPEND ti_campos.

= 'COD_FILIAL'.

* Nome da filial
ti_campos-fieldname
APPEND ti_campos.

= 'NOME_FILIAL'. "Segundo Campo da Tabela interna

"Primeiro Campo da Tabela interna

* Cidade

Wander Rodrigues / Claudia Oliveira v09

Pgina 234 de 654

TREINAMENTO ABAP
ti_campos-fieldname
= 'CIDADE'.
"Terceiro Campo da Tabela interna
APPEND ti_campos.
ENDFORM.
"f_catalogo
*&--------------------------------------------------------------------*
*&
Form f_relatorio
*&--------------------------------------------------------------------*
*
Exibe o relatrio
*---------------------------------------------------------------------*
FORM f_relatorio.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat
= ti_campos[] "Tabela interna com as definies dos campos
TABLES
t_outtab
= ti_alv[]
"Tabela interna com os dados a serem exibidos
EXCEPTIONS
program_error = 1
OTHERS
= 2.
IF sy-subrc <> 0.
WRITE: / 'Erro na execuo do ALV'.
ENDIF.
ENDFORM.
"f_relatorio

Wander Rodrigues / Claudia Oliveira v09

Pgina 235 de 654

TREINAMENTO ABAP

Exemplo de programa ALV com outras funcionalidades


************************************************************************
*** CONSULTOR ABAP...........: Wander Rodrigues
*** NOME DO PROGRAMA ABAP....: ZALV
*** TIPO DO PROGRAMA.........: Report (ABAP LIST VIEW)
*** DESCRIO BREVE..........: Lista materiais agrupados por setor
************************************************************************
REPORT zalv LINE-SIZE 132 NO STANDARD PAGE HEADING.
* Tabelas
TABLES: mara.
* Linha de detalhe do list view
TYPES: BEGIN OF st_saida,
matnr
LIKE
maktx
LIKE
peso_bruto
TYPE
peso_liquido
TYPE
END OF st_saida.
DATA it_saida

mara-matnr,
makt-maktx,
p,
p,

TYPE TABLE OF st_saida WITH HEADER LINE.

* Definies para ALV


TYPE-POOLS: kkblo.
DATA: st_fieldcat
it_fieldcat
st_variant
st_layout
st_header
it_fieldcat_alv
it_special_groups
it_layout_alv
it_header
it_sort

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

kkblo_fieldcat,
kkblo_t_fieldcat,
disvariant,
kkblo_layout,
kkblo_listheader,
slis_t_fieldcat_alv,
slis_t_sp_group_alv,
slis_layout_alv,
kkblo_t_listheader,
slis_t_sortinfo_alv WITH HEADER LINE.

* Parametros de seleo
SELECTION-SCREEN BEGIN OF BLOCK f1 WITH FRAME TITLE t01.
SELECT-OPTIONS: s_matnr FOR mara-matnr.
SELECTION-SCREEN END OF BLOCK f1.
START-OF-SELECTION.
PERFORM f_seleciona.
END-OF-SELECTION.
PERFORM f_cabecalho.
PERFORM f_catalogo.
PERFORM f_layout.
PERFORM f_relatorio.

Wander Rodrigues / Claudia Oliveira v09

Pgina 236 de 654

TREINAMENTO ABAP

*&--------------------------------------------------------------------*
*&
Form f_seleciona
*&--------------------------------------------------------------------*
*
Seleo dos dados
*---------------------------------------------------------------------*
FORM f_seleciona.
SELECT mara~matnr
makt~maktx
mara~brgew
mara~ntgew
INTO TABLE it_saida
FROM mara
UP TO 20 ROWS
INNER JOIN makt
ON makt~matnr = mara~matnr
WHERE mara~matnr IN s_matnr
AND makt~spras = sy-langu.
DELETE it_saida WHERE peso_bruto

IS INITIAL.

SORT it_saida BY matnr ASCENDING.


ENDFORM.
"f_seleciona
*&--------------------------------------------------------------------*
*&
Form f_cabecalho
*&--------------------------------------------------------------------*
*
Formata o cabealho
*---------------------------------------------------------------------*
FORM f_cabecalho.
REFRESH it_header.
* Ttulo do relatrio
CLEAR st_header.
st_header-typ = 'H'.
st_header-info = 'Lista de materiais'.
APPEND st_header TO it_header.
* Parmetros de seleo
CLEAR st_header.
st_header-typ = 'S'.
st_header-key = 'Cabealho'.
st_header-info = 'Texto do cabealho'.
APPEND st_header TO it_header.
* Linha informativa
CLEAR st_header.
st_header-typ = 'A'.
st_header-key = ' '.
st_header-info = 'Outra linha do cabealho'.
APPEND st_header TO it_header.
ENDFORM.
"f_cabecalho

Wander Rodrigues / Claudia Oliveira v09

Pgina 237 de 654

TREINAMENTO ABAP

*&--------------------------------------------------------------------*
*&
Form f_catalogo
*&--------------------------------------------------------------------*
*
Definio das colunas
*---------------------------------------------------------------------*
FORM f_catalogo.
DATA i TYPE i.
REFRESH it_fieldcat.
i = i + 1.
CLEAR st_fieldcat.
st_fieldcat-row_pos
= 1.
st_fieldcat-col_pos
= i.
st_fieldcat-fieldname
= 'MATNR'.
st_fieldcat-ref_fieldname = 'MATNR'.
st_fieldcat-ref_tabname
= 'MARA'.
APPEND st_fieldcat TO it_fieldcat.
i = i + 1.
CLEAR st_fieldcat.
st_fieldcat-row_pos
= 1.
st_fieldcat-col_pos
= i.
st_fieldcat-fieldname
= 'MAKTX'.
st_fieldcat-ref_fieldname = 'MAKTX'.
st_fieldcat-ref_tabname
= 'MAKT'.
APPEND st_fieldcat TO it_fieldcat.
i = i + 1.
CLEAR st_fieldcat.
st_fieldcat-row_pos
= 1.
st_fieldcat-col_pos
= i.
st_fieldcat-fieldname
= 'PESO_BRUTO'.
st_fieldcat-ref_fieldname = 'BRGEW'.
st_fieldcat-ref_tabname
= 'MARA'.
APPEND st_fieldcat TO it_fieldcat.
i = i + 1.
CLEAR st_fieldcat.
st_fieldcat-row_pos
= 1.
st_fieldcat-col_pos
= i.
st_fieldcat-fieldname
= 'PESO_LIQUIDO'.
st_fieldcat-ref_fieldname = 'NTGEW'.
st_fieldcat-ref_tabname
= 'MARA'.
APPEND st_fieldcat TO it_fieldcat.
ENDFORM.
"f_catalogo
*&--------------------------------------------------------------------*
*&
Form f_layout
*&--------------------------------------------------------------------*
*
Layout de exibio
*---------------------------------------------------------------------*
FORM f_layout.
CLEAR st_layout.
st_layout-no_zebra
= 'X'.
CALL FUNCTION 'REUSE_ALV_TRANSFER_DATA_BACK'
EXPORTING
it_fieldcat
= it_fieldcat
is_layout
= st_layout
IMPORTING
et_fieldcat
= it_fieldcat_alv
es_layout
= it_layout_alv
et_special_groups = it_special_groups.
ENDFORM.

"f_layout

Wander Rodrigues / Claudia Oliveira v09

Pgina 238 de 654

TREINAMENTO ABAP

*&--------------------------------------------------------------------*
*&
Form f_relatorio
*&--------------------------------------------------------------------*
*
Exibe o relatrio
*---------------------------------------------------------------------*
FORM f_relatorio.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program
= 'ZALV'
is_layout
= it_layout_alv
it_fieldcat
= it_fieldcat_alv
i_callback_top_of_page = 'TOP_OF_PAGE'
TABLES
t_outtab
= it_saida[]
EXCEPTIONS
program_error
= 1
OTHERS
= 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
"f_relatorio
*&---------------------------------------------------------------------*
*&
Form top_of_page
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_header.
ENDFORM.
"top_of_page

Wander Rodrigues / Claudia Oliveira v09

Pgina 239 de 654

TREINAMENTO ABAP

O resultado dever ser parecido com a tela a seguir:

Note que o relatrio j tem um layout grfico bem diferente do que feito com os
comandos WRITE. Alm disso voc pode ver as funcionalidades que so adicionadas
automaticamente ao relatrio.
Veja a barra de botes

Todos estes botes foram criados pelo ALV e j esto prontos para serem usados pelo
usurio (ordenar, totalizar, filtrar, imprimir, enviar para o excel, word ou arquivo texto,
enviar por email, anlise ABC, grficos e modificao do layout)

Wander Rodrigues / Claudia Oliveira v09

Pgina 240 de 654

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 241 de 654

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 242 de 654

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 243 de 654

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 244 de 654

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 245 de 654

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 246 de 654

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 247 de 654

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 248 de 654

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 249 de 654

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 250 de 654

TREINAMENTO ABAP

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

Wander Rodrigues / Claudia Oliveira v09

Pgina 251 de 654

TREINAMENTO ABAP

Passo a Passo para criao de um module pool


(CONSULTA)
Criar o module pool SAPMZXX001 para consultar a tabela T001 (Tabela standard de
empresas no SAP).
Entrar na transao SE80:

No repository browser, coloque o nome do programa e tecle ENTER

Wander Rodrigues / Claudia Oliveira v09

Pgina 252 de 654

TREINAMENTO ABAP

Clique em Yes na mensagem que diz que o programa no existe

Cliquem em OK na mensagem que pede para informar o nome do programa

Clique em OK na mensagem que pede para informar o nome do include TOP

Wander Rodrigues / Claudia Oliveira v09

Pgina 253 de 654

TREINAMENTO ABAP

Coloque o ttulo do Module Pool, e preencha o tipo, status e aplicao. Depois clique
em Salvar

Clique em objeto local na janela que pede o pacote

Wander Rodrigues / Claudia Oliveira v09

Pgina 254 de 654

TREINAMENTO ABAP

Voc ver a tela abaixo:

Clique no triangulo esquerda do texto Includes para exibir os includes:

A tela ficar assim

Wander Rodrigues / Claudia Oliveira v09

Pgina 255 de 654

TREINAMENTO ABAP

Clique 2x no include MZXX001TOP para abrir o include na janela da direita

Repare que do lado direito agora exibido o include MZXX001TOP.

Clique no lpis para alternar para o modo de edio.

Wander Rodrigues / Claudia Oliveira v09

Pgina 256 de 654

TREINAMENTO ABAP

Altere o include TOP para que fique da seguinte forma:

Salve o include.
Ative o include

Wander Rodrigues / Claudia Oliveira v09

Pgina 257 de 654

TREINAMENTO ABAP

Vamos agora criar a primeira tela do programa. Clique com o boto direito no nome do
programa bsico (SAPMZXX001) na janela da direita

Informe 9000 no nmero da tela e clique em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 258 de 654

TREINAMENTO ABAP

Voc ir ver a janela de atributos da tela. Preencha a descrio da tela

Clique na guia Element list

Voc ir ver um campo do tipo OK.


Preencha esse campo com a varivel V_OKCODE

Wander Rodrigues / Claudia Oliveira v09

Pgina 259 de 654

TREINAMENTO ABAP

Clique no boto Layout


carregado. Pode demorar um pouco.

e aguarde o Screen painter ser

Voc ir ver a janela para desenhar o layout da tela

Clique em Dictionary/Program fields

Wander Rodrigues / Claudia Oliveira v09

Pgina 260 de 654

TREINAMENTO ABAP

Vai aparecer a tela abaixo

Coloque a varivel V_BUKRS no campo table/field name e clique em Get from


Program

Wander Rodrigues / Claudia Oliveira v09

Pgina 261 de 654

TREINAMENTO ABAP

Marque a linha do grid e clique em OK

O cursor ir se transformar em um retngulo que o contorno do campo. Clique em


algum ponto da tela para colar o campo.

Ir ficar mais ou menos assim:

Wander Rodrigues / Claudia Oliveira v09

Pgina 262 de 654

TREINAMENTO ABAP

Agora clique no boto de Text Field

O cursor ir se transformar em um retngulo pequeno. Posicione-o em um lugar da tela


esquerda da varivel V_BUKRS e clique para colar.

O campo em rosa indica que ali falta uma informao. Digite Empresa no campo
Text.

Wander Rodrigues / Claudia Oliveira v09

Pgina 263 de 654

TREINAMENTO ABAP
O layout da tela est pronto. Clique em Flow logic para ir para o PBO/PAI da tela.

Voc ir voltar para esta tela

Clique em Salvar

para gravar a tela criada.

Agora vamos criar um ttulo para a tela 9000.

No programa bsico
Create, Gui titles

Wander Rodrigues / Claudia Oliveira v09

clique com o boto direito e escolha

Pgina 264 de 654

TREINAMENTO ABAP

Preencha o cdigo do ttulo e a descrio do ttulo e clique em OK

Pronto. Foi criado o ttulo T9000 cuja descrio Primeira tela do programa.
Agora vamos criar uma barra de botes para a tela 9000. Esta tela ter o ENTER
para consultar funcionrio e o boto de voltar

No programa bsico
Create, Gui status

Wander Rodrigues / Claudia Oliveira v09

para sair do programa.

clique com o boto direito e escolha

Pgina 265 de 654

TREINAMENTO ABAP

Preencha o cdigo do status S9000 e a descrio do status. Marque o radiobutton


Normal screen e clique em OK.

Voc vai ver esta tela

Wander Rodrigues / Claudia Oliveira v09

Pgina 266 de 654

TREINAMENTO ABAP
Clique no sinal de mais localizado direita de Function Keys

A tela ir se abrir

O primeiro boto o ENTER. Para que ele funcione, vamos colocar um cdigo nesse
boto. Digite PROCESSA no campo em cima do ENTER
<ENTER>

Wander Rodrigues / Claudia Oliveira v09

e d

Pgina 267 de 654

TREINAMENTO ABAP

Na tela a seguir clique em OK

Preencha o campo Function text e clique em OK

Agora escreva SAIR no campo em cima da seta verde para a esquerda


de <ENTER>.

Wander Rodrigues / Claudia Oliveira v09

Pgina 268 de 654

TREINAMENTO ABAP

Clique em Salvar para salvar a barra de botes.

Pronto. Agora o ttulo e a barra de botes da tela 9000 j esto prontos.


Agora vamos colocar um cdigo na tela 9000 que faz com que ela utilize o ttulo e os
botes criados.
Do lado esquerdo da tela abra o n de Screens

Clique 2x sobre a tela 9000

Wander Rodrigues / Claudia Oliveira v09

Pgina 269 de 654

TREINAMENTO ABAP
Do lado direito da tela voc ver o PBO e PAI da tela 9000

O Process Before Output (ou PBO) o processo que executado antes da tela 9000 ser
exibida para o usurio.
Altera a lgica de processamento da tela para que fique da seguinte forma:

Wander Rodrigues / Claudia Oliveira v09

Pgina 270 de 654

TREINAMENTO ABAP

Clique em Salvar para gravar a nova lgica de processamento da tela

Antes da tela aparecer temos que informar a ela que ela deve utilizar o ttulo T9000
(criado anteriormente) e a barra de botes S9000 (tambm j criada). Ento vamos no
PBO da tela, que o evento executado antes da tela ser exibida, para fazer isso.
Clique 2x sobre o texto status_9000.

Clique em Yes na pergunta sobre a criao do mdulo PBO status_9000

Na prxima tela

Wander Rodrigues / Claudia Oliveira v09

Pgina 271 de 654

TREINAMENTO ABAP
Troque o nome MZXX001_STATUS_9000O01 por MZXX001O01 e conforme a
seguir

Note que o include MZXX001O01 tem o nome parecido com o do include TOP. O
prefixo o mesmo MZXX001 e o que muda que o include de variveis globaix
termina com TOP e o include de mdulos PBO termina com O01.
Clique em OK.
Clique em OK no aviso sobre a insero do include MZXX001O01

Wander Rodrigues / Claudia Oliveira v09

Pgina 272 de 654

TREINAMENTO ABAP

Voc ver a tela abaixo:

Repare que o module semelhante ao FORM.


Ex. FORM:
Perform f_cadastra.
...
...
Form f_cadastra.
...
...
Endform.
Ex. MODULE:
Module status_9000.
...
...
Module status_9000.

Endmodule.
A diferena que o FORM chamado com o comando PERFORM e o MODULE
chamado com o comando MODULE mesmo. Alm disso o MODULE s pode ser
usado dentro do PBO ou do PAI de uma tela.

Wander Rodrigues / Claudia Oliveira v09

Pgina 273 de 654

TREINAMENTO ABAP

Acrescente os comandos que vo associar o ttulo T9000 e a barra de botes S9000


tela 9000.

Clique em Salvar
Pronto. O ttulo e os botes j esto sendo chamados no mdulo status_9000 que
executado no PBO da tela 9000 e com isso consegue associ-los antes da tela ser
exibida.
O primeiro passo da tela 9000 est pronto. O segundo passo , depois que o usurio
informa a empresa e der enter, o programa deve verificar se a empresa existe e, caso
exista, chamar a segunda tela para exibir os dados da empresa.
Clique 2x na tela 9000 para voltar lgica de processamento da tela (PBO/PAI)

Wander Rodrigues / Claudia Oliveira v09

Pgina 274 de 654

TREINAMENTO ABAP

Voc ver a lgica do pbo/pai

O mdulo user_command_9000 vamos cria-lo daqui a pouco.


Primeiro vamos criar um mdulo para verificar se a empresa digita existe. Se existir, j
trazemos os dados que sero exibidos para o usurio na prxima tela. Se no existir,
vamos dar uma mensagem de erro.
Altere o Process After Input para que fique da seguinte forma:

O comando FIELD xxxx MODULE yyyy funciona da seguinte forma: O mdulo yyyy
executado. Se houver alguma mensagem de erro ele ir posicionar o cursor no campo
xxxx.
Clique em SALVAR
Wander Rodrigues / Claudia Oliveira v09

Pgina 275 de 654

TREINAMENTO ABAP

Para criar o mdulo, clique 2x sobre o nome m_le_tabela_empresa.

Responda Yes na pergunta sobre a criao do mdulo

Wander Rodrigues / Claudia Oliveira v09

Pgina 276 de 654

TREINAMENTO ABAP
Na tela abaixo

Troque o nome MZXX001_M_LE_TABELA_EMPRESAI01 por MZXX001I01 e d


OK

D ok no aviso sobre a criao do include MZXX001I01

Wander Rodrigues / Claudia Oliveira v09

Pgina 277 de 654

TREINAMENTO ABAP

Voc vai estar nesta tela, vendo o include MZXX001I01 na janela da direita, com o
mdulo m_le_tabela_empresa sendo exibido.

Para consistir a empresa, temos que ler a tabela de empresas (T001) com o cdigo da
empresa informado pelo usurio
Altere o mdulo para que fique da seguinte forma:

Wander Rodrigues / Claudia Oliveira v09

Pgina 278 de 654

TREINAMENTO ABAP

Clique em Salvar
Pronto. A consistncia e busca dos dados j est feita. Aps a leitura (select) o programa
testa o SUBRC. Se ele for diferente de zero, signifca que a empresa informada
(v_bukrs) no existe no banco de dados e d mensagem de erro. Se o SUBRC for igual
a zero, significa que a empresa existe no banco e que os dados que sero exibidos j
esto na estrutura w_empresa.
Vamos voltar para a lgica de processamento da tela 9000 para criar o
user_command_9000. Este mdulo ir chamar a tela 9100 que a tela que exibe os
dados da empresa.
Clique 2x na tela 9000 para voltar lgica de processamento da tela (PBO/PAI)

Wander Rodrigues / Claudia Oliveira v09

Pgina 279 de 654

TREINAMENTO ABAP
Voc ir voltar para o pbo/pai da tela 9000

Clique 2x sobre o mdulo user_command_9000 para criar o mdulo

Responda Yes na pergunta sobre a criao do objeto

Wander Rodrigues / Claudia Oliveira v09

Pgina 280 de 654

TREINAMENTO ABAP
Na tela abaixo

Marque o include MZXX001I01 pois esse um mdulo do PAI e deve ficar no include
com final I01. Clique em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 281 de 654

TREINAMENTO ABAP
Voc ver a tela abaixo, que mostra o include MZXX001I01 contendo o mdulo
m_le_tabela_empresa (que j havia sido criado antes) e o mdulo user_command_9000
que vamos criar agora.

Altere o mdulo user_command_9000 para que fique da seguinte forma

Salve o mdulo criado


.
Pronto o mdulo user_command_9000 j est criado e codificado corretamente. Todas
as funcionalidades da tela 9000 esto prontas. Vamos agora fazer a tela 9100.
Wander Rodrigues / Claudia Oliveira v09

Pgina 282 de 654

TREINAMENTO ABAP

A tela 9100 a tela que ir exibir os dados da empresa.


Vamos ento criar a tela.
No programa bsico clique com o boto direito e escolha Criar/Tela

Informe o nmero da tela (9100) e clique em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 283 de 654

TREINAMENTO ABAP
Preencha a descrio da segunda tela e clique em Element list

Na tela de Element list voc ver um campo do tipo OK. este campo onde devemos
colocar a varivel que ir guardar a tecla pressionada pelo usurio.

Preencha este campo com a varivel V_OKCODE e clique em Layout

Wander Rodrigues / Claudia Oliveira v09

Pgina 284 de 654

TREINAMENTO ABAP

Ser exibida a tela do Screen painter grfico para desenharmos o layout da segunda tela.

Clique no boto Dictionary/Program fields

Wander Rodrigues / Claudia Oliveira v09

Pgina 285 de 654

TREINAMENTO ABAP

Ser exibida a seguinte tela

Preencha o campo Table/Field Name com W_EMPRESA (estrutura que foi preenchida
com os dados da empresa) e clique em Get from Program
So exibidos todos os campos da estrutura w_empresa

Wander Rodrigues / Claudia Oliveira v09

Pgina 286 de 654

TREINAMENTO ABAP

Marque todos os campos e clique em ok

O cursor ir se transformar em uma seqncia de retngulos que correspondem aos


campos que sero colados na tela.

Wander Rodrigues / Claudia Oliveira v09

Pgina 287 de 654

TREINAMENTO ABAP

Clique em algum ponto da tela para colar os campos, deixando um espao do lado
esquerdo

Agora clique no boto de texto para colocar um texto na frente de cada campo

O cursor ir se transformar em um retngulo pequeno

Posicione o cursor esquerda do primeiro campo e clique para colar

Wander Rodrigues / Claudia Oliveira v09

Pgina 288 de 654

TREINAMENTO ABAP

A tela ir ficar mais ou menos como a seguir

A cor rosa indica que falta preencher alguma informao. Ento no campo Text digite
Nome da empresa

Wander Rodrigues / Claudia Oliveira v09

Pgina 289 de 654

TREINAMENTO ABAP

Faa o mesmo processo de clicar no campo de Texto


forma que fique como a tela abaixo:

para criar os demais textos de

Como o programa somente de consulta temos que proteger os campos para que o
usurio no altere as informaes na tela. Para isso clique 2x sobre o campo nome da
empresa (o campo, no o texto)

Wander Rodrigues / Claudia Oliveira v09

Pgina 290 de 654

TREINAMENTO ABAP

Sero exibidas as propriedades do campo w_empresa-butxt (nome da empresa)

Wander Rodrigues / Claudia Oliveira v09

Pgina 291 de 654

TREINAMENTO ABAP
Clique na guia Program

Na guia Program, desmarque o checkbox Input field

Clique no X azul para fechar a janela de atributos do campo

Wander Rodrigues / Claudia Oliveira v09

Pgina 292 de 654

TREINAMENTO ABAP
Clique 2x em cada campo da tela e retire o atributo de Input field para que todos fiquem
protegidos, conforme a tela abaixo

O layout da tela est pronto.

Clique em Flow logic (lgica de processamento)


o pbo/pai da tela 9100.

para voltar para

Wander Rodrigues / Claudia Oliveira v09

Pgina 293 de 654

TREINAMENTO ABAP

Voc ir retornar para esta tela.

Clique em Salvar para gravar o layout


Agora vamos criar o ttulo da tela 9100.

No programa bsico
Create, Gui titles

Wander Rodrigues / Claudia Oliveira v09

clique com o boto direito e escolha

Pgina 294 de 654

TREINAMENTO ABAP
Preencha o cdigo do ttulo e a descrio do ttulo e clique em OK

Pronto. Foi criado o ttulo T9100 cuja descrio Segunda tela do programa.

Agora vamos criar uma barra de botes para a tela 9100. Como esta tela somente para
consulta, ela ter somente o boto de voltar

No programa bsico
Create, Gui status

Wander Rodrigues / Claudia Oliveira v09

para voltar para a primeira tela.

clique com o boto direito e escolha

Pgina 295 de 654

TREINAMENTO ABAP

Preencha o cdigo do status S9100 e a descrio do status. Marque o radiobutton


Normal screen e clique em OK.

Voc vai ver esta tela

Wander Rodrigues / Claudia Oliveira v09

Pgina 296 de 654

TREINAMENTO ABAP

Clique no sinal de mais localizado direita de Function Keys

A tela ir se abrir

O nico boto que vamos colocar o BACK (Voltar).


Escreva SAIR no campo em cima da seta verde para a esquerda
<ENTER>.

Wander Rodrigues / Claudia Oliveira v09

e d

Pgina 297 de 654

TREINAMENTO ABAP
Clique em Salvar para salvar a barra de botes.

Pronto. Agora o ttulo e a barra de botes da tela 9100 j esto prontos.


Agora vamos colocar um cdigo na tela 9100 que faz com que ela utilize o ttulo e os
botes criados.
Do lado esquerdo da tela abra o n de Screens

Clique 2x sobre a tela 9100

Wander Rodrigues / Claudia Oliveira v09

Pgina 298 de 654

TREINAMENTO ABAP

Do lado direito da tela voc ver o PBO e PAI da tela 9100

O Process Before Output (ou PBO) o processo que executado antes da tela 9100 ser
exibida para o usurio.
Altere a lgica de processamento da tela para que fique da seguinte forma:

Wander Rodrigues / Claudia Oliveira v09

Pgina 299 de 654

TREINAMENTO ABAP

Clique em Salvar para gravar a nova lgica de processamento da tela

Antes da tela aparecer temos que informar a ela que ela deve utilizar o ttulo T9100
(criado anteriormente) e a barra de botes S9100 (tambm j criada). Ento vamos no
PBO da tela, que o evento executado antes da tela ser exibida, para fazer isso.
Clique 2x sobre o texto status_9100.

Clique em Yes na pergunta sobre a criao do mdulo PBO status_9000

Wander Rodrigues / Claudia Oliveira v09

Pgina 300 de 654

TREINAMENTO ABAP

Na prxima tela

Troque o nome MZXX001_STATUS_9100O01 por MZXX001O01 e conforme a


seguir

Note que o include MZXX001O01 tem o nome parecido com o do include TOP. O
prefixo o mesmo MZXX001 e o que muda que o include de variveis globais
termina com TOP e o include de mdulos PBO termina com O01.
Clique em OK.

Wander Rodrigues / Claudia Oliveira v09

Pgina 301 de 654

TREINAMENTO ABAP

Voc ver a tela abaixo:

Repare que o module semelhante ao FORM.


Ex. FORM:
Perform f_cadastra.
...
...
Form f_cadastra.
...
...
Endform.
Ex. MODULE:
Module status_9000.
...
...
Module status_9000.

Endmodule.
A diferena que o FORM chamado com o comando PERFORM e o MODULE
chamado com o comando MODULE mesmo. Alm disso o MODULE s pode ser
usado dentro do PBO ou do PAI de uma tela.
Wander Rodrigues / Claudia Oliveira v09

Pgina 302 de 654

TREINAMENTO ABAP

Acrescente os comandos que vo associar o ttulo T9100 e a barra de botes S9100


tela 9100.

Clique em Salvar
Pronto. O ttulo e os botes j esto sendo chamados no mdulo status_9100 que
executado no PBO da tela 9100 e com isso consegue associ-los antes da tela ser
exibida.
Vamos agora criar o user_command_9100 que ir tratar o boto de voltar.
Clique 2x na tela 9100 para voltar lgica de processamento da tela (PBO/PAI)

Wander Rodrigues / Claudia Oliveira v09

Pgina 303 de 654

TREINAMENTO ABAP

Voc ir voltar para o pbo/pai da tela 9100

Clique 2x sobre o mdulo user_command_9000 para criar o mdulo

Wander Rodrigues / Claudia Oliveira v09

Pgina 304 de 654

TREINAMENTO ABAP
Responda Yes na pergunta sobre a criao do objeto

Na tela abaixo

Marque o include MZXX001I01 pois esse um mdulo do PAI e deve ficar no include
com final I01. Clique em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 305 de 654

TREINAMENTO ABAP

Voc ver a tela abaixo, que mostra o include MZXX001I01 contendo o mdulo
m_le_tabela_empresa (que j havia sido criado antes), mdulo user_command_9000
(tambm j criado) e o mdulo user_command_9100, que vamos criar agora.

Altere o mdulo user_command_9100 para que fique da seguinte forma

Salve o mdulo criado

Wander Rodrigues / Claudia Oliveira v09

Pgina 306 de 654

TREINAMENTO ABAP
Pronto o mdulo user_command_9100 j est criado e codificado corretamente. Todas
as funcionalidades da tela 9100 esto prontas.
O programa est quase pronto. Como um module pool ele tem que ter uma transao
para poder ser executado.
Vamos ento criar a transao.

No programa bsico
Create, Transaction

clique com o boto direito e escolha

Preencha o cdigo da transao, a descrio e marque o primeiro radiobutton . Clique


em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 307 de 654

TREINAMENTO ABAP

Voc ver a tela de atributos da transao

Wander Rodrigues / Claudia Oliveira v09

Pgina 308 de 654

TREINAMENTO ABAP

Preencha o nome do programa e a tela inicial

Clique em Salvar

para gravar a transao criada.

Na tela de request, selecione Objeto local

Pronto. Todos os objetos do Module pool j foram criados.


Wander Rodrigues / Claudia Oliveira v09

Pgina 309 de 654

TREINAMENTO ABAP

Agora temos que nos certificar de que no tenha ficado nenhum objeto inativo (de cor
azul na janela esquerda)
Para ativar todos os objetos de uma s vez, clique no nome do programa bsico com o
boto direito do mouse e selectione Ativar.

Wander Rodrigues / Claudia Oliveira v09

Pgina 310 de 654

TREINAMENTO ABAP
Ser exibida a janela com todos os objetos inativos do seu module pool, j selecionados
para serem ativados. Clique em OK

Pronto, o module pool est concludo e todos os objetos esto ativos.


Para executar o programa basta digita o cdigo da transao na linha de comando.

Wander Rodrigues / Claudia Oliveira v09

Pgina 311 de 654

TREINAMENTO ABAP

Passo a Passo para criao de um module pool


(CADASTRO)
EXEMPLO utilizando variveis
Criar a tabela ZTCLXXR_FILIAL (caso ainda no tenha criado) de acordo com a
definio abaixo
Tabela
Descrio
Campo
mandt
cod_emp
cod_filial
nome_filial
cnpj
cidade

ZTCLXXR_FILIAL
Filiais
Chave
Tipo
x
mandt
x
char 4
x
char 4
char 25
char 16
char 25

Descrio
Mandante
Empresa
Filial
Nome da filial
CNPJ
Cidade

Tabela criada:

Vamos agora criar o programa do tipo module pool para cadastrar informaes nesta
tabela:

Wander Rodrigues / Claudia Oliveira v09

Pgina 312 de 654

TREINAMENTO ABAP
Entre na SE80.

Certifique-se de que o list Box est selecionado em PROGRAMA

Digite o nome do programa SAPMZ_CAD_FILIAL e pressione ENTER

Na tela abaixo, clique em SIM

Wander Rodrigues / Claudia Oliveira v09

Pgina 313 de 654

TREINAMENTO ABAP
Confirme o nome do programa clicando em OK, deixe a opo com include TOP
MARCADA

O programa ir sugerir o nome do include TOP, confirme clicando em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 314 de 654

TREINAMENTO ABAP
Na tela abaixo, altere a descrio para Cadastro de filiais e certifique-se de que o
campo Tipo est selecionado em Pool de mdulos. Em seguida clique em Gravar

Na tela de solicitao de request, clique em Objeto Local.

Wander Rodrigues / Claudia Oliveira v09

Pgina 315 de 654

TREINAMENTO ABAP
Ser exibida a tela principal da transao e voc ver o seu programa criado do lado
esquerdo da tela, Logo abaixo de Nome do objeto.

Como ns vamos ter que criar uma tela, com todos os campos da tabela de filial, para o
usurio entrar com os dados, primeiro temos que definir estes campos no include TOP.
Para isso clique na seta esquerda de Includes
e depois clique
duas vezes no include MZ_CAD_FILIALTOP
Voc ver a tela abaixo:

Clique no boto de modificar

para editar o include.

Wander Rodrigues / Claudia Oliveira v09

Pgina 316 de 654

TREINAMENTO ABAP
Agora ns temos que declarar uma varivel para cada campo que for includo na tela.
So essas variveis que iro armazenar, dentro do programa, as informaes que o
usurio digitar.
Altere o include TOP para que fique da seguinte forma:

Verifique se a sintaxe est correta com o boto


depois salve o include top

. Se houver qualquer erro corrija e

Antes de prosseguir ATIVE seu include com o boto


O status do include deve estar ativo

Wander Rodrigues / Claudia Oliveira v09

Pgina 317 de 654

TREINAMENTO ABAP
Agora que as variveis j esto criadas vamos colocar estas variveis na tela para que o
usurio possa digitar os valores desejados.
Clique com o boto direito sobre o nome do programa e, no menu que aparecer, escolha
CRIAR e depois, TELA

Digite 9000 no campo No. Tela e clique em ok.

Wander Rodrigues / Claudia Oliveira v09

Pgina 318 de 654

TREINAMENTO ABAP
Na tela abaixo, altere a descrio da tela no campo Descrio breve, que aparece na
aba CARACTERSTICAS

Clique na aba LISTA ELEMS.

Voc ver que existe uma linha no grid Atribs.gerais que tem o tipo igual a OK

Do lado esquerdo do ok onde vamos colocar uma varivel para tratar os botes que
o usurio clicou na tela. Por exemplo: Se voc criar um boto de salvar e cham-lo de
GRAVA, quando o usurio clicar neste boto a varivel ok ser preenchida com
GRAVA, e desta forma voc pode identificar qual foi o boto pressionado.

Wander Rodrigues / Claudia Oliveira v09

Pgina 319 de 654

TREINAMENTO ABAP
Preencha o campo esquerda do ok com o nome de varivel V_OKCODE.

Clique em salvar

para gravar a sua tela.

Como a varivel V_OKCODE, que acabamos de utilizar no ok, ainda no existe no


nosso programa, temos que cri-la no include TOP.
Para isso clique duas vezes no nome do include TOP.

Voc ver o include TOP com as variveis de tela que j havia criado:

Wander Rodrigues / Claudia Oliveira v09

Pgina 320 de 654

TREINAMENTO ABAP
Adicione no include TOP, a declarao da varivel v_okcode.

Clique em Salvar

para gravar a alterao que voc fez.

Wander Rodrigues / Claudia Oliveira v09

Pgina 321 de 654

TREINAMENTO ABAP
Agora vamos voltar para a tela para desenhar o layout.
Clique em Telas para abrir a lista de telas
(neste caso teremos somente uma
tela) e depois clique duas vezes no nmero da tela (9000)

A tela ser exibida do lado direito

A primeira aba CARACTERSTICAS j foi preenchida, assim como a aba LISTA


ELEMS.. Vamos fazer agora o Layout da tela e por ltimo a lgica de processamento
(PBO e PAI).
Clique no boto Layout
Aguarde at que o carregamento do Screen Painter seja concludo

Wander Rodrigues / Claudia Oliveira v09

Pgina 322 de 654

TREINAMENTO ABAP
Ser exibida a tela para que voc possa desenhar o layout

Obs.: Se esta tela no aparecer, voc precisa instalar a ferramenta Graphical Screen
Painter.
Para fazer o layout, clique no boto Janela campos dict./programa
Voc ver a tela Screen painter: campos dict./programa

Wander Rodrigues / Claudia Oliveira v09

Pgina 323 de 654

TREINAMENTO ABAP
Nesta tela clique no boto Chamar do programa
mostre as variveis que voc criou no include TOP.

para que ele

Marque SOMENTE as variveis que voc criou no include top

E clique em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 324 de 654

TREINAMENTO ABAP
Voc ver que o cursor ir se transformar no contorno dos campos que voc marcou

Clique em algum ponto da tela para COLAR estes campos.

Wander Rodrigues / Claudia Oliveira v09

Pgina 325 de 654

TREINAMENTO ABAP
Clique em qualquer rea da tela para desmarcar a seleo dos campos

Agora vamos criar os labels que so os textos que aparecem esquerda do campo
para facilitar a identificao dos campos na tela.
Clique no boto Cpo.txt. , do lado esquerdo da tela (letra T)

Clique em algum ponto da tela para colar o texto

Wander Rodrigues / Claudia Oliveira v09

Pgina 326 de 654

TREINAMENTO ABAP

No campo Texto

, digite Cdigo da empresa

Clique no T novamente, cole o campo na tela logo abaixo de Cdigo da empresa e


digite no campo texto : Cdigo da filial

Wander Rodrigues / Claudia Oliveira v09

Pgina 327 de 654

TREINAMENTO ABAP
Repita estes passos para criar o texto Nome da filial, Nmero do CNPJ e Nome da
cidade.

Agora o Layout da tela est pronto, e s falta fazer a lgica de processamento (PBO e
PAI)
Clique no boto Lgica de processamento
lgica da tela.

Clique em Salvar

para ir para a

para gravar o seu layout.

O primeiro mdulo que vamos criar o mdulo M_STATUS. dentro deste mdulo do
PBO que vamos definir quais os botes sero utilizados na nossa tela e qual o ttulo da
tela.

Wander Rodrigues / Claudia Oliveira v09

Pgina 328 de 654

TREINAMENTO ABAP
Altere a lgica de processamento da tela para que fique da seguinte forma:

Clique em Salvar

para gravar a modificao feita.

Para criar o mdulo m_status, clique 2 vezes sobre o termo m_status. O programa ir
avisar que o mdulo do pbo M_STATUS ainda no existe e pergunta se deseja criar.
Clique em SIM.

A tela abaixo serve para informar em qual include o mdulo ser criado

Wander Rodrigues / Claudia Oliveira v09

Pgina 329 de 654

TREINAMENTO ABAP
Para facilitar a organizao do programa, modifique o nome
MZ_CAD_FILIAL_M_STATUSO01 para MZ_CAD_FILIALO01 e clique em OK.

Como este nome de include MZ_CAD_FILIALO01 ainda no existe, o programa


avisa que ele ser criado e adicionado ao seu programa. Clique em OK

Agora o include de mdulos PBO est criado.

Wander Rodrigues / Claudia Oliveira v09

Pgina 330 de 654

TREINAMENTO ABAP
Note que do lado esquerdo o include foi adicionado

E que o include que est aberto do lado direito o include novo que acabamos de criar

Altere o cdigo do mdulo M_STATUS para que fique da seguinte forma:

Clique em Salvar

para gravar a modificao.

Neste momento estamos dizendo ao programa que a tela dever mostrar a barra de
botes S9000 e o ttulo T9000. Vamos criar estes dois objetos agora.
Clique duas vezes sobre o termo S9000 para criar a barra de botes.
O programa avisa que o status (barra de botes) S9000 ainda no existe e pergunta se
deseja criar. Clique em SIM

Wander Rodrigues / Claudia Oliveira v09

Pgina 331 de 654

TREINAMENTO ABAP
Na tela abaixo altere a descrio Texto breve e clique em OK

Ser exibida a tela onde os botes sero criados

Clique no boto + direita do termo Teclas de funo

Na tela abaixo, vamos criar dois botes, um para sair do programa e outro para gravar o
que o usurio digitou na tela (neste exemplo, as informaes de uma filial).

Wander Rodrigues / Claudia Oliveira v09

Pgina 332 de 654

TREINAMENTO ABAP

Logo acima da seta verde

digite SAIR e tecle ENTER

Logo acima do boto de salvar

digite GRAVAR e tecle ENTER

Desta forma estamos dizendo os nicos botes que funcionaro quando a tela for
exibida so os botes de sair e o de salvar.
Clique em Salvar

para gravar os botes que voc criou.

Nota: So estes nomes (GRAVAR e SAIR) que sero movidos para a varivel
V_OKCODE criada no incio.

Wander Rodrigues / Claudia Oliveira v09

Pgina 333 de 654

TREINAMENTO ABAP

Clique em Voltar

para retornar ao mdulo M_STATUS.

Wander Rodrigues / Claudia Oliveira v09

Pgina 334 de 654

TREINAMENTO ABAP
A barra de botes S9000 foi criada e o comando SET PF-STATUS S9000 agora
informa ao programa que ele dever mostrar os botes que voc criou.
Vamos agora criar o ttulo do programa.
Clique duas vezes sobre o termo T9000 para criar o ttulo da tela.
O programa avisa que o ttulo T9000 no existe e pergunta se deseja criar. Clique em
Sim.

Na tela abaixo, digite o ttulo que voc quer que seja exibido no topo da tela do usurio
e clique em OK

O programa ir voltar automaticamente para o mdulo M_STATUS com uma


mensagem dizendo que o ttulo foi gravado.

Wander Rodrigues / Claudia Oliveira v09

Pgina 335 de 654

TREINAMENTO ABAP
O mdulo m_status j est pronto.

Vamos agora voltar para a lgica de processamento da tela para continuar a criao dos
mdulos.
Clique duas vezes sobre a tela 9000 para voltar lgica de processamento da tela

Wander Rodrigues / Claudia Oliveira v09

Pgina 336 de 654

TREINAMENTO ABAP
Certifique-se de que a aba Lg.Process. esteja selecionada

Agora vamos criar os mdulos do PAI.


O primeiro mdulo a ser criado o mdulo que trata o boto de sair.
Altere a lgica de processamento da tela (pbo/pai) para que fique da seguinte forma:

Clique em Salvar
para gravar a modificao
Clique duas vezes sobre o termo M_SAIR para criar este mdulo do PAI.

Wander Rodrigues / Claudia Oliveira v09

Pgina 337 de 654

TREINAMENTO ABAP
O programa avisa que o mdulo PAI M_SAIR no existe e pergunta se deseja cri-lo.
Clique em SIM

O programa pergunta em qual include dever ser criado o mdulo M_SAIR. Como ele
um mdulo PAI no podemos utilizar o include MZ_CAD_FILIALO01 criado
anteriormente pois ele um include para mdulos PBO.
Altere o nome sugerido de MZ_CAD_FILIAL_M_SAIRI01 para
MZ_CAD_FILIALI01 e clique em OK

O programa avisa que o include ser criado e adicionado ao seu module pool. Clique em
OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 338 de 654

TREINAMENTO ABAP
Voc ver a seguinte tela.

Note que o include foi adicionado ao seu programa

E que o include que est aberto do lado direito j o include que acabamos de criar

Wander Rodrigues / Claudia Oliveira v09

Pgina 339 de 654

TREINAMENTO ABAP
Modifque o mdulo do PAI M_SAIR para que fique da seguinte forma:

Clique em Salvar
para gravar a modificao
O mdulo M_SAIR est pronto. O objetivo dele apenas verificar se o boto
pressionado foi o de SAIR. Em caso afirmativo o programa encerrado.
Vamos agora criar o ltimo mdulo, tambm no PAI, que o mdulo que ir fazer a
gravao dos dados digitados pelo usurio, na tabela ZTCLXXR_FILIAL.
Clique duas vezes sobre a tela 9000 para voltar lgica de processamento da tela.

Wander Rodrigues / Claudia Oliveira v09

Pgina 340 de 654

TREINAMENTO ABAP
Voc ver a lgica de processamento do lado direito

Altere o PAI da tela para que fique da seguinte forma:

Clique em Salvar

para gravar a modificao.

Wander Rodrigues / Claudia Oliveira v09

Pgina 341 de 654

TREINAMENTO ABAP
Para criar o mdulo do PAI M_GRAVAR clique duas vezes sobre o termo
M_GRAVAR. O programa avisa que o mdulo ainda no existe e pergunta se deseja
criar. Clique em SIM

Em seguida o programa pergunta em qual include devemos criar este mdulo. Repare
que j foi criado um include para mdulos do PAI, que o include
MZ_CAD_FILIALI01. (Este include foi criado no momento em que estvamos criando
o mdulo M_SAIR, que tambm um mdulo PAI)

Selecione este include e clique em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 342 de 654

TREINAMENTO ABAP
O mdulo M_GRAVAR ento criado dentro do include MZ_CAD_FILIALI01, logo
abaixo do mdulo M_SAIR.

Agora vamos modificar o mdulo m_gravar para inserir um registro na tabela


ZTCLXXR_FILIAL a partir das informaes digitadas na tela.
Para fazer a incluso, necessrio utilizar o comando INSERT ztclxxr_filial, porm,
para que este comando funcione corretamente precisamos mover as variveis que foram
preenchidas na tela, para a estrutura ztclxxr_filial.
Altere o mdulo M_GRAVAR para que fique da seguinte forma.

Clique em Salvar

para gravar a sua modificao

Wander Rodrigues / Claudia Oliveira v09

Pgina 343 de 654

TREINAMENTO ABAP
Note que as variveis que foram utilizadas na tela foram movidas para a estrutura
ZTCLXXR_FILIAL. Logo em seguida o comando INSERT insere um registro na tabela
do banco de dados ZTCLXXR_FILIAL a partir dos dados que esto na estrutura.
Como estamos utilizando uma estrutura temos tambm que declar-la no include top.
Clique duas vezes sobre o include TOP

Voc ver as declaraes que j criamos neste include

Wander Rodrigues / Claudia Oliveira v09

Pgina 344 de 654

TREINAMENTO ABAP
Vamos incluir a declarao da estrutura ZTCLXXR_EMPRESA. Modifque o cdigo do
include TOP para que fique da seguinte forma.

Clique em Salvar

para gravar sua modificao.

Agora o programa est pronto. Falta somente criar uma transao para execut-lo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 345 de 654

TREINAMENTO ABAP
Clique com o boto direito sobre o nome do programa, escolha Criar e depois
Transao.

Wander Rodrigues / Claudia Oliveira v09

Pgina 346 de 654

TREINAMENTO ABAP
Na tela abaixo, coloque o cdigo da transao ZCADFILIAL, preencha a descrio da
transao com Cadastro de filiais e clique em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 347 de 654

TREINAMENTO ABAP
O programa ir exibir os detalhes da transao. Coloque o nome do programa e a tela
inicial da transao

Clique em Salvar

para gravar a transao

Na tela de solicitao de request, clique em Objeto local

Wander Rodrigues / Claudia Oliveira v09

Pgina 348 de 654

TREINAMENTO ABAP

Para poder executar o programa necessrio que todos os objetos criados estejam
ativos.
Clique com o boto direito no nome do programa e escolha Ativar.

Wander Rodrigues / Claudia Oliveira v09

Pgina 349 de 654

TREINAMENTO ABAP
O programa ir exibir uma tela com todos os objetos inativos j marcados para ativao.
Clique em OK

Quando receber a mensagem abaixo, o programa est pronto para ser executado

Para testar, clique no boto Criar janela nova

para abrir uma nova sesso do SAP.

Na janela nova, digite na linha de comando o cdigo da transao criada e tecle ENTER

Wander Rodrigues / Claudia Oliveira v09

Pgina 350 de 654

TREINAMENTO ABAP
Voc ver a tela conforme desenho do layout

Preencha os campos da tela e clique em Salvar. O programa ir exibir a mensagem de


que a filial foi criada.

Wander Rodrigues / Claudia Oliveira v09

Pgina 351 de 654

TREINAMENTO ABAP
Para conferir o resultado, execute a transao SE16, digite o nome da sua tabela e
pressione ENTER.

Wander Rodrigues / Claudia Oliveira v09

Pgina 352 de 654

TREINAMENTO ABAP

Na tela abaixo, clique em Executar

Verifique se o registro que voc gravou no seu programa aparece na tela.

Wander Rodrigues / Claudia Oliveira v09

Pgina 353 de 654

TREINAMENTO ABAP

Passo a Passo para criao de um module pool


(CADASTRO 2)
Exemplo com Work Area (estrutura).
Para este exemplo vamos primeiro criar uma tabela Z, onde ser feito o cadastro.
A tabela a ZTXX_AGENDA e deve conter os seguintes campos:

Crie os elementos de dados e domnios que forem necessrios


Agora vamos criar o nosso programa (Module pool) para efetuar o cadastro na tabela de
contatos (ZTXX_AGENDA).

Wander Rodrigues / Claudia Oliveira v09

Pgina 354 de 654

TREINAMENTO ABAP
Entre na transao SE80

Wander Rodrigues / Claudia Oliveira v09

Pgina 355 de 654

TREINAMENTO ABAP
Certifique-se que o listbox est selecionado em Programa.

No campo abaixo de Programa digite o nome do nosso Module Pool e tecle ENTER. Neste
exemplo vamos criar o SAPMZ_CAD_AGENDA.

Ao pressionar ENTER ser exibida a seguinte tela. Clique em SIM

O sistema ento pergunta se voc deseja criar o include TOP. Clique em OK

Na prxima janela sugerido o nome do include TOP. No necessrio alter-lo. Clique em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 356 de 654

TREINAMENTO ABAP
Voc ver a tela abaixo de atributos do programa. Coloque uma descrio no campo Ttulo e
clique em Gravar.

Na tela de request, clique em Objeto local (somente em treinamento)

Wander Rodrigues / Claudia Oliveira v09

Pgina 357 de 654

TREINAMENTO ABAP
O programa ento ser criado e o include TOP j estar anexado a ele.

Agora vamos criar a tela inicial do programa. Mas antes vamos declarar todas as variveis,
estruturas e tabelas internas que forem necessrias para que o programa funcione.
Para isso clique 2 vezes sobre o include TOP.
Voc ver que agora o include top est aberto do lado direito da tela

Wander Rodrigues / Claudia Oliveira v09

Pgina 358 de 654

TREINAMENTO ABAP
Clique no lpis

para poder modificar o include.

Altere o include top para que fique da seguinte forma:

Pronto, neste programa vamos precisar somente da estrutura wa_agenda e da varivel


v_okcode.

Wander Rodrigues / Claudia Oliveira v09

Pgina 359 de 654

TREINAMENTO ABAP

Clique em Ativar

para ativar o include TOP.

Voc ver a mensagem abaixo indicando que o include foi ativado

Wander Rodrigues / Claudia Oliveira v09

Pgina 360 de 654

TREINAMENTO ABAP
Agora vamos criar a tela onde o usurio ir entrar com os dados. Para isso clique com o boto
direito no nome do programa, escoha Criar e depois Tela.

Na tela abaixo, informe o nmero da tela (9000) e clique em OK.

Wander Rodrigues / Claudia Oliveira v09

Pgina 361 de 654

TREINAMENTO ABAP
Voc ver a tela 9000 do lado direito da tela. Preencha o campo Descrio breve com uma
descrio sobre a funcionalidade da tela.

Em seguida, clique na aba Lista elems.


Voc ver a tela abaixo

nesta aba que colocamos a varivel v_okcode para receber o nome dos botes que o usurio
clicou. Preencha o campo Nome com v_okcode, na linha onde se encontra o OK.

Wander Rodrigues / Claudia Oliveira v09

Pgina 362 de 654

TREINAMENTO ABAP

Agora vamos fazer o layout da tela. Clique no boto Layout


tela abaixo seja exibida.

. Aguarde at que a

nesta tela que vamos desenhar o layout. Clique no boto azul que tem um quadrado laranja
Janela campos dict./programa
Ser exibida a tela abaixo:

Wander Rodrigues / Claudia Oliveira v09

Pgina 363 de 654

TREINAMENTO ABAP
Digite o nome da sua estrutura (neste exemplo WA_AGENDA) e clique em Chamar do
programa.
Note que a tela ser preenchida com todos os campos da estrutura digitada:

Marque todos os campos (com exceo do campo mandt) clicando no quadrado esquerda de
cada linha.

Wander Rodrigues / Claudia Oliveira v09

Pgina 364 de 654

TREINAMENTO ABAP
Clique em OK para colarmos estes campos na tela. Voc ver que o cursor ter o contorno de
todos os campos que sero colados. Escolha um ponto da tela e clique para colar os campos.

Wander Rodrigues / Claudia Oliveira v09

Pgina 365 de 654

TREINAMENTO ABAP
Aps clicar na tela os campos sero colados:

Agora vamos colocar o nome dos campos. Para isso, clique no T localizado na barra
esquerda da tela.

O cursor ir assumir o formato de um retngulo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 366 de 654

TREINAMENTO ABAP
Clique esquerda do primeiro campo que voc colou para criar o texto.

Agora clique no campo Texto na barra acima da tela e digite Cdigo do contato

Clique novamente no T e cole logo abaixo do texto que acabou de criar.

Wander Rodrigues / Claudia Oliveira v09

Pgina 367 de 654

TREINAMENTO ABAP
Clique no campo Texto e digite Nome do Contato

Repita os mesmos passos para criar os nomes de todos os campos, at que a tela fique com o
layout parecido com o da tela abaixo:

O layout da tela est pronto. Clique em Salvar


Agora clique no boto lgica de processamento
definies da tela.

Wander Rodrigues / Claudia Oliveira v09

, para voltar s

Pgina 368 de 654

TREINAMENTO ABAP
Voc ver a tela abaixo.

Vamos agora definir o PBO da tela, que so os mdulos executados ANTES da tela ser exibida.
O que precisamos fazer neste exemplo somente definir quais os botes devem ser exibidos e
qual o ttulo da tela.
Para isso, modifique o PBO da tela para que fique da seguinte forma:

Agora clique 2 vezes sobre o termo STATUS_9000. O sistema ir emitir uma mensagem
dizendo que este mdulo do PBO no existe. Clique em SIM para Criar o mdulo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 369 de 654

TREINAMENTO ABAP
Em seguida ele pergunta em qual include voc ir criar o seu mdulo. Troque o nome do
include sugerido por MZ_CAD_AGENDAO01 e clique em OK

ATENO: No trocar o nome do include no implica em erros. Voc apenas ter um nmero
maior de includes no seu programa pois ele ir sugerir um include para cada mdulo.
Seguindo nosso exemplo, como o include MZ_CAD_AGENDAO01 ainda no existe, o sistema
avisa que ir cri-lo no seu programa. Clique em OK

Na tela abaixo clique em SIM para gravar as modificaes da sua tela.

Wander Rodrigues / Claudia Oliveira v09

Pgina 370 de 654

TREINAMENTO ABAP
Pronto. O include MZ_CAD_AGENDAO01 foi criado e associado ao seu programa. E o mdulo
STATUS_9000 tambm j foi criado dentro do include.

Altere o cdigo do mdulo status_9000 para que fique da seguinte forma:

Clique em Salvar

para gravar a modificao.

Com o comando PF-STATUS ns atribumos botes e menus tela. Vamos cri-lo ento com o
boto de sair (para sair do programa) e o boto de salvar (para gravar o que o usurio digitou).

Wander Rodrigues / Claudia Oliveira v09

Pgina 371 de 654

TREINAMENTO ABAP
Clique 2 vezes sobre o termo S9000
O sistema ir avisar que o Status S9000 ainda no existe. Clique em SIM para cri-lo.

Na tela abaixo coloque uma descrio no campo Texto breve e clique em OK

Voc ver a tela abaixo

Wander Rodrigues / Claudia Oliveira v09

Pgina 372 de 654

TREINAMENTO ABAP
Clique no sinal de mais que est na frente do termo Teclas de funo

Voc ver a barra de botes standard. nela que vamos colocar nossos botes

Coloque o cursor sobre o campo que est acima da seta verde.

Digite VOLTAR e tecle ENTER

Agora coloque o cursor sobre o campo acima do boto de salvar, digite GRAVAR e tecle ENTER.

Wander Rodrigues / Claudia Oliveira v09

Pgina 373 de 654

TREINAMENTO ABAP
Clique em Salvar para gravar o status criado.

Clique em Voltar para retornar ao mdulo status_9000.

Agora vamos criar o ttulo da tela. Clique 2 vezes sobre o termo T9000. O sistema ir avisar
que o ttulo no existe. Clique em SIM para criar.

Na tela abaixo, preencha o campo Ttulo e clique em OK.

Wander Rodrigues / Claudia Oliveira v09

Pgina 374 de 654

TREINAMENTO ABAP
Pronto. O PBO da nossa tela est concludo. Ele contm o mdulo STATUS_9000, que contm
os comandos para atribuir o status e o ttulo.
Vamos agora criar o PAI da nossa tela. Para isso, clique na seta ao lado do termo Telas, do
lado esquerdo do seu monitor.

Voc ver a tela abaixo:

Clique 2 vezes sobre a tela 9000 para que ela seja exibida do lado direito.

O PBO j est pronto. Vamos criar ento um mdulo no PAI para tratar as informaes
digitadas pelo usurio e o boto que foi pressionado.

Wander Rodrigues / Claudia Oliveira v09

Pgina 375 de 654

TREINAMENTO ABAP
Altere o PAI da tela para que fique da seguinte forma:

Clique em Salvar

para gravar sua modificao

Clique 2 vezes sobre o termo user_command_9000 para criar o mdulo PAI


user_command_9000.
O sistema ir avisar que o mdulo no existe. Clique em SIM para criar.

Na tela abaixo, modifique o nome do include para MZ_CAD_AGENDAI01 e clique em OK.

Wander Rodrigues / Claudia Oliveira v09

Pgina 376 de 654

TREINAMENTO ABAP
Como este include de mdulos PAI ainda no existe, o sistema avisa que ele ser criado e
associado ao seu programa. Clique em OK

Agora o iinclude MZ_CAD_AGENDAI01 est criado e associado ao seu programa. E o mdulo


user_command_9000 j foi criado dentro do include.

Wander Rodrigues / Claudia Oliveira v09

Pgina 377 de 654

TREINAMENTO ABAP
Altere o mdulo user_command_9000 para que fique da seguinte forma:

Clique em Salvar

para gravar as modificaes.

O boto de VOLTAR j est ok. Caso o usurio clique neste boto, ser executado o comando
LEAVE PROGRAM para sair do programa.
Falta agora criar o cdigo para gravar os dados da tela na tabela ZTXX_AGENDA. Como o
cdigo um pouco maior, vamos coloc-lo dentro de um form para melhorar a visualizao e
organizao do programa.
Clique 2 vezes sobre o termo F_SALVAR.
O programa ir avisar que o FORM f_salvar no existe. Clique em SIM para criar.

Wander Rodrigues / Claudia Oliveira v09

Pgina 378 de 654

TREINAMENTO ABAP
Troque o nome do include para MZ_CAD_AGENDAF01 e clique em OK.

Como o include MZ_CAD_AGENDAF01 ainda no existe, o programa avisa que ele ser criado
e associado ao seu programa. Clique em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 379 de 654

TREINAMENTO ABAP
Pronto. O include est criado e o form f_salvar est criado tambm, dentro do include.

Altere o form f_salvar para que fique da seguinte forma:

Wander Rodrigues / Claudia Oliveira v09

Pgina 380 de 654

TREINAMENTO ABAP
Agora o cdigo que ir criar o registro no banco de dados est ok. Clique em Salvar
gravar as modificaes.

para

O programa est pronto.


Vamos ento criar a transao que ir executar o programa.
Do lado esquerdo da tela, clique com o boto direito sobre o nome do programa, escolha Criar
e depois Transao

Wander Rodrigues / Claudia Oliveira v09

Pgina 381 de 654

TREINAMENTO ABAP
Na tela abaixo informe o cdigo da transao ZXXCADCON , preencha o campo Texto Breve
com Cadastro de Contatos e clique em OK.

Voc ver a tela a seguir:

Wander Rodrigues / Claudia Oliveira v09

Pgina 382 de 654

TREINAMENTO ABAP
Preencha o campo Programa com SAPMZ_CAD_AGENDA e coloque o No. Da tela como 9000.
Em seguida clique em Salvar

Na tela de request, informe Objeto Local.

Agora s falta ativar o programa.

Wander Rodrigues / Claudia Oliveira v09

Pgina 383 de 654

TREINAMENTO ABAP
Clique com o boto direito sobre o nome do programa e escolha ATIVAR

Wander Rodrigues / Claudia Oliveira v09

Pgina 384 de 654

TREINAMENTO ABAP
Voc ver a tela abaixo onde o sistema lista todos os objetos que precisam ser ativados. Clique
em OK.

Observe a mensagem abaixo:

O seu programa j est pronto e j pode ser executado. Digite /Nzxxcadcon na linha de
comando para rodar seu programa.

Wander Rodrigues / Claudia Oliveira v09

Pgina 385 de 654

TREINAMENTO ABAP
Voc ver a tela final do seu programa pronta para a entrada de dados.

Para terminar, cadastre alguns contatos atravs do seu programa e execute a SE16 com a
tabela ZTXX_AGENDA para conferir se as informaes foram gravadas corretamente.

Wander Rodrigues / Claudia Oliveira v09

Pgina 386 de 654

TREINAMENTO ABAP

Exemplo de module pool de cadastro de empresa


Exemplo de um programa do tipo module pool para cadastrar dados em uma tabela de
empresas. Este exemplo no segue nenhuma ordem de como o programa deve ser feito,
ele contm apenas o cdigo pronto para ser usado como exemplo.
Definio da tabela de empresa (ZTEMPRESA) no dicionrio:

Programa principal SAPMZ_CAD_EMP

Wander Rodrigues / Claudia Oliveira v09

Pgina 387 de 654

TREINAMENTO ABAP

Include TOP

Wander Rodrigues / Claudia Oliveira v09

Pgina 388 de 654

TREINAMENTO ABAP

Include PBO

Wander Rodrigues / Claudia Oliveira v09

Pgina 389 de 654

TREINAMENTO ABAP

Include PAI

Wander Rodrigues / Claudia Oliveira v09

Pgina 390 de 654

TREINAMENTO ABAP

Tela 9000
Caractersticas

Coluna OK da tela 9000

Wander Rodrigues / Claudia Oliveira v09

Pgina 391 de 654

TREINAMENTO ABAP

Lgica de processamento da tela 9000

Wander Rodrigues / Claudia Oliveira v09

Pgina 392 de 654

TREINAMENTO ABAP

Layout da tela 9000

Wander Rodrigues / Claudia Oliveira v09

Pgina 393 de 654

TREINAMENTO ABAP

Status S9000

Ttulo T9000

Wander Rodrigues / Claudia Oliveira v09

Pgina 394 de 654

TREINAMENTO ABAP

Transao ZCADEMP01

Resultado (Tela do usurio)

Wander Rodrigues / Claudia Oliveira v09

Pgina 395 de 654

TREINAMENTO ABAP

Exemplo de module pool de cadastro de cliente


Exemplo de um programa do tipo module pool para cadastrar dados em uma tabela de
clientes. Este exemplo no segue nenhuma sequncia de construo de cdigo, ele
contm apenas o programa pronto para ser usado como referncia.
Tabela ZTCLIENTE

Wander Rodrigues / Claudia Oliveira v09

Pgina 396 de 654

TREINAMENTO ABAP

Programa para cadastro de clientes na tabela ZTCLIENTE


Tela do programa

Wander Rodrigues / Claudia Oliveira v09

Pgina 397 de 654

TREINAMENTO ABAP

Tela 9000

Wander Rodrigues / Claudia Oliveira v09

Pgina 398 de 654

TREINAMENTO ABAP

PROCESS BEFORE OUTPUT.


MODULE m_status.
MODULE m_titulo.
PROCESS AFTER INPUT.
MODULE m_sair.
CHAIN.
FIELD ztcliente-codcliente.
FIELD ztcliente-nomecliente.
FIELD ztcliente-telefone.
MODULE m_consiste_preenchimento.
ENDCHAIN.
CHAIN.
FIELD ztcliente-codcliente.
MODULE m_consiste_cliente.
ENDCHAIN.
MODULE m_salvar.

Barra de botes da tela 9000 (Status S900)

Ttulo da tela 9000 T900

Wander Rodrigues / Claudia Oliveira v09

Pgina 399 de 654

TREINAMENTO ABAP

Cdigo do programa principal SAPMZCADCLI

Cdigo do include TOP Dados globais

Wander Rodrigues / Claudia Oliveira v09

Pgina 400 de 654

TREINAMENTO ABAP
Cdigo do include O01 Mdulos PBO

Wander Rodrigues / Claudia Oliveira v09

Pgina 401 de 654

TREINAMENTO ABAP
Cdigo do include I01 Mdulos PAI
*----------------------------------------------------------------------*
***INCLUDE MZCADCLII01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Module m_sair INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE m_sair INPUT.
IF v_okcode = 'VOLTAR'
OR v_okcode = 'ENCERRAR'
OR v_okcode = 'CANCELAR'.
LEAVE PROGRAM.
ENDIF.
ENDMODULE.
" m_sair INPUT
*&---------------------------------------------------------------------*
*&
Module m_consiste_cliente INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE m_consiste_cliente INPUT.
DATA v_mandt TYPE sy-mandt.
SELECT
INTO
FROM
WHERE

SINGLE mandt
v_mandt
ztcliente
codcliente = ztcliente-codcliente.

IF sy-subrc = 0.
MESSAGE e398(00) WITH 'Cliente j existe'.
ENDIF.
ENDMODULE.
" m_consiste_cliente

INPUT

*&---------------------------------------------------------------------*
*&
Module m_salvar INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE m_salvar INPUT.
IF v_okcode = 'SALVAR'.
INSERT ztcliente.
IF sy-subrc <> 0.
MESSAGE e398(00) WITH 'Erro no cadastramento do cliente'.
ELSE.
MESSAGE s398(00) WITH 'Cliente cadastrado com sucesso'.
ENDIF.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*&
Module m_consiste_preenchimento INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE m_consiste_preenchimento INPUT.
IF ztcliente-codcliente
IS INITIAL
OR ztcliente-nomecliente IS INITIAL
OR ztcliente-telefone
IS INITIAL.
MESSAGE e398(00) WITH 'Preencher todos os campos'.
ENDIF.

Wander Rodrigues / Claudia Oliveira v09

Pgina 402 de 654

TREINAMENTO ABAP
ENDMODULE.

" m_consiste_preenchimento

INPUT

Cdigo da transao

Wander Rodrigues / Claudia Oliveira v09

Pgina 403 de 654

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 404 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 405 de 654

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 406 de 654

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

Wander Rodrigues / Claudia Oliveira v09

Pgina 407 de 654

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 408 de 654

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 409 de 654

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 410 de 654

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 411 de 654

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 412 de 654

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 413 de 654

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 414 de 654

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 415 de 654

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 416 de 654

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 417 de 654

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 418 de 654

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 419 de 654

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 420 de 654

TREINAMENTO ABAP
Coloque o cursor no campo e pressione F1

Clique no boto da ferramenta

Wander Rodrigues / Claudia Oliveira v09

Pgina 421 de 654

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 422 de 654

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 423 de 654

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 424 de 654

TREINAMENTO ABAP

Exemplo field exit para o campo centro (elemento de dados WERKS_D)


Para este exemplo funcionar necessrio criar primeiro um grupo de funo com o
nome ZTESTE e ativ-lo, na transao SE80.
Execute a transao CMOD, digite PRFB na linha de comando e tecle ENTER

A tela abaixo lista as field exits j existentes. Clique em exit de campo e depois em
Criar.

Wander Rodrigues / Claudia Oliveira v09

Pgina 425 de 654

TREINAMENTO ABAP
Informe o nome do elemento de dados e clique em OK

O programa ir exibir a transao SE37 para


FIELD_EXIT_ELEMENTODEDADOS. Clique em Criar

poder

criar

funo

Informe o grupo de funes, a descrio e clique em Gravar

Wander Rodrigues / Claudia Oliveira v09

Pgina 426 de 654

TREINAMENTO ABAP
No texto fonte da field exit, o cdigo abaixo ir gerar uma mensagem de erro caso o
centro no tenha sido informado

Salvar e ativar a fiel exit


Ao retornar, a field exit aparece na lista de field exits como inativa

Wander Rodrigues / Claudia Oliveira v09

Pgina 427 de 654

TREINAMENTO ABAP
Para ativar basta marcar a exit, e clicar no menu Exit Campo e em seguida em Ativar.

Wander Rodrigues / Claudia Oliveira v09

Pgina 428 de 654

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 429 de 654

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 430 de 654

TREINAMENTO ABAP
Clique no menu Utilitrios, Procurar

Clique no boto Todas as selees para expandir a tela

Wander Rodrigues / Claudia Oliveira v09

Pgina 431 de 654

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 432 de 654

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 433 de 654

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 434 de 654

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 435 de 654

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 436 de 654

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 437 de 654

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 438 de 654

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 439 de 654

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 440 de 654

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 441 de 654

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 442 de 654

TREINAMENTO ABAP
Resumo:
Trata-se de uma ferramenta geradora de layouts (ou formulrios), ou seja, no
gera relatrios e sim o layout ( tamanho de letra na primeira linha, um logotipo,
cdigo de barras etc...)
Este tpico deve ser visto como um curso a parte, pois existem profissionais
atualmente dedicados somente a criao destes layouts. Porm bastante vlido
saber como o SAPSCRIPT trabalha, para se necessrio estar apto a efetuar uma
modificao.
Caminho: Ferramenta > Processamento de textos > Formulrio ou
SE71.

transao

Sempre que nos depararmos com um programa ABAP/4 on-line, o qual possui
chamadas para as seguintes funes: OPEN_FORM,START_FORM, WRITE_FORM,
END_FORM e CLOSE_FORM, trata-se de um programa que gera um relatrio
baseado no layout de um SAPSCRIPT.
Basicamente esta ferramenta determina Pargrafos, Fontes, Localizao e Textos
Fixos de variveis pr-definidas. Geralmente, em programas standard, estas
variveis so campos de uma estrutura.
No programa que chama o sapscript existe todo o tratamento para a informao
que ser armazenada na varivel antes da impresso.

Wander Rodrigues / Claudia Oliveira v09

Pgina 443 de 654

TREINAMENTO ABAP

PRINCIPAIS COMPONENTES DE UM FORMULRIO


DADOS DE CABEALHO
So informaes gerais sobre o formulrio, como por exemplo, o nome de usurio
do autor, um texto breve para a descrio do formulrio, assim como os dados de
controle gerais como por exemplo, de famlias de caracteres e formatos de pgina
utilizados.
CADEIAS DE CARACTERES
As cadeias de caracteres so elementos de layout, que atuam em uma seo de
texto de um pargrafo. Podemos ter em uma mesma linha de texto, diversas
cadeias de caracteres distintas.
PARGRAFOS
Os pargrafos so unidades de layout do SAPscript.
Das caractersticas, ou atributos, que podem ser definidos para os pargrafos,
fazem parte, por exemplo, o alinhamento do texto, o espacejamento de linhas, a
cadeia de caracteres utilizada, etc.
JANELAS
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.
Essas janelas podem ser criadas basicamente em 3 tipos distintos:
Janela tipo 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.
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 um relatrio ganha nmero de pginas
automaticamente quando da execuo de um relatrio desse tipo, conforme
os dados so preenchidos.
Janela tipo 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 utilizada quando se pretende trabalhar com
textos que variam, como exemplos de mensagens que podem mudar
durante o decorrer da execuo do formulrio.
Janela tipo CONST
So janelas que no merecem muita preocupao de processamento por
parte do formulrio, uma vez que seus dados devem ser mantidos os
mesmos 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 logotipos e rodaps.
Wander Rodrigues / Claudia Oliveira v09

Pgina 444 de 654

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 e de uma pgina inicial do formulrio, nos
dados de cabealho, o usurio determina a seqncia de pginas.
JANELAS DE PGINAS
Uma janela de pgina surge atravs da indicao da posio e do tamanho de uma
janela em uma pgina de formulrio.
A janela de pgina descreve, portanto, a expanso de uma janela em uma
determinada pgina do formulrio e, por conseguinte, a rea na qual possvel sair
o texto no formulrio.
No programa de exemplo, que montaremos durante os exerccios,
poderemos observar melhor estes componentes

Wander Rodrigues / Claudia Oliveira v09

Pgina 445 de 654

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 446 de 654

TREINAMENTO ABAP

Copiando um formulrio
Execute a transao SE71

Colocar o nome do formulrio e o idioma desejado. Se o formulrio for standard


deve-se utilizar o idioma no qual o formulrio foi criado. Primeiramente devemos fazer
uma cpia do mandante 000 para o que se est trabalhando.
Seqncia de Cpia:
Passo 1
Mandante 000
Idioma : Original

Mandante de
desenvolvimento
Idioma Original

Wander Rodrigues / Claudia Oliveira v09

Passo 2
Mandante de
desenvolvimento
Idioma PT

Pgina 447 de 654

TREINAMENTO ABAP
PASSO 1
1 Copiar o formulrio. Ex: Formulrio MEDRUCK

2 - Digitar o Nome do Formulrio original (MEDRUCK)


3 - Digitar o Mandante de origem (000)
4 - Digitar o Formulrio de destino (temporrio ZXX_TESTE)
5 Desmarcar S idioma original e marcar Log processo
6 - Clicar no boto Executar F8

Wander Rodrigues / Claudia Oliveira v09

Pgina 448 de 654

TREINAMENTO ABAP
Log da copia

Wander Rodrigues / Claudia Oliveira v09

Pgina 449 de 654

TREINAMENTO ABAP

PASSO 2
7 Note que o idioma original foi definido em D (Alemo). Entre na transao SE71
para modificar o formulrio no idioma original (DE).

8 - Dentro da tela do formulrio, clique em Utilitrios / Converter idioma original

Wander Rodrigues / Claudia Oliveira v09

Pgina 450 de 654

TREINAMENTO ABAP
9 Informe o idioma desejado (PT)

10 - O formulrio ser modificado para o idioma original PT.

Obs : Para criar um formulrio novo, basta criar diretamente no idioma PT

Wander Rodrigues / Claudia Oliveira v09

Pgina 451 de 654

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 452 de 654

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 453 de 654

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 454 de 654

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 455 de 654

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 456 de 654

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:

Wander Rodrigues / Claudia Oliveira v09

Pgina 457 de 654

TREINAMENTO ABAP

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 458 de 654

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 459 de 654

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 460 de 654

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 461 de 654

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 462 de 654

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 463 de 654

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 464 de 654

TREINAMENTO ABAP

Criao de sapscript - Exemplo


- Entrar na transao SE71
- Informar o nome do formulrio (ZXX_NOVO) e clicar em Criar.

- Clicar em OK

Wander Rodrigues / Claudia Oliveira v09

Pgina 465 de 654

TREINAMENTO ABAP
- Informar a descrio do formulrio

- Clicar em Configuraes / Form Painter para certificar-se de que a opo Form Painter
grfico est marcada.

- Clicar em OK

- Clicar no boto de Layout

Wander Rodrigues / Claudia Oliveira v09

Pgina 466 de 654

TREINAMENTO ABAP
Ser exibida a tela de layout do sapscript. So exibidas 2 janelas, uma contendo os
dados da primeira pgina e outra exibindo o layout da pgina. A Janela MAIN da pgina
1 criada automaticamente.

Wander Rodrigues / Claudia Oliveira v09

Pgina 467 de 654

TREINAMENTO ABAP

- Redimensionar a janela Main para o formato aproximado ao da figura abaixo:

Wander Rodrigues / Claudia Oliveira v09

Pgina 468 de 654

TREINAMENTO ABAP

- Criar uma janela de cabealho clicando no boto criar

no quadro Janela

Ser criada a janela WINDOW1 dentro da pgina 1 e ser selecionada automaticamente


na tela principal

Wander Rodrigues / Claudia Oliveira v09

Pgina 469 de 654

TREINAMENTO ABAP

- Clicar no boto de renomear


para modificar o nome da Janela WINDOW1.
Informar o nome CAB e clicar em OK

- Redimensionar a janela CAB para o formato aproximado ao da figura abaixo

Wander Rodrigues / Claudia Oliveira v09

Pgina 470 de 654

TREINAMENTO ABAP

- Criar uma janela de RODAPE clicando no boto criar

no quadro Janela

.
- Ser criada a janela WINDOW1 dentro da pgina 1 e ser selecionada
automaticamente na tela principal.
- Clicar no boto de renomear
para modificar o nome da Janela WINDOW1.
Informar o nome RODAPE e clicar em OK
- Redimensionar a janela RODAPE para o formato aproximado ao da figura abaixo

Wander Rodrigues / Claudia Oliveira v09

Pgina 471 de 654

TREINAMENTO ABAP
- Criar um formato de pargrafo clicando no boto Formatos de pargrafo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 472 de 654

TREINAMENTO ABAP

- Criar o formato de pargrafo NO

- Criar o formato de pargrafo NE

- No pargrafo NE, clicar no boto

Wander Rodrigues / Claudia Oliveira v09

e marcar o atributo Negrito.

Pgina 473 de 654

TREINAMENTO ABAP

- Depois de criar os pargrafos clicar no boto


do formulrio

Wander Rodrigues / Claudia Oliveira v09

para exibir os dados do cabealho

Pgina 474 de 654

TREINAMENTO ABAP

- Clicar em Configuraes Globais

- Informar o pargrafo NO como pargrafo default do formulrio

Wander Rodrigues / Claudia Oliveira v09

Pgina 475 de 654

TREINAMENTO ABAP
- Clicar em Janelas de pgina para incluir as informaes a serem impressas.

- Com a janela MAIN selecionada (cor azul) clicar em Elemento de texto


2 elementos de texto abaixo (CABECALHO e DETALHE)

. Criar os

- Voltar para a tela de Janelas de pgina e criar os textos abaixo:

Wander Rodrigues / Claudia Oliveira v09

Pgina 476 de 654

TREINAMENTO ABAP

- Salvar

e ativar o formulrio.

Wander Rodrigues / Claudia Oliveira v09

Pgina 477 de 654

TREINAMENTO ABAP

Programas de impresso
Os programas de impresso so os programas que preenchem os dados do formulrio e
chamam as funes de impresso.
Criao do programa de impresso (report) ZRXX_NOVO.
- SE38

- Criar

Wander Rodrigues / Claudia Oliveira v09

Pgina 478 de 654

TREINAMENTO ABAP

- Codificar o programa de impresso.


*&---------------------------------------------------------------------*
*& Report ZRXX_NOVO
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT

zrxx_novo.

TABLES: t001.
* Tipos
TYPES: BEGIN OF ty_empresa,
bukrs TYPE t001-bukrs,
butxt TYPE t001-butxt,
END OF ty_empresa.
* Work area da tabela interna de empresa
DATA: wa_empresa TYPE ty_empresa.
* Tabela interna de empresas
DATA: t_empresa TYPE TABLE OF ty_empresa.
* Parmetros de seleo
SELECTION-SCREEN BEGIN OF BLOCK param WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_empr FOR t001-bukrs.
SELECTION-SCREEN END OF BLOCK param.
START-OF-SELECTION.
* Seleciona tabela empresa
SELECT bukrs butxt
INTO TABLE t_empresa
FROM t001
WHERE bukrs IN s_empr.
IF sy-subrc EQ 0.
SORT t_empresa BY bukrs.
ENDIF.
END-OF-SELECTION.
* Abre o formulrio
CALL FUNCTION 'OPEN_FORM'
EXPORTING
device
= 'PRINTER'
dialog
= 'X'
form
= 'ZXX_NOVO'
EXCEPTIONS
canceled = 1
device
= 2
form
= 3
OPTIONS = 4
unclosed = 5
OTHERS
= 6.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

Wander Rodrigues / Claudia Oliveira v09

Pgina 479 de 654

TREINAMENTO ABAP

* Imprime o elemento de texto CABECALHO da janela MAIN


CALL FUNCTION 'WRITE_FORM'
EXPORTING
element
= 'CABECALHO'
window
= 'MAIN'
EXCEPTIONS
element
= 1
function = 2
type
= 3
unopened = 4
unstarted = 5
window
= 6
OTHERS
= 7.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

LOOP AT t_empresa INTO wa_empresa.


Imprime o elemento de texto DETALHE da janela MAIN
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element
= 'DETALHE'
window
= 'MAIN'
EXCEPTIONS
element
= 1
function = 2
type
= 3
unopened = 4
unstarted = 5
window
= 6
OTHERS
= 7.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDLOOP.
CALL FUNCTION 'CLOSE_FORM'
EXCEPTIONS
unopened = 1
OTHERS
= 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

Wander Rodrigues / Claudia Oliveira v09

Pgina 480 de 654

TREINAMENTO ABAP

Exemplo de programa standard de impresso:

O programa
RFFOBR_D o programa de impresso de boletos. A impresso feita atravs do
formulrio J_1B_BOLETO_ITAU, por default.

Wander Rodrigues / Claudia Oliveira v09

Pgina 481 de 654

TREINAMENTO ABAP

Customizaes
possvel modificar, via transao SPRO, o programa de impresso e o formulrio de
um determinado processo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 482 de 654

TREINAMENTO ABAP
No exemplo abaixo, para imprimir uma cotao, no mdulo de vendas, ser utilizado o
programa RVADOR01 e o formulrio RVORDER01.

Ambos podem ser copiados e modificados. Em seguida a configurao deve ser alterada
para utilizar o novo programa ou o novo formulrio.

Wander Rodrigues / Claudia Oliveira v09

Pgina 483 de 654

TREINAMENTO ABAP

Comandos de Controle
ADDRESS
BOTTOM
BOX
CASE
DEFINE
HEX
IF
INCLUDE
NEW-PAGE
NEWWINDOW
PERFORM
POSITION
PRINTCONTROL
PROTECT
RESET
SET COUNTRY
SET DATE
MASK
SET SIGN
SET TIME
MASK
SIZE
STYLE
SUMMING
TOP

Formatao automtica de informao de endereo


Usado apenas na janela MAIN para imprimir no rodap da janela
Cria caixa
Cria condio para argumentos
Cria um novo smbolo em tempo de execuo
Passa valores hexadecimais diretamente
Cria condio para argumentos
Inclu outros textos e logotipos
Fora uma nova pgina
Fora uma nova janela
Chama subrotina
Usado para caixas setando X & Y
Inicializa um seqncia definida de controle de impresso
Protege uma pgina de parada
Reestarta seqncia de nmeros de sada
Seta o pas para campos
Seta formato de data
Coloca o campo a direita ou esquerda do nmero
Seta formato de hora
Usado apenas para caixa onde seta o tamanho da caixa
Usa um diferente tipo de estilo
Adiciona valores para um total
Usado apenas na janela MAIN para imprimir no topo da janela

Wander Rodrigues / Claudia Oliveira v09

Pgina 484 de 654

TREINAMENTO ABAP

Formatando Opes
(<)
(>)

(C)
(n)
(. n)
+n
(En)
(Ff)
(I)
(K)
( R)
( S)
(T)
(Z)

Alinha a esquerda
Alinha a direita
Insere um prefixo ou sufixo literal
Representa smbolo retirando-se os espaos em branco
Define um comprimento explcito
Seta o nmero de casas decimais
Caracteres no setados a direita
Representa um smbolo como um nmero exponencial
Utiliza um tipo de caracter nos espaos
Representa apenas valores no iniciais
Ignora converso de rotinas
Fora alinhamento a direita
O smbolo representado atravs de um campo
O smbolo representado atravs de um separador de milhar
Ignora zeros

Wander Rodrigues / Claudia Oliveira v09

Pgina 485 de 654

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 486 de 654

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 487 de 654

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 488 de 654

TREINAMENTO ABAP

Criando um Smart Form


Na transao SMARTFORMS pode se criar:
Formulrio, que a interface de sada dos dados.
Estilo, um conjunto de pargrafos e formatos de caracteres que sero associados
ao formulrio.
Mdulo de texto, que serve para se armazenar textos padres que podem ser
utilizados em mais de um formulrio.
Neste documento, ser detalhado somente o formulrio, no tratando especificamente de
estilos e mdulos de texto, que so muito simples e no apresentam maiores
dificuldades.
O conceito de vrios componentes de um Smart Form basicamente o mesmo do
SapScript, como por exemplo as pginas e janelas. Neste documento sero fornecidos
alguns detalhes dos componentes e seu funcionamento bsico.
Quando um formulrio novo criado(Ver figura acima), ele traz no menu de navegao
alguns itens que so obrigatrios, e uma janela j criada e predefinida como MAIN. So
estes os itens j pr-definidos:
Atributos de formulrio: apresenta as caractersticas gerais de um formulrio e suas
opes de sada. Pode se associar um estilo ao formulrio, e tem tambm a
possibilidade de se marcar a opo de sada XSF, que habilitaria a opo de gerar
arquivos XML para publicao na WEB.
Interface de Formulrio: traz tabpages com as opes de parmetros da funo de
execuo do formulrio. Traz os parmetros obrigatrios, e permite acrescentar
outros a interface.
So nestas tabpages que se acrescenta as tabelas e campos contendo os dados que
sero impressos no formulrio.

Definies Globais: rea para declarao de campos globais, inicializao de


variveis e tabelas, declarao de types e field systems, e criao de rotinas dentro
do formulrio.
%PAGE1: Pgina pr-definida. Poder ter seu nome trocado de acordo com a
necessidade.
MAIN: Janela pr-definida como janela principal.

Outros ns(objetos) podem ser acrescentados ao formulrio atravs da opo criar no


boto direito do mouse, ou tambm no menu Processar => Ns => Criar. O Smart Form
trabalha com o conceito de ns sucessores, ou seja, dentro de um n podem ser
acrescidos outros. Ao escolher criar um novo n. sero exibidas as opes possveis
como sucessor do n selecionado. Os possveis sucessores de um n s sero exibidos
quando o formulrio for aberto para alterao.
A sequncia de execuo dos ns obedece a disposio dos mesmos na tela.

Wander Rodrigues / Claudia Oliveira v09

Pgina 489 de 654

TREINAMENTO ABAP
Os principais tipos de n so:

reas de Output
Tipo de N
Pgina (Page)

Janela (Window)

Descrio e algumas
caractersticas
Uma pgina do formulrio. Os
sucessores diretos deste n so
colocados diretamente na pgina.
Possui opes para informar
caractersticas gerais, opes de sada e
tela de fundo.
rea de sada em uma pgina. H
janelas principais(main) e subwindows.
Tem opes para marcar se uma
janela principal, se vai possuir quadro e
sombreado, e definir suas margens. A
janela pode ser configurada
graficamente atravs do Form Painter.

Possveis sucessores
diretos

Janela, grfico e
endereo
Todos, exceto janela e
pginas.

Ns Elementares (sem sucessores)


Tipo de N
Descrio e algumas caractersticas
Texto (Text)
exibe textos fixos ou o contedo de elementos de dados, quando definido
como elemento de texto. Ou exibe um mdulo de texto ou o contedo de
uma include de texto. A propriedade n de texto define a posio que o
texto ser exibido, podendo ser em uma nova linha, como um novo
pargrafo ou imediatamente aps o pargrafro anterior. Quando o texto
for adicionado uma tabela dever ser informado em Opes de Sada
se ele ir gerar nova linha, ou se preencher uma nova clula.

Grfico (graphic)
Endereo
(Address)

Obs.: Quando a janela com a Lista de Campos estiver sendo exibida, os


campos podero ser arrastados para o TEXT direto desta lista.
Exibe objetos grficos no formulrio, como por exemplo um logotipo.
Este n usado para incluir um endereo. O sistema l os dados do
endereo diretamente das tabelas da base de dados e formata-os para a
sada. Exibe endereos previamente criados no CAM(Central address
management).

Tabelas (Podem ser configurados graficamente atravs do Table Painter)


Tipo de N
Descrio e algumas
Possveis sucessores
caractersticas
diretos
Padro
Sada para tabela de dados estticos.
Todos, exceto janela,
(Template)
Permite selecionar o modelo grfico de pgina, tabela e padro.
Wander Rodrigues / Claudia Oliveira v09

Pgina 490 de 654

TREINAMENTO ABAP
exibio da tabela. Este tipo de n no
possui loop.
Tabela (Table )
Sada para tabela que contm dados da
Os mesmos do padro.
aplicao. Permite selecionar o modelo
grfico de exibio da tabela. No folder
dados dever ser informado a tabela
interna que ser lida, e que ter seus
dados atribuidos a uma rea de
trabalho, ou a um field system. Dever
ser informado tambm as condies
para execuo do loop e tambm ser
possvel ordenar os dados. Permite
tambm informar no folder horas se
ter header e footer, e em que situaes
os mesmos sero exibidos.
Nestes tipos de n so criados tipos de linhas para a tabela, que devero ser
associados aos ns sucessores que gerarem novas linhas. Neste tipo de linha so
informadas as colunas contidas na linha, e o tamanho de cada uma. Ex.: Novo
elemento de texto em um n do tipo TABLE.
Controle de Fluxo
Tipo de N
Descrio e algumas
caractersticas
Comando
Executa comandos especiais (next
(command)
page, paragraph numbering, printer
control)
Loop
Processa os ns sucessores
repetidamente. A atribuio dos dados
semelhante a do tipo de n TABELA.
Alternativa
Execuo dos ns sucessores depende
(Alternative)
de condio lgica definida na
alternativa.

Outros Ns
Tipo de N
Classificador
(folder)
Seo Complexa
(complex section)

Descrio e algumas
caractersticas
Combina os ns sucessores em grupos
lgicos. Funciona como um
organizador dos elementos.
Combina os atributos dos ns do tipo
padro, tabela, loop e classificador. Em
suas caractersticas gerais deve ser
marcado o tipo de seo e se ter
processamento repetido(loop). Em

Wander Rodrigues / Claudia Oliveira v09

Possveis sucessores
diretos

No tem sucessor
Todos, exceto janela e
pgina.
Tem dois sucessores
diretos, TRUE e FALSE,
onde sero acrescentados
os ns sucessores, no
podendo conter ns do tipo
janela e pgina.

Possveis sucessores
diretos
Todos, exceto janela e
pgina.
Todos, exceto janela e
pgina.

Pgina 491 de 654

TREINAMENTO ABAP
tabela, os tipos de linha e o modelo de
tabela. Em dados a tabela interna que
ser processada, e em horas, se ter
header e/ou footer.
Linhas de
Executa cdigo ABAP (por exemplo,
Programa
rotinas de converso, totalizao, etc).
No tem sucessor
(program lines)
Devero ser informados os parmetros
de entrada e sada, que so os campos e
tabelas que sero tratados no cdigo
ABAP. Isto porque as linhas de
programa no enxergam os dados
globais do formulrio automaticamente.
Outro detalhe que o formulrio
trabalha com tabelas sem header line.
Obs.: A maior parte dos objetos citados acima possui pastas com as seguintes opes:
Opes de Sada: Varia de acordo com o tipo de objeto, mas quase todos tem em
comum opo para informar se ter quadro e sombreado.
Condies: Serve para determinar uma condio lgica para exibio do objeto(ex:
vc_campo = XXXX), e tambm para marcar algum momento especfico para
exibio do objeto(ex: S na primeira pgina).

Wander Rodrigues / Claudia Oliveira v09

Pgina 492 de 654

TREINAMENTO ABAP

Detalhes Adicionais
Programas de exemplo: Existem no SAP alguns formulrios de exemplo, com
seus respectivos programas de execuo. Os exemplos so os seguintes:
Formulrio SF_EXAMPLE_02, programa sf_example_02
Formulrio SF_EXAMPLE_02, programa sf_example_01
Formulrio SF_XSF_DEMO1, programa sf_xsf_demo (gera arquivos para
publicao na WEB).

Wander Rodrigues / Claudia Oliveira v09

Pgina 493 de 654

TREINAMENTO ABAP

Publicao de Smart Form na WEB


Para publicar um formulrio na WEB preciso informar em atributos do formulrio,
pasta Opes de Sada, o campo Sada XSF ativa, e informar o parmetro modo
de sada. Estes parmetros podem ser informados tambm na chamada funo de
execuo do formulrio no parmetro OUTPUT_OPTIONS. A funo de execuo
do formulrio retornar output_data-xsfdata, output_data-xsldata e output_datacssdata que sero utilizados para gerar os arquivos XSL, XML e CSS.
Neste caso de publicao na WEB um dos detalhes a ser observado o seguinte: o
formulrios no poder conter elementos de texto utilizando field-system, porque os
delimitadores do fiel-system(> e <) so delimitadores das TAGS em HTML.

Converso de SapScript para Smart Form


Um SapScript pode ser convertido para Smart Form, utilizando opo disponvel no
menu utilitrios. Porm esta converso gera alguns problemas que precisam ser
acertados manualmente. Alguns deles so:

Um destes problemas que o Smart Form gerado com o stilo default


SYSTEM, e no reconhece os pargrafos dos elementos de texto.
Os campos do programa no so criados automaticamente e devem ser
declarados na opo interface do formulrio, sendo que no caso de loop no
programa de impresso do sapscript, os dados devero ser declarados no smart
form como table.
Os comandos implcitos no sapscript(ex.: if) so comentados no smart form e
devem ser convertidos utilizando as opes disponveis no smart form.

Materiais para consulta


http://help.sap.com/saphelp_46c/helpdata/ES/a5/de6838abce021ae10000009b38
f842/frameset.htm
http://www.ciudadfutura.com/sap/manuales/pdf/smart.pdf
http://www.ciudadfutura.com/sap/sap/faq/smartforms.htm
http://www.sapgenie.com/abap/smartforms_detail.htm

Wander Rodrigues / Claudia Oliveira v09

Pgina 494 de 654

TREINAMENTO ABAP

Exerccio SMARTFORMS
Para comear, digite crie um programa na SE38 e digite o cdigo abaixo:
*&-------------------------------------------------------------------*& Report ZTESTESMF
*&-------------------------------------------------------------------REPORT ztestsemf
.
*Variveis
data: v_nome
v_end
v_tel
v_id
v_cpf

TYPE
TYPE
TYPE
TYPE
TYPE

c
c
n
c
c

LENGTH
LENGTH
LENGTH
LENGTH
LENGTH

40,
40,
11,
11,
14.

*Tabelas do smartforms
DATA: st_control TYPE ssfctrlop,
st_options TYPE ssfcompop.
*Tela de seleo
SELECTION-SCREEN begin of BLOCK 1 WITH FRAME TITLE text-001.
PARAMETERS: p_nome(40) TYPE c.
PARAMETERS: p_end(40) TYPE c.
PARAMETERS: p_tel(11) TYPE n.
PARAMETERS: p_id(11) TYPE c.
PARAMETERS: p_cpf(14) TYPE c.
SELECTION-SCREEN end of BLOCK 1.
*Processamento.
CLEAR: v_nome, v_end, v_tel, v_id, v_cpf.
v_nome
v_end
v_tel
v_id
v_cpf

=
=
=
=
=

p_nome.
p_end.
p_tel.
p_id.
p_cpf.

Wander Rodrigues / Claudia Oliveira v09

Pgina 495 de 654

TREINAMENTO ABAP
Abra a transao SMARTFORMS:

Digite um nome no campo FORMULRIO e clique em CRIAR

Wander Rodrigues / Claudia Oliveira v09

Pgina 496 de 654

TREINAMENTO ABAP
A tela abaixo j seu smartform criado.
Agora vamos definir como ele ser impresso:
No lado esquerdo, em ATRIBUTOS FORMULRIO:

Wander Rodrigues / Claudia Oliveira v09

Pgina 497 de 654

TREINAMENTO ABAP

Clique no boto FORM PAINTER ou aperte a tecla F9

Assim voc retira a janela grfica e fica com mais espao para trabalhar. Se quiser
visualizar o FORM PAINTER s clicar no boto ou usar o F9.

Salve o formulrio.
Wander Rodrigues / Claudia Oliveira v09

Pgina 498 de 654

TREINAMENTO ABAP
No campo SIGNIFICADO, d um nome ao formulrio:

Wander Rodrigues / Claudia Oliveira v09

Pgina 499 de 654

TREINAMENTO ABAP

Na aba OPES DE SADA, voc define o formulrio:


Formato de pgina
DINA4
(FORMATO A4 DEFAULT)
Caracs.por polegada 10,00
(DEFAULT)
Linhas por polegada 6,00
(DEFAULT)
Estilo
SYSTEM
(DEFAULT)
Formato de sada
Sada standard (DEFAULT)
Modo de sada
(DEFAULT)
Dispositivo de sada
(DEFAULT)
*TODOS ESSES CAMPOS SO EDITVEIS, O SAP USA ESSA DEFINIO
POR SER O TIPO MAIS
COMUM DE FORMULRIO, MAS VOC PODE DEFINIR QUALQUER UM
DESSES PARMETROS,
DENTRO DAS OPES DA FERRAMENTA.

Wander Rodrigues / Claudia Oliveira v09

Pgina 500 de 654

TREINAMENTO ABAP
No lado esquerdo, em INTERFACE DE FORMULRIO:

Os parmetros declarados, so default, para que o formulrio seja criado.


Na aba importao, declare as variveis do seu programa de teste ZTESTESMF, salve e
ative.

Wander Rodrigues / Claudia Oliveira v09

Pgina 501 de 654

TREINAMENTO ABAP
A parte de DEFINIES GLOBAIS ser usada quando o formulrio se tornar mais
complexo.

Na janela MAIN, defina as margens esquerda e superior.

Wander Rodrigues / Claudia Oliveira v09

Pgina 502 de 654

TREINAMENTO ABAP
Com o boto direito do mouse, v at criar padro.

Em significado, a ferramenta sempre cria um nome seqencial, mas podemos mudar de


acordo co o significado do mesmo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 503 de 654

TREINAMENTO ABAP
Mude o significado para Cabealho. Coloque o estilo SYSTEM.

Clique na aba PADRO.

Wander Rodrigues / Claudia Oliveira v09

Pgina 504 de 654

TREINAMENTO ABAP
Na lupa, aumente o zoom para 100%.

Com o lpis, desenhe 4 linhas, que sero nomeadas automaticamente como %C1,
%C2...%C5.

Wander Rodrigues / Claudia Oliveira v09

Pgina 505 de 654

TREINAMENTO ABAP
Com a ferramenta lpis, divida as linhas C3, C4 e C5.

Clicando no boto DETALHES, voc pode definir corretamente o tamanho de cada


linha, seu comprimento e divises para cada linha e clula desenhada.

Wander Rodrigues / Claudia Oliveira v09

Pgina 506 de 654

TREINAMENTO ABAP
Clique no boto TABLE PAINTER, para voltar a visualizar as linhas desenhadas.

Com as medidas anteriores, o desenho dever ficar como o exemplo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 507 de 654

TREINAMENTO ABAP
Clique no lpis novamente, e depois na linha C1.

A caixa QUADRO EXTERIOR, colocar em negrito todo o contorno da clula.

Wander Rodrigues / Claudia Oliveira v09

Pgina 508 de 654

TREINAMENTO ABAP
Para as linhas subseqentes, use os botes da direita na sequncia: QUADRO
ESQUERDO, QUADRO DIREITO, LINHA INFERIOR.

Aumentando o zoom, voc ver as linhas divisrias em negrito.

Wander Rodrigues / Claudia Oliveira v09

Pgina 509 de 654

TREINAMENTO ABAP
Usando o boto direito do mouse na linha C1, v at DIVIDIR- LINHA.

Cada linha ser dividida em 2. Mas no marque as linhas divisrias.

Wander Rodrigues / Claudia Oliveira v09

Pgina 510 de 654

TREINAMENTO ABAP
Com F8 voc pode visualizar o formulrio, executando a funo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 511 de 654

TREINAMENTO ABAP

Esse o resultado esperado:

Wander Rodrigues / Claudia Oliveira v09

Pgina 512 de 654

TREINAMENTO ABAP
Com F3, volte para o formulrio, e com o boto direito, clique no template e acesse:
CRIAR TEXTO.

Clique no texto TEXT1.

Wander Rodrigues / Claudia Oliveira v09

Pgina 513 de 654

TREINAMENTO ABAP
Preencha o significado com TEXTO NOME. Preencha com o texto NOME.

Na aba OPES DE SADA, defina o estilo como SYSTEM.

Wander Rodrigues / Claudia Oliveira v09

Pgina 514 de 654

TREINAMENTO ABAP
Em ESTRUT.EDIO, coloque LINHA 1, COLUNA 1 (para definir em que linha e
coluna os dados devero ser mostrados.

Crie o TEXT2 e defina da mesma maneira. Nomeie como TEXTO DADOS NOME.
Na ESTRUT.EDIO coloque LINHA 2, COLUNA 1.

Wander Rodrigues / Claudia Oliveira v09

Pgina 515 de 654

TREINAMENTO ABAP
Clique no boto ao lado esquerdo do boto FORM PAINTER (campos on/off).

Clique em INTERFACE DE IMPORTAO, e arraste a varivel V_NOME para a tela


do TEXT2.

Wander Rodrigues / Claudia Oliveira v09

Pgina 516 de 654

TREINAMENTO ABAP

Mude o FORMATOS CARACTERES para ITLICO.

Wander Rodrigues / Claudia Oliveira v09

Pgina 517 de 654

TREINAMENTO ABAP
Execute a funo com F8.

Esse o resultado esperado.

Wander Rodrigues / Claudia Oliveira v09

Pgina 518 de 654

TREINAMENTO ABAP
Execute os mesmos procedimentos para todos os outros campos desenhados em seu
formulrio, no esquecendo de atribuir sempre a LINHA e COLUNA corretamente, ou
o formulrio no aceitar.
Para evitar problemas com a vizualizao das fontes, use 6,0mm de altura para cada
linha.

Acrescente essa parte ao cdigo:


*TYPES
TYPES: BEGIN OF ty_saida,
mandt TYPE ztxx_func-mandt,
codfun TYPE ztxx_func-codfun,
nome TYPE ztxx_func-nome,
cargo TYPE ztxx_func-cargo,
salario TYPE ztxx_func-salario,
data_adm TYPE ztxx_func-data_adm,
END OF ty_saida.
*Tabelas internas
DATA t_saida TYPE TABLE OF ty_saida.
SELECT *
INTO TABLE t_saida
FROM ztxx_func.

Wander Rodrigues / Claudia Oliveira v09

Pgina 519 de 654

TREINAMENTO ABAP
CALL FUNCTION '/1BCDWB/SF00000359' (Aqui, use a funo que foi criada
para seu smartforms quando voc o executou com F8)

EXPORTING
ARCHIVE_INDEX
=
ARCHIVE_INDEX_TAB
=
ARCHIVE_PARAMETERS
=
CONTROL_PARAMETERS
=
MAIL_APPL_OBJ
=
MAIL_RECIPIENT
=
MAIL_SENDER
=
OUTPUT_OPTIONS
=
USER_SETTINGS
= 'X'
v_nome
= v_nome (VARIVEIS
v_end
= v_end
(VARIVEIS
v_tel
= v_tel
(VARIVEIS
v_id
= v_id
(VARIVEIS
v_cpf
= v_cpf
(VARIVEIS
t_saida
= t_saida (VARIVEIS
*
IMPORTING
*
DOCUMENT_OUTPUT_INFO
=
*
JOB_OUTPUT_INFO
=
*
JOB_OUTPUT_OPTIONS
=
EXCEPTIONS
formatting_error
= 1
internal_error
= 2
send_error
= 3
user_canceled
= 4
OTHERS
= 5
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*
*
*
*
*
*
*
*
*

Wander Rodrigues / Claudia Oliveira v09

DO
DO
DO
DO
DO
DO

PROGRAMA)
PROGRAMA)
PROGRAMA)
PROGRAMA)
PROGRAMA)
PROGRAMA)

Pgina 520 de 654

TREINAMENTO ABAP
O resultado visualizado dever ser esse:

Para colocar uma tabela no smartforms, voc precisa declarar uma categoria de tabela
usando a se11. A tabela interna que for preenchida para transportar os dados para o
formulrio, deve sempre ser declarada LIKE a categoria de tabela declarada. Se no for
baseada em uma tabela j existente, crie uma estrutura com os campos da tabela interna
e depois a categoria de tabela baseada nessa estrutura.

Wander Rodrigues / Claudia Oliveira v09

Pgina 521 de 654

TREINAMENTO ABAP
Declare a tabela de sada em INTERFACE DE FORMULRIO IMPORTAO.

Em DEFINIES GLOBAIS , na aba DADOS GLOBAIS, declare uma WA_SAIDA


LIKE ZTXX_FUNC (a tabela Z ou estrutura que voc est usando.

Wander Rodrigues / Claudia Oliveira v09

Pgina 522 de 654

TREINAMENTO ABAP
Crie outro PADRO, para servir como cabealho fixo da tabela, com 5 colunas, 6mm
altura e use as medidas 3cm, 4cm, 3cm, 3cm, 3cm.

Crie um texto para cada coluna e preencha com os valores fixos : Cdigo, Nome, Cargo,
Salrio e Dt. Admisso.

Wander Rodrigues / Claudia Oliveira v09

Pgina 523 de 654

TREINAMENTO ABAP

Obs: para cada texto, defina a sada: LINHA 1- COLUNA 1, LINHA 1-COLUNA2...
Nesse mesmo Template, crie uma tabela, com o boto direito do mouse.

Divida a tabela com as mesmas clulas do cabealho da tabela:

Wander Rodrigues / Claudia Oliveira v09

Pgina 524 de 654

TREINAMENTO ABAP

Em DETALHES, defina apenas o comprimento das cluas:

Na aba DADOS, marque o Box OPERANDO e preencha com a tabela interna e work
rea.

Wander Rodrigues / Claudia Oliveira v09

Pgina 525 de 654

TREINAMENTO ABAP
Em TABELA REA PRINCIPAL defina o estilo SYSTEM.

Clique em REA PRINCIPAL com o boto direito do mouse CRIAR ENTRADA


DE TABELA.
Defina o ESTILO SYSTEM, e o TIPO DE LINHA - %LTYPE1
As clulas da tabela declarada sero criadas automaticamente.

Wander Rodrigues / Claudia Oliveira v09

Pgina 526 de 654

TREINAMENTO ABAP
Para cada clula, voc deve criar um texto, para a entrada de dados, definindo o estilo
SYSTEM. Para os textos de tabela, no so definidos LINHA e COLUNA.

Clique no boto LISTA DE CAMPOS ON/OF DADOS GLOBAIS WA_SAIDA.


Para cada texto, arraste o campo da wa_saida correspondente e defina o FORMATOS
CARACTERES.

Wander Rodrigues / Claudia Oliveira v09

Pgina 527 de 654

TREINAMENTO ABAP
Execute pelo programa para visualizar o formulrio preenchido.

Como pode ser observado, o campo SALRIO, no est alinhado corretamente. Nesse
caso, voc pode redimensionar as clulas de acordo com o comprimento dos dados que
sero impressos.
Nesse caso, modifique no Template e na tabela, as dimenses dos campos CDIGO =
2CM e SALRIO = 4CM.
Esse ser o resultado final:

Wander Rodrigues / Claudia Oliveira v09

Pgina 528 de 654

TREINAMENTO ABAP
Finalmente, crie outro PADRO, com a altura de 20mm e apenas uma clula. Crie um
texto e digite o texto abaixo:
Esse um smartform simples, criado por (SEU NOME) no dia 12 de setembro de
2009.

Ao executar, o seu formulrio est pronto.

Wander Rodrigues / Claudia Oliveira v09

Pgina 529 de 654

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 530 de 654

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 531 de 654

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 532 de 654

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 533 de 654

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 534 de 654

TREINAMENTO ABAP

Tratamento arquivos externos


Os arquivos podem ser gerados de duas maneiras:
Utilizando-se de uma tabela Interna, o ABAP permite fazer um download dos
dados para um diretrio de rede ou local (WINDOWS). Neste caso, para
gerao de arquivo utilizamos a funo WS_DOWNLOAD e para leitura de
arquivo utilizamos a funo WS_UPLOAD.
Porm a utilizao das funes WS_DOWLOAD e WS_UPLOAD possuem o
inconveniente de somente poderem ser executadas com programas em
FOREGROUND, sendo que para programas que sero executados
periodicamente via JOB ou mesmo com execues manuais em
BACKROUND, estas funes no podem ser executadas.
O ABAP permite fazer uma transferncia de dados para um arquivo no
servidor (application server - UNIX). Neste caso, utiliza-se os comandos
OPEN DATASET, CLOSE DATASET e TRANSFER.
Se um sistema envia dados para o SAP mais de uma vez ao dia,
recomendvel condicionar o incio do Job a um evento . Este evento
poder ser disparado pelo UNIX quando um arquivo estiver pronto para ser
processado.
OPEN DATASET
Sintaxe:
OPEN DATASET <dsn> [options].
Em [options] pode-se usar:
MESSAGE <msg>.
FOR INPUT.
FOR OUTPUT.
FOR APPENDING.
FOR ... IN BINARY MODE.
FOR ... IN TEXT MODE.
FOR ... IN ... AT POSITION <pos>.
As opes podem ser combinadas ( onde faa sentido ).
O default do modo de abertura binrio (binary).
Se no houve sucesso na abertura do arquivo o cdigo de retorno 8, seno
0.
O nome do arquivo pode ser tanto uma literal como um campo. Voc deve
definir o nome do arquivo e o caminho (ex: c:\publico\arquivo.txt).
A opo MESSAGE permite que o sistema retorne uma mensagem se ocorrer
um erro no OPEN do arquivo.
FOR INPUT abre o arquivo para leitura e OUTPUT para gravar.
Um arquivo aberto com FOR OUTPUT ser criado se ainda no existir. Se
existir o contedo ser deletado e reinicializa o arquivo.
Um arquivo aberto com FOR APPENDING ser criado se ainda no existir. Se
existir ele ir posicionar o ponteiro no final do arquivo para novas entradas.
Wander Rodrigues / Claudia Oliveira v09

Pgina 535 de 654

TREINAMENTO ABAP

Em BINARY MODE o contedo do arquivo transferido byte a byte e em


TEXT MODE transferido linha a linha.
POSITION <pos> uma contador em bytes desde o incio do arquivo.
READ DATASET
Sintaxe:
READ DATASET <dsn>
INTO <fld> [LENGTH <len>].
Ler dados do arquivo <dsn> montando a varivel <fld> .
Voc deve conhecer a estrutura do arquivo
Aps uma leitura OK o cdigo de retorno 0, quando final de arquivo o
cdigo 4 e quando o arquivo no pode ser aberto ele 8.
Use LENGTH no modo binrio para verificar o tamanho do dado atual
transferido para <fld>.
Voc pode ler sem ter especificado um OPEN DATASET anteriormente, mas
isso no considerado uma boa prtica de programao. Se voc no
especificar o OPEN o sistema tentar ler o arquivo em BINARY MODE ou com
a opo do ltimo OPEN DATASET para este arquivo.
TRANSFER
Sintaxe:
TRANSFER <fld>
TO <dsn> [LENGTH <len>].
Grava o contedo do campo <fld> no arquivo <dsn>.
O modo de transferncia deve ser especificado na instruo OPEN DATASET.
O campo <fld> pode ter tipo de dado elementar ou pode ser uma estrutura
que no contenha nenhum componente que seja uma tabela interna.
Tabelas internas no podem ser gravadas no arquivo em uma execuo.
Use a opo LENGTH para especificar o tamanho do registro a ser
transferido.
CLOSE DATASET
Sintaxe:
CLOSE DATASET <dsn>.
Esta instruo encerra(close) o arquivo<dsn>.
A instruo CLOSE apenas necessria se voc quiser excluir o contedo do
arquivo durante a prxima abertura para escrita.

Wander Rodrigues / Claudia Oliveira v09

Pgina 536 de 654

TREINAMENTO ABAP
Entretanto, um bom hbito sempre encerrar o arquivo antes de um
prximo OPEN, como isto divide o programa em blocos lgicos, torna-se
mais fcil a manuteno.
Exemplo:
DATA: FNAME(60) VALUE myfile.
DATA: TEXT1(12) VALUE abcdefghijkl,
TEXT2(5),
LENG TYPE I.
OPEN DATASET FNAME FOR OUTPUT IN BINARY MODE.
TRANSFER TEXT1 TO FNAME.
CLOSE DATASET FNAME.
OPEN DATASET FNAME FOR INPUT IN BINARY MODE.
DO.
READ DATASET FNAME INTO TEXT2 LENGTH LENG.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
WRITE: / TEXT2, LENG.
ENDDO.
CLOSE DATASET FNAME.

Wander Rodrigues / Claudia Oliveira v09

Pgina 537 de 654

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 538 de 654

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.
Abaixo, a estrutura bsica de um programa de batch input:
* na declarao de tabelas internas, precisamos criar uma tabela
para tratamento de mensagens, uma tabela para parmetros da
transao e uma tabela BDC, onde informamos as telas, campos,
contedos de campos, etc.
*----------------------------------------------------------------------*
* Tabelas Internas
*
*----------------------------------------------------------------------*
* Tabela de mensagens
DATA : t_mensagem LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
* Tabela de parmetros da transao
DATA : e_ctu_params LIKE ctu_params OCCURS 0 WITH HEADER LINE.
* tabela BDC (telas, campos e comandos)
DATA: BEGIN OF tg_bdc OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF tg_bdc.
*----------------------------------------------------------------------*
* Start-of-Selection
*----------------------------------------------------------------------*
START-OF-SELECTION.
. . .
* primeiro preenchemos os parmetros para execuo do call transaction
PERFORM preenche_e_ctu_params.
. . .
*---------------------------------------------------------------------*
* FORM PREENCHE_E_CTU_PARAMS
* preenche a tabela e_ctu_params com dados utilizados na transao
*---------------------------------------------------------------------*
FORM preenche_e_ctu_params.
e_ctu_params-dismode = 'N'. no visvel
e_ctu_params-updmode = 'S'. atualizar
e_ctu_params-defsize = 'X'. usar tamanho default de tela
APPEND e_ctu_params.
ENDFORM.
" PREENCHE_E_CTU_PARAMS
. . .
* aps definirmos os dados a serem inputados, montamos a tabela BDC, como

Wander Rodrigues / Claudia Oliveira v09

Pgina 539 de 654

TREINAMENTO ABAP
* segue:
PERFORM insert_item USING: 'X'
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '

'SAPMM07M'
'BDC_CURSOR'
'BDC_OKCODE'
'MKPF-BLDAT'
'MKPF-BUDAT'
'MKPF-BKTXT'
'RM07M-BWARTWA'
'RM07M-WERKS'
'RM07M-LGORT'
'XFULL'
'RM07M-WVERS3'

'0400'
'RM07M-LGORT'
'/00'
v_data
v_data
c_texto
c_movto
p_werks
p_lgort
c_x
c_x

,
,
,
,
,
,
,
,
,
,
.

* no exemplo acima estamos acessando a tela 0400 do programa SAPMM07M e


informando diversas constantes/variveis nos seus campos.
. . .
*---------------------------------------------------------------------*
* FORM INSERT_ITEM
*---------------------------------------------------------------------*
FORM insert_item USING vl_kind TYPE c
vl_name TYPE c
vl_value TYPE any.
CASE vl_kind.
*
informao de tela
WHEN 'X'.
tg_bdc-dynbegin = 'X'.
tg_bdc-program = vl_name.
tg_bdc-dynpro
= vl_value.
*

informao de campo
WHEN ' '.
tg_bdc-dynbegin = ' '.
tg_bdc-fnam
= vl_name.
tg_bdc-fval
= vl_value.
ENDCASE.

APPEND tg_bdc.
CLEAR tg_bdc.
ENDFORM. "INSERT_ITEM
. . .
* aps informar todo o mapeamento na tabela bdc, podemos chamar a transao para
execuo automtica
* Executa transacao MB1A
CALL TRANSACTION c_trans USING tg_bdc
OPTIONS FROM e_ctu_params
MESSAGES INTO t_mensagem.
PERFORM verifica_msgs_transacao.
* Limpa a tabela tg_bdc
REFRESH tg_bdc.
. . .
*---------------------------------------------------------------------*
* FORM VERIFICA_MSGS_TRANSACAO
* verifica os erros ocorrido na transao e monta mensagem de erro
*---------------------------------------------------------------------*
FORM verifica_msgs_transacao.
DATA: vl_msgid
LIKE t100-arbgb, " ID da mensagem
vl_msgnr
LIKE t100-msgnr, " Numero da mensagem
vl_msgv1
LIKE balm-msgv1, " mensagem 1
vl_msgv2
LIKE balm-msgv2, " mensagem 2
vl_msgv3
LIKE balm-msgv3, " mensagem 3
vl_msgv4
LIKE balm-msgv4, " mensagem 4
vl_msg_text(120) TYPE c
, " Mensagem concatenada
vl_conterros TYPE i
. " Contador de erros
v_erro = 0.
*

Monta mensagem
LOOP AT t_mensagem.

Wander Rodrigues / Claudia Oliveira v09

Pgina 540 de 654

TREINAMENTO ABAP

se houve mensagem de erro.


IF t_mensagem-msgtyp NA 'IWS' OR sy-subrc NE 0.
vl_conterros = vl_conterros + 1.
CLEAR vl_msg_text.
vl_msgid
vl_msgnr
vl_msgv1
vl_msgv2
vl_msgv3
vl_msgv4

=
=
=
=
=
=

t_mensagem-msgid.
t_mensagem-msgnr.
t_mensagem-msgv1.
t_mensagem-msgv2.
t_mensagem-msgv3.
t_mensagem-msgv4.

CALL FUNCTION 'MESSAGE_PREPARE'


EXPORTING
msg_id
= vl_msgid
msg_no
= vl_msgnr
msg_var1
= vl_msgv1
msg_var2
= vl_msgv2
msg_var3
= vl_msgv3
msg_var4
= vl_msgv4
IMPORTING
msg_text
= vl_msg_text
EXCEPTIONS
function_not_completed = 1
message_not_found
= 2
OTHERS
= 3.
IF sy-subrc <> 0.
ENDIF.
v_erro = 1.
WRITE : vl_msg_text.
ENDIF.
ENDLOOP.
ENDFORM.

"verifica_msgs_transacao

Wander Rodrigues / Claudia Oliveira v09

Pgina 541 de 654

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 542 de 654

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 543 de 654

TREINAMENTO ABAP

Preencha o nome do banco e clique em Salvar

Wander Rodrigues / Claudia Oliveira v09

Pgina 544 de 654

TREINAMENTO ABAP

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

Clique em Voltar para retornar primeira tela da transao SHDB

Quando quiser exibir o SHDB, basta executar a transao SHDB, marcar a linha
desejada e clicar em exibir (culos)

Wander Rodrigues / Claudia Oliveira v09

Pgina 545 de 654

TREINAMENTO ABAP

Voc ir ver o SHDB gerado para a transao FI01

Para montar o mapeamento do SHDB dentro do seu programa voc deve declarar uma
tabela interna da seguinte forma:
DATA: it_bdcdata TYPE TABLE OF bdcdata WITH HEADER LINE.
A tabela interna do tipo bdcdata que uma estrutura standard especfica para executar
batchinput. Voc pode entrar na transao SE11 e exibir a estrutura BDCDATA:

Wander Rodrigues / Claudia Oliveira v09

Pgina 546 de 654

TREINAMENTO ABAP

A sua tabela interna ter ento 5 campos:


PROGRAM
DYNPRO
DYNBEGIN
FNAM
FVAL
Esta tabela interna dever ser preenchida exatamente de acordo com o SHDB gerado
(exceto a primeira linha), mudando apenas os valores fixos pelos valores da tabela
interna de banco. Exemplo:

Primeira linha do SHDB IGNORAR

Wander Rodrigues / Claudia Oliveira v09

Pgina 547 de 654

TREINAMENTO ABAP

Segunda linha
Neste caso preencher a tabela interna it_bdcdata da seguinte forma:
Clear it_bdcdata.
It_bdcdata-program = SAPMF02B.
It_bdcdata-dynpro = 0100.
It_bdcdata-dynbegin = X.
Append it_bdcdata.
Terceira linha
Neste caso preencher a tabela interna it_bdcdata da seguinte forma:
Clear It_bdcdata.
It_bdcdata-fnam
= BDC_CURSOR.
It_bdcdata-fval.
= BNKA-BANKL.
Append it_bdcdata.
E da em diante at a ltima linha do mapeamento.
Cada coluna do SHDB corresponde a um campo da tabela interna.

Wander Rodrigues / Claudia Oliveira v09

Pgina 548 de 654

TREINAMENTO ABAP
Ao final do mapeamento sua tabela interna it_bdcdata estar preenchida com todas as
informaes necessrias para cadastrar um banco na transao standard FI01. Em
seguida, chamar a transao FI01 passando a tabela it_bdcdata como parmetro para
que o cadastro seja efetuado.
Sintaxe:
CALL TRANSACTION FI01
USING it_bdcdata
MODE A
UPDATE S
MESSAGES INTO it_mestab.
A tabela interna it_mestab deve ser do tipo BDCMSGCOLL e ir conter as mensagens
emitidas durante a execuo da transao FI01.
Resumindo, a lgica do programa pode ser definida assim:
Selecionar entrada (arquivo txt, planilha Excel, tabela transparente, tabela em outro
banco de dados)
Para cada banco encontrado (loop na tabela interna de bancos)
Limpar a tabela interna it_bdcdata e it_mestab.
Preencher a tabela interna it_bdcdata conforme o SHDB gerado modificando os
valores utilizados na gerao do SHDB pelos campos da tabela interna de
bancos.
Chamar a transao FI01 para executar o batchinput
Em caso de erro, tratar a tabela interna it_mestab.
Fim para cada banco

Wander Rodrigues / Claudia Oliveira v09

Pgina 549 de 654

TREINAMENTO ABAP

QUERY e QUICK VIEWER - CONCEITOS BSICOS


A ferramenta ABAP/4-QUERY utilizada para desenvolver relatrios bsicos e
especficos de cada rea. Estes relatrios so tratados como QUERY.
Na maioria das vezes esta ferramenta no est disponvel aos usurios de forma
geral, devido ao risco de uma consulta poder causar srios problemas de
performance no ambiente.
Neste tpico, temos um passo a passo do QUICK VIEWER, que uma forma mais
gil de montar estas consultas.
Quanto montagem de queries, estaremos entregando material auxiliar, pois
devido a maior complexidade no conseguiremos abordar todas suas caractersticas
neste momento.

Quick Viewer
Transao SQVI

Informa nome da nova consulta e clica no boto CREATE.

Wander Rodrigues / Claudia Oliveira v09

Pgina 550 de 654

TREINAMENTO ABAP

Informa ttulo e clica no boto OK.

Wander Rodrigues / Claudia Oliveira v09

Pgina 551 de 654

TREINAMENTO ABAP

Clica no boto INSERT TABLE, para informar as tabelas que faro parte do

JOIN.

Wander Rodrigues / Claudia Oliveira v09

Pgina 552 de 654

TREINAMENTO ABAP
Informa a primeira tabela e tecla OK.

Informa segunda tabela e tecla OK.

Wander Rodrigues / Claudia Oliveira v09

Pgina 553 de 654

TREINAMENTO ABAP
Mostrar os relacionamentos.

Mostrar a condio, selecionando DISPLAY JOIN CONDITION.

Wander Rodrigues / Claudia Oliveira v09

Pgina 554 de 654

TREINAMENTO ABAP
Voltar uma tela com F3 ou boto BACK.

Escolher os campos.

Wander Rodrigues / Claudia Oliveira v09

Pgina 555 de 654

TREINAMENTO ABAP

Clicar em LAYOUT MODE.

Dois cliques no table join (em verde) atualiza a linha do relatrio a direita.
Para voltar a tela anterior clicar em basis mode.
FUNCIONAMENTO:
Clica na opo e arrasta para as linhas:
Por exemplo, se clica no normal fica com o quadrado azul:

Wander Rodrigues / Claudia Oliveira v09

Pgina 556 de 654

TREINAMENTO ABAP

Arrastar o azul do normal para a linha do relatrio.


PARA COLOCAR CAMPOS EM SORT:
Clicar no campo e arrastar para a janela sort.

Wander Rodrigues / Claudia Oliveira v09

Pgina 557 de 654

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 558 de 654

TREINAMENTO ABAP

APLICAO DE NOTAS
O ambiente OSS (Online Service System) permite ao usurio pesquisar solues para
mensagens de problemas que possam ocorrer no sistema.
Tambm neste ambiente so encontradas as Notas SAP com as alteraes aplicveis para
cada soluo.
Algumas notas SAP, alteram o cdigo de seus objetos.
Neste caso, o consultor abap implementa as alteraes, conforme especificado.
Normalmente o consultor funcional do mdulo que detecta a necessidade de aplicao da
nota e o consultor de basis que fornece as chaves de registro dos objeto. No entanto, isso
pode variar de acordo com a poltica de trabalho de cada projeto.
Abaixo, instrues bsicas para aplicao de uma nota.

PARA BAIXAR UMA NOTA SAP ESPECFICA:


Logon em ambiente de desenvolvimento.
/ooss1 (abre nova sesso acessando ambiente OSS)
Logon To Sapnet
1_PUBLIC
Informa Usurio e Senha para OSS (obtm com basis)
General Functions
Sap Notes
Find
407721 (nmero da nota)
Find
2 cliques na nota
clique direito
Download (para gravar em arquivo texto)
PARA PEGAR CHAVE DE REGISTRO DOS OBJETOS:
Logon em ambiente de desenvolvimento.
/ooss1 (abre nova sesso acessando ambiente OSS)
Logon To Sapnet
1_PUBLIC
Informa Usurio e Senha para OSS (basis repassa)
Registration
Registration Objects
Em nome do objeto informar o que aparece quando solicita a chave
Ex: PROG J_1BBR20

Wander Rodrigues / Claudia Oliveira v09

Pgina 559 de 654

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 560 de 654

TREINAMENTO ABAP
Como obter melhor performance
Grandes viles
Podemos destacar algumas construes como viles no que dizem respeito
performance:
Selects encadeados ao invs do uso de For All Entries;
Select ... Append ... Endselect ao invs do uso de Into Table;
Select * ao invs de Select <campos>;
Select single sem a chave completa ao invs de Select Up To 1 Rows;
No uso de ndices ou pesquisa por chaves primrias;
Falta de ateno no uso de selects em Cluster Tables;
Move-Corresponding por necessitar de comparao campo a campo.
Sort itab ao invs de Sort itab by campo1 campo2.
Read table sem binary search.

Wander Rodrigues / Claudia Oliveira v09

Pgina 561 de 654

TREINAMENTO ABAP

Comunicao entre Application Server e Database


Server
A comunicao entre o servidor de aplicaes e o servidor do banco de dados
realizada por meio de pacotes, que possuem tamanho fixo de bytes. Quanto maior for a
quantidade de informaes solicitada ao banco de dados, maior ser o nmero de
pacotes a ser trafegado na rede. Alm disso, temos que cada pacote necessita de um
registro de header para que ele possa encontrar seu destino na rede. Como
consequncia, temos um maior overhead na comunicao.
Isto significa que selecionando somente as colunas desejadas das tabelas, temos uma
reduo no nmero de informaes trafegadas e, consequentemente, um tempo menor
na comunicao.
Exemplo:
Select * from vbak.
Supondo que a tabela VBAK possua 1.000 registros e que cada registro possua 575
bytes, temos um total de 575.000 bytes a trafegarem pela rede. Se a rede estiver
configurada para utilizar pacotes de 32 Kbytes (32.768 bytes), temos 18 pacotes.
Considerando que cada pacote possui um header para identificao, podemos chegar a
at 25 pacotes. Se fossem selecionadas somente as colunas desejadas, poderamos obter
um ganho no nmero de pacotes a transitarem na rede.
Selects encadeados
Quando temos que utilizar selees entre tabelas dependentes, aparentemente mais
simples encadear os selects e no final processar o dado encontrado. Porm, quanto mais
cursores o R/3 possui aberto, mais lenta a pesquisa. Por este motivo construes onde
temos selects encadeados, ou ainda, vrios comandos dentro do bloco select ... endselect
so condenadas.
Cursor Cashing
Quando um comando select executado, o database server executa comandos de
Declare e Prepare antes da seleo propriamente dita. Em selees repetidas dentro de
um mesmo programa, estes comandos podem ser evitados desde que os campos da
clusula where e os campos de seleo estejam sempre na mesma ordem. Para isto,
sugere-se que se utilize sempre a mesma ordem do Data Dictionary.
Exemplo:
Pela ordem invertida dos campos, cada um dos comandos abaixo utiliza os comandos
Declare e Prepare.
Select vbeln auart into (vbak-vbeln, vbak-auart) from vbak where vbeln = xxx and auart = yyy.
Select vbeln auart into (vbak-vbeln, vbak-auart) from vbak where auart = yyy and vbeln = xxx.
Select auart vbeln into (vbak-auart, vbak-vbeln) from vbak where vbeln = xxx and auart = yyy.
Select auart vbeln into (vbak-auart, vbak-vbeln) from vbak where auart = yyy and vbeln = xxx.

Wander Rodrigues / Claudia Oliveira v09

Pgina 562 de 654

TREINAMENTO ABAP

Logical Database
Supondo um banco de dados lgico definido com quatro tabelas e um programa que
utiliza somente duas (a primeira e a terceira da hierarquia). Caso somente as trs
primeiras tabelas sejam declaradas na clusula tables, o banco de dados lgico trar
automaticamente todos os campos chaves da tabela omitida e todos os campos das
tabelas declaradas e que no so utilizadas no comando get. Sendo assim, mais
vantajoso declarar todas as tabelas e realizar um get nas no utilizadas somente com um
dos campos chave.
Exemplo:
Logical Database VAV: VBAK VBUK VBKD VBPA
tables: vbak, vbuk, vbkd, vbpa.
get vbak fields vbeln auart kunnr.
get vbuk fields vbeln.
Somente para no buscar todos os campos chaves
get vbkd fields vbeln.
Somente para no buscar todos os campos chaves
get vbpa fields vbeln parvw kunnr.
Direct Access
Sempre que no for possvel direcionar a pesquisa para a chave primria ou ndices
secundrios, o sistema realizar uma busca sequencial no banco de dados, isto significa
que ele passar por todos os registros da tabela para conseguir encontrar os registros
desejados. Especificando os campos chaves ou os campos de algum ndice secundrio
na relao de campos do where, o sistema realiza um acesso direto, reduzindo
bruscamente o nmero de registros pesquisados.
Para saber se um determinado ndice secundrio est sendo utilizado, pode-se utilizar a
transao ST05 (SQL Trace) e na lista apresentada, selecionar a opo Explain SQL.
Recursos do Banco de Dados
Sempre que possvel, utilize recursos do banco de dados como os comandos sum, avg,
min e max. Com isto, obtemos ganho em relao comunicao, onde o volume de
informaes a trafegarem diminui e em relao processamento interno, visto que o
programa no precisar realizar o comando j executado pelo banco de dados. Isto , em
vez de selecionar, por exemplo, 1.000 registros com valores de ordens de vendas para
som-los no programa, utilize o comando sum e pegue apenas 1 registro com o valor da
soma.

Uso dos Operadores


O uso de vrios operadores or para o mesmo campo pode ser substitudo por um
operador in.
Exemplo:
A operao lgica: x1 = a1 and ( x2 = y1 or x2 = y2 or x2 = y3)
Pode ser substituda por:
x1 = a1 and x2 in (y1, y2, y3)

Wander Rodrigues / Claudia Oliveira v09

Pgina 563 de 654

TREINAMENTO ABAP

Comando update
Podemos utilizar o comando update...set... no lugar dos comandos select... e update... .
Exemplo:
Em vez de utilizar o comando:
Select * from sflight
where carrid = LH.
Add 1 to sflight-seatsocc.
Update sflight.
Endselect.
Deve ser utilizado o comando:
Update
sflight
set seatsocc = v_seatsocc + 1
where carrid = LH
Comando insert
Ao realizar a insero de vrios registros de uma mesma tabela interna para uma tabela
transparente, podemos utilizar um nico comando insert ... from table ... accepting
duplicate keys ao invs dos comandos loop ... insert ... endloop.
A adio accepting duplicate keys deve ser utilizada se existe a suspeita de que algum
registro da tabela interna possa existir na tabela transparente. Neste caso, o comando
no terminado no meio da execuo, mas SY-SUBRC zerado. Em caso de erro, deve
ser utilizado um update ... from table ... para que os registros existentes possam ser
atualizados.

Wander Rodrigues / Claudia Oliveira v09

Pgina 564 de 654

TREINAMENTO ABAP

Cluster Tables
Aparentemente, sempre mais vantajoso especificar todos os campos possveis na
clusula where, pois assim diminumos o nmero de dados selecionados j no Banco de
Dados. Esta regra possui uma nica exceo: Cluster Tables. Este tipo de tabela, possui
uma estrutura diferente no Banco de Dados. Os campos que ela possui so os campos
chaves e um outro que possui todos os demais campos compactados. Tomando por
exemplo a tabela BSEG, podemos dizer que ela possui 6 campos: MANDT, BUKRS,
BELNR, GJAHR, BUZEI e todos os demais campos compactados em um s. Em
termos prticos, se especificarmos na clusula where algum campo que no seja chave,
o banco de dados ter que descompactar todo o campo para realizar a comparao.
Exemplo:
O comando abaixo deve ser evitado:
Select belnr buzei zuonr
into table i_bseg
from bseg
for all entries in i_bkpf
where bukrs = i_bkpf-bukrs and
belnr = i_bkpf-belnr and
zterm = 0001.
E o comando abaixo deve ser utilizado:
Select belnr buzei zuonr zterm
into table i_bseg
from bseg
for all entries in i_bkpf
where bukrs = i_bkpf-bukrs and
belnr = i_bkpf-belnr.
Delete i_bseg where zterm <> 0001.

Wander Rodrigues / Claudia Oliveira v09

Pgina 565 de 654

TREINAMENTO ABAP

Selees de mltiplas tabelas


Para a seleo em mais de uma tabela, dispomos de alguns meios que no prejudicam a
performance. O que podemos definir como regra o que no fazer: utilizar selects
encadeados.
Os meios disponveis dependem da verso do R/3 que est sendo utilizada:
A clusula For all entries;
A clusula Inner Join;
A clusula Left Outer Join;
Criao de Views no Dicionrio de dados.
Baseado em testes realizados com o Runtime Analise (transao SE30), foi comprovado
que a melhor soluo, quando possvel, utilizar as clusulas de join no banco de dados
(Inner Join e Left Outer Join). Estas opes so vlidas para verses de Kernel do SAP
R/3 acima de 31I. Mesmo quando a verso 30F, podemos ter o kernel atualizado para
31I.

Wander Rodrigues / Claudia Oliveira v09

Pgina 566 de 654

TREINAMENTO ABAP

Clusula For All Entries


Esta clusula deve ser utilizada sempre que a seleo de uma tabela depende
diretamente dos dados que esto em outra. Por exemplo, tendo uma tabela interna com
todas as ordens de venda (i_vbak) podemos utilizar este comando para selecionar todos
os itens destas ordens de venda (vbap) com apenas um comando.
Exemplo:
Em vez de utilizar:
loop at i_vbak.
Select vbeln posnr matnr appending table i_vbap
from vbap where
vbeln = i_vbak-vbeln.
endloop.
Pode-se utilizar o comando:
Select vbeln posnr matnr into table i_vbap
from vbap
for all entries in i_vbak
where vbeln = i_vbak-vbeln.
Alm de permitir a seleo em apenas um comando, temos ainda um ganho de
performance. No primeiro exemplo, para cada select executado dentro do loop, o banco
de dados realiza um Fetch / Open / Close. Para o segundo exemplo, temos a sequncia
Fetch / Open / Fetch / Reopen / ... / Fetch / Reopen / Close. O tempo do ganho ,
basicamente o temos de todos os Close somados. Para analisar estes resultados, utilize a
transao ST05 (SQL Trace).
Cuidados especiais com o For All Entries
Registros repetidos: todos os registros repetidos na tabela de resultados so eliminados.
Portanto aconselhvel a utilizao de campos chaves na tabela final para evitar a
duplicidade. Por exemplo, se a partir de uma tabela de ordens de venda, deseja-se
selecionar todos os itens com suas quantidades, na tabela de itens devemos utilizar os
campos vbeln e posnr, pois somente assim ordens com o mesmo material e quantidade
sero apresentadas.
Tabelas em branco: caso a tabela do for all entries esteja vazia, todos os registros da
tabela selecionada sero lidos. Portanto, deve-se tomar cuidado com o valor do sy-subrc
em selects sucessivos.
Dados invlidos: se a tabela do for all entries possuir algum dado invlido, o select ser
abortado.
Clusula Inner Join
Esta clusula tem o mesmo resultado de uma definio de view no Dicionrio de dados.
As duas tabelas so relacionadas e os registros que pertencem s duas so selecionados.
Exemplo:
Select f~carrid f~connid f~distance b~carrid b~connid b~bookid
into table i_bookflight
Wander Rodrigues / Claudia Oliveira v09

Pgina 567 de 654

TREINAMENTO ABAP
from
on
and
and
where
and

sflight as f inner join sbook as b


f~carrid = b~carrid
f~connid = b~connid
f~fldate = b~fldate
f~fldate = '19990623'
b~smoker = space.

Wander Rodrigues / Claudia Oliveira v09

Pgina 568 de 654

TREINAMENTO ABAP

Clusula Left Outer Join


Esta clusula difere da anterior pelo fato de que para um registro entrar na tabela de
resultados, no necessita estar nas duas tabelas, bastando estar em uma das duas.
Exemplo:
Select f~carrid f~connid f~distance b~carrid b~connid b~bookid
into table i_bookflight
from sflight as f left outer join sbook as b
on
f~carrid = b~carrid
and f~connid = b~connid
and f~fldate = b~fldate
where f~fldate = '19990623'
and b~smoker = space.

Criao de Views
Ao criar uma view no dicionrio de dados, estamos criando tambm uma view no banco
de dados e, portanto o seu acesso torna-se rpido.

Wander Rodrigues / Claudia Oliveira v09

Pgina 569 de 654

TREINAMENTO ABAP
Table Buffering
Utilizando-se corretamente a buferizao, pode-se reduzir consideravelmente o tempo
que se leva para recuperar um registro.
Tipos de buferizao
Completo: no primeiro acesso tabela, todo o seu contedo armazenado no buffer;
Genrico: especificado um nmero n de campos chaves desejados e assim que um
acesso efetuado, todos os registros que contm chave igual aos n campos chaves do
acesso so armazenados no buffer;
Parcial: Somente os registros lidos so armazenados no buffer.
Para analisar se o tipo de buferizao est correto, pode-se utilizar a transao ST02.
Quando buferizar?
Tabelas pequenas;
Tabelas acessadas muito mais para leitura que para escrita;
Tabelas de controle (parametrizao);
Tabelas Master Data pequenas.
Bypassing buffer
Podemos destacar alguns comandos que ignoram a existncia do buffer:
select ... bypassing buffer;
select ... from <database views>
select ... distinct;
select ... count, sum, avg, min, max;
select ... order by (campos que no so chaves);
select ... for update;
clusula where que contm o comando IS NULL;
SQL nativo (EXEC SQL ... ENDEXEC).

ndices secundrios para as tabelas transparentes


Somente possvel criar ndices secundrios para tabelas transparentes. Tabelas cluster
e polled no possuem esta caracterstica. Sempre que uma tabela acessada por campos
que no so os campos chaves, deve ser analisada a possibilidade de criao de ndices,
porm devemos ter cuidado na utilizao para garantir que o comando est utilizando o
ndice correto. Pode-se verificar o ndice utilizado pela transao ST05. Sempre que
necessria a criao de um ndice secundrio, esta possibilidade dever ser analisada por
um DBA.
Exemplo:
Caso tenho sido criado um ndice com os campos campo3 e campo7 de uma
determinada tabela, o comando
select <campos>
from <tabela>
where campo3 = AAA and
( campo7 = 2 or campo7 = 3 )
pode no executar corretamente o ndice criado.

Wander Rodrigues / Claudia Oliveira v09

Pgina 570 de 654

TREINAMENTO ABAP
Portanto deve-se preferir o comando
select <campos>
from <tabela>
where ( campo3 = AAA and campo7 = 2 ) or
( campo3 = AAA and campo7 = 3 )
Quando utilizar ndices secundrios
Campos no chaves so repetidamente utilizados para selees;
Somente uma pequena parte de uma grande tabela selecionada;
Clusulas where no muito complexas;
Campos que compe o ndice reduzem significativamente o nmero de registros
Quando no utilizar ndices secundrios
Tabelas que so atualizadas constantemente gereram excessivos overheads durante a
atualizao dos ndices;
Campos que possuem valores semelhantes em toda a tabela.

Wander Rodrigues / Claudia Oliveira v09

Pgina 571 de 654

TREINAMENTO ABAP

Tabelas internas e alocao de memria


Vimos que selects encadeados so viles contra a performance. A soluo jogar os
dados para a memria com a clusula into table. Porm tambm no podemos ficar com
todos os dados na memria por muito tempo, pois caso a memria RAM do Application
Server esteja esgotada, ele dever utilizar memria virtual, ou seja, armazenar
informaes e dados dos programas em disco, ocorrendo perda de tempo com paginao
e E/S de disco. A soluo utilizar o comando free para liberar todas as tabelas internas
que no sero mais utilizadas pelo programa.
Definio de tabelas internas
Para a definio das tabelas internas, necessrio que seja preenchida a clusula occurs.
Como defin-la? Para isto, deve-se conhecer o volume de dados e a forma de insero
dos dados na tabela interna. Isto porque o nmero especificado para as ocorrncias
(occurs) indica de quanto em quanto a tabela ter sua alocao de memria. Isto , para
uma tabela definida com occurs 10, na primeira insero de dados (append, collect,
insert), sero alocados 10 registros; na insero do 11o. registro, sero alocados mais 10
posies e assim por diante.
Desalocao temporria de memria
Caso uma tabela interna deva permanecer na memria enquanto realizado algum
processamento pesado, uma soluo exportar a tabela para a memria (com o
comando export <i_tab> to memory id <posio de memria>) e ao final deste
processamento, buscar a tabela de onde ela se encontra (com o comando import <i_tab>
from memory id <posio de memria>).
Expresses lgicas
Toda expresso lgica interpretada da esquerda para a direita, isto , se uma expresso
com duas condies e um operador and processada e a primeira condio falsa, a
segunda nem ser processada. Portanto, todas as expresses lgicas devero ser
montadas levando-se em conta a probabilidade de sucesso ou falha em cada uma de suas
condies
Call Function ... In Update Task
Praticamente todos os programas standard utilizam esta ferramenta para que a
atualizao de dados no se torne o gargalo do sistema. Isto significa que a transao
realiza todas as verificaes necessrias e em seguida chama uma funo que enfileira
no servidor a requisio para a atualizao dos dados. Caso acontea alguma exceo na
atualizao dos dados, o usurio recebe uma mensagem de update was terminated.

Wander Rodrigues / Claudia Oliveira v09

Pgina 572 de 654

TREINAMENTO ABAP
Ferramentas para auxlio no desenvolvimento
Em busca de uma melhor performance no desenvolvimento das aplicaes, podemos
contar com uma srie de ferramentas disponibilizadas no R/3, onde podemos verificar
os recursos utilizados pelos servidores de aplicao e de banco de dados.

Wander Rodrigues / Claudia Oliveira v09

Pgina 573 de 654

TREINAMENTO ABAP

ST02 - System Workload Analysis:


Nesta transao possvel analisar o tempo de resposta de diversas operaes
executadas pelos servidores.

Wander Rodrigues / Claudia Oliveira v09

Pgina 574 de 654

TREINAMENTO ABAP

ST04 - Cursor Cash


Nesta transao possvel analisar a performance do banco de dados por completo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 575 de 654

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 576 de 654

TREINAMENTO ABAP

SE30 - Runtime Analisys


Nesta transao, podemos selecionar quais os objetos que sero analisados: subrotinas,
tabelas internas, acessos BD e acesso memria. A execuo, simula a transao (ou
programa) em questo e no final, exibe um relatrio detalhado de todos os acessos
realizados pelo programa.

Wander Rodrigues / Claudia Oliveira v09

Pgina 577 de 654

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 578 de 654

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.

Wander Rodrigues / Claudia Oliveira v09

Pgina 579 de 654

TREINAMENTO ABAP

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 580 de 654

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:
select nome, sobrenome, cidade
from empregados
where nome LIKE 'Ana%';

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

Wander Rodrigues / Claudia Oliveira v09

Pgina 581 de 654

TREINAMENTO ABAP
Ou voc pode escrever:
select nome, sobrenome, cidade
from empregados
where nome LIKE '%er';

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

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

Tabela de exemplo: empregados


Nome
Ana

Sobrenome matricula idade


Vieira

cidade

estado

99980

45

Belo Horizonte MG

Ana Maria Santos

99982

25

Belo Horizonte MG

Diego

Rodrigues

88232

32

Volta Redonda RJ

Claudio

Carvalho

88233

32

Vitria

ES

Claudia

Oliveira

98002

42

Curitiba

PR

Liza

Rodrigues

92001

23

Belo Horizonte MG

Iraq

Rodrigues

22322

35

Belo Horizonte MG

Andrea

Oliveira

32326

52

Belo Horizonte MG

Wander

Rodrigues

32327

60

Curitiba

PR

Leroy

Brown

32380

22

Budapeste

HU

Wander Rodrigues / Claudia Oliveira v09

Pgina 582 de 654

TREINAMENTO ABAP

EXERCCIO 1
Verifique os comandos SQL abaixo e informe qual seria o resultado de cada um deles:
1.1)

select nome, sobrenome, cidade from empregados;

Wander Rodrigues / Claudia Oliveira v09

Pgina 583 de 654

TREINAMENTO ABAP
1.2)

select sobrenome, cidade, idade from empregados


where idade > 30;

1.3)

select nome, sobrenome, cidade, estado from empregados


where nome LIKE 'A%';

1.4)

select * from empregados;

Wander Rodrigues / Claudia Oliveira v09

Pgina 584 de 654

TREINAMENTO ABAP

1.5)

select nome, sobrenome, from empregados


where sobrenome LIKE '%s';

1.6)

select nome, sobrenome, idade from empregados


where sobrenome LIKE '%eir%';

1.7) select * from empregados where nome = 'Iraq';

Wander Rodrigues / Claudia Oliveira v09

Pgina 585 de 654

TREINAMENTO ABAP

EXERCCIO 2
Crie os comandos SQL para selecionar as seguintes informaes:
2.1) Exibir o primeiro nome e a idade para todos os registros da tabela

2.2) Exibir o nome, sobrenome e cidade para todos os empregados que no forem de
Belo Horizonte

2.3) Exibir todas as colunas para todos os empregados com mais de 40 anos

Wander Rodrigues / Claudia Oliveira v09

Pgina 586 de 654

TREINAMENTO ABAP

2.4) Exibir o nome e o sobrenome para todos os empregados cujo sobrenome termine
com s

2.5) Exibir todas as colunas para todos os empregados cujo primeiro nome seja igual a
Ana

2.6) Exibir todas as colunas para todos os empregados cujo nome comece com Ana.

Wander Rodrigues / Claudia Oliveira v09

Pgina 587 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 588 de 654

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.
insert into "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:
insert into empregados
(nome, sobrenome, matricula, idade, cidade, estado)
values
('Lucas', 'Martineli', 99324, 18,'Belo Horizonte', 'MG');

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

Wander Rodrigues / Claudia Oliveira v09

Pgina 589 de 654

TREINAMENTO ABAP

EXERCICIO 3
3.1) Escrever um comando SQL para incluir o empregado abaixo na tabela de
empregados:
Nome:
Sobrenome:
Matricula:
Idade:
Cidade:
Estado:

Ludmila
Netto
99123
14
Sabar
MG

3.2) Escrever um comando SQL para incluir o empregado abaixo na tabela de


empregados:
Nome:
Sobrenome:
Matricula:
Idade:
Cidade:
Estado:

Felipe
Netto
99124
75
Sabar
MG

Wander Rodrigues / Claudia Oliveira v09

Pgina 590 de 654

TREINAMENTO ABAP

A partir deste momento sua tabela est assim (verifique que foram adicionadas 2 linhas
ao final da tabela):
Tabela de exemplo: empregados
Nome
Ana

Sobrenome matricula idade


Vieira

cidade

estado

99980

45

Belo Horizonte MG

Ana Maria Santos

99982

25

Belo Horizonte MG

Diego

Rodrigues

88232

32

Volta Redonda RJ

Claudio

Carvalho

88233

32

Vitria

ES

Claudia

Oliveira

98002

42

Curitiba

PR

Liza

Rodrigues

92001

23

Belo Horizonte MG

Iraq

Rodrigues

22322

35

Belo Horizonte MG

Andrea

Oliveira

32326

52

Belo Horizonte MG

Wander

Rodrigues

32327

60

Curitiba

PR

Leroy

Brown

32380

22

Budapeste

HU

Ludmila

Netto

99123

14

Sabar

MG

Felipe

Netto

99124

75

Sabar

MG

3.3) Crie um comando SQL para selecionar todas as colunas de todos os empregados

Wander Rodrigues / Claudia Oliveira v09

Pgina 591 de 654

TREINAMENTO ABAP

3.4) Exibir todas as colunas de todos os empregados com idade maior que 20.

3.5) Selecionar nome e sobrenome de todos os empregados com menos de 30 anos.

3.6) Selecionar nome, sobrenome e idade para todos os empregados com sobrenome
igual a Netto.

3.7) Selecione todas as colunas dos empregados cujo sobrenome CONTENHA a letra
o.

Wander Rodrigues / Claudia Oliveira v09

Pgina 592 de 654

TREINAMENTO ABAP

Wander Rodrigues / Claudia Oliveira v09

Pgina 593 de 654

TREINAMENTO ABAP

3.8) Selecionar nome de todos os empregados cujo nome terminem com ia.

3.9) Selecionar todas as colunas dos empregados com mais de 70 anos.

3.10) Selecionar a matricula dos empregados que moram em Sabar.

Wander Rodrigues / Claudia Oliveira v09

Pgina 594 de 654

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:
update agenda
set ddd
= 31
where estado = MG;
update agenda
set sobrenome = 'Souza',
bairro
= Centro
where nome
= 'Carlos';
update empregados
set idade = 28
where nome
= 'Claudio'
and sobrenome = Carvalho

Wander Rodrigues / Claudia Oliveira v09

Pgina 595 de 654

TREINAMENTO ABAP

EXERCICIO 4
4.1) Liza Rodrigues acabou de casar e pediu para trocar seu sobrenome de Rodrigues
para Tavares. Escreva um comando SQL para alterar o sobrenome de Rodrigues para
Tavares, na tabela de empregados, onde o nome for igual a Liza e o sobrenome for igual
a Rodrigues.

4.2) Andrea Oliveira mudou-se para Lagoa Santa. Faa um comando SQL para atualizar
a cidade em que ela vive agora.

Wander Rodrigues / Claudia Oliveira v09

Pgina 596 de 654

TREINAMENTO ABAP
4.3) Os moradores do estado do Paran (PR) foram transferidos para a cidade de
Guaruj, em So Paulo. Escreva um comando SQL para atualizar a cidade e o estado de
todos os moradores de PR para Guaruj, SP.

4.4) Todas as pessoas com sobrenome Oliveira so gmeas. Escreva um comando SQL
para acertar a idade de todas elas para 17.

Wander Rodrigues / Claudia Oliveira v09

Pgina 597 de 654

TREINAMENTO ABAP

DELETE Excluindo registros


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

Exemplos:
delete from empregados;

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


delete from empregados
where sobrenome = 'Rodrigues';
delete from empregados
where nome = 'Wander' or nome = '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 598 de 654

TREINAMENTO ABAP

EXERCICIO 5
5.1) Ana Maria Santos saiu da empresa. Escreva um comando SQL para excluir este
empregado da tabela.

5.2) A empresa fechou a filial do Esprito Santo (ES). Faa um comando SQL para
eliminar todos os registros de empregados que trabalham nesta filial.

Wander Rodrigues / Claudia Oliveira v09

Pgina 599 de 654

TREINAMENTO ABAP

Migrao de Dados para o


Sistema R/3 - LSMW.
Introduo
Ferramenta disponibilizada pela SAP, totalmente free, que permite a
transferncia de dados de um sistema legado (non-SAP) para o R/3 uma
nica vez ou periodicamente. Sua utilizao pode reduzir significativamente
o tempo e o custo com a migrao de dados em um projeto. Pode ser
utilizado a partir da verso 4.0A em diante.
Obs.: As verses anteriores a 4.0 utilizam a verso 1.0 da LSMW.
Maiores informaes: http://sapnet.sap.com/lsmw ou lsmw@sap.com.

Princpios bsicos do LSM Workbench


Os seguintes conceitos e tcnicas da R/2-R/3 Migration Workbench foram
adotados:
Objetos de negcios so transportados (migrados) ao invs de tabelas
individuais ou contedo dos campos
As regras de converso a ser definidas so flexveis e podem ser
customizadas.
Converses de programas pr-programados no so entregues. Estes
programas so melhor produzidos nas bases das regras definidas.

O LSM Workbench foi desenvolvido na base dos seguintes princpios:

A maior parte das funes precisam estar no R/3. No em uma coleo


de programas individuais em diferentes plataformas.
A qualidade e consistncia dos dados importados para o R/3 precisam
ter maior importncia que a velocidade e performance da migrao dos
dados.
Desenvolvimento existente e codificao podem ser usados.
O mapeamento desenvolvido e as regras podem ser reutilizadas e
usadas repetidamente nos projetos.

Wander Rodrigues / Claudia Oliveira v09

Pgina 600 de 654

TREINAMENTO ABAP

Nesta base, um conceito foi desenvolvido que representado no seguinte


diagrama:

As principais vantagens do LSM Workbench:

Parte do R/3 e assim independe das plataformas individuais


Uma variedade de possibilidades tcnicas de converso de dados
Consistncia dos dados devido aos padres das tcnicas de importao
- Batch Input
- Direct Input
- BAPIs (Business Application Programming Interfaces)
- Idocs (Intermediate Documents)
A tcnica de importao a ser utilizada em um caso individual depende
do objeto de negcio.

Gerao de programas de converso baseados nas regras definidas


Processo interativo transparente
Interfacear dados em formato de planilha
Criao de objetos de migrao de dados baseados nas transaes
gravadas
Wander Rodrigues / Claudia Oliveira v09

Pgina 601 de 654

TREINAMENTO ABAP

3.

Pr-condies

O LSM Workbench tem como principais funes:


1. Importar dados (sistema legado em planilhas e/ou arquivos seqenciais)
2. Converter os dados (do formato origem para o formato destino)
3. Importar os dados (para o banco de dados do R/3)
Antes de aplicar o LSM Workbench, os seguintes itens devem ser
considerados, em particular:

Assegure-se que a customizao est terminada.


Determine os dados contidos no seu sistema legado e quais os dados
que sero necessrios no futuro (com a respectiva operao do
negcio).
Decida com bom senso, o uso desta ferramenta com o respectivo
volume de dados a ser transferido.
Identifique a(s) transao(es) no R/3 atravs da qual voc espera
importar os dados para o seu sistema SAP.
Execute a transao no R/3 manualmente com dados de teste do
sistema legado e veja quais campos precisaro ser preenchidos. Nesse
ponto, pode-se definir quais os campos so requeridos (obrigatrios) e
quais os que podero conter valores fixos.
Associe os dados de origem com os dados de destino.
Determine a forma em que os dados do sistema legado (non-SAP)
podem ser transferidos para o sistema SAP (via Move ou de acordo
com uma regra).
Se for necessrio, defina as regras de traduo.
Em qual forma est avaliado os dados do sistema legado? Determine de
acordo com as funes da LSMW que podem ser aplicadas.
Se somente uma parte do sistema legado ser substituda pelo R/3,
determine quais funes sero providenciadas para o sistema SAP e de
qual sistema legado. Se for necessrio, utilize um conceito de fluxos de
dados e arquitetura de interface.

Estas questes precisam ser respondidas diferentemente para cada cliente e precisam
absolutamente ser respondidas antes da ferramenta ser utilizada.

Wander Rodrigues / Claudia Oliveira v09

Pgina 602 de 654

TREINAMENTO ABAP
4. Utilizando a ferramenta LSM Workbench
Para iniciar a utilizao da LSM Workbench, use a transao : LSMW.
Na tela inicial, voc pode criar um novo projeto,
correspondentes e objetos atravs Edit - Creat new entry.

subprojetos

Projeto : Um identificador para nomear o projeto para transferncia de


dados. Se for transferir dados de vrios sistemas legados, pode-se criar um
projeto para cada sistema legado.
Subprojeto :
acima.

Um identificador que usado como atributo da estrutura

Objeto : Um identificador para nomear o objeto de negcio.


Na tela inicial, Project Documentation mostra qualquer documentao
escrita para telas individuais e passos de processamento. Pode-se imprimir
a documentao do projeto, enviar ou salvar em arquivo de vrios formatos.
Aps selecionar um objeto, ENTER ou CONTINUE carrega um guia de
processo interativo. Aqui encontram-se os passos individuais para a
migrao dos dados.
Antes de comear a trabalhar com LSM Workbench, necessrio
primeiramente, mapear o objeto requerido no papel.
Administrao:
Na tela inicial, pode-se exibir a funo de administrao via Goto/
Administration. Aqui encontra-se a lista de todos os projetos existentes.
Recordings:
Na tela inicial, pode-se exibir a funo de gravao via Goto/ Recording.
Se nenhum dos programas padro de Batch Input ou nenhum programa
padro de Direct Input ou nenhum IDOC so avaliveis para o objeto de
dados, pode-se cri-lo usando a funo de Recording da LSM Workbench.
Entretanto,
alm desses casos onde um programa padro avalivel, o recording pode
ser feito a fim de reduzir o nmero de campos destinos.
OBS.: A funo de gravao (Recording) grava uma seqncia de tela fixa.
Isto no pode ser usado para migrao de dados contendo um varivel
nmero de itens.

Wander Rodrigues / Claudia Oliveira v09

Pgina 603 de 654

TREINAMENTO ABAP
Dicas gerais para o Procedimento:

Assegure-se de que a Customizao do sistema R/3 terminou.


Identifique os campos a serem preenchidos no sistema.
Decida qual programa de importao existente a ser utilizado (Batch
Input, Direct Input , BAPIs, Idocs) ou um Recording.
Vantagens dos objetos padres de migrao : Incluem seqncia de tela
que pode variar.
Vantagens do Recording: menor nmero de campos destinos e
avaliabilidade para quase todas as transaes.

Se for utilizar o Recording, grave a transao e o processo da gravao


Especifique : nome dos campos, descrio dos campos e valores
default.

Defina as estruturas do registro dos dados legados e insira-os no R/3.


- Caso 1: Dados so avaliveis em um ou mais arquivos.
Introduza estas estruturas no R/3.
- Caso 2: Dados j existem no sistema legado e o sistema legado
prov uma funo para exportar os dados.

Wander Rodrigues / Claudia Oliveira v09

Pgina 604 de 654

TREINAMENTO ABAP

Introduza este(s) registro(s) de estrutura(s) no R/3.


- Caso 3: Dados j existem no sistema legado e o sistema legado no
prov um funo para exportar os dados
- Defina a estrutura do registro de dados que necessrio.
- Exporte este dados atravs de um programa escrito no sistema
legado.
- Introduza esta(s) estrutura(s) de registros no R/3.
-

Desenvolva o mapeamento do campo e as regras de converso.


Importe os dados automaticamente
Converta os dados

A coluna da esquerda da tabela da transao preenchida automaticamente, se isto for de acordo


com o controle da transao.

Um arquivo seqencial criado.


Mantenha as regras de reusabilidade
Mantenha as tabelas de traduo
Especifique seus valores fixos.
Mantenha a traduo das tabelas e gere uma nova converso.
Importe os dados

Dependendo do tipo de objeto:


- Batch Input / Recording
- Gerar pasta de Batch Input
- Executar pasta de Batch Input
- Iniciar sesso Direct Input
- IDOCs/BAPIs:
- Transferir dados convertidos para processamento de inbound IDOC.
- Checar processamento de inbound.

Exemplo: Especifiao Carga de Equipamentos


Transao : IE01

CAMPO

TAMANHO

Wander Rodrigues / Claudia Oliveira v09

FORMATO

VALOR
FIXO

Pgina 605 de 654

TREINAMENTO ABAP
10

CHAR

CHAR

10

CHAR

25

17

QUANT

18

CHAR

17

CHAR

10

CHAR

40

CHAR

CHAR

0001

10

CHAR

0001

RM63EDATSL
M

RM63EEQTYP
ITOBEQART
ITOBINVNR
ITOBBRGEW
ITOBGROES
ITOBANSWT
BRL

ITOBWAERS
ITOBANSDT
ITOBSHTXT
ITOBSWERK
ITOBSTORT

Wander Rodrigues / Claudia Oliveira v09

Pgina 606 de 654

TREINAMENTO ABAP
Migrao de Dados Passo a Passo

Criar/Selecionar o projeto, subprojeto e objeto.

Clique F8 e siga a seqncia de instrues disponveis.

Wander Rodrigues / Claudia Oliveira v09

Pgina 607 de 654

TREINAMENTO ABAP

De acordo com o objeto, estes passos podem variar e tambm podem


ser configurados selecionando as etapas atravs do Menu Pessoal.

As etapas comuns e necessrias para qualquer objeto esto numeradas e em


itlico.

Wander Rodrigues / Claudia Oliveira v09

Pgina 608 de 654

TREINAMENTO ABAP
1. Entrar com o tipo de objeto e tcnica de importao.

Selecione o Boto Modificar/Exibir e configure os tpicos abaixo:


-

Transferncia peridica ou nica;


Um tipo de objeto e a tcnica de importao possvel (disponvel) para
este objeto.

Wander Rodrigues / Claudia Oliveira v09

Pgina 609 de 654

TREINAMENTO ABAP
2. Definir a estrutura do objeto (origem) com nome, descrio e hierarquia de
relacionamentos (quando houver).

Wander Rodrigues / Claudia Oliveira v09

Pgina 610 de 654

TREINAMENTO ABAP
3. Definir os campos da estrutura.

Existem vrias maneiras de definir e manter os campos destinos.


1. Criar Campos destinos individuais
2. Manter Campos destinos na forma de Tabela
3. Copiar Campos destinos de outras origens : upload, outro objeto, repositrio
de dados, de um arquivo com o nome dos campos na 1 linha.

Obs.: Os campos que forem de valor fixo no R/3 no precisam constar na


estrutura do arquivo texto. Eles tero o seu valor atribudo em outra etapa.

Wander Rodrigues / Claudia Oliveira v09

Pgina 611 de 654

TREINAMENTO ABAP
4. Definir os relacionamentos das estruturas.
Estrutura origem Estrutura destino.

Obs.: Neste exemplo, o objeto standard possui vrias estruturas. Deve-se


associar a estrutura origem somente as estruturas destino (do objeto)
necessrias para a realizao da carga.

Wander Rodrigues / Claudia Oliveira v09

Pgina 612 de 654

TREINAMENTO ABAP
5. Associar os campos origens ao campos destinos e definir como o
contedo ser convertido.
Todos os campos da estrutura destino, que foi selecionado sero exibidos. Para cada
campo destino as seguintes informaes so exibidas:
-

Descrio do campo
Associao campo origem
Tipo de regra (valor fixo, traduo, etc)
Codificao.

Dica : Se escolher EXTRAS ->AUTO-FIELDMAPPING, a LSMW sugestionar


os campos origens que devem ser associados aos seus respectivos campos
destinos.

Wander Rodrigues / Claudia Oliveira v09

Pgina 613 de 654

TREINAMENTO ABAP
5.1 Definir as regras de converso.

Obs.: Nesta etapa, deve-se informar quais so os valores fixos. No exemplo,


estes valores so : EQTYP, WAERS, SWERK e STORT.

6. Processar as regras de reusabilidade de um projeto


-

Valores fixos (global)


Tradues
Rotinas elaboradas pelo programador

Wander Rodrigues / Claudia Oliveira v09

Pgina 614 de 654

TREINAMENTO ABAP
7. Especificar todos os arquivos a serem utilizados:
-

O arquivo de dados antigos no PC ou no servidor R/3.


O arquivo para ler os dados ( o sistema define sozinho )
O arquivo para converter os dados ( o sistema define sozinho )

Nesta etapa, so passados todas as caractersticas do(s) arquivo(s) a ser(em)


lido(s): se contm delimitador, se so dados de uma estrutura de tabela ou
arquivo seqencial.
O LSMW automaticamente nomeia os arquivos lidos com : .lsmw.read e os
arquivos convertidos com : .lsmw.conv . Pode-se tambm usar um * (caracter
curinga) no nome dos arquivos a serem lidos e convertidos quando houver
necessidade de quebra do arquivo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 615 de 654

TREINAMENTO ABAP
8. Associar os arquivos definidos as estruturas origens.

Wander Rodrigues / Claudia Oliveira v09

Pgina 616 de 654

TREINAMENTO ABAP
9. Ler os dados

Obs.: A leitura dos dados considerada realizada com sucesso, quando o n


de linhas do arquivo o mesmo no log gerado e a coluna de registros no
escritos tem o valor 0 (zero).

Wander Rodrigues / Claudia Oliveira v09

Pgina 617 de 654

TREINAMENTO ABAP
10. Exibir os dados lidos

Wander Rodrigues / Claudia Oliveira v09

Pgina 618 de 654

TREINAMENTO ABAP
11. Converter os dados

Wander Rodrigues / Claudia Oliveira v09

Pgina 619 de 654

TREINAMENTO ABAP
12. Conferir os dados convertidos e exibi-los.

Wander Rodrigues / Claudia Oliveira v09

Pgina 620 de 654

TREINAMENTO ABAP
13. Checar os dados convertidos com a Customizao.

Obs.: A conferncia com a Customizao mais uma funcionalidade que


auxilia na consistncia dos dados que esto sendo importados no R/3. A
deteco de erros nem sempre impede a realizao da carga.
Estes erros so criados quando utilizado o modo standard, pois o R/3
considera com problemas todos os campos no utilizados pelo processo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 621 de 654

TREINAMENTO ABAP
14. Importar os dados.
Os passos exibidos para a importao dos dados, dependem do tipo de objeto
selecionado, pode ser :
Batch Input padro ou Recording:
- Gerar pasta de batch input
- Executar pasta de batch input
Direct Input padro
- Inicia pasta direct input
BAPI ou IDOC:
- Inicia criao IDOC
- Inicia processamento IDOc
- Cria overview Idoc
- Inicia postprocessing do Idoc.

No exemplo que estamos seguindo, o Objeto permite a gerao da pasta de


BI, sua execuo e a verificao de erros.

Wander Rodrigues / Claudia Oliveira v09

Pgina 622 de 654

TREINAMENTO ABAP

No exemplo que estamos seguindo, o Objeto permite a gerao da pasta de


BI, sua execuo e a verificao de erros.

Wander Rodrigues / Claudia Oliveira v09

Pgina 623 de 654

TREINAMENTO ABAP
Ao clicar na opo : Executar pasta de BI , automaticamente o sistema chama a transao SM35.

Wander Rodrigues / Claudia Oliveira v09

Pgina 624 de 654

TREINAMENTO ABAP
Caso a opo escolhida seja Call Transaction, observamos o resultado abaixo:

Caso a opo escolhida seja Direct Input, observamos o resultado abaixo:

Wander Rodrigues / Claudia Oliveira v09

Pgina 625 de 654

TREINAMENTO ABAP
Aps a execuo, possvel verificar as transaes incorretas. Caso existam transaes com erros, criada outra pasta que pode ser
processada novamente a partir dos passos acima com as devidas correes.

Dica Importante: Dependendo da carga e da quantidade de campos que ser


necessrio importar para o R/3, eu recomendo, utilizar o Recording e mapear
somente os campos necessrios. Com a utilizao do Recording, agiliza-se o
processo, uma vez que ele no precisa carregar todas as estruturas que o
objeto standard disponibiliza, como foi visto no exemplo citado.

Wander Rodrigues / Claudia Oliveira v09

Pgina 626 de 654

TREINAMENTO ABAP
Batch Input Recording Passo a Passo.

Definio:
Processo pelo qual so definidos todos os mapeamentos dos campos para que possa
reduzir o numero de campos destinos e o tempo de processamento da pasta.
Caso nenhum dos processos anteriores sejam adequados para o processo exigido deve-se
criar um Batch Input Recording.

1. Criando Recordings.
Como no exemplo anterior deve-se Criar/Selecionar Projeto, Subprojeto e Objeto.
Executar a opo atributos do objeto ( passo 1 do ex. anterior ) .
Selecione o Boto Modificar/Exibir e configure os tpicos abaixo:
-

Transferencia peridica ou nica;

Um tipo de objeto e a tcnica de importao possvel para este objeto.

Tipo de
transferencia.

Recordin
g

Wander Rodrigues / Claudia Oliveira v09

Overvie
w.

Pgina 627 de 654

TREINAMENTO ABAP
1.1 Definindo Recording.
Ao pressionar o boto overview a janela a seguir ser apresentada para definio e
descrio do recording.

Ao final aparecera uma janela para digitar o cdigo da transao a ser mapeada .
O LSM Workbench faz uma chamada na transao SHDB para executar o mapeamento
como j visto anteriormente.

Nota : Deve-se ter neste momento um mapeamento j preparado pelo funcional ou um


estudo prvio da transao desejada.

Wander Rodrigues / Claudia Oliveira v09

Pgina 628 de 654

TREINAMENTO ABAP
1.2 Definindo Mapeamento.

VD01

O mapeamento deve seguir o padro dado pelo funcional e deve constar todos os campos
que sero preenchidos.

1.3 Declarando campos e descries.

No esquecer
de preencher.

Aps o mapeamento pronto a tela acima ser apresentada para o preenchimento


do nome do campo ( em laranja ) e descrio .
Nota: No esquecer que este processo e obrigatrio, caso contrario o vinculo com os
campos de origens ser impossvel.

Wander Rodrigues / Claudia Oliveira v09

Pgina 629 de 654

TREINAMENTO ABAP
2. Criando uma estrutura.

Executar a opo estrutura do objeto ( passo 2 do ex. anterior ) .


Neste passo estaremos definindo o nome da estrutura que recebera o arquivo texto ou
arquivo da planilha do sistema legado ( como no exemplo abaixo ).

Nota: Ateno , todo passo executado deve ser salvo, assim a ferramenta identifica o
item processado posicionando-se sozinha no prximo .

Wander Rodrigues / Claudia Oliveira v09

Pgina 630 de 654

TREINAMENTO ABAP
3. Criando Campos da estrutura.

Executar a opo campos da estrutura ( passo 3 do ex. anterior ) .


Neste passo estaremos definindo os campos da estrutura que recebera o arquivo texto ou
arquivo da planilha do sistema legado ( como no exemplo abaixo ).

Quando criar um campo posicionar o cursor sobre este campo para criao do
prximo caso contrario o mesmo ficara fora de ordem no armazenando assim o
arquivo corretamente.

Nota: Criar os campos exatamente com o tamanho dos campos do registro lido para que
estes no fiquem truncados.

Wander Rodrigues / Claudia Oliveira v09

Pgina 631 de 654

TREINAMENTO ABAP
4. Definindo relacionamento das estruturas.

Executar a opo relacionamentos das estruturas ( passo 4 do ex. anterior ) .


Neste passo estaremos definindo o relacionamento das estruturas de origem e destino.
Pressionando o boto Relationship o relacionamento e criado como vemos no exemplo
abaixo.

Relacionamento foi
definido com
sucesso.

Observao: O relacionamento com a estrutura do mapeamento e feito


automaticamente pelo LSM Workbench.

Wander Rodrigues / Claudia Oliveira v09

Pgina 632 de 654

TREINAMENTO ABAP
5. Definindo mapeamento de campos e regras de converso.

Neste passo faremos as associaes dos campos da estrutura origem e o mapeamento da


estrutura destino.
Dica : 1- Usar a opo no menu Extras Auto-Fieldmapping para a associao dos campos .
2- Usar os mesmos nomes dos campos nas duas estruturas para facilitar o
relacionamento como mostra o exemplo abaixo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 633 de 654

TREINAMENTO ABAP
5.1 Definindo regras de converso.

Aps o relacionamento dos campos serem processados deve-se definir as regras de


converso para os mesmos dando uma ateno especial para os seguintes tpicos:

Campos com valores fixos;

Campos somente para transferencias de valores;

Campos para tradues ( DE / PARA );

Campos para rotinas do usurio ( cdigos ).

Observao: este processo deve ser executado campo a campo como mostra o
exemplo abaixo.

Boto
Rule

Definio das
regras

Wander Rodrigues / Claudia Oliveira v09

Pgina 634 de 654

TREINAMENTO ABAP

Nota : Para a definio das regras e s posicionar o cursor sobre o campo desejado e
pressionar o boto Rule no menu.

6. Definindo campos fixos, tradues e rotinas individuais ( usurio ).

Neste passo faremos os tratamentos dos campos definindo seus valores, tradues e
rotinas.
Todos os campos devero estar previamente definidos no passo 5, pois caso isso no ocorra
eles no aparecero neste momento.

Wander Rodrigues / Claudia Oliveira v09

Pgina 635 de 654

TREINAMENTO ABAP
6.1 Campos Fixos.

Campos que no tero seus valores alterados no decorrer do processo, e que no foram
definidos em nossa estrutura origem somente aparecendo na estrutura de mapeamento.

Valor do
campo fixo

6.2 Campos para Tradues.

Campos que no sistema legado tem valores que devem ser convertidos para a base do R/3.
Para que esta converso seja executada pelo sistema o flag OK deve estar marcado como
no exemplo abaixo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 636 de 654

TREINAMENTO ABAP

Marcar o flag
para fazer as
converses.

Wander Rodrigues / Claudia Oliveira v09

Pgina 637 de 654

TREINAMENTO ABAP
6.3 Rotinas individuais ( usurio ).

Campos que tero seu valor alterado atravs de cdigo ABAP.


Veja no exemplo a seguir a definio de mascaras para a entrada no sistema R/3 (como
CEP, CPF, CNPJ , e outros...).

Exemplo do
cdigo.

Nota: Neste passo o LSM Workbench no disponibiliza o icone para salvar as atualizaes mais
elas continuam definidas no sistema.

Wander Rodrigues / Claudia Oliveira v09

Pgina 638 de 654

TREINAMENTO ABAP
7. Especificando o arquivo.

Definio do caminho mais o nome do arquivo a ser lido especificando ainda se o mesmo
esta na Rede ou se e um arquivo local.
Deve-se tambm informar os parmetros de leitura do mesmo tais como:

Leitura de arquivo texto ou tabela;

Delimitador;

Tipo do arquivo;

Outros ...

Como no exemplo a seguir:

Definies para
leitura do arquivo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 639 de 654

TREINAMENTO ABAP

Observao : Na tela inicial do passo 7 deve-se posicionar o cursor sobre o caminho que
o arquivo ser lido ( Local / Rede ) e pressionar o boto Create Entry para ento passar
as definies da figura acima.

Nota : O sistema criara para seu controle dois arquivos, um para os registros lidos e
outro para os registros convertidos.

Wander Rodrigues / Claudia Oliveira v09

Pgina 640 de 654

TREINAMENTO ABAP
8. Associando o arquivo.

Neste passo deve-se associar o caminho mais nome do arquivo definido no item 7 a
estrutura que recebera os dados.

Arquivo Estrutura origem. (exemplo : Emissor ).

Associao
definida com
sucesso.

Nota : Ao pressionar o boto Assignment o sistema define a associao sozinho.

As vezes ao entrar neste passo o sistema j definiu tudo, mesmo assim deve-se pressionar o
boto e salvar o processo para que a ferramenta passe sozinha para o prximo passo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 641 de 654

TREINAMENTO ABAP
9. Leitura dos dados.

L os dados do sistema legado e carrega a estrutura de origem para isso e s


executar o passo.

Ser apresentada uma tela com o total de registros lidos e gravados na estrutura ,
como veremos na figura a seguir.

Wander Rodrigues / Claudia Oliveira v09

Pgina 642 de 654

TREINAMENTO ABAP
Nota: Para verificar se no ocorreu nenhum erro todos os totais devem estar exatamente
com os mesmos valores.

Todos os totais
devem estar iguais.

Wander Rodrigues / Claudia Oliveira v09

Pgina 643 de 654

TREINAMENTO ABAP
10. Mostra dados lidos.

Mostra todos os registros lidos e tambm os registros por campos.

Serve para verificar a integridade dos registros lidos ou seja os valores que esto contidos
em todos os campos da estrutura origem.

Este passo e muito til porque caso haja algum erro na leitura do arquivo do cliente se
consegue identificar de onde originou-se o erro, do arquivo lido ou da estrutura definida.

Wander Rodrigues / Claudia Oliveira v09

Pgina 644 de 654

TREINAMENTO ABAP
10.1 Verificando os dados.

Uma tela com todos os registros lidos ser exibida, clique sobre um nico registro
para verificar seu contedo.

Wander Rodrigues / Claudia Oliveira v09

Pgina 645 de 654

TREINAMENTO ABAP
10.2 Verificando contedo dos campos.

Reparem que este registro ainda no passou pela converso neste momento e o nome do
arquivo que esta sendo exibido e o mesmo criado pelo sistema na Nota do passo 7 (
arquivo reg. Lidos ).

Dados ainda
no foram
convertidos.

Wander Rodrigues / Claudia Oliveira v09

Pgina 646 de 654

TREINAMENTO ABAP
11. Converter dados.

Executando este passo o LSM Workbench l o arquivo de registros lidos (ex.


anterior ) e grava o arquivo de registros convertidos.

Wander Rodrigues / Claudia Oliveira v09

Pgina 647 de 654

TREINAMENTO ABAP
Aparecera uma tela com o resumo dos registros lidos e convertidos, como aquela
do passo 9 e para a converso estar correta os totais tambm devem ser iguais.

Totais devem ser


iguais.

Wander Rodrigues / Claudia Oliveira v09

Pgina 648 de 654

TREINAMENTO ABAP
12. Mostra dados convertidos.

Mostra todos os registros convertidos e tambm os registros por campos.

Serve para verificar a integridade dos registros convertidos ou seja os valores que esto
contidos em todos os campos da estrutura destino.

Este passo e muito til porque caso haja algum erro na converso do arquivo se consegue
identificar de onde originou-se o erro, do mapeamento ou das regras de converses.

Wander Rodrigues / Claudia Oliveira v09

Pgina 649 de 654

TREINAMENTO ABAP
12.1 Verificando os dados.

Uma tela com todos os registros convertidos ser exibida, clique sobre um nico
registro para verificar seu contedo.

Observe o nome do arquivo de converso, pois ele foi definido pelo sistema na Nota
do passo 7.

Wander Rodrigues / Claudia Oliveira v09

Pgina 650 de 654

TREINAMENTO ABAP
12.2 Verificando contedo dos campos.
Reparem que este registro j passou pela converso neste momento incluindo agora os
campos fixos, campos com tradues e os com rotinas ( cdigos ).

Arquivo
j
convertid
o

Wander Rodrigues / Claudia Oliveira v09

Pgina 651 de 654

TREINAMENTO ABAP
13. Criao da Pasta Batch Input.

Criao da pasta Batch Input para que o usurio controle data e hora para inicio
do processamento da mesma.
Este passo no aparecera caso seja utilizado algum outro processo do LSM
Workbench ( Direct Input, BAPIs e Idocs ) sendo substitudo pelo passo
correspondente ao outro modo de processamento.

Caso marcado
guarda pasta aps
execuo.

Usa o arquivo criado pelo


sistema que contem os
registros convertidos.

Nota : O arquivo utilizado para a gerao da Pasta e o convertido como mostra a figura
acima.

Wander Rodrigues / Claudia Oliveira v09

Pgina 652 de 654

TREINAMENTO ABAP

Numero de
transaes
inseridas na pasta.
Observao : Uma janela informando que a pasta foi criada com o numero de transaes
inseridas e exibida.

14. Executando Pasta Batch Input.

Neste momento o LSM Workbench faz uma chamada na transao SM35 para que o
usurio possa executar a pasta.
Todas as facilidades da transao sero mantidas como executar em background, exibir
somente erros, ou processamento visvel.

Posicionar o cursor
sobre a pasta e
pressionar o boto
Process.

Wander Rodrigues / Claudia Oliveira v09

Marcada para
deleo aps o
processo.

Pgina 653 de 654

TREINAMENTO ABAP
14.1 Modos de execuo.

Processo Foreground :
O usurio visualiza passo a passo a execuo da pasta.

Mostra somente erros :


O processo para somente se houver algum erro.

Background :
No e visvel para o usurio e guarda todos os erros em Logs.

Nota : A pasta pode ser processada pelo LSMW ou diretamente pela transao SM35
ficando a escolha do usurio.

Wander Rodrigues / Claudia Oliveira v09

Pgina 654 de 654

Potrebbero piacerti anche