Professional Documents
Culture Documents
TREINAMENTO
ABAP
Wander Rodrigues
Claudia Oliveira
Pgina 1 de 260
Customer
Classe
Entrando
Arquitetura.......................................................................................62
Principais
Tabelas
SELECT............................................................................................78
Comando
IF...................................................................................................91
APPEND...........................................................................................94
Includes.........................................................................................104
Eventos...........................................................................................99
Domnios........................................................................................116
Lista
ALV
PBO
eBsica....................................................................................172
Conceitos
Telas
SET/GET
PAI.......................................................................................174
de
Transparentes........................................................................71
no
MOVE................................................................................84
caractersticas....................................................................58
funes..............................................................................65
desenvolvimento.................................................................59
Exits...............................................................................196
de
ECC
Seleo
PARAMETER
Bsicos...................................................................173
(R/3)......................................................................63
(standard).......................................................67
ID.........................................................113
TREINAMENTO
ABAP
Requests..........................................................................................59
A
Tabelas
WHERE............................................................................................80
Comando
CASE...............................................................................................92
COLLECT..........................................................................................94
Opes
Elementos
Lista
Definio
User
tela
Exits.......................................................................................197
Interativa................................................................................172
principal
de
internas................................................................................71
de
MOVE-CORRESPONDING......................................................84
de
Impresso.......................................................................104
Telas
dados.........................................................................116
do
(screen
SAP
R/3.................................................................63
painter)....................................................177
Demais Telas...........................................................................67
SUBMIT................................................................................113
Estruturas........................................................................................71
ORDER
Comando
DO..................................................................................................92
Tabelas..........................................................................................116
Botes
Field
Exits......................................................................................198
de
BY........................................................................................81
WRITE...............................................................................85
Funo............................................................................177
SORT...............................................................................................95
Mensagens..............................................................................67
EXPORT/IMPORT....................................................................113
Tipos...............................................................................................72
FOR
Converses
WHILE.............................................................................................92
LOOP...............................................................................................95
Estruturas......................................................................................118
PF-Status
Table
ALL
enhancements........................................................................199
ENTRIES.............................................................................81
e
entre
Titlebar
campos
(menuepainter)...................................................177
estruturas.................................................87
Listas..............................................................................................70
PERFORM..............................................................................114
Variveis..........................................................................................72
UP
Clculos
CHECK.............................................................................................93
READ...............................................................................................96
Ajudas
Table
Text
TO
enhancements..........................................................................199
controls.................................................................................179
n
de
ROWS.................................................................................82
de
pesquisa3........................................................................118
valores............................................................................88
LEAVE...................................................................................114
Ranges............................................................................................73
INNER
Sub-campos
CONTINUE.......................................................................................93
INSERT/MODIFY................................................................................96
Views............................................................................................118
Tabstrip
Frmulas,
JOIN......................................................................................82
control...............................................................................179
requerimentos,
(strings)........................................................................88
controle de cpias (SD, MM, LIS, SOP)..........199
Constantes.......................................................................................74
OUTER
Clculos
STOP...............................................................................................93
DELETE............................................................................................97
ndice............................................................................................118
BTE
- Business
JOIN.....................................................................................83
com datas............................................................................89
Transaction Events (FI)...............................................200
Opes para
Operaes
EXIT................................................................................................93
DESCRIBE
Contedo
de
TABLE..............................................................................97
com
tela
tabelas........................................................................119
cadeias
de seleo...............................................................74
de caracteres..................................................89
Elementos
Nveis
de Controle
de texto...........................................................................76
dentro de um LOOP.................................................97
Inicializao dos objetos....................................................................76
Variveis de sistema (estrutura SYST)..................................................76
Dicionrio de
Introduo
ao dados
SAP.............................................................................................................6
- Criao de tabelas......................................................................123
Conceitos bsicos............................................................................................................58
SM30.............................................................................................................................126
OBJETOS DE
Dicionrio
de dados
DESENVOLVIMENTO..........................................................................59
- Criao de estruturas..................................................................135
Mdulos...........................................................................................................................60
Dicionrio
de dados - Criao de Categorias de tabela.................................................138
Profissionais SAP............................................................................................................62
EVENTOS.....................................................................................................................141
Entrando
Alguns
eventos
no ECC.............................................................................................................63
(verificar o help dos commandos).......................................................143
CONCEITOS
Tabelas
Internas.............................................................................................................145
BSICOS DE ABAP...............................................................................64
EDITORtabelas
Usando
ABAP...............................................................................................................65
internas.................................................................................................146
Sintaxe.............................................................................................................................66
Escolhendo
um tipo de tabela........................................................................................147
INTERAO
Declarando
tabelas
COMinternas...........................................................................................148
USURIO.....................................................................................67
DEFINIES DE
OPERAES
COM
OBJETOS
TABELAS
NOINTERNAS..............................................................149
PROGRAMA...........................................................71
ABAP OPEN SQL...........................................................................................................78
OPERAES
COM MAIS DE UMA TABELA INTERNA.......................................151
ATRIBUIO
Grupo
de Funes..........................................................................................................152
DE VALORES........................................................................................84
COMANDOS DE CONTROLE E EXPRESSES LGICAS......................................91
Funo...........................................................................................................................156
OPERAES
Ajuda
para pesquisa.......................................................................................................168
COM TABELAS INTERNAS................................................................94
MODULARIZAO
Objetos
de bloqueio.......................................................................................................169
DOS PROGRAMAS...................................................................99
Sub-rotinas.....................................................................................................................103
Vises............................................................................................................................170
PROGRAMAS..............................................................................................................105
Listas
X ALV.................................................................................................................171
Programas Comando DATA.......................................................................................108
LISTAS..........................................................................................................................172
Programas Comando WRITE.....................................................................................109
ALV173
Programas
Module
Pool..................................................................................................................174
- Parmetros de seleo - Parameter............................................................110
Programas - Parmetros de Seleo Select-Options...................................................111
Transao.......................................................................................................................183
VARIANTES.................................................................................................................112
Debug............................................................................................................................185
VINCULANDO
COMO
ATIVAR PROGRAMAS...................................................................................113
O MODO DEBUGGING..................................................................186
DICIONRIO
PROCURA
DEDE
CAMPOS
DADOS..........................................................................................115
EM TABELAS...................................................................195
Dicionrio de dados - Criao de domnios..................................................................120
Exits...............................................................................................................................196
MODIFICAES EM PROGRAMAS STANDARD.............................................196
- Field exit Utilizada sobre um determinado elemento de dados, a exit de campo ser
executada, por padro, em todos os campos de tela que fizerem referncia ao elemento
de dados utilizado..........................................................................................................200
- User exit o espao, dentro do programa standard, em que podemos inserir um
cdigo sem abrir o objeto e perder sua garantia............................................................205
Badi 210
Enhancement.................................................................................................................213
Sapscript........................................................................................................................217
Estrutura de Chamada e Controle do SAPSCRIPT.......................................................218
O formulrio..................................................................................................................219
Partes de um formulrio................................................................................................220
Smartforms....................................................................................................................233
Smart Form Builder.......................................................................................................234
BAPI / Batch Input........................................................................................................236
Wander Rodrigues / Claudia Oliveira v09
Pgina 2 de 260
O que SQL?................................................................................251
Execuo
em background.................................................................247
TREINAMENTO ABAP
Escalonamento
SELECT
- Selecionando
/ Acompanhamento...................................................247
registros...................................................252
INSERT Inserindo registros em uma tabela...............................254
UPDATE Atualizando registros...................................................255
DELETE Excluindo registros.......................................................256
Batchinput......................................................................................................................239
SHDB............................................................................................................................241
Batch Input/Call transaction..........................................................................................242
Gerao do SHDB.........................................................................................................243
JOBs..............................................................................................................................247
Performance...................................................................................................................248
SM50 - Process Overview.............................................................................................250
Pgina 3 de 260
TREINAMENTO ABAP
Introduo ao SAP
Pgina 4 de 260
TREINAMENTO ABAP
Pgina 5 de 260
TREINAMENTO ABAP
Pgina 6 de 260
TREINAMENTO ABAP
Pgina 7 de 260
TREINAMENTO ABAP
Pgina 8 de 260
TREINAMENTO ABAP
Pgina 9 de 260
TREINAMENTO ABAP
Pgina 10 de 260
TREINAMENTO ABAP
Pgina 11 de 260
TREINAMENTO ABAP
Pgina 12 de 260
TREINAMENTO ABAP
Pgina 13 de 260
TREINAMENTO ABAP
Pgina 14 de 260
TREINAMENTO ABAP
Pgina 15 de 260
TREINAMENTO ABAP
Pgina 16 de 260
TREINAMENTO ABAP
Pgina 17 de 260
TREINAMENTO ABAP
Pgina 18 de 260
TREINAMENTO ABAP
Pgina 19 de 260
TREINAMENTO ABAP
Pgina 20 de 260
TREINAMENTO ABAP
Pgina 21 de 260
TREINAMENTO ABAP
Pgina 22 de 260
TREINAMENTO ABAP
Pgina 23 de 260
TREINAMENTO ABAP
Pgina 24 de 260
TREINAMENTO ABAP
Pgina 25 de 260
TREINAMENTO ABAP
Pgina 26 de 260
TREINAMENTO ABAP
Pgina 27 de 260
TREINAMENTO ABAP
Pgina 28 de 260
TREINAMENTO ABAP
Pgina 29 de 260
TREINAMENTO ABAP
Pgina 30 de 260
TREINAMENTO ABAP
Pgina 31 de 260
TREINAMENTO ABAP
Pgina 32 de 260
TREINAMENTO ABAP
Pgina 33 de 260
TREINAMENTO ABAP
Pgina 34 de 260
TREINAMENTO ABAP
Pgina 35 de 260
TREINAMENTO ABAP
Pgina 36 de 260
TREINAMENTO ABAP
Pgina 37 de 260
TREINAMENTO ABAP
Pgina 38 de 260
TREINAMENTO ABAP
Pgina 39 de 260
TREINAMENTO ABAP
Pgina 40 de 260
TREINAMENTO ABAP
Pgina 41 de 260
TREINAMENTO ABAP
Pgina 42 de 260
TREINAMENTO ABAP
Pgina 43 de 260
TREINAMENTO ABAP
Pgina 44 de 260
TREINAMENTO ABAP
Pgina 45 de 260
TREINAMENTO ABAP
Pgina 46 de 260
TREINAMENTO ABAP
Pgina 47 de 260
TREINAMENTO ABAP
Pgina 48 de 260
TREINAMENTO ABAP
Pgina 49 de 260
TREINAMENTO ABAP
Pgina 50 de 260
TREINAMENTO ABAP
Pgina 51 de 260
TREINAMENTO ABAP
Pgina 52 de 260
TREINAMENTO ABAP
Pgina 53 de 260
TREINAMENTO ABAP
Pgina 54 de 260
TREINAMENTO ABAP
Pgina 55 de 260
TREINAMENTO ABAP
Conceitos bsicos
Principais caractersticas
O R/3 um sistema de gesto empresarial (ERP) que integra as diversas
reas da empresa (contabilidade, vendas, distribuio, controle de materiais,
manuteno, recursos humanos, produo, etc). O sistema R/3 foi
desenvolvido pela empresa alem SAP.
INTEGRAO
Elementos organizacionais, dados e processos so integrados
Eliminao de dados redundantes
Integridade dos dados
Banco de Dados comum
FLEXIBILIDADE
SAP R/3 permite que seus usurios parametrizem os diferentes
mdulos de negcios para adaptar o sistema Empresa
SAP R/3 permite configurar telas, processamento e relatrios
Permite interface com softwares externos (Mastersaf)
SISTEMA ABERTO
Possibilita fazer interfaces com outros softwares internos da empresa.
Possibilita interfaces com aplicaes especializadas como Rdio
Freqncia, leitura de cdigo de barras, etc
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 56 de 260
TREINAMENTO ABAP
OBJETOS DE DESENVOLVIMENTO
Classe de desenvolvimento
Todos os objetos so agrupados em classes.
Serve para organiz-los por assunto/tipo e facilita a busca.
A classe de desenvolvimento solicitada no momento da sua gravao.
Se a gravao for local, dever ser informado $TMP, caso contrrio, uma
classe que j foi definida via Object Browser (transao SE80) deve ser
informada.
Requests
Como as empresas que possuem o R/3, tem necessariamente no mnimo
duas mquinas (uma para desenvolvimento e outra para produo e,
eventualmente, outra para homologao), para se manter a integridade dos
objetos, foi criado o mecanismo de Requests.
Quando uma analista/programador inicia uma modificao em um objeto
no local (classe de desenvolvimento diferente de $TMP), necessrio
associar esta manuteno a uma request.
Se outro programador tentar alterar o mesmo objeto, o sistema emite aviso
informando que o programa j est sendo alterado.
Nunca se deve fazer alteraes de objetos em outro ambiente que no seja
o de desenvolvimento, para no perdermos esta integridade, ou seja, para
no ter uma verso mais atualizada em produo do que em
desenvolvimento ou no ambiente de qualidade. Neste caso, num prximo
transporte do objeto, a verso mais atualizada seria perdida.
Para atualizar os demais ambientes, temos que liberar e transportar as
requests.
A maioria dos objetos da parametrizao e desenvolvimentos so
dependentes de mandante , portanto, necessitam estar associados a
requests para serem transportados.
importante no associar a uma s requets diversos objetos com aplicaes
diferentes, pois na hora do transporte teriam de ser desmembrados.
A ferramenta que mostra as requests que o usurio tem em aberto, bem
como possibilita sua liberao, o Customizing Organizer - transao SE10
ou SE09 (somente para ABAP).
Pgina 57 de 260
TREINAMENTO ABAP
Mdulos
FI
SD
MM
CO
PP
AM
R/3
PS
QM
PM
WF
HR
IS
Pgina 58 de 260
TREINAMENTO ABAP
Pgina 59 de 260
TREINAMENTO ABAP
Profissionais SAP
Analista Basis profissional responsvel pela estrutura do sistema,
envolvendo controle de hardware, instalao do sistema R/3, configurao
de perfis de usurio, etc).
Analista Funcional profissional responsvel pela configurao do sistema
e adaptao do R/3 realidade da empresa. O analista funcional o elo
entre o usurio final e o desenvolvedor ABAP. Cada mdulo tem seu prprio
analista funcional ( o mdulo de SD tem um ou mais analistas funcionais de
SD, o mdulo MM tem um ou mais analistas funcionais MM, etc).
Analista desenvolvedor ABAP profissional responsvel pelas melhorias
e manutenes no sistema R/3, criando principalmente programas que
complementam as funcionalidades do sistema original.
Arquitetura
O sistema R/3 instalado principalmente nos ambientes UNIX ou Windows
NT, ambos com front end WINDOWS.
O sistema R/3 exige no mnimo duas mquinas, uma para desenvolvimento
de funcionalidades e outra onde as funcionalidades so utilizadas
(Produo). Os programas e outras funcionalidades so transportadas de
uma mquina para outra atravs de requests.
Arquitetura Client-Server R/3 (trs camadas):
Pgina 60 de 260
TREINAMENTO ABAP
Entrando no ECC
Entrando no ECC (R/3)
Idioma no qual
se estar trabalhando.
Ente
r
Barra
de
ttulo
Opo para
Funes
pessoais
cones
de
funo
Opo para
customizae
s
pessoais
Campo de
comando
Nmero
da
sesso
Barra
principal
do menu
Identifica
o
do sistema
Barra
de
status
Pgina 61 de 260
TREINAMENTO ABAP
Pgina 62 de 260
TREINAMENTO ABAP
EDITOR ABAP
Principais funes
CHECANDO A SINTAXE DO PROGRAMA
O compilador pode ser acionado atravs do cone ou do comando Check ,
sua atuao interrompida a cada erro, e dependendo do erro, este pode
ser corrigido automaticamente pelo sistema, caso a ao de Corrigir
esteja correta e seja requerida.
Pgina 63 de 260
TREINAMENTO ABAP
Sintaxe
O ABAP utiliza :
Ponto - . no final de cada declarao.
Barra - / - para indicar nova linha.
Dois pontos e vrgulas - : - para aplicar encadear um mesmo comando.
Os comandos podem ocupar mais de uma linha. Somente quando for
encontrado o ponto que ser considerado o final do comando.
Ex:
WRITE: /001
/001
060
/030
/001
sy-uline,
sy-datum,
sy-uzeit,
text-001,
sy-uline.
COMENTRIOS
Para inserir comentrios no programa podemos usar :
* - astersco - quando o comentrio comea na primeira coluna
aspas duplas - quando o comentrio comea em qualquer
coluna
Pgina 64 de 260
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 65 de 260
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 66 de 260
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 67 de 260
TREINAMENTO ABAP
Listas
So os relatrios emitidos utilizando as diversas ferramentas disponibilizadas como
report, ALV, report painter, report writer, etc. Podem ser simples ou interativos. A
seguir, veremos mais detalhadamente a definio de algumas destas listas.
Pgina 68 de 260
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 69 de 260
TREINAMENTO ABAP
Campo1(5) type c,
Campo2(2) type n.
Data: end of estrut.
Move teste to estrut-campo1.
Move 10
to estrut-campo2.
Tipos
Usado para definir um tipo de dado que ser utilizado no programa,
diferente dos tipos de campo standard pr-definidos.
Sintaxe:
TYPES <type>[(length)]
[TYPE <t>]
[DECIMALS <d>].
Voc no pode usar o parmetro VALUE na instruo TYPES, porque no
existe memria associada com este tipo de dado.
Variveis
Todos os parmetros so opcionais.
O tipo default C (char) e tamanho 1.
Valor inicial
Significado
1 - 65535
SPACE
'00000000'
Nmero inteiro
1 - 65535
'00...0'
Texto numeric
1 - 16
Pgina 70 de 260
TREINAMENTO ABAP
'000000'
1 - 65535
X'00'
Hexadecimal
Ranges
Determina um intervalo que ser usado como condio de seleo.
Internamente, monta uma tabela com os campos: SIGN, OPTION, LOW e
HIGH.
Sintaxe:
* declarao do range
RANGES: ACCOUNT FOR LFA1-LIFNR.
...
* Preenchimento do range. Lembre-se de executar o comando append.
ACCOUNT-SIGN
= I. (Include/Exclude)
ACCOUNT-OPTION
= BT. (operadro EQ,NE,BT)
ACCOUNT-LOW
= 00000001. (valor inicial do intervalo)
Wander Rodrigues / Claudia Oliveira v09
Pgina 71 de 260
TREINAMENTO ABAP
ACCOUNT-HIGH
APPEND ACCOUNT.
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 72 de 260
TREINAMENTO ABAP
PARAMETERS
Default
Memory id
Obligatory
Value check
matchcode.
- SELEO NICA
Exibe um valor default fixo para o campo
Exibe um o ltimo valor digitado para este campo
Obriga digitao
No permite digitar valores diferentes dos mencionados no
Pgina 73 de 260
TREINAMENTO ABAP
LOWER CASE - Mantm o parmetro da maneira que foi digitado. Se no
usado o valor de um
parmetro aaa passar para AAA por exemplo.
PARAMETERS P_TEST(5) TYPE C DEFAULT teste.
OBLIGATORY - necessrio preencher o campo de entrada.
PARAMETERS P_TEST(5) TYPE C OBLIGATORY.
AS CHECKBOX - Disponibiliza uma caixinha (BOX) que conter valor X ou
.
PARAMETERS P_TEST AS CHECKBOX.
Elementos de texto
Os tipos de textos previstos so :
TITULO E CABEALHO - Permite a manuteno do titulo do relatrio,
que ser alojado na barra de ttulos, e do titulo da lista, que ser
posicionado logo abaixo da barra de aplicao. Alm disso, permite montar
o cabealho das linhas detalhes, a qual pode ser montada em tempo de
execuo, atravs da opo System -> List -> List header.
TEXTOS E SELEO
- Permite alterar a descrio que precede ao
campo onde ser informado os parmetros de entrada. Texto de seleo
so linhas de comentrios as quais automaticamente aparecem na tela de
seleo onde a instruo SELECT-OPTIONS ou PARAMETERS usada.
SIMBOLOS DE TEXTOS Permite associar descries as variveis
dinmicas de textos. Tais variveis so muito utilizadas na descrio de
mensagens de erro, pois atravs delas deixa de ser necessria a alterao
do programa fonte, quando se desejar que ela seja exibida em outra lngua.
Pgina 74 de 260
TREINAMENTO ABAP
Sempre que necessrio verifique no dicionrio de dados a estrutura SYST
para verificar se existe alguma varivel que possa ser til aos seus futuros
programas.
Segue abaixo uma relao dos mais importantes campos de sistema.
SY-SUBRC cdigo de retorno dinmico que indica se a execuo de um
comando foi bem sucedida. Quando um comando foi executado com sucesso
o campo SY- SUBRC fica igual a 0, caso contrrio ficar com outro valor que
depende do comando. Para ver as possibilidades de retorno no campo SYSUBRC chame o help do comando.
SY-DATUM data do sistema. Esta armazenada no formato AAAAMMDD.
Quando se quer somete o ms pode-se usar a seguinte instruo:
V_VARIAVEL = SY-DATUM+4(2).
Alguns campos de datas em determinadas tabelas transparentes, esto
armazenadas em formato convertido (principalmente quando fazem parte
da chave primria), por exemplo tabela TCURR. Verificar para estes casos a
rotina de converso do campo (CONVERSION_ EXIT_ XXXX_INPUT).
SY-UZEIT hora do sistema
SYLANGU linguagem de logon
SY-TABIX linha corrente de uma tabela interna.
SY-ULINE - similar ao comando ULINE, porm permite linhas menores que o
tamanho definido no LINE-SIZE do REPORT, por exemplo: WRITE : /SYULINE (10).
SY-VLINE - caracter de fechamento lateral de quadro.
SY- PAGNO nmero da pgina corrente no relatrio.
SY-LINNO linha corrente no relatrio.
SY-UNAME - usurio de logon.
SY- BATCH indicativo de execuo em Background.
SY-UCOMM comando escolhido em relatrios interativos.
SY-LISEL linha selecionada em relatrios interativos.
Para mostrar a lista de variveis de sistema disponveis do editor ABAP/4,
escreva SHOW SY no box da linha de comando ou com a transao SE11
verifique a estrutura SYST.
As variveis de sistema podem ser mudadas pelo programa, mas a
SAP no recomenda que voc faa isso.
SPACE um tipo especial de campo de sistema; ele no uma varivel e
no pode ser mudado.
Pgina 75 de 260
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 76 de 260
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 77 de 260
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 78 de 260
TREINAMENTO ABAP
WHERE NAME LIKE E%.
Percentual % indica que ser obtido todos os nomes que comecem com a
letra E.
Como no segundo exemplo, voc pode usar um underscore (_) para
mascarar um caracter qualquer. Por exemplo, WHERE NAME LIKE B_ll
retornar todos os Bill, Ball, Bull e Bell.
LIST
SELECT * FROM CUSTOMERS
WHERE NAME IN (Smith,
Jones, Jay).
RANGES
SELECT * FROM CUSTOMERS
WHERE POSTCODE IN ZIP.
ZIP pode ser uma tabela de seleo declarada com RANGES.
ORDER BY
Sintaxe:
SELECT * FROM <table>
[WHERE ...]
ORDER BY PRIMARY KEY
ORDER BY <f1> <f2> ...
PRIMARY KEY pode ser usada para todas as tabelas da base de dado SAP.
A direo default do sort ASCENDING, mas voc pode tambm especificar
com direo DESCENDING ou uma mistura dos dois.
Pgina 79 de 260
TREINAMENTO ABAP
Exemplo:
SELECT werks matnr strgr lvorm
INTO TABLE t_marc
FROM marc
WHERE werks IN s_werks
AND strgr EQ Y1.
IF NOT t_marc[] IS INITIAL.
SELECT bwkey matnr mtorg mtuse lvorm
INTO TABLE t_mbew
FROM mbew
FOR ALL ENTRIES IN t_marc
WHERE bwkey EQ t_marc-werks
AND matnr EQ t_marc-matnr.
ENDIF.
UP TO n ROWS
Limita o nmero de registros selecionados .
Sintaxe:
SELECT *
UP TO <n> ROWS
FROM <table>
[WHERE ...]
INNER JOIN
Utilizando INNER JOIN, vrias tabelas so combinadas para formar uma
tabela resultante. Esta tabela resultante contm somente os registros que
possuam registros correspondentes em cada uma das tabelas componentes.
A condio JOIN no limitada a campos-chave. Geralmente, a forma
mais eficiente de ler do banco de dados. O banco de dados responsvel
por decidir que tabela lida primeiro e qual ndice ser usado(DB optimizer).
Quando vrios campos so lidos da tabela da esquerda e a tabela da direita
contm os muitos dos mesmos campos, isso leva a grande quantidade de
dados redundantes. De maneira a evitar isso, devemos sempre trabalhar
informando os campos realmente necessrios no SELECT do INNER JOIN.
Ex:
Tabela_A
Tabela_B
A
B
C
A
D
E
a1
b1
c1
a1
d1
e1
a2
b2
c2
a3
d2
e2
a3
b3
c3
a3
d3
e3
A
a1
a3
a3
Tabela_INNER_JOIN
B
C
D
E
b1
c1
d1
e1
b3
c3
d2
e2
b3
c3
d3
e3
Pgina 80 de 260
TREINAMENTO ABAP
Sintaxe do exemplo:
SELECT<tabela_A>~<campo_A> <tabela_A>~<campo_B>
<tabela_A>~<campo_C>
<tabela_B>~<campo_D> <tabela_B>~<campo_E>
INTO TABLE tabela_inner_join
FROM tabela_A
INNER JOIN tabela_B
ON <tabela_A>~<campo_A> = <tabela_B>~<campo_A>
WHERE <tabela_A>~<campo_A> BETWEEN a1 AND a3.
OUTER JOIN
Usando LEFT OUTER JOIN as tabelas de resultado contm entradas da
tabela designada esquerda, mesmo sem a presena de dados
correspondentes na tabela da direita. Esses campos sero inicializados de
acordo com o seu tipo.
Faz sentido usar LEFT OUTER JOIN, quando os dados da tabela esquerda so
necessrios e no tem correspondncia na tabela da direita.
Comparaes dentro da clusula where no permitiro campos da tabela da
direita.
Ex:
A
a1
a2
a3
Tabela_A
B
C
b1
c1
b2
c2
b3
c3
A
a1
a2
a3
a3
A
a1
a3
a3
Tabela_B
D
E
d1
e1
d2
e2
d3
e3
Tabela_OUTER_JOIN
B
C
D
E
b1
c1
d1
e1
b2
c2
b3
c3
d2
e2
b3
c3
d3
e3
Sintaxe do exemplo:
SELECT
<tabela_A>~<campo_A>
<tabela_A>~<campo_B>
<tabela_A>~<campo_C>
<tabela_B>~<campo_D> <tabela_B>~<campo_E>
INTO TABLE tabela_outer_join
FROM tabela_A
LEFT OUTER JOIN tabela_B
ON <tabela_A>~<campo_A> = <tabela_B>~<campo_A>
WHERE <tabela_A>~<campo_A> BETWEEN a1 AND a3.
Pgina 81 de 260
TREINAMENTO ABAP
ATRIBUIO DE VALORES
Comando MOVE
Sintaxe:
MOVE FIELD1 TO FIELD2.
Exemplos:
MOVE LFA1-NAME1 TO W-NAME1.
MOVE TESTE TO W-NAME1.
MOVE LFA1-NAME1+5(20) TO W-NAME.
Voc pode usar tambm:
write teste to w-name.
w_name = teste.
Comando MOVE-CORRESPONDING
Move os campos de uma estrutura para campos de outra estrutura que
tenham o mesmo nome.
MOVE-CORRESPONDING <string1> TO <string2>.
Exemplo:
DATA: BEGIN OF ADDRESS,
FIRSTNAME(20)
VALUE
SURNAME(20)
VALUE
INITIALS(4)
VALUE
STREET(20)
VALUE
NUMBER TYPE I
VALUE
POSTCODE TYPE N VALUE
CITY(20)
VALUE
END OF ADDRESS.
'Fred',
'Flintstone',
'FF',
'Cave Avenue,
'11'.
'98765'.
'Bedrock',
Pgina 82 de 260
TREINAMENTO ABAP
Comando WRITE
Sintaxe:
WRITE <field>.
WRITE [/][pos][(len)] <field>.
WRITE ... <field> <option>.
WRITE AT [/][pos][(len)] <fld>.
WRITE <symbol name> AS SYMBOL.
WRITE <icon name> AS ICON.
WRITE <field> AS CHECKBOX.
WRITE <f1> TO <f2> <option>.
A ltima sintaxe (WRITE TO <option>) particularmente usada se voc
precisa converter um campo em um processo de movimentao de valores.
Executar os programas SHOWSYMB and SHOWICON para mostrar uma lista
de
todos os smbolos e cones.
Opes de formato para todos os tipos de dados
Opo
Descrio
LEFT-JUSTIFIED
CENTERED
Sada centralizada
RIGHT-JUSTIFIED
UNDER <g>
NO-GAP
NO-ZERO
Pgina 83 de 260
TREINAMENTO ABAP
Opo
Descrio
NO-SIGN
DECIMALS <d>
EXPONENT <e>
ROUND <r>
CURRENCY <c>
UNIT <u>
Opo
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
Pgina 84 de 260
TREINAMENTO ABAP
WRITE: G, F.
WRITE: /10 G,
/ F UNDER G.
Hello
Dolly
HelloDolly
WRITE: / G NO-GAP, F.
DATA TIME TYPE T VALUE
'154633'.
WRITE: TIME,
/(8) TIME USING EDIT MASK
154633
15:46:33
'__:__:__'.
WRITE: '000123',
/ '000123' NO-ZERO.
000123
123
WRITE: SY-DATUM,
/ SY-DATUM YYMMDD.
06/27/1995
950627
Outros exemplos:
WRITE LFA1-NAME1.
WRITE /13(20) LFA1-NAME1.
WRITE /(10) VENDOR UNDER ACCNT.
WRITE AT /POS(LEN) ACCOUNT.
WRITE 10 SYM-GLASSES AS SYMBOL.
WRITE / ICON-SEARCH AS ICON.
WRITE /10 MARK1 AS CHECKBOX.
Note que nova linha(/)+posio+tamanho so sempre escritos como uma
palavra.
Qualquer um dos trs (3) podem ser omitidos, porm quando usados
devem aparecer em uma nica palavra.
WRITE AT deve ser usados ao invs de WRITE quando a posio e o
tamanho so especificados usando variveis.
Pgina 85 de 260
TREINAMENTO ABAP
CAMPO ORIGEM
TIPO TAMANHO
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 ,
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>.
Pgina 86 de 260
TREINAMENTO ABAP
Para clculos mais complexos devemos usar parnteses para separar as
operaes. Devemos deixar um espao em branco entre os parnteses,
variveis e operadores.
Exemplo:
CAMPO1 = ( ( CAMPO1 + 10 ) / 123 * CAMPO2.
Para executar operaes aritmticas de campos correspondestes entre
estruturas, usar: ADD-CORRESPONDING, SUBTRACT-CORRESPONDING,
MULTIPLY-CORRESPONDING, DIVIDE-CORRESPONDING.
Ex:
Data: begin of aaaa.
X(10) type n.
Y(10) type n.
Data: end of aaaa.
Sub-campos (strings)
Voc pode obter uma parte de um determinado
instruo MOVE ou WRITE.
campo
atravs
da
Pgina 87 de 260
TREINAMENTO ABAP
Operaes com cadeias de caracteres
Comando REPLACE
REPLACE ABC WITH 123 INTO TEXT_FLD.
ABC123DEF
123123DEF
Comando TRANSLATE
TRANSLATE FIELD1 TO LOWER CASE.
TRANSLATE FIELD1 TO UPPER CASE.
TRANSLATE TEXT_FLD USING A1B2C3.
AABBCCDDEE
112233DDEE
Comando CONDENSE
CONDENSE TEXT_FLD.
A C E
ACE
ACE
Comando CONCATENATE
CONCATENATE sum mer blues INTO TEXT_FLD.
summer blues
CONCATENATE summer blues INTO TEXT_FLD SEPARATED BY -***-.
summer-***-blues
Comando SPLIT
SPLIT Peter,Paul AT , INTO FLD1 FLD2.
Peter
Paul
Em cada um dos exemplos acima, uma varivel pode ser usada ao invs de
uma literal.
Comando SEARCH
Busca cadeia de caracteres em variveis ou tabelas internas.
SEARCH <c> FOR <str> <options>.
Exemplo:
DATA STRING(30) VALUE 'This is a little sentence.'.
WRITE: / 'Searched', 'SY-SUBRC', 'SY-FDPOS'.
ULINE /1(26).
SEARCH STRING FOR 'X'.
WRITE: / 'X', SY-SUBRC UNDER 'SY-SUBRC',
SY-FDPOS UNDER 'SY-FDPOS'.
Pgina 88 de 260
TREINAMENTO ABAP
SEARCH STRING FOR 'itt '.
WRITE: / 'itt ', SY-SUBRC UNDER 'SY-SUBRC',
SY-FDPOS UNDER 'SY-FDPOS'.
A sada aparece como segue:
SEARCHED SY-SUBRC SY-FDPOS
X
4
0
itt
0
13
Comando SHIFT
Usado para mover o contedo de uma varivel para direita ou esquerda e
eliminar zeros e espaos.
SHIFT <c> LEFT DELETING LEADING <str>.
SHIFT <c> RIGHT DELETING TRAILING <str>.
Exemplo:
DATA: T(14) VALUE ' abcdefghij',
STRING LIKE T,
STR(6) VALUE 'ghijkl'.
STRING = T.
WRITE STRING.
SHIFT STRING LEFT DELETING LEADING SPACE.
WRITE / STRING.
STRING = T.
SHIFT STRING RIGHT DELETING TRAILING STR.
WRITE / STRING.
A sada aparece como segue:
abcdefghij
abcdefghij
abcdef
Pgina 89 de 260
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 90 de 260
TREINAMENTO ABAP
CASE
Sintaxe:
CASE <field>.
WHEN <value1>.
[processing].
WHEN <value2>.
[processing].
...
WHEN OTHERS.
[processing].
ENDCASE.
A instruo CASE usada como alternativa para substituir um IF, quando
todos os processos dependem de um valor de um campo particular. Este
campo pode ser um campo da base de dados ou da tabela interna.
A instruo CASE deve estar encadeada.
WHEN OTHERS uma opo que ser executada quando as outras opes
anteriores no forem satisfeitas.
DO
Sintaxe:
DO.
[processing].
ENDDO.
ou
DO x TIMES.
[processing].
ENDDO.
A sintaxe 1 mostra uma forma bsica do comando DO. Ele executar
infinitamente por isso devemos providenciar um final do loop.
A sintaxe 2 mostra o comando DO de uma forma que ser executada com
um determinado limite, um nmero de vezes definido.
WHILE
Sintaxe:
WHILE <a> <op> <b>.
[processing].
ENDWHILE.
O loop ser executado enquanto a condio seja satisfeita.
Pode ter os mesmos operadores que o IF.
Pgina 91 de 260
TREINAMENTO ABAP
CHECK
Sintaxe:
CHECK <a> <op> <b>.
Use CHECK para saltar todos os processos subseqentes dentro do loop.
Se o resultado de um CHECK for falso, ABAP/4 no executar os comandos
seguintes do loop e ir executar a prxima ocorrncia.
CONTINUE
O processamento se posiciona no prximo registro dentro do loop.
STOP
Depois do comando STOP, o sistema processa o evento END-OF-SELECTION
e termina a execuo do programa.
EXIT
Use EXIT para finalizar o processo de loop completamente.
A instruo EXIT dentro de um loop, causa o trmino do
processamento do loop completamente. Se existir vrios loops
encadeados a instruo EXIT terminar somente o loop em
processamento.
Pgina 92 de 260
TREINAMENTO ABAP
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.
Pgina 93 de 260
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
2
3
1
SY-TABIX
Pgina 94 de 260
TREINAMENTO ABAP
Voc pode usar o CHECK para terminar o processamento do registro lido ou
EXIT para terminar o processamento de loop completo.
Para restringir voc pode utilizar a clusula WHERE (como no SELECT).
Existe diferena quando se executa loop para tabela interna com ou sem
header line, conforme podemos observar abaixo:
READ
LENDO UMA NICA ENTRADA DA TABELA (READ)
A chave de uma tabela interna com header line consiste de todos os
campos os quais no so tipo P, F ou I, ou espao.
IMPLICIT KEY - no need to specify anything else
READ TABLE ITAB.
EXPLICITY KEY - much more efficient than an implicit key
READ TABLE ITAB WITH KEY NAME = BONES.
DIRECT READ - the most efficient option
READ TABLE ITAB INDEX 3.
O primeiro mtodo no slide funciona somente quando a tabela for declarada
usando BEGIN OF ... END OF .... Se a tabela for declarada usando LIKE esse
mtodo no funcionar.
Aps uma leitura bem sucedida, o SY-TABIX conter o ndice do registro lido
e o SY-SUBRC ser 0.
ATENO: Para ler uma tabela grande sem conhecer o ndice, a maneira
mais rpida usando WITH KEY <Chave> BINARY SEARCH. Para usar
isso a tabela deve primeiro ser organizada (SORT) pela chave informada.
INSERT/MODIFY
ALTERANDO UMA TABELA INTERNA (INSERT/MODIFY)
INSERT Insere uma nova linha na tabela interna sem auxlio do HEADER
LINE.
Ex:
Wander Rodrigues / Claudia Oliveira v09
Pgina 95 de 260
TREINAMENTO ABAP
TABLE1-NO = 004.
INSERT TABLE1 INDEX 4.
Se voc conhece o ndice da linha e deseja adicionar ou alterar, o
comando muito simples. Apenas preencha os campos definidos na
estrutura e insira ou modifique com o ndice conhecido.
Ex:
TABLE1-NAME = OATES.
MODIFY TABLE1 INDEX 2.
Voc nunca poder ter ndice em branco em uma tabela. Para adicionar um
novo registro usando INSERT com INDEX, voc deve estar certo que j
existe contedo na tabela (novo ndice - 1). Com um ndice igual ou menor a
0 ocorrer o cancelamento do programa.
DELETE
Excluindo registros da tabela interna (DELETE)
Apagar registro atual dentro do loop.
DELETE TABLE1.
Apagar registro especfico.
DELETE TABLE1 INDEX 4.
Apagar parte dos registros.
DELETE TABLE1 WHERE NO = 002.
Apagar todos os registros da tabela interna.
REFRESH TABLE1.
DESCRIBE TABLE
Retorna o nmero de linhas da tabela interna ou o valor da clusula
OCCURS.
DESCRIBE TABLE <tabela interna> [LINES <nlin>] [OCCURS nocc]
Pgina 96 de 260
TREINAMENTO ABAP
Pgina 97 de 260
TREINAMENTO ABAP
Evento
Descrio
INITIALIZATION
AT SELECTION-SCREEN
START-OF-SELECTION
END-OF-SELECTION
Evento
Descrico
TOP-OF-PAGE
END-OF-PAGE
Event keyword
Event
AT LINE-SELECTION
AT USER-COMMAND
Pgina 98 de 260
TREINAMENTO ABAP
INITIALIZATION
o primeiro evento a ser executado. Ele processado antes de mostrar a
tela de seleo de parmetros.
Este evento normalmente usado para determinar valores iniciais para
parmetros, apesar de existir um outro evento para isso.
a primeira instruo a ser executado aps s definies de variveis,
constantes, etc.
Pode ser usado mesmo que o programa no tenha uma tela de seleo.
Ex:
INITIALIZATION.
DATE = SY-DATUM.
DATE+6(2) = 01.
AT SELECTION-SCREEN OUTPUT
um evento que ser executado antes de mostrar a tela de seleo de
parmetros.
Este evento normalmente usado para determinar valores iniciais para
parmetros.
Ele ser executado aps a instruo INITIALIZATION (se existir).
Ex:
AT SELECTION-SCREEN OUTPUT.
MOVE TESTE TO P-TEST.
AT SELECTION-SCREEN
Este evento executado aps a tela de seleo de parmetros.
usado para verificar o valor de entrada dos parmetros e select-options.
Ex:
AT SELECTION-SCREEN.
IF P-TEST NE TESTE.
MESSAGE E016(DS) ERRO.
ENDIF.
START-OF-SELECTION
Este evento executado aps a tela de seleo de parmetros, aps o at
selection screen (se existir).
Nele normalmente se escreve a lgica principal do programa. Onde podemos
abrir arquivos, inicializar contadores, montar a lgica.
No use este evento para codificar o cabealho de relatrios, pois existe
outro evento para isso.
Ex:
START-OF-SELECTION.
MOVE Y TO W_TEST.
PERFORM READ_MARA.
END-OF-SELECTION
Este evento executado antes de finalizar o programa.
Ele normalmente usado para emisso de totais de controle, para fechar
arquivos e etc
Ex:
END-OF-SELECTION .
CLOSE FILE1.
WRITE: /001 END OF PROGRAM
Pgina 99 de 260
TREINAMENTO ABAP
TOP-OF-PAGE
Define o cabealho de pgina dentro do relatrio
Executado pelo sistema imediatamente antes da primeira impresso da
pgina.
O evento TOP-OF-PAGE no ir substituir automaticamente o cabealho
standard produzido pelo sistema.
Para substitu-lo adicione o parmetro NO STANDARD PAGE HEADING na
instruo REPORT.
Ex:
REPORT Z001 LINE-COUNT 60 LINE-SIZE 90 NO STANDARD PAGE HEADING.
TOP-OF-PAGE.
WRITE: /001 DATA, SY-DATUM,
025 LISTA DE CLIENTES,
060 PAGE, SY-PAGNO.
END-OF-PAGE
O evento ser executado no final de cada pgina.
Normalmente usado para impresso de informaes como nmero de
pgina ou rodap.
Ex:
END-OF-PAGE.
WRITE:
/060 SUB-TOTAL:, W_SUBTOT.
NEW-PAGE
Causa um salto de pgina no relatrio
Usar LINE-COUNT e LINE-SIZE para ajustar o nmero de linhas por pgina e
o nmero de colunas por linha.
RESERV
Sintaxe:
RESERVE <n> LINES.
O sistema executar um salto de pgina se o nmero de linhas definido no
RESERVE for maior que o nmero de linhas restantes a serem impressas
pelo relatrio para aquela pgina.
Usar para assegurar que certas informaes sejam sempre impressas juntas.
FORMAT
Sintaxe:
FORMAT <option 1> ...
<option n> [OFF].
Options:
RESET desliga os formatos
INTENSIFIED mostrar com brilho
INPUT disponibiliza para entrada de dados
INVERSE altera cores ao redor
COLOR <n> liga uma cor
TREINAMENTO ABAP
Use FORMAT para determinar atributos ( cores, brilhos, etc ) de sada para
os dados na tela. OFF pode ser usado com todas as opes exceto com
RESET.
Qualquer formato que voc defina, ser aplicado na prxima instruo
WRITE. O formato vlido at que voc aplique um novo formato ou que
ocorra um evento.
Se voc desejar definir um formato especfico para um determinado(s)
campo(s) dentro da instruo WRITE, ento voc pode especificar o formato
dentro do prprio comando.
Exemplos:
FORMAT INTENSIFIED. FORMAT INPUT OFF.
WRITE: HELLO INTENSIFIED OFF , BYE BYE INPUT, HI .
Como resultado o HELLO aparecer em display normal e no abrir para
input.
BYE BYE aparecer com brilho e abrir para input e HI aparecer com brilho
e no abrir para input.
REPORT ZTESTE2.
LOOP AT TABINI.
AT NEW ANLKL.
NEW-PAGE.
FORMAT COLOR 6 INTENSIFIED OFF.
WRITE:/002 'Classe : ', TABINI-ANLKL.
ENDAT.
AT END OF ANLKL.
FORMAT COLOR 5 INVERSE.
ENDAT.
Opes para configurar o formato de sada de um relatrio
FORMAT COLOR <n> [ON] INTENSIFIED [ON|OFF] INVERSE [ON|
OFF].
<n>
OFF Ou
COL_BACKGROUND
<c>
Color
Intended for
Depende do
GUI
background
Ou COL_HEADING
grey-blue
headings
Ou COL_NORMAL
light grey
list bodies
Ou COL_TOTAL
Yellow
totals
Ou COL_KEY
blue-green
key columns
Ou COL_POSITIVE
Green
TREINAMENTO ABAP
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'
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
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 podem ser utilizadas como View ou ABAP JOINs
No possuem ndices secundrios
No utilizao de GROUP BY, ORDER BY, ...
No pode ser acessada utilizando o acesso nativo (NATIVE SQL)
No possuem appends( campos adicionais)
Wander Rodrigues / Claudia Oliveira v09
TREINAMENTO ABAP
Por este motivo, deve-se observar mais atentamente a performance do
programa, quando for utilizar uma destas tabelas. Ex: BSEG.
Adiante em DICAS DE PERFORMANCE, voltaremos a abordar este assunto.
TABELAS POOL
TREINAMENTO ABAP
As tabelas so dependentes entre si para formao da
chave(cluster key).
Estruturas
Criadas da mesma forma que as tabelas, as estruturas no
possuem mais de uma ocorrncia. So reas de memria muito
utilizadas para reunir campos de diversas tabelas em um s
registro (layout).
Ajudas de pesquisa3
uma funo standard do sistema R/3 que disponibiliza ao usurio uma
lista das possibilidades de entrada para um campo de uma tela.
Isto ocorre automaticamente sempre que, na definio do campo
informamos a sua tabela de validao.
Esta funo, chamada com o acionamento da tecla F4.
Views
Os dados para uma aplicao, geralmente esto distribudos em vrias
tabelas.
Viso o objeto do dicionrio que permite combinar estes dados, de uma
maneira otimizada, sobre uma estrutura.
possvel visualizar os dados de uma viso, com a transao SE16.
Os dados de uma viso derivam de uma ou mais tabelas, mas no so
armazenados fisicamente.
ndice
uma cpia de uma base de dados com campos reduzidos, que permitem
um acesso mais rpido a um registro.
Nesta base de dados reduzida esto os campos ordenados de maneira a
promover a classificao desejada.
Esta base de dados sempre classificada e nela contm pointers que
apontam para o registro correspondente na base de dados original.
O ndice PRIMRIO formado pelos campos chaves da tabela original. O
ndice primrio gerado automaticamente, quando um registro includo na
tabela.
possvel criar outros ndices para uma mesma tabela, eles so chamados ndices
SECUNDRIOS. Estes so criados para melhorar a performance de programas caso
a chave primria no possa ser utilizada.
Contedo de tabelas
Transao SE16 - Visualizao dos dados de uma tabela ou view.
Wander Rodrigues / Claudia Oliveira v09
TREINAMENTO ABAP
TREINAMENTO ABAP
Salve
e ative
o domnio.
TREINAMENTO ABAP
TREINAMENTO ABAP
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
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:
TREINAMENTO ABAP
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.
DATA v_vbeln TYPE vbak-vbeln.
DATA v_matnr TYPE vbap-matnr.
* Parmetros de entrada
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME.
PARAMETERS
p_vbeln TYPE vbak-vbeln OBLIGATORY. "Ordem de venda
PARAMETERS
p_posnr TYPE vbap-posnr OBLIGATORY. "Item
PARAMETERS
p_matnr TYPE vbap-matnr OBLIGATORY. "Material
SELECTION-SCREEN END OF BLOCK bl1.
* Consiste a ordem de venda
AT SELECTION-SCREEN ON p_vbeln.
SELECT SINGLE vbeln
INTO v_vbeln
FROM vbak
WHERE vbeln = p_vbeln.
IF sy-subrc NE 0.
MESSAGE e398(00) WITH 'Ordem no existe'.
ENDIF.
* Consiste ordem de venda e item (Bloco BL1)
AT SELECTION-SCREEN ON BLOCK bl1.
SELECT SINGLE vbeln
INTO v_vbeln
FROM vbap
WHERE vbeln = p_vbeln AND
posnr = p_posnr.
IF sy-subrc NE 0.
MESSAGE e398(00) WITH 'Ordem/Item no existem'.
ENDIF.
* Consiste todos os campos da tela
AT SELECTION-SCREEN.
SELECT SINGLE matnr
INTO v_matnr
FROM vbap
WHERE vbeln = p_vbeln AND
posnr = p_posnr.
IF v_matnr NE p_matnr.
MESSAGE e398(00) WITH 'Material informado difere do item'.
ENDIF.
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
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
TREINAMENTO ABAP
TREINAMENTO ABAP
TREINAMENTO ABAP
DELETE itab WHERE k = kval.
mais eficiente que
LOOP AT itab WHERE k = kval.
DELETE itab.
ENDLOOP.
Apagando duplicidades
DELETE ADJACENT DUPLICATES FROM itab COMPARING key.
mais eficiente que
READ TABLE itab INDEX 1 INTO prev_line.
LOOP AT itab FROM 2.
IF itab = prev_line.
DELETE itab.
ELSE.
prev_line = itab.
ENDIF.
ENDLOOP.
TREINAMENTO ABAP
IF itab1[] = itab2[].
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
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
Para utilizar um matchcode standard necessrio descobrir o seu nome para associa-lo
ao campo desejado.
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
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
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
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
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
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
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
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
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
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
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
Gerao do SHDB
Para gerar o SHDB, execute a transao SHDB conforme abaixo:
TREINAMENTO ABAP
TREINAMENTO ABAP
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
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
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.
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:
selectnome,sobrenome,cidade
fromempregados
wherenomeLIKE'Ana%';
Este comando SQL ir retornar todos os registros onde a coluna nome comece com
Ana.
TREINAMENTO ABAP
Este comando SQL ir retornar todos os registros onde a coluna nome termine com er.
Exemplo com sinal de igualdade:
select*fromempregados
wherenome='Diego';
Este comando ir retornar apenas as linhas onde a coluna nome contenha exatamente o
termo Diego.
TREINAMENTO ABAP
Nota: Todos os valores de texto devem estar entre aspas simples => Texto.
TREINAMENTO ABAP
Exemplos:
updateagenda
setddd=31
whereestado=MG;
updateagenda
setsobrenome='Souza',
bairro=Centro
wherenome='Carlos';
updateempregados
setidade=28
wherenome='Claudio'
andsobrenome=Carvalho
TREINAMENTO ABAP
Exemplos:
deletefromempregados;
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.