Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
TREINAMENTO
ABAP
Wander Rodrigues
Claudia Oliveira
Pgina 1 de 654
TREINAMENTO ABAP
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
Pgina 6 de 654
TREINAMENTO ABAP
Introduo ao SAP
Pgina 7 de 654
TREINAMENTO ABAP
Pgina 8 de 654
TREINAMENTO ABAP
Pgina 9 de 654
TREINAMENTO ABAP
Pgina 10 de 654
TREINAMENTO ABAP
Pgina 11 de 654
TREINAMENTO ABAP
Pgina 12 de 654
TREINAMENTO ABAP
Pgina 13 de 654
TREINAMENTO ABAP
Pgina 14 de 654
TREINAMENTO ABAP
Pgina 15 de 654
TREINAMENTO ABAP
Pgina 16 de 654
TREINAMENTO ABAP
Pgina 17 de 654
TREINAMENTO ABAP
Pgina 18 de 654
TREINAMENTO ABAP
Pgina 19 de 654
TREINAMENTO ABAP
Pgina 20 de 654
TREINAMENTO ABAP
Pgina 21 de 654
TREINAMENTO ABAP
Pgina 22 de 654
TREINAMENTO ABAP
Pgina 23 de 654
TREINAMENTO ABAP
Pgina 24 de 654
TREINAMENTO ABAP
Pgina 25 de 654
TREINAMENTO ABAP
Pgina 26 de 654
TREINAMENTO ABAP
Pgina 27 de 654
TREINAMENTO ABAP
Pgina 28 de 654
TREINAMENTO ABAP
Pgina 29 de 654
TREINAMENTO ABAP
Pgina 30 de 654
TREINAMENTO ABAP
Pgina 31 de 654
TREINAMENTO ABAP
Pgina 32 de 654
TREINAMENTO ABAP
Pgina 33 de 654
TREINAMENTO ABAP
Pgina 34 de 654
TREINAMENTO ABAP
Pgina 35 de 654
TREINAMENTO ABAP
Pgina 36 de 654
TREINAMENTO ABAP
Pgina 37 de 654
TREINAMENTO ABAP
Pgina 38 de 654
TREINAMENTO ABAP
Pgina 39 de 654
TREINAMENTO ABAP
Pgina 40 de 654
TREINAMENTO ABAP
Pgina 41 de 654
TREINAMENTO ABAP
Pgina 42 de 654
TREINAMENTO ABAP
Pgina 43 de 654
TREINAMENTO ABAP
Pgina 44 de 654
TREINAMENTO ABAP
Pgina 45 de 654
TREINAMENTO ABAP
Pgina 46 de 654
TREINAMENTO ABAP
Pgina 47 de 654
TREINAMENTO ABAP
Pgina 48 de 654
TREINAMENTO ABAP
Pgina 49 de 654
TREINAMENTO ABAP
Pgina 50 de 654
TREINAMENTO ABAP
Pgina 51 de 654
TREINAMENTO ABAP
Pgina 52 de 654
TREINAMENTO ABAP
Pgina 53 de 654
TREINAMENTO ABAP
Pgina 54 de 654
TREINAMENTO ABAP
Pgina 55 de 654
TREINAMENTO ABAP
Pgina 56 de 654
TREINAMENTO ABAP
Pgina 57 de 654
TREINAMENTO ABAP
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 .
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).
Pgina 60 de 654
TREINAMENTO ABAP
Mdulos
SD
FI
MM
CO
AM
PP
R/3
QM
PS
PM
WF
HR
IS
Pgina 61 de 654
TREINAMENTO ABAP
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):
Pgina 63 de 654
TREINAMENTO ABAP
Entrando no ECC
Entrando no ECC (R/3)
Idioma no qual
se estar trabalhando.
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
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
Obs:
Pgina 65 de 654
TREINAMENTO ABAP
Ajuda de campos
F1
F4
?
?
Sesso 2
Sesso 1
Sesso 3
Sesso 6
Centro de custo:
Classe de custo:
Sesso 5
Sesso 4
Nome
Descrio
Pgina 66 de 654
TREINAMENTO ABAP
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.
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
Pgina 69 de 654
TREINAMENTO ABAP
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.
Pgina 70 de 654
TREINAMENTO ABAP
A letra especifica o tipo de mensagem.
E
error
abend
exit
warning
information
success
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
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:
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.
Pgina 73 de 654
TREINAMENTO ABAP
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:
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.
Valor inicial
Significado
1 - 65535
SPACE
'00000000'
Nmero inteiro
1 - 65535
'00...0'
Texto numeric
1 - 16
'000000'
1 - 65535
X'00'
Hexadecimal
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:
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.
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.
SELEO MLTIPLA
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
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
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.
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.
Pgina 80 de 654
TREINAMENTO ABAP
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
Pgina 81 de 654
TREINAMENTO ABAP
WHERE bukrs = B001.
...
WRITE: / i_knb1-kunnr.
...
ENDSELECT.
SELECT ... INTO TABLE ...
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>
Pgina 82 de 654
TREINAMENTO ABAP
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.
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
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.
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',
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
CENTERED
Sada centralizada
RIGHT-JUSTIFIED
UNDER <g>
NO-GAP
NO-ZERO
Descrio
NO-SIGN
DECIMALS <d>
EXPONENT <e>
ROUND <r>
CURRENCY <c>
UNIT <u>
Pgina 88 de 654
TREINAMENTO ABAP
Descrio
DD/MM/YY
MM/DD/YY
DD/MM/YYYY
MM/DD/YYYY
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.
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.
CAMPO DESTINO
VALOR
TIPO TAMANHO
VALOR
A___
ABCD
AB
-47110_
47110-
12345-
_12345-
C
VALUE
C
VALUE
P DECIMALS 2 VALUE
C
VALUE
AAA ,
BB
,
2.26 ,
XY ,
Pgina 90 de 654
TREINAMENTO ABAP
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>.
Sub-campos (strings)
Voc pode obter uma parte de um determinado
instruo MOVE ou WRITE.
campo
atravs
da
Pgina 91 de 654
TREINAMENTO ABAP
ACE
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.
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
Pgina 93 de 654
TREINAMENTO ABAP
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:
opcional
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.
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.
Pgina 96 de 654
TREINAMENTO ABAP
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.
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
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
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]
TREINAMENTO ABAP
TREINAMENTO ABAP
Descrio
INITIALIZATION
AT SELECTION-SCREEN
START-OF-SELECTION
END-OF-SELECTION
Descrico
TOP-OF-PAGE
END-OF-PAGE
Event
AT LINE-SELECTION
AT USER-COMMAND
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
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:
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.
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
Ou COL_NEGATIVE
Red
Ou COL_GROUP
Violet
group levels
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.
...
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
TREINAMENTO ABAP
NO DIALOG.
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
TREINAMENTO ABAP
TREINAMENTO ABAP
Para executar o programa a partir do editor, salve, ative o programa e pressione F8.
TREINAMENTO ABAP
TREINAMENTO ABAP
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.
TREINAMENTO ABAP
Produz como resultado um campo na tela para o usurio digitar o cdigo da empresa.
TREINAMENTO ABAP
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.
TREINAMENTO ABAP
Nome
Endereo
Numero
Complemento
Bairro
Cidade
Estado
Pas
Email
Char
Char
Numc
Char
Char
Char
Char
Char
Char
20
30
5
10
20
20
2
2
25
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
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
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
TREINAMENTO ABAP
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)
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
TREINAMENTO ABAP
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
TREINAMENTO ABAP
TREINAMENTO ABAP
Produz o resultado
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.
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
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.
TREINAMENTO ABAP
DICIONRIO DE DADOS
O dicionrio abap utilizado para descrever e gerenciar todas as definies de dados
usadas pelo sistema.
Transao: SE11
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
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
TREINAMENTO ABAP
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.
TREINAMENTO ABAP
Contedo de tabelas
Transao SE16 - Visualizao dos dados de uma tabela ou view.
TREINAMENTO ABAP
Salve
e ative
o domnio.
TREINAMENTO ABAP
ZD_XX_DATA
ZD_XX_CHAR01
DESCRIO
Numrico 5
Caracter 50
Caracter 10
Decimal 10
inteiros e 2
decimais
Campo data
Caracter - 1
TIPO DE
DADO
NUMC
CHAR
CHAR
DEC
DATS
CHAR
TAMANHO
5
50
10
10 inteiros e 2
casas decimais
8
1
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
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.
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
TREINAMENTO ABAP
TREINAMENTO ABAP
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.
TREINAMENTO ABAP
TREINAMENTO ABAP
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
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
TREINAMENTO ABAP
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
ELEMENTO DE DADOS
MANDT
NUMC 10
NUMC 5
CHAR 10
TREINAMENTO ABAP
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
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
TREINAMENTO ABAP
Ainda na transao SE11, na tela de modificao da tabela (tela acima), clique no menu
Utilirios \ Gerador de atualizao de tabelas
TREINAMENTO ABAP
Voc ver a tela abaixo:
TREINAMENTO ABAP
Na tela abaixo, preencha o campo Pacote com $TMP e clique em Gravar
TREINAMENTO ABAP
O resultado final dever ser uma tela conforme a figura abaixo:
TREINAMENTO ABAP
Para exibir, criar ou modificar registros da tabela, execute a transao SM30
TREINAMENTO ABAP
Se a sua tabela estiver vazia, voc ver a tela abaixo:
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
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)
TREINAMENTO ABAP
TREINAMENTO ABAP
Clique em Salvar.
Na tela abaixo, clique em Objeto local
TREINAMENTO ABAP
Pronto agora a estrutura j est criada e pode ser utilizada nos programas, funes e
objetos abap.
TREINAMENTO ABAP
TREINAMENTO ABAP
Clique em Salvar.
TREINAMENTO ABAP
Clique em Ativar
Quando receber a mensagem abaixo o objeto estar pronto para ser utilizado
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
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.
BLOCK
TYPE
TYPE
TYPE
BLOCK
"Ordem de venda
"Item
"Material
TREINAMENTO ABAP
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).
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.
TREINAMENTO ABAP
2)
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.
TREINAMENTO ABAP
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
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.
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
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.
TREINAMENTO ABAP
IF itab1[] = itab2[].
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
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!
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.
TREINAMENTO ABAP
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 posies, numrico
30 posies, caracter
1 posio, caracter
30 posies, caracter
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
Nome do aluno
---------------------------------------Ludmila
Rodrigo
Guilherme
Brbara
Marcelo
Leandro
Mnica
Jos
Itamar
Geraldo
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.
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
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.
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
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
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.
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
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.
TREINAMENTO ABAP
Portugues
Matematica
Historia
Geografia
Fisica
Quimica
Biologia
Ingles
TREINAMENTO ABAP
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
..
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
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:
TREINAMENTO ABAP
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.
TREINAMENTO ABAP
ii. ZGXX_SEGUNDO_GRUPO
1. Descrio breve: Segundo grupo
No se esquea de ativar os grupos
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>
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.
TREINAMENTO ABAP
Veja um exemplo de como funciona uma funo:
PROGRAMA
FUNO
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
TREINAMENTO ABAP
Para criar uma funo execute a transao SE37
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
TREINAMENTO ABAP
Voc ver a tela abaixo:
Clique em Salvar
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.
TREINAMENTO ABAP
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:
TREINAMENTO ABAP
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:
TREINAMENTO ABAP
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)
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:
TREINAMENTO ABAP
TREINAMENTO ABAP
Agora faa um novo teste, clique em Voltar, preencha com zero nos dois campos e
execute novamente.
Uma vez que a funo est pronta, basta fazer um report que chame esta funo para
podermos test-la dentro de um programa.
TREINAMENTO ABAP
Crie um report com o cdigo abaixo e execute-o para verificar se a funo est
funcionando corretamente.
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.
TREINAMENTO ABAP
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
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
TREINAMENTO ABAP
TREINAMENTO ABAP
Para utilizar um matchcode standard necessrio descobrir o seu nome para associa-lo
ao campo desejado.
Existem vrias formas para encontrarmos o matchcode:
TREINAMENTO ABAP
1) No help do campo
- Colocar o cursor no campo desejado
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
6) Matchcode dinmino
Entrar na transao onde se encontra o campo e pressionar F1 com o cursor sobre ele.
TREINAMENTO ABAP
TREINAMENTO ABAP
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.
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.
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.
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.
TREINAMENTO ABAP
ALV
ALV Conceitos Bsicos
Utilizando ALV, o relatrio se torna mais flexvel, permitindo ao usurio:
TREINAMENTO ABAP
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.
TABNAME
Tam.
30,
caracter
ICON
campo
SYMBOL
campo
CHECKBOX
Preencha
com
X,
caso
deseje
apresentar um checkbox na coluna.
Utilizado para campos do tipo flag.
JUST
LZERO
Preencher com X,
zeros esquerda.
NO_SIGN
Preencher
com
X,
para
apresentar sinal em valores.
NO_ZERO
ser
uma
para
eliminar
no
TREINAMENTO ABAP
valores zerados.
DO_SUM
NO_OUT
OUTPUTLEN
INTTYPE
REPTEXT_DDIC
Tam.
30,
caracter
HOTSPOT
H = Header, S =
Selection, A = Action
ou
A)
KEY
INFO
Tam. 60, tipo caracter o texto que voc quer que aparea
no cabealho. Voc pode utilizar n
linhas. Veja no programa exemplo.
TABNAME
UP
DOWN
ser
uma
TREINAMENTO ABAP
SUBTOT
SPOS
ZEBRA
NO_VLINE
NUMC_SUM
Preencher
com
X,
para
que
o
relatrio permita totalizao de
campos
to
tipo
N
(Caracteres
numricos).
EDIT
NO_INPUT
Preencher com X
apenas de sada.
COLWIDTH_OPTIMIZE
NO_TOTALLINE
TOTALS_BEFORE_ITEMS
TOTALS_ONLY
Preencher
relatrio
totais.
TOTALS_TEXT
SUBTOTALS_TEXT
se
que o
label
com X para
apaream
que
campo
que em
apenas
seu
das
sua
for
seu
os
para
os
Preencher com
impresso.
permitir
PRNT_TITLE
NO_PRINT_LISTINFOS
Preencher
com
X
para
que
impresso
no
apaream
informaes da listagem.
na
as
TREINAMENTO ABAP
TABINDEX
Sy-tabix
COL_STABLE
Marque
com
X,
para
manter
o
relatrio na coluna em que estava
antes do drill down.
ROW_STABLE
Marque
com
X,
para
manter
o
relatrio
na
linha
selecionada
antes do drill down.
REFRESH
Para
atualizar
preencher com X.
relatrio,
TREINAMENTO ABAP
= 'COD_FILIAL'.
* Nome da filial
ti_campos-fieldname
APPEND ti_campos.
* Cidade
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
TREINAMENTO ABAP
mara-matnr,
makt-maktx,
p,
p,
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.
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.
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
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
TREINAMENTO ABAP
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)
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.
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.
TREINAMENTO ABAP
MODULE INITIALIZE
OUTPUT.
CLEAR SPFLI.
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>.
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
TREINAMENTO ABAP
ENDMODULE.
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).
TREINAMENTO ABAP
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
TREINAMENTO ABAP
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...
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.
TREINAMENTO ABAP
Transao
A transao para criao de transaes a SE93.
Informe o cdigo da transao e clique em Criar
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
Coloque o ttulo do Module Pool, e preencha o tipo, status e aplicao. Depois clique
em Salvar
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
Salve o include.
Ative o include
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
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
O campo em rosa indica que ali falta uma informao. Digite Empresa no campo
Text.
TREINAMENTO ABAP
O layout da tela est pronto. Clique em Flow logic para ir para o PBO/PAI da tela.
Clique em Salvar
No programa bsico
Create, Gui titles
TREINAMENTO ABAP
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
TREINAMENTO ABAP
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>
e d
TREINAMENTO ABAP
TREINAMENTO ABAP
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:
TREINAMENTO ABAP
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.
Na prxima tela
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
TREINAMENTO ABAP
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.
TREINAMENTO ABAP
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)
TREINAMENTO ABAP
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
TREINAMENTO ABAP
TREINAMENTO ABAP
Na tela abaixo
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:
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)
TREINAMENTO ABAP
Voc ir voltar para o pbo/pai da tela 9000
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
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.
TREINAMENTO ABAP
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.
TREINAMENTO ABAP
Ser exibida a tela do Screen painter grfico para desenharmos o layout da segunda tela.
TREINAMENTO ABAP
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
TREINAMENTO ABAP
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
TREINAMENTO ABAP
A cor rosa indica que falta preencher alguma informao. Ento no campo Text digite
Nome da empresa
TREINAMENTO ABAP
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)
TREINAMENTO ABAP
TREINAMENTO ABAP
Clique na guia Program
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
TREINAMENTO ABAP
No programa bsico
Create, Gui titles
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
TREINAMENTO ABAP
TREINAMENTO ABAP
A tela ir se abrir
e d
TREINAMENTO ABAP
Clique em Salvar para salvar a barra de botes.
TREINAMENTO ABAP
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:
TREINAMENTO ABAP
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.
TREINAMENTO ABAP
Na prxima tela
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.
TREINAMENTO ABAP
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
TREINAMENTO ABAP
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)
TREINAMENTO ABAP
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
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.
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
TREINAMENTO ABAP
TREINAMENTO ABAP
Clique em Salvar
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.
TREINAMENTO ABAP
Ser exibida a janela com todos os objetos inativos do seu module pool, j selecionados
para serem ativados. Clique em OK
TREINAMENTO ABAP
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:
TREINAMENTO ABAP
Entre na SE80.
TREINAMENTO ABAP
Confirme o nome do programa clicando em OK, deixe a opo com include TOP
MARCADA
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
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:
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:
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
TREINAMENTO ABAP
Na tela abaixo, altere a descrio da tela no campo Descrio breve, que aparece na
aba CARACTERSTICAS
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.
TREINAMENTO ABAP
Preencha o campo esquerda do ok com o nome de varivel V_OKCODE.
Clique em salvar
Voc ver o include TOP com as variveis de tela que j havia criado:
TREINAMENTO ABAP
Adicione no include TOP, a declarao da varivel v_okcode.
Clique em Salvar
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)
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
TREINAMENTO ABAP
Nesta tela clique no boto Chamar do programa
mostre as variveis que voc criou no include TOP.
E clique em OK
TREINAMENTO ABAP
Voc ver que o cursor ir se transformar no contorno dos campos que voc marcou
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)
TREINAMENTO ABAP
No campo Texto
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
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.
TREINAMENTO ABAP
Altere a lgica de processamento da tela para que fique da seguinte forma:
Clique em Salvar
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
TREINAMENTO ABAP
Para facilitar a organizao do programa, modifique o nome
MZ_CAD_FILIAL_M_STATUSO01 para MZ_CAD_FILIALO01 e clique em OK.
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
Clique em Salvar
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
TREINAMENTO ABAP
Na tela abaixo altere a descrio Texto breve e clique em OK
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).
TREINAMENTO ABAP
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
Nota: So estes nomes (GRAVAR e SAIR) que sero movidos para a varivel
V_OKCODE criada no incio.
TREINAMENTO ABAP
Clique em Voltar
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
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
TREINAMENTO ABAP
Certifique-se de que a aba Lg.Process. esteja selecionada
Clique em Salvar
para gravar a modificao
Clique duas vezes sobre o termo M_SAIR para criar este mdulo do PAI.
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
TREINAMENTO ABAP
Voc ver a seguinte tela.
E que o include que est aberto do lado direito j o include que acabamos de criar
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.
TREINAMENTO ABAP
Voc ver a lgica de processamento do lado direito
Clique em Salvar
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)
TREINAMENTO ABAP
O mdulo M_GRAVAR ento criado dentro do include MZ_CAD_FILIALI01, logo
abaixo do mdulo M_SAIR.
Clique em Salvar
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
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
Agora o programa est pronto. Falta somente criar uma transao para execut-lo.
TREINAMENTO ABAP
Clique com o boto direito sobre o nome do programa, escolha Criar e depois
Transao.
TREINAMENTO ABAP
Na tela abaixo, coloque o cdigo da transao ZCADFILIAL, preencha a descrio da
transao com Cadastro de filiais e clique em OK
TREINAMENTO ABAP
O programa ir exibir os detalhes da transao. Coloque o nome do programa e a tela
inicial da transao
Clique em Salvar
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.
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
Na janela nova, digite na linha de comando o cdigo da transao criada e tecle ENTER
TREINAMENTO ABAP
Voc ver a tela conforme desenho do layout
TREINAMENTO ABAP
Para conferir o resultado, execute a transao SE16, digite o nome da sua tabela e
pressione ENTER.
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
Entre na transao SE80
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.
TREINAMENTO ABAP
Voc ver a tela abaixo de atributos do programa. Coloque uma descrio no campo Ttulo e
clique em Gravar.
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
TREINAMENTO ABAP
Clique no lpis
TREINAMENTO ABAP
Clique em Ativar
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.
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.
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.
TREINAMENTO ABAP
. 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:
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.
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.
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.
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
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:
, para voltar s
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.
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
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.
Clique em Salvar
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).
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.
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
Agora coloque o cursor sobre o campo acima do boto de salvar, digite GRAVAR e tecle ENTER.
TREINAMENTO ABAP
Clique em Salvar para gravar o status criado.
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.
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.
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.
TREINAMENTO ABAP
Altere o PAI da tela para que fique da seguinte forma:
Clique em Salvar
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
TREINAMENTO ABAP
Altere o mdulo user_command_9000 para que fique da seguinte forma:
Clique em Salvar
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.
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
TREINAMENTO ABAP
Pronto. O include est criado e o form f_salvar est criado tambm, dentro do include.
TREINAMENTO ABAP
Agora o cdigo que ir criar o registro no banco de dados est ok. Clique em Salvar
gravar as modificaes.
para
TREINAMENTO ABAP
Na tela abaixo informe o cdigo da transao ZXXCADCON , preencha o campo Texto Breve
com Cadastro de Contatos e clique em OK.
TREINAMENTO ABAP
Preencha o campo Programa com SAPMZ_CAD_AGENDA e coloque o No. Da tela como 9000.
Em seguida clique em Salvar
TREINAMENTO ABAP
Clique com o boto direito sobre o nome do programa e escolha ATIVAR
TREINAMENTO ABAP
Voc ver a tela abaixo onde o sistema lista todos os objetos que precisam ser ativados. Clique
em OK.
O seu programa j est pronto e j pode ser executado. Digite /Nzxxcadcon na linha de
comando para rodar seu programa.
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.
TREINAMENTO ABAP
TREINAMENTO ABAP
Include TOP
TREINAMENTO ABAP
Include PBO
TREINAMENTO ABAP
Include PAI
TREINAMENTO ABAP
Tela 9000
Caractersticas
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
Status S9000
Ttulo T9000
TREINAMENTO ABAP
Transao ZCADEMP01
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
Tela 9000
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
Cdigo do include O01 Mdulos PBO
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.
TREINAMENTO ABAP
ENDMODULE.
" m_consiste_preenchimento
INPUT
Cdigo da transao
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.
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
Para inspecionar o contedo de variveis basta clicar 2x sobre ela
TREINAMENTO ABAP
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
TREINAMENTO ABAP
TREINAMENTO ABAP
Para colocar o ponto de parada em uma instruo especfica:
Entrar na transao que ser depurada
TREINAMENTO ABAP
A tela de debug ser exibida
Ser exibida a tela para informar o comando onde o programa deve parar
TREINAMENTO ABAP
Informe o comando desejado e clique em OK
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
TREINAMENTO ABAP
Coloque o cursor na linha onde deseja que o programa inicie a depurao e clique no
boto STOP
TREINAMENTO ABAP
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)
TREINAMENTO ABAP
COMO PROCURAR UM CUSTOMER EXIT PARA UM
PROGRAMA STANDARD:
-
Entrar em sistema/status
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.
TREINAMENTO ABAP
Field Exits
Rotina disponibilizada para fazer tratamento em um campo especfico da
tela.
Consistir campos
Verificar autorizaes
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:
TREINAMENTO ABAP
Tipos de exit
TREINAMENTO ABAP
Coloque o cursor no campo e pressione F1
TREINAMENTO ABAP
Se sim, a field exit ser executada, caso contrrio ela no pode ser criada.
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.
TREINAMENTO ABAP
Informe o nome do programa e o nmero da tela onde a field exit deve ser executada e
clique em Gravar.
TREINAMENTO ABAP
A tela abaixo lista as field exits j existentes. Clique em exit de campo e depois em
Criar.
TREINAMENTO ABAP
Informe o nome do elemento de dados e clique em OK
poder
criar
funo
TREINAMENTO ABAP
No texto fonte da field exit, o cdigo abaixo ir gerar uma mensagem de erro caso o
centro no tenha sido informado
TREINAMENTO ABAP
Para ativar basta marcar a exit, e clicar no menu Exit Campo e em seguida em Ativar.
TREINAMENTO ABAP
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
TREINAMENTO ABAP
Clique 2x sobre o nmero em frente ao customer-function (neste exemplo, 002). A
funo da exit ser exibida
TREINAMENTO ABAP
Clique no menu Utilitrios, Procurar
TREINAMENTO ABAP
Cole o nome da exit no campo Nome de componente e clique em executar
Toda exit est associada a uma ampliao e esta ampliao que deve ser includa em
um projeto para poder ser ativada.
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.
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
TREINAMENTO ABAP
Implementao: onde gravado o cdigo que ser executado no momento em que os
mtodos da badi forem chamados.
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.
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:
TREINAMENTO ABAP
TREINAMENTO ABAP
Clique com o boto DIREITO sobre qualquer uma das aspas duplas
desta linha e selecione Implementao de ampliao / Criar
TREINAMENTO ABAP
Preencha os campos da tela de criao do enhancement conforme
figura abaixo e clique em OK.
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.
TREINAMENTO ABAP
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.
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.
TREINAMENTO ABAP
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
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.
TREINAMENTO ABAP
Copiando um formulrio
Execute a transao SE71
Mandante de
desenvolvimento
Idioma Original
Passo 2
Mandante de
desenvolvimento
Idioma PT
TREINAMENTO ABAP
PASSO 1
1 Copiar o formulrio. Ex: Formulrio MEDRUCK
TREINAMENTO ABAP
Log da copia
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).
TREINAMENTO ABAP
9 Informe o idioma desejado (PT)
TREINAMENTO ABAP
Partes de um formulrio
1.
TREINAMENTO ABAP
2.
Configuraes globais
TREINAMENTO ABAP
Pginas -
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.
TREINAMENTO ABAP
Janelas -
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:
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
Formatos de pargrafo -
TREINAMENTO ABAP
Formatos de caracteres -
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</>
TREINAMENTO ABAP
Elementos de texto -
(Elementos
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
TREINAMENTO ABAP
- Clicar em OK
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
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.
TREINAMENTO ABAP
TREINAMENTO ABAP
no quadro Janela
TREINAMENTO ABAP
TREINAMENTO ABAP
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
TREINAMENTO ABAP
- Criar um formato de pargrafo clicando no boto Formatos de pargrafo.
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
- Clicar em Janelas de pgina para incluir as informaes a serem impressas.
. Criar os
TREINAMENTO ABAP
- Salvar
e ativar o formulrio.
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
TREINAMENTO ABAP
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.
TREINAMENTO ABAP
TREINAMENTO ABAP
O programa
RFFOBR_D o programa de impresso de boletos. A impresso feita atravs do
formulrio J_1B_BOLETO_ITAU, por default.
TREINAMENTO ABAP
Customizaes
possvel modificar, via transao SPRO, o programa de impresso e o formulrio de
um determinado processo.
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.
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
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
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.
TREINAMENTO ABAP
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.
TREINAMENTO ABAP
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.
Grfico (graphic)
Endereo
(Address)
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
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.
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).
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).
TREINAMENTO ABAP
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.
TREINAMENTO ABAP
Abra a transao SMARTFORMS:
TREINAMENTO ABAP
A tela abaixo j seu smartform criado.
Agora vamos definir como ele ser impresso:
No lado esquerdo, em ATRIBUTOS FORMULRIO:
TREINAMENTO ABAP
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
TREINAMENTO ABAP
No campo SIGNIFICADO, d um nome ao formulrio:
TREINAMENTO ABAP
TREINAMENTO ABAP
No lado esquerdo, em INTERFACE DE FORMULRIO:
TREINAMENTO ABAP
A parte de DEFINIES GLOBAIS ser usada quando o formulrio se tornar mais
complexo.
TREINAMENTO ABAP
Com o boto direito do mouse, v at criar padro.
TREINAMENTO ABAP
Mude o significado para Cabealho. Coloque o estilo SYSTEM.
TREINAMENTO ABAP
Na lupa, aumente o zoom para 100%.
Com o lpis, desenhe 4 linhas, que sero nomeadas automaticamente como %C1,
%C2...%C5.
TREINAMENTO ABAP
Com a ferramenta lpis, divida as linhas C3, C4 e C5.
TREINAMENTO ABAP
Clique no boto TABLE PAINTER, para voltar a visualizar as linhas desenhadas.
TREINAMENTO ABAP
Clique no lpis novamente, e depois na linha C1.
TREINAMENTO ABAP
Para as linhas subseqentes, use os botes da direita na sequncia: QUADRO
ESQUERDO, QUADRO DIREITO, LINHA INFERIOR.
TREINAMENTO ABAP
Usando o boto direito do mouse na linha C1, v at DIVIDIR- LINHA.
TREINAMENTO ABAP
Com F8 voc pode visualizar o formulrio, executando a funo.
TREINAMENTO ABAP
TREINAMENTO ABAP
Com F3, volte para o formulrio, e com o boto direito, clique no template e acesse:
CRIAR TEXTO.
TREINAMENTO ABAP
Preencha o significado com TEXTO NOME. Preencha com o texto NOME.
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.
TREINAMENTO ABAP
Clique no boto ao lado esquerdo do boto FORM PAINTER (campos on/off).
TREINAMENTO ABAP
TREINAMENTO ABAP
Execute a funo com F8.
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.
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.
*
*
*
*
*
*
*
*
*
DO
DO
DO
DO
DO
DO
PROGRAMA)
PROGRAMA)
PROGRAMA)
PROGRAMA)
PROGRAMA)
PROGRAMA)
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.
TREINAMENTO ABAP
Declare a tabela de sada em INTERFACE DE FORMULRIO IMPORTAO.
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.
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.
TREINAMENTO ABAP
Na aba DADOS, marque o Box OPERANDO e preencha com a tabela interna e work
rea.
TREINAMENTO ABAP
Em TABELA REA PRINCIPAL defina o estilo SYSTEM.
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.
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:
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.
TREINAMENTO ABAP
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.
TREINAMENTO ABAP
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
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
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.
TREINAMENTO ABAP
TREINAMENTO ABAP
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.
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).
TREINAMENTO ABAP
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
,
,
,
,
,
,
,
,
,
,
.
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.
TREINAMENTO ABAP
=
=
=
=
=
=
t_mensagem-msgid.
t_mensagem-msgnr.
t_mensagem-msgv1.
t_mensagem-msgv2.
t_mensagem-msgv3.
t_mensagem-msgv4.
"verifica_msgs_transacao
TREINAMENTO ABAP
Gerao do SHDB
Para gerar o SHDB, execute a transao SHDB conforme abaixo:
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
Quando quiser exibir o SHDB, basta executar a transao SHDB, marcar a linha
desejada e clicar em exibir (culos)
TREINAMENTO ABAP
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:
TREINAMENTO ABAP
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.
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
TREINAMENTO ABAP
Quick Viewer
Transao SQVI
TREINAMENTO ABAP
TREINAMENTO ABAP
Clica no boto INSERT TABLE, para informar as tabelas que faro parte do
JOIN.
TREINAMENTO ABAP
Informa a primeira tabela e tecla OK.
TREINAMENTO ABAP
Mostrar os relacionamentos.
TREINAMENTO ABAP
Voltar uma tela com F3 ou boto BACK.
Escolher os campos.
TREINAMENTO ABAP
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:
TREINAMENTO ABAP
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.
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.
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:
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.
TREINAMENTO ABAP
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.
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.
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.
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
from
on
and
and
where
and
TREINAMENTO ABAP
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.
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).
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.
TREINAMENTO ABAP
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.
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
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.
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
Belo Horizonte MG
15
35
Rio de Janeiro
RJ
20
42
So Paulo
SP
35
Curitiba
PR
03
40
TREINAMENTO ABAP
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
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.
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.
cidade
estado
99980
45
Belo Horizonte MG
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
TREINAMENTO ABAP
EXERCCIO 1
Verifique os comandos SQL abaixo e informe qual seria o resultado de cada um deles:
1.1)
TREINAMENTO ABAP
1.2)
1.3)
1.4)
TREINAMENTO ABAP
1.5)
1.6)
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
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.
TREINAMENTO ABAP
TREINAMENTO ABAP
Nota: Todos os valores de texto devem estar entre aspas simples => Texto.
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
Felipe
Netto
99124
75
Sabar
MG
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
cidade
estado
99980
45
Belo Horizonte MG
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
TREINAMENTO ABAP
3.4) Exibir todas as colunas de todos os empregados com idade maior que 20.
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.
TREINAMENTO ABAP
TREINAMENTO ABAP
3.8) Selecionar nome de todos os empregados cujo nome terminem com ia.
TREINAMENTO ABAP
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
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.
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.
TREINAMENTO ABAP
Exemplos:
delete from empregados;
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.
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.
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
3.
Pr-condies
Estas questes precisam ser respondidas diferentemente para cada cliente e precisam
absolutamente ser respondidas antes da ferramenta ser utilizada.
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
TREINAMENTO ABAP
Dicas gerais para o Procedimento:
TREINAMENTO ABAP
CAMPO
TAMANHO
FORMATO
VALOR
FIXO
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
TREINAMENTO ABAP
Migrao de Dados Passo a Passo
TREINAMENTO ABAP
TREINAMENTO ABAP
1. Entrar com o tipo de objeto e tcnica de importao.
TREINAMENTO ABAP
2. Definir a estrutura do objeto (origem) com nome, descrio e hierarquia de
relacionamentos (quando houver).
TREINAMENTO ABAP
3. Definir os campos da estrutura.
TREINAMENTO ABAP
4. Definir os relacionamentos das estruturas.
Estrutura origem Estrutura destino.
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.
TREINAMENTO ABAP
5.1 Definir as regras de converso.
TREINAMENTO ABAP
7. Especificar todos os arquivos a serem utilizados:
-
TREINAMENTO ABAP
8. Associar os arquivos definidos as estruturas origens.
TREINAMENTO ABAP
9. Ler os dados
TREINAMENTO ABAP
10. Exibir os dados lidos
TREINAMENTO ABAP
11. Converter os dados
TREINAMENTO ABAP
12. Conferir os dados convertidos e exibi-los.
TREINAMENTO ABAP
13. Checar os dados convertidos com a Customizao.
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.
TREINAMENTO ABAP
TREINAMENTO ABAP
Ao clicar na opo : Executar pasta de BI , automaticamente o sistema chama a transao SM35.
TREINAMENTO ABAP
Caso a opo escolhida seja Call Transaction, observamos o resultado abaixo:
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.
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:
-
Tipo de
transferencia.
Recordin
g
Overvie
w.
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.
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.
No esquecer
de preencher.
TREINAMENTO ABAP
2. Criando uma estrutura.
Nota: Ateno , todo passo executado deve ser salvo, assim a ferramenta identifica o
item processado posicionando-se sozinha no prximo .
TREINAMENTO ABAP
3. Criando Campos da estrutura.
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.
TREINAMENTO ABAP
4. Definindo relacionamento das estruturas.
Relacionamento foi
definido com
sucesso.
TREINAMENTO ABAP
5. Definindo mapeamento de campos e regras de converso.
TREINAMENTO ABAP
5.1 Definindo regras de converso.
Observao: este processo deve ser executado campo a campo como mostra o
exemplo abaixo.
Boto
Rule
Definio das
regras
TREINAMENTO ABAP
Nota : Para a definio das regras e s posicionar o cursor sobre o campo desejado e
pressionar o boto Rule no menu.
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.
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
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.
TREINAMENTO ABAP
Marcar o flag
para fazer as
converses.
TREINAMENTO ABAP
6.3 Rotinas individuais ( usurio ).
Exemplo do
cdigo.
Nota: Neste passo o LSM Workbench no disponibiliza o icone para salvar as atualizaes mais
elas continuam definidas no sistema.
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:
Delimitador;
Tipo do arquivo;
Outros ...
Definies para
leitura do arquivo.
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.
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.
Associao
definida com
sucesso.
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.
TREINAMENTO ABAP
9. Leitura dos dados.
Ser apresentada uma tela com o total de registros lidos e gravados na estrutura ,
como veremos na figura a seguir.
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.
TREINAMENTO ABAP
10. Mostra dados lidos.
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.
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.
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.
TREINAMENTO ABAP
11. Converter dados.
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.
TREINAMENTO ABAP
12. Mostra dados convertidos.
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.
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.
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
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.
Nota : O arquivo utilizado para a gerao da Pasta e o convertido como mostra a figura
acima.
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.
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.
Marcada para
deleo aps o
processo.
TREINAMENTO ABAP
14.1 Modos de execuo.
Processo Foreground :
O usurio visualiza passo a passo a execuo da pasta.
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.