Вы находитесь на странице: 1из 353

TRAINNING EDUCATION SERVICES

ABAP ACADEMY
Mdulo ABAP Advanced 40 horas

www.trainning.com.br
1

Curso Avanado de ABAP


Linguagem ABAP & Ferramentas

Tpicos

Classe de Desenvolvimento
Requests
Dicionrio de Dados
Criao de Tabela
ABAP Editor
ABAP Report
Construo de Programa
Tela de Seleo
Mdulo Pool
Bacth Input
Call Transactions

-4
-5
- 111
- 152
- 193
- 198
- 221
- 227
- 277
- 316
- 347
3

Classe de Desenvolvimento
As classes de desenvolvimento so importantes
para o transporte entre sistemas de produo e
desenvolvimento.
Todos os objetos pertencentes ao
desenvolvimento so combinados em uma classe
de desenvolvimento, o qual atribudo em uma
request.
Todos os objetos associados classe de
desenvolvimento $TMP so locais e no so
transportados
4

Change Request - Tipos


Geralmente o sistema SAP definido em trs
ambientes: Desenvolvimento, Qualidade e
Produo.
Para transportar os objetos de um repositrio de um
ambiente para outro, utilizado as Change Requests
H seis tipos de Change Requests:

Customizing
Workbench
Transporte de cpias
Relocao objetos s/mudana de pacote
Relocao objetos c/mudana de pacote
Relocao de um pacote completo
5

Change Requests - Tipos


Customizing
 So reservadas para transportar contedo de tabelas
do tipo customizing. Essas tabelas contm
informaes de configurao dos mdulos
funcionais (FI, MM, SD etc.) ou configuraes do
sistema.

Workbench
 So utilizadas para transportar objetos do
repositrio tais como programas, objetos do
dicionrio de dados tais como tabelas e vises
6

Change Requests - Tipos


Transporte de cpias
 Esse tipo de request pode ser utilizada para
transportar objetos a um sistema SAP especfico.
 Os objetos so transportados com as verses que
possuem no sistema atual.
 Os objetos do sistema de origem no so alterados.

Change Requests - Tipos


Relocao objetos sem mudana de pacotes
 Esse tipo de request pode ser utilizada para o
desenvolvimento de objetos em outro sistema SAP
em uma base temporria.
 Esse tipo de request oferece as mesmas
funcionalidades do tipo de request de trasnporte de
cpias, ou seja, possvel mover os objetos de um
sistema para o outro.
 Ex.: O desenvolvimento pode ser realizado em um
ambiente separado, o qual no ir interferir no
processo de desenvolvimento.
8

Change Requests - Tipos


Relocao objetos com mudana de pacotes
 Esse tipo de request pode ser utilizada para o
desenvolvimento de objetos em outro sistema SAP
em uma base permanente.
 Permite a alterao a localidade original dos objetos
para o sistema de destino e alterar os pacotes dos
objetos ao mesmo tempo.
 O pacote alterado automaticamente. Quando um
pacote selecionado, os objetos adquirem o direito
de transporte imediatamente aps a importao no
sistema de destino da request.
9

Change Requests - Tipos


Relocao de um pacote completo
 Esse tipo de request utilizada quando o pacote
completo de um ambiente de desenvolvimento
para ser modificado permanentemente.
 Permite alterar a camada de transporte do pacote
automaticamente.
 Para isso s especificar o pacote e a camada de
transporte onde o pacote dever ser atribudo. A lista
de objetos da request configurada
automaticamente e contm todos os objetos do
pacote.
10

Change Requests
As change requests possuem uma ou mais
tarefas
As tarefas podem ser atribudas a diferentes
usurios
As tarefas contm os objetos que sero
transportados entre os sistemas
As transaes de change requests so: SE01,
SE09 e SE10
11

Change Requests - Criao


As requests podem ser criadas atravs das
transaes SE01, SE09 ou SE10.
3

12

Change Requests - Criao


As requests podem ser criadas no momento da
criao de um objeto

13

Change Requests

Ambiente
Projeto
Proprietrio
Request

Descrio
Tarefas

Objeto

14

15

Debug

Debug
O debug uma ferramenta que permite a
execuo do programa linha a linha, permitindo
assim visualizar os dados conforme o programa
executado.
H dois modos de ativar o debug:
Atravs do comando /H, no campo de comando.

16

Debug
Atravs dos botes Definir/Eliminar ponto de parada
externo e Definir/Eliminar ponto de parada de sesso.
 necessrio entrar no cdigo do programa, inserir o ponto de parada
na linha desejada e executar o programa.

17

Debug - Funcionalidades
1. Ponteiro
2. Caixa de Variveis
3. Boto para alterar o valor
da varivel
4. Exibir instruo atual
5. Etapa Individual (F5)
6. Executar rotina *(F6)
7. Retornar da Rotina (F7)
8. Avanar at o cursor (F8)

6 7 8

2
3

18

19

ABAP Tipos de Dados & Declaraes

Tpicos
Tipos de Dados
Declarao dos tipos de dados

Variveis
Constantes
Tipos de dados elementares
Estruturas
Tabelas internas
Campos de sistema
20

Tipos de Dados
A tabela abaixo mostra os tipos ABAP prdefinidos:
Tipo
b
c
cursor
d
f
i
n
p
string
s
t
x

Tamanho

Tamanho padro

1 Byte
1 a 65,535 caracteres
Igual ao i
8 caracteres
8 bytes
4 bytes
1 a 65,535 characters
1 a 16 bytes
Varivel

1 caracteres
Igual ao i

1 caracteres
8 bytes

2 bytes
6 caracteres

1 a 65,535 bytes
xstring Varivel

Descrio
Inteiro de 1 byte (interno)
Campo texto
Cursor de banco de dados
Campo data
Nmero de ponto flutuante
Inteiro de 4 bytes
Texto numrico
Nmero packed
String de texto
Inteiro de 2 bytes (internal)
Campo de tempo

1 byte

Campo de byte
String de byte

21

Tipos de Dados
A tabela abaixo apresenta os valores permitidos
e os valores iniciais
Tipo
b
c
d

i
n

Valores

Valor Inicial

De 0 a 255
0
Qualquer caractere alfanumrico
" " para cada posio
8 caracteres alfanumricos definidos pelo usurio; Somente valores no
"00000000"
formato AAAAMMDD, os quais so permitidos como entrada de data de
acordo com as regras de calendrio: AAAA(ano): 0001 a 9999, MM(ms): 01 a
12, DD(dia): 01 a 31
Os pontos de nmero flutuante so apresentados internamente com 16 casas
0
decimais de acordo com o padro IEEE-754 (dupla preciso). Os valores
permitidos so -1,7976931348623157EE+308 a -2,2250738585072014EE-308
para a rea negativa, o valor zero, e +2,2250738585072014EE-308 a
+1,7976931348623157EE+308 para a rea positiva. A validade de ambas as
reas so estendidas na direo do zero atravs de nmeros "denormalized"
depois do IEEE-754.
-2.147.483.648 to +2.147.483.647
0
Qualquer caractere alfanumrico, entretanto, os valores vlidos so somente "0" para cada posio
os dgitos de 0 a 9.

22

Tipos de Dados - Continuao


Tipo

Valores

Valor Inicial

0
O tamanho vlido para os nmeros "packed" est entre 1 e 16 bytes; duas
casas decimais so embaladas em um byte, onde o ltimo byte contm
somente uma posio e o sinal de positivo e negativo. Depois do
separador de decimal, at 14 casas decimais so permitidas. Dependendo
do tamanho do campo len e do nmero de casas decimais dec, aplica-se
as seguintes reas de valores: (-10^(2len -1) +1) / (10^(+dec)) a (+10^(2len
-1) -1) /(10^(+dec)) em passos de 10^(-dec). Valores dentro desse
intervalo so arredondados.
string igual ao tipo c
string vazia de tamanho 0
s
-32.768 to +32.767
0
t
6 caracteres alfanumricos definidos pelo usurio; o nico valor vlido so
"000000"
os nmeros que so interpretados como especificao de tempo nas 24
horas do formato do relgio HHMMSS. A SAP recomenda a utilizar
exclusivamente 00 a 23 para HH(horas) e 00 a 59 para MM (minutos) e 00
a 59 para SS (segundos).
x
Caracteres hexadecimais 0-9, A-F
hexadecimal 0
xstring Igual ao tipo x
string vazia de tamanho 0
p

23

Declarao de tipos de dados


O comando DATA utilizado para declarar as
variveis, estruturas e tabelas internas.
O comando CONSTANTS declara as constantes
do programa
O comando TYPES permite criar tipos de dados
elementares, tipos de referncia e tipos de
tabela, o qual ser utilizado como referncia
para variveis, estruturas e tabelas
O comando TABLE cria uma work-area da
tabela definida
24

Variveis
A declarao das variveis se d atravs da
sintaxe:
DATA { {var[(len)] TYPE abap_type [DECIMALS dec]}
| {var TYPE abap_type [LENGTH len] [DECIMALS dec]} }
[VALUE val|{IS INITIAL}]
[READ-ONLY].
Exemplo:
DATA v_char1(10)
DATA v_int1
DATA v_dec1
DATA v_char2(2)

TYPE
TYPE
TYPE
TYPE

c. Tipo char com 10 posies


i. Tipo inteiro
p DECIMALS 2. Tipo compactado com 2 casas decimais
c VALUE ST. Tipo char com 2 posies e valor
padro ST

25

Tipos de dados elementares


O comando TYPES define um tipo de dado
independente ou um tipo de dados estruturado.
Qualquer tipo de dados independente definido
com a adio TYPE e um tipo de dados ou com a
adio LIKE e o objeto de dados.
possvel criar tipo de dados elementares, tipos de
referncia, tipos estruturados e tipos de tabelas.
Para o tipo de dados estruturado, utiliza-se o bloco
de comandos BEGIN OF <tipo> e END OF <tipo>
junto com o comando TYPES.
26

Contruo de tipos de dados


Tipo de dados elementares
TYPES: text1
text2

TYPE c LENGHT 10,


TYPE c LENGHT 15.

DATA: v_msg
v_coment

TYPE text1, Varivel


TYPE text2. Varivel

Tipos estruturados
TYPES: BEGIN OF ty_mara,
matnr
TYPE mara-matnr,
mtart
TYPE mara-mtart,
zeinr TYPE mara-zeinr,
END OF ty_mara.
DATA: wa_mara

TYPE

ty_mara. Work-area

27

Tipos de dados elementares


Tipo de tabelas
TYPES spfli_sort TYPE SORTED TABLE OF spfli
WITH UNIQUE KEY carrid connid.
DATA: ti_spfli TYPE spfli_sort. Criao de tabela
interna

28

Constantes
O comando CONSTANTS cria um objeto do tipo
constante, ou seja, um objeto que no pode ter o
valor alterado.
Exemplo:
CONSTANTS: c_mtart

TYPE mara-mtart VALUE FERT.

CONSTANTS: BEGIN OF sap_ag,


zip_code TYPE n LENGTH 5 VALUE '69189',
city
TYPE string VALUE `Walldorf`,
country TYPE string VALUE `Germany`,
END OF sap_ag.

29

Estrutura
A estrutura pode ser criada de trs formas:
Referncia a uma tabela transparente
Referncia a uma estrutura do dicionrio de dados
Referenciado a um tipo de dados local

A estrutura criada atravs do comando DATA

30

Estrutura Criao de estrutura


Declarado com o tipo de uma tabela
transparente ou estrutura do dicionrio de
dados
Exemplo1: Criao da estrutura (work-area) wa_mara com os componentes da tabela
transparente MARA.
DATA wa_mara
LIKE mara. Ou
DATA wa_mara
TYPE mara.

Exemplo2: Criao da estrutura (work-area) wa_return com os componentes da estrutura do


dicionrios de dados BAPIRET2.
DATA wa_return
LIKE BAPIRET2. Ou
DATA wa_return
TYPE BAPIRET2.

31

Estrutura Criao de estrutura


Declarado com o tipo de dados local
TYPES: BEGIN OF ty_mara,
matnr TYPE mara-matnr,
mtart TYPE mara-mtart,
zeinr TYPE mara-zeinr,
END OF ty_mara
Exemplo: Criao da estrutura WA_MARA com referncia ao tipo de dados
TY_MARA.
DATA: wa_mara TYPE ty_mara.

32

Estrutura Criao de estrutura


Declarao com o comando DATA
Exemplo: Criao da estrutura WA_MARA com os componentes MATNR, MTART
e ZEINR da tabela transparente MARA.
DATA: BEGIN OF wa_mara,
matnr TYPE mara-matnr,
mtart TYPE mara-mtart,
zeinr LIKE mara-zeinr,
END OF wa_mara

33

Tabela Interna
A tabela interna fornece um meio de armazenar
dados de uma estrutura fixa e armazen-la em
memria.
Os dados so armazenados linha por linha na
memria e cada linha tem a mesma estrutura.
No ABAP, as tabelas internas substituem as
funcionalidades de arrays.
O tipo de dados de uma tabela interna definido
pelo tipo de linha, chave e tipo de tabela interna.

34

Tabela Interna Tipo de Linha


O tipo de linha de uma tabela interna pode ser de
qualquer tipo, sendo que normalmente uma
estrutura.
Cada componente da estrutura uma coluna na
tabela interna.
O tipo de linha pode ser elementar ou outra
tabela interna.

35

Tabela Interna Chave


A chave identifica a coluna da tabela
H dois tipos de chaves:
Chave standard
Chave definido pelo usurio

A chave a ser especifica pode ser UNIQUE ou


NON-UNIQUE
Tabelas internas com chaves nicas, no podem
ter registros duplicados com a mesma chave. A
univocidade ir depender do mtodo de acesso
tabela.
36

Tabela Interna Tipo de Tabela


O tipo de tabela define como o ABAP ir acessar
os registros individuais da tabela.
Existem trs tipos de tabelas internas:
Standard table
Sorted table
Hashed table

37

Tabela Interna Standard table


A standard table possui um ndice linear interno.
O sistema pode acessar os registros pelo ndice da
tabela ou pela chave.
O tempo de resposta de acesso atravs da chave
proporcional ao nmero de entradas na tabela
A chave da tabela standard no nica e no
pode ser especificada uma chave nica
Os registros so inseridos rapidamente pois no
necessrio verificar a existncia do registro

38

Tabela Interna Sorted table


Os registros da sorted table so sempre inseridos
de forma ordenada.
Possuem ndice interno.
O acesso aos registros podem ser efetuados pelo
ndice ou pela chave.
O tempo de resposta pela chave logariticamente
proporcional ao nmero de entradas na tabela,
devido procura binria.
As chaves a serem utilizadas podem ser nicas ou
no nicas e devem ser especificadas na
declarao da tabela interna.
39

Tabela Interna Hashed table


As hashed tables no possuem ndice linear.
Os registros da tabela s podem ser acessados
atravs de chaves.
O tempo de resposta de acesso tabela independe
da quantidade de registros e constante, pois o
sistema utiliza um algortmo hash.
A chave de acesso deve ser nico.
Ao definir a tabela deve ser especificado o
parmetro UNIQUE.

40

Tabela interna Header Line


Header line uma work-area utilizada quando a
tabela interna processada.
A work-area est vinculada tabela interna e
declarada com o parmetro WITH HEADER
LINE.
Exemplo:
MATNR MTART
DATA: ti_mara
TYPE mara OCCURS 0 WITH HEADER SCE002
LINE.VERP
8D08
FERT
SCE001
FERT
READ TABLE ti_mara WITH KEY matnr = SCE002. SCE002 VERP
7D5F
HALB

ZEINR
234545
122212
534213
234545
112221

41

Criao de tabelas internas


Standard table
DATA: BEGIN OF ti_mara OCCURS 0,
matnr
TYPE mara-matnr,
mtart
TYPE mara-mtart,
zeinr
TYPE mara-zeinr,
END OF ti_mara.
DATA: ti_mara

TYPE ty_mara OCCURS 0 WITH HEADER LINE.

DATA: ti_mara

TYPE TABLE OF ty_mara.

DATA: ti_mara

TYPE mara OCCURS 0 WITH HEADER LINE.

42

Criao de tabelas internas


Sorted table
TYPES: BEGIN OF ty_mara OCCURS 0,
matnr
TYPE mara-matnr,
mtart
TYPE mara-mtart,
zeinr
TYPE mara-zeinr,
END OF ty_mara.
DATA: ti_mara
matnr.

TYPE SORTED TABLE OF ty_mara WITH NON-UNIQUE KEY

43

Criao de tabelas internas


Hashed table
TYPES: BEGIN OF ty_mara OCCURS 0,
matnr
TYPE mara-matnr,
mtart
TYPE mara-mtart,
zeinr
TYPE mara-zeinr,
END OF ty_mara.
DATA: ti_mara
matnr.

TYPE HASHED TABLE OF ty_mara WITH UNIQUE KEY

44

Campos de sistema -SYST


Os campos de sistema ABAP esto sempre
disponveis nos programas ABAP.
O sistema em tempo de execuo preenche os
campos de acordo com o contexto.
Podem ser utilizados nos programas para obter o
status do sistema.
Os campos de sistema so variveis, mas devem
ser tratados como constantes, pois ao alterar
algum valor, o fluxo do sistema pode ser alterado
45

Campos de sistema - SYST


Os campos de sistema esto definidos na
estrutura do dicionrio de dados SYST e nos
programas esto disponveis na estrutura SY.
Exemplos de campos de sistema:
SY-MANDT Retorna o mandante do logon
SY-SUBRC Cdigo de retorno dos comandos
ABAP
SY-TABIX ndice da linha (tabela interna)
SY-BATCH Executa o programa em background
46

Campos de sistema - SYST


Os campos de sistema esto definidos na estrutura do
dicionrio de dados SYST e nos programas esto disponveis
na estrutura SY.
Exemplos:

SY-MANDT Retorna o mandante do logon


SY-SUBRC Cdigo de retorno dos comandos ABAP
SY-TABIX ndice da linha (tabela interna)
SY-BATCH Executa o programa em background
SY-TCODE Cdigo da transao atual
SY-UNAME Nome do usurio
SY-DATUM Data atual do sistema
SY-UZEIT Hora atual do sistema
SY-UCOMM Cdigo de funo que acionou o PAI
47

Campos de sistema - SYST

Campo
INDEX
PAGNO
TABIX
TFILL
DBCNT
FDPOS
COLNO
LINCT
LINNO
LINSZ
PAGCT
MACOL
MAROW
TLENG
LILLI
SUBRC
CUCOL
CUROW
LSIND
LISTI
STEPL
SROWS
SCOLS
LOOPC
TZONE

Descrio

Contador de loops
Pgina da lista atual
ndice de tabelas internas
Nmero de linhas de tabelas internas
Entradas de tabela de banco de dados processadas
Ocorrncia em cadeia de bytes ou caracteres
Coluna atual na lista
Comprimento das pginas da lista
Linha atual na lista
Largura da linha da lista
Campo do sistema obsoleto
N de colunas na margem esquerda de uma lista de impresso
N de colunas na margem superior de uma lista de impresso
Comprimento das linhas de uma tabela interna
Linha da lista selecionada
Cdigo de retorno de instrues ABAP
Posio do cursor horizontal em PAI
Posio do cursor vertical no PAI
ndice da lista de ramificao
ndice da lista exibida
ndice da linha step loop atual
Telas, nmero de linhas
Telas, nmero de colunas
Linhas visveis de um step loop
Data e hora, diferena de horas para hora de referncia UTC

Campo
Descrio
DAYST Flag de horrio de vero
FDAYW Calendrio de fbrica-dia da semana
LANGU Cdigo de idioma do ambiente de texto atual
MODNO ndice do modo externo
BATCH Programa corre em background
BINPT O programa corre em batch input
CALLD Programa ABAP, modo de chamada do programa ABAP
DYNNR N da tela atual
DYNGR Grupo de telas da tela atual
WTITL Marcao para cabealho da pgina standard
CPAGE N da pgina atual de uma lista
DBNAM Banco de dados lgico de um programa executvel
MANDT Identificao do mandante do usurio atual
PEXPI Perodo de reteno spool (parmetro de impresso)
PRINI
Campo do sistema interno
PRIMM Sada imediata (parmetro de impresso)
PRREL Eliminar aps sada (parmetro de impresso)
PRBIG Falso-rosto da seleo (parmetro de impresso)
PRNEW Nova ordem spool (parmetro de impresso)
PDEST Dispositivo de sada (parmetro de impresso)
PLIST
Nome da ordem spool (parmetro de impresso)
PRDSN Nome do spool file
CALLR Local de incio de impresso da lista
RTITL
Ttulo do progr.a imprimir (parmetro de impresso)
PRREC Destinatrio (parmetro de impresso)
PRTXT Texto para falso-rosto (parmetro de impresso)
PRABT Departamento no falso-rosto (parmetro de impresso)

48

Campos de sistema - SYST


Campo
PAART
PRCOP
DBSYS
SYSID
OPSYS
PFKEY
SAPRL
TCODE
UCOMM
SPONO
DATUM
SLSET
UZEIT
UNAME
LSTAT
ABCDE
TITLE
ENTRY
LISEL
ULINE
CPROG
LDBPG
TVAR0
TVAR1
TVAR2
TVAR3

Descrio
Preparao para impresso (parmetro de impresso)
Nmero de expresses (parmetro de impresso)
Sistema de banco de dados central
Nome do sistema SAP
Sistema operacional do servidor de aplicao
Status GUI atual
Release do sistema da SAP
Cdigo de transao atual
Cdigo de funo que acionou o PAI
N spool na sada de listagem
Data atual do servidor de aplicao
Variante utilizada
Hora atual do servidor de aplicao
Nome do usurio
Campo do sistema obsoleto
Alfabeto latino
Contedo da linha de ttulo
Campo do sistema interno
Contedo de uma linha da lista selecionada
Trao horizontal
Programa de chamada
Programa de banco de dados de um banco de dados lgico
Varivel txt.p/caractere preenchimento em ttulos da lista
Varivel txt.p/caractere preenchimento em ttulos da lista
Varivel txt.p/caractere preenchimento em ttulos da lista
Varivel txt.p/caractere preenchimento em ttulos da lista

Campo

Descrio

TVAR4

Varivel txt.p/caractere preenchimento em ttulos da lista

TVAR5

Varivel txt.p/caractere preenchimento em ttulos da lista

TVAR6

Varivel txt.p/caractere preenchimento em ttulos da lista

TVAR7

Varivel txt.p/caractere preenchimento em ttulos da lista

TVAR8

Varivel txt.p/caractere preenchimento em ttulos da lista

TVAR9

Varivel txt.p/caractere preenchimento em ttulos da lista

MSGID

Classe de mensagem

MSGTY

Tipo de mensagem

MSGNO N mensagem
MSGV1 Varivel mensagens
MSGV2 Varivel mensagens
MSGV3 Varivel mensagens
MSGV4 Varivel mensagens
VLINE

Trao vertical

STACO

Primeira coluna de listas exibida

STARO

Linha superior exibida

DATAR

Marcao para entrada em um campo de tela

HOST

Nome do servidor de aplicao atual

DATLO

Data local do usurio atual

TIMLO

Hora local do usurio atual

ZONLO

Fuso horrio do usurio atual

49

50

Linguagem ABAP

Operadores Lgicos
Operadores simples
Igual
Diferente
Maior que
Maior ou igual a
Menor que
Menor ou igual a
Intervalo de valores
inicial

EQ =
NE <> ><
GT >
GE >=
LT
LE
BETWEEN val1 AND val2
IS INICIAL
NOT val1 {operador}

51

Operadores Lgicos
Operadores para string
CONTAINS ONLY
CONTAINS NOT ONLY
CONTAINS ANY
CONTAINS NOT ANY
CONTAINS STRING
CONTAINS NO STRING
COVERS PATTERN
NOT PATTERN

str1
str1
str1
str1
str1
str1
str1
str1

CO
CN
CA
NA
CS
NS
CP
NP

str2
str2
str2
str2
str2
str2
str2
str2

52

Instrues de Controle
Condio IF-ELSE-ENDIF
IF condio.
BLOCO 1
ELSE.
BLOCO 2
ENDIF.

ELSEIF condio.

Condio CASE
CASE varivel.
WHEN valor1.
BLOCO 1
WHEN valor2.
BLOCO 2
WHEN OTHERS.
BLOCO n
ENDCASE.

53

Instrues de Controle
Loops
DO n TIMES.
BLOCO
ENDDO.

CHECK condio.
CONTINUE.

DO.
IF condio.
EXIT.
ENDIF.
BLOCO.
ENDDO.
WHILE condio.
BLOCO.
ENDWHILE.

54

55

Open SQL

Acesso ao Banco de Dados


O R/3 independente do sistema de banco de
dados apesar das diferenas de sintaxes dos
vrios banco de dados.
Cada work-process no servidor de aplicao tem
uma interface de banco de dados.
A interface do banco de dados converte todas as
requisies do banco de dados do R/3 para os
comandos SQL do banco de dados.
56

Acesso ao Banco de Dados


H dois mtodos de acesso ao banco de dados
atravs dos programas ABAP:
Open SQL
 As declaraes Open SQL so subconjuntos do
padro SQL que totalmente integrado ao ABAP.
Eles permitem acessar os dados independentemente
do sistema de banco de dados que o R/3 esteja
utilizando. Eles permitem ler os dados (Select) e
alterar os dados (INSERT, UPDATE, DELETE)

SQL Nativo
57

Acesso ao Banco de Dados


SQL Nativo
 O SQL Nativo vagamente integrado ao ABAP e
permite o acesso a todas as funes contidos na
interface de programao do respectivo sistema de
base de dados.
 Ao contrrio do Open SQL, no SQL Nativo, as
declaraes no so verificadas e convertidas. Elas
so enviadas diretamente para o sistema de banco de
dados.

58

Open SQL
O Open SQL tem os seguintes comandos:
Comando
SELECT
INSERT
UPDATE
MODIFY
DELETE
OPEN CURSOR,
FETCH,
CLOSE CURSOR

Funo
Seleciona os dados das tabelas do banco de dados
Adiciona registros em uma tabela do banco de dados
Altera o contedo de um registro da tabela do banco de dados
Insere um novo registro ou altera o contedo de um registro
existente
Exclui registros da tabela do banco de dados
L os registros de uma tabela do banco de dados utilizando o cursor

59

Open SQL
Cdigo de Retorno
Todos os comandos do Open SQL retornam os
valores para os seguintes campos de sistema:
 SY-SUBRC
 Aps cada comando SQL, o campo de sistema SYSUBRC recebe o valor 0 se a operao foi realizada com
sucesso, caso contrrio, o valor retornado ser diferente
de 0.

 SY-DBCNT
 Aps a execuo do comando SQL, o campo do sistema
SY-DBCNT contm o nmero dos registros
processados.
60

Open SQL - SELECT


O SELECT o comando utilizado para ler os
registros das tabelas do banco de dados.
A sintaxe do comando SELECT :
SELECT <resultado>
INTO <destino>
FROM <origem>
[ WHERE <condio>]
[GROUP BY <campos>]
[ HAVING <condio>]
[ ORDER BY <campos>]
61

Open SQL - SELECT


SELECT <resultado>
A clusula select define a estrutura dos dados a
serem lidos, ou seja, um ou vrios registros, os
campos e se registros idnticos sero aceitos ou
no.
Exemplo:
SELECT SINGLE matnr mtart aurt FROM ...
SELECT DISTINCT matnr mtart FROM ...

62

Open SQL - SELECT


Os dados tambm podem ser agregados por uma
coluna da tabela, atravs das seguintes expresses:





MAX: retorna o valor mximo da coluna


MIN: retorna o valor mnimo da coluna
AVG: retorna o valor mdio da coluna
COUNT: conta os valores ou linhas:
 COUNT ( DISTINCT <campo>): retorna o nmero de
diferentes valores das colunas
 COUNT(*): retorna o nmero total de registros da
seleo

Exemplo:
SELECT MAX( AUART ) FROM...

63

Open SQL - SELECT


INTO <destino>
A clusula INTO define a rea de destino nos
quais o resultado do select transferido.
Os valores podem ser transferidos para variveis,
work-areas e tabelas internas, desde que as
variveis de destino sejam compatveis ou
convertidos com os dados selecionados.

64

Open SQL - SELECT

Inserir em variveis
DATA: v_matnr
v_auart
v_menge

TYPE mara-matnr,
TYPE mara-auart,
TYPE mara-menge.

SELECT matnr auart menge FROM mara


INTO ( v_mara, v_auart, v_menge)...

Inserir em work-area
DATA: BEGIN OF wa_mara,
v_matnr
TYPE mara-matnr,
v_auart
TYPE mara-auart,
v_menge
TYPE mara-menge.
END OF wa_mara.
SELECT matnr auart menge FROM mara
INTO wa_mara

Inserir em work-area baseado em tabela


DATA: wa_mara TYPE mara.
SELECT matnr auart menge FROM mara
INTO CORRESPONDING FIELDS OF wa_mara
Inserir em tabela interna
DATA: BEGIN OF wa_mara
v_matnr
TYPE
v_auart
TYPE
v_menge
TYPE
END OF wa_mara.

OCCURS 0,
mara-matnr,
mara-auart,
mara-menge.

SELECT matnr auart menge FROM mara


INTO TABLE ti_mara
Inserir em tabela interna baseado em tabela
DATA: wa_mara TYPE mara OCCURS 0.
SELECT matnr auart menge FROM mara
INTO CORRESPONDING FIELDS OF TABLE ti_mara

65

OPEN SQL - SELECT


FROM <origem>
A clusula FROM especifica a tabela em que os
dados especificados na clusula select sero lidos.
As vises de banco de dados tambm pode ser
utilizadas na clusula FROM
Podem ser especificados uma tabelas ou mais de
uma tabela, com o uso das clusulas INNER JOIN
ou OUTER JOIN.
Select de uma tabela
SELECT matnr auart menge FROM mara ...
66

Open SQL - SELECT


Select em mais de uma tabela
SELECT ...
...
FROM <tab> [INNER] JOIN
<options>

<dbtab>

[AS <alias> ] ON <cond>

Exemplo:
SELECT m~matnr t~maktx
FROM mara as m INNER JOIN makt as t
ON m~matnr = t~matnr
INTO wa_mat_desc
WHERE m~matnr = 08D8
AND t~spras = SY-LANGU.

67

Open SQL - SELECT


Restringir o nmero de registros
Para restringir o nmero absoluto de registros
includos na seleo, use a clusula abaixo:
SELECT ... FROM <tabela> UP TO <n> ROWS

Onde <n> um valor inteiro positivo e o sistema l


o mximo de <n> registros.

68

Open SQL - SELECT


WHERE <condio>
A clusula WHERE restringe o nmero de registros
selecionados especificando as condies que devem
ser atingidas.
SELECT ...
FROM ...
INTO ...
WHERE campo1 = 8076 AND
campo2 IN ( RTY, ERP, MMP ) OR Lista de valores
campo3 BETWEEN 001 AND 100 AND Intervalos de valores
campo 4 LIKE (ABC%) AND String de comparao
campo 5 IS NULL

69

Open SQL Select


WHERE - Condio tabular
A clusula where tem uma variante especial que permite derivar
as condies das linhas e colunas de uma tabela interna:
SELECT ... FOR ALL ENTRIES IN <itab> WHERE <condio>

Ao especificar um campo da tabela interna como um operando


em uma condio, todas as linhas da tabela interna so lidas. A
comparao ento executada para cada linha da tabela interna.
Para cada registro, o sistema seleciona os registros do banco de
dados que satisfaam a seleo.
As linha duplicadas so automaticamente eliminadas do
resultado.
Se a tabela interna estiver vazia, todas as entradas da tabela do
banco de dados so lida.

70

Open SQL - Insert


O comando INSERT adiciona registro(s) na
tabela interna
Os registros podem ser adicionados
individualmente ou coletivamente
Inserindo um nico registro:
INSERT INTO <DBTAB> VALUES <work-area> OU
INSERT <DBTAB> FROM <work-area>.

 O contedo da work-area so adicionados tabela


do banco de dados <ITAB>. A work-area deve ter a
mesma estrutura da tabela do banco de dados.
71

Open SQL - Insert


Inserindo vrios registros:
INSERT <DBTAB> FROM TABLE <ITAB>[ACCEPTING DUPLICATE KEYS]

 O contedo da tabela interna <ITAB> adicionado


na tabela do banco de dados <DBTAB> em uma
nica operao. A tabela interna deve ser do mesmo
tipo da tabela do banco de dados.
 Se a tabela possuir campos chaves duplicados, um
erro de execuo apresentado. Se o parmetro
ACCEPTING DUPLICATE KEYS for utilizado, no
apresentado o erro de execuo, mas o campo de
sistema SY-SUBRC receber o valor 4.
72

Open SQL - Insert


Exemplo
Insere um registro individual na tabela SPFLI:
TABLES SPFLI.
DATA WA TYPE SPFLI.
WA-CARRID = 'LH'.
WA-CITYFROM = 'WASHINGTON'.
...
INSERT INTO SPFLI VALUES WA.
WA-CARRID = 'UA'.
WA-CITYFROM = 'LONDON'.
...
INSERT SPFLI FROM WA.

73

Open SQL - Insert


Exemplo
Insere vrios registros na tabela SPFLI:
DATA: ITAB TYPE HASHED TABLE OF SPFLI
WITH UNIQUE KEY CARRID CONNID,
WA LIKE LINE OF ITAB.
WA-CARRID = 'UA'. WA-CONNID = '0011'. WA-CITYFROM = ...
INSERT WA INTO TABLE ITAB.
WA-CARRID = 'LH'. WA-CONNID = '1245'. WA-CITYFROM = ...
INSERT WA INTO TABLE ITAB.
WA-CARRID = 'AA'. WA-CONNID = '4574'. WA-CITYFROM = ...
INSERT WA INTO TABLE ITAB.
...
INSERT SPFLI FROM TABLE ITAB ACCEPTING DUPLICATE KEYS.

74

Open SQL Update


O comando UPDATE utilizado para alterar o
contedo da tabela do banco de dados
Modificando registros individuais
Para modificar os registros individualmente de uma
tabela do banco de dados atravs de uma work-area,
utilize o seguinte comando:
UPDATE <dbtab> FROM <work-area>

Se a tabela do banco de dados conter um registro com


a mesma chave, o registro atualizado. Caso contrrio,
o registro no alterado e o SY-SUBRC recebe o valor
4.
75

Open SQL Update


Modificando vrios registros
Para modificar vrios registros de uma tabela do
banco de dados, o comando :
UPDATE <DBTAB> FROM TABLE <ITAB>

Se o sistema no puder modificar um registro


devido a no existncia de um registro com chave
especificada, o processo no finalizado, mas o
processamento continua no prximo registro.
76

Open Sql - Update


Modificando os registros coluna por coluna
Para modificar determinada colunas na tabela do
banco de dados, utilize o comando:
UPDATE <DBTAB> SET <set1> <set2> ... WHERE <COND>.

A condio WHERE determina as linhas que sero


alteradas. Se a clusula WHERE no for especificada,
todos os registros so atualizados. A expresso <set1>
o parmetro que determina as colunas que sero
atualizadas:
<s1> = <f>, sendo que <f> pode ser um objeto de
dados ou uma coluna da tabela do banco de dados.
77

Open SQL - Update


Exemplo de Update
Atualiza o contedo da coluna PLANETYPE com A310 e diminui o valor da
coluna PRICE por 100 para cada entrada na tabela SFLIGHT onde CARRID
seja LH e CONNID 0402.
UPDATE SFLIGHT SET PLANETYPE = 'A310'
PRICE = PRICE - '100.00'
WHERE CARRID = 'LH' AND CONNID = '0402'.
Os campos CARRID e CONNID so os campos chaves da tabela SPLFI. Todos
os registros que tiverem como chave os valores AA e 0064, sero
atualizados.
DATA WA TYPE SPFLI.
MOVE 'AA' TO WA-CARRID.
MOVE '0064' TO WA-CONNID.
MOVE 'WASHINGTON' TO WA-CITYFROM.
...
UPDATE SPFLI FROM WA.

78

Open SQL - Delete


O comando DELETE utilizado para excluir os
registros da tabela do banco de dados.
Para excluir as linhas utilizando condies
utilize a seguinte sintaxe:
DELETE FROM <dbtab> WHERE <cond>

Todas as linhas que atenderem a condio sero


removidas.
Se uma tabela interna vazia for especificada na
clusula where, todos os registros da tabela do
banco de dados sero removidos.
79

Open SQL - Delete


Ao invs de utilizar a clusula WHERE,
possvel selecionar os registros para excluso
utilizando o contedo de uma work-area.
DELETE <dbtab> FROM <work-area>.

Isto exclui o registro com a mesma chave primria


da work-area.

80

Open SQL - Delete


Tambm possvel excluir vrias linhas
coletivamente utilizando uma tabela interna.
DELETE <dbtab> FROM TABLE <itab>

Esta sintaxe exclui todos os registros da tabela do


banco de dados que possuem as mesmas chaves
primrias da tabela interna.
Se o sistema no puder excluir um registro, pois a
chave especificada no existe, a operao no
cancelada, mas o processo continua a partir do
prximo registro.
81

Open SQL - Delete


Exemplo de Delete
Todas os registros da tabela SFLIGHT so excludos onde PLANETYPE tenha o
valor A310 e CARRID tenha o valor LH.
DELETE FROM SFLIGHT WHERE PLANETYPE = 'A310' AND CARRID = 'LH'.

Os campos CARRID e CONNID so campos chave da tabela SPFLI. Os registros


com as chaves primrias AA e 0064 so excludas.
TABLES SPFLI.
DATA: BEGIN OF WA,
CARRID TYPE SPFLI-CARRID,
CONNID TYPE SPFLI-CONNID,
END OF WA.
MOVE 'AA' TO WA-CARRID.
MOVE '0064' TO WA-CONNID.
DELETE SPFLI FROM WA.

82

Open
SQL
Delete
Uma tabela interna hashed definida com a estrutura das chaves primrias da
tabela SPFLI. Depois do preenchimento da tabela interna, os registros da
tabela do banco de dados sero excludos de acordo com os valores das chaves
internas da tabela interna.
DATA: BEGIN OF WA,
CARRID TYPE SPFLI-CARRID,
CONNID TYPE SPFLI-CONNID,
END OF WA,
ITAB LIKE HASHED TABLE OF WA
WITH UNIQUE KEY CARRID CONNID.
WA-CARRID = 'UA'. WA-CONNID = '0011'.
INSERT WA INTO TABLE ITAB.
WA-CARRID = 'LH'. WA-CONNID = '1245'.
INSERT WA INTO TABLE ITAB.
WA-CARRID = 'AA'. WA-CONNID = '4574'.
INSERT WA INTO TABLE ITAB.
...
DELETE SPFLI FROM TABLE ITAB.

83

Open SQL Consideraes


Os comandos INSERT, UPDATE e DELETE
trabalham com work-area e tabela interna.
As work-areas e tabelas internas devem ter a mesma
estrutura da tabela do banco de dados que ser
manipulada.
Se a operao foi realizada com sucesso, o valor do
campo de sistema SY-SUBRC ser 0, caso contrrio
ser 4.
O campo de sistema SY-DBCNT ir conter o nmero
de registros afetados durante a operao.
84

85

Operaes em Tabela Interna

Tabela Interna
A tabela interna utilizada para armazenar um
ou mais registros em memria e pode ser
acessado e manipulado de forma similar a uma
tabela de banco de dados.
Os dados da tabela interna podem ser inseridos,
removidos, modificados, ordenados,
comparados e lidos.
O comando SELECT no pode ser utilizado para
obter os registros de tabela interna.
86

Tabela Interna - Inicializar


Como qualquer objeto de dados, a tabela interna
pode ser inicializada atravs dos comandos:
CLEAR <ITAB>
 Este comando restaura a tabela interna ao estado ao qual
estava imediatamente aps a declarao. Isto significa
que a tabela no contm linhas. Entretanto a memria
utilizada pela tabela interna continua alocada.
 Se a tabela interna possuir cabealho, a tabela e
cabealho possuem o mesmo nome e para apagar o
contedo da tabela, necessrio utilizar as chaves ([])
aps o nome da tabela interna, caso contrrio, somente o
contedo cabealho ser apagado.
87

Tabela Interna - Inicializar


 O comando REFRESH realiza o mesmo
procedimento do comando CLEAR[], ou seja,
reinicializa a tabela interna e mantm a memria
utilizada pela tabela interna alocada.
 O comando FREE reinicializa a tabela interna e
libera a memria alocada.

88

Tabela Interna - Inicializar


Exemplo:
DATA: BEGIN OF LINE,
COL1,
COL2,
END OF LINE.
DATA ITAB LIKE LINE OCCURS 0 WITH HEADER LINE.
CLEAR ITAB.
CLEAR ITAB[].
REFRESH ITAB.
FREE ITAB.

Limpa
Limpa
Limpa
Limpa

o
o
o
o

cabealho da tabela interna


contedo da tabela interna
contedo da tabela interna
contedo da tabela interna

89

Tabela Interna - Comparao


As tabelas internas podem ser comparadas.
... <itab> <operador> <itab2> ...

O operador a ser utilizado pode ser os operadores


ABAP (EQ, =, NE, <>, ><, GE, >=, LE, <=, GT, >,
LT, <).
O primeiro critrio de comparao entre tabelas
internas o nmero de linhas que eles contm.
Se as tabelas internas comparadas contm o mesmo
nmero de linhas, eles so comparados linha por
linhas e componente por componente.
90

Tabela Interna - Comparao


Se o componente for outra tabela interna, eles
so comparados recursivamente.
Se a tabela interna estiver sendo comparada
diferente da equalidade, a comparao
finalizada quando o primeiro par de
componentes forem diferentes e retorna o
resultado correspondente.

91

Tabela Interna - Comparao


Exemplo
DATA: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF LINE.
DATA: ITAB LIKE TABLE OF LINE,
JTAB LIKE TABLE OF LINE.
DO 3 TIMES.
LINE-COL1 = SY-INDEX.
LINE-COL2 = SY-INDEX ** 2.
APPEND LINE TO ITAB.
ENDDO.
MOVE ITAB TO JTAB.
LINE-COL1 = 10. LINE-COL2 = 20.
APPEND LINE TO ITAB.
IF ITAB GT JTAB.
WRITE / 'ITAB GT JTAB'.
ENDIF.

APPEND LINE TO JTAB.


IF ITAB EQ JTAB.
WRITE / 'ITAB EQ JTAB'.
ENDIF.
LINE-COL1 = 30. LINE-COL2 = 80.
APPEND LINE TO ITAB.
IF JTAB LE ITAB.
WRITE / 'JTAB LE ITAB'.
ENDIF.
LINE-COL1 = 50. LINE-COL2 = 60.
APPEND LINE TO JTAB.
IF ITAB NE JTAB.
WRITE / 'ITAB NE JTAB'.
ENDIF.
IF ITAB LT JTAB.
WRITE / 'ITAB LT JTAB'.
ENDIF.

92

Tabela Interna - Ordenao


As tabelas standard ou hashed podem ser
ordenadas.
O comando para ordernao :
SORT <itab> [ASCENDING|DESCENDING] [AS TEXT].

O comando ordena a tabela interna <itab> em ordem


ascedente pela sua chave.
A direo da ordem pode ser especificada atravs das
opes ASCENDING e DESCENDING, sendo que a
primeira opo a padro.
Quanto maior a tabela, maior ser o tempo para
orden-la.
93

Tabela Interna - Ordenao


A tabela interna pode ser ordenada pelo
componente desejado atravs do comando abaixo:
SORT <itab> [ASCENDING|DESCENDING] [AS TEXT]
BY <f1> [ASCENDING|DESCENDING] [AS TEXT]
...
<fn> [ASCENDING|DESCENDING] [AS TEXT].

A tabela interna ordenada pelos componentes


<f1> ... <fn>, ao invs da chave da tabela. O
nmero de campos a serem ordenados est
limitado a 250.
94

Tabela Interna - Ordenao


Ordenao Alfabtica
Bem como as opes ASCENDING e
DESCENDING, tambm pode ser especificado que
os campos a serem ordenados devem ser
ordenados alfabeticamente, o qual afeta o mtodo
de ordenao em strings.

95

Tabela Interna Determinar Atributos


Para determinar os atributos de uma tabela interna
em tempo de execuo que no estava disponvel
estaticamente, utilize o comando:
DESCRIBE TABLE <itab> [LINES <l>] [OCCURS <n>] [KIND <k>].

O uso do parmetro LINES retorna o nmero de


linhas preenchidas na varivel <l>.
O uso do parmetro OCCURS, retorna o tamanho
inicial da tabela interna para a varivel <n>.
O uso do parmetro KIND, retorna o tipo de tabela
interna para a varivel <k>, onde
96

Tabela Interna Determinar Atributos


O uso do parmetro KIND, retorna o tipo de
tabela interna para a varivel <k>, onde:
 T = Tabela standard
 S = Tabela sorted
 H = Tabela hashed

97

Tabela Interna Determinar Atributos


Exemplo:
DATA: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF LINE.

Sada
0

10

DATA ITAB LIKE HASHED TABLE OF LINE


WITH UNIQUE KEY COL1 INITIAL SIZE 10.
DATA: LIN TYPE I,
INI TYPE I,
KND TYPE C.
DESCRIBE TABLE ITAB LINES LIN OCCURS INI KIND KND.
WRITE: / LIN, INI, KND.

98

Tabela Interna Determinar Atributos


Exemplo:

Sada
1000

10

DO 1000 TIMES.
LINE-COL1 = SY-INDEX.
LINE-COL2 = SY-INDEX ** 2.
INSERT LINE INTO TABLE ITAB.
ENDDO.
DESCRIBE TABLE ITAB LINES LIN OCCURS INI KIND
KND.
WRITE: / LIN, INI, KND.

99

Tabela Interna Inserir linha individual


Para inserir uma linha na tabela interna, a
sintaxe :
INSERT <line> TO <itab>.

<line> pode ser uma work-area ou a expresso


INITIAL LINE.
A work area deve ser compatvel com a tabela
interna e a expresso INITIAL LINE insere um
registro em branco na tabela interna.
100

Tabela Interna Inserir linha individual


Regras
Em uma tabela interna standard, a linha inserida
no final da tabela interna
Em uma tabela sorted, a linha inserida de acordo
com a chave da tabela. Se a chave no nica, o
registro duplicado inserido acima da entrada
existente com a mesma chave.
Em uma tabela hashed, a linha inserida de
acordo com a chave da tabela.
101

Tabela Interna Inserir vrias linhas


Para inserir vrias linhas na tabela interna, a
sintaxe :
INSERT LINES OF <itab1> [FROM <n1>] [TO <n2>] INTO TABLE <itab2>.

<itab1> e <itab2> so tabelas com tipos de linhas


compatveis. O sistema insere as linhas da tabela
<itab1> um por um na tabela <itab2> usando as
mesmas regras da insero individual.
Se <itab1> uma tabela com ndice (standard e
sorted), pode ser especificado a primeira e a ltima
linha da tabela que dever ser inserida em <n1> e
<n2>.
102

Tabela Interna Inserir Linhas


Exemplo: Preencher a tabela interna com seis entradas
DATA: BEGIN OF LINE,
LAND(3) TYPE C,
NAME(10) TYPE C,
AGE TYPE I,
WEIGHT TYPE P DECIMALS 2,
END OF LINE.

LINE-LAND = 'GB'. LINE-NAME = 'Jenny'.

DATA ITAB LIKE SORTED TABLE OF LINE


WITH NON-UNIQUE KEY LAND NAME
AGE WEIGHT.

INSERT LINE INTO TABLE ITAB.

LINE-LAND = 'G'. LINE-NAME = 'Hans'.


LINE-AGE = 20. LINE-WEIGHT = '80.00'.
INSERT LINE INTO TABLE ITAB.
LINE-LAND = 'USA'. LINE-NAME = 'Nancy'.
LINE-AGE = 35. LINE-WEIGHT = '45.00'.
INSERT LINE INTO TABLE ITAB.

LINE-AGE = 18. LINE-WEIGHT = '50.00'.


INSERT LINE INTO TABLE ITAB.
LINE-LAND = 'F'. LINE-NAME = 'Michele'.
LINE-AGE = 30. LINE-WEIGHT = '60.00'.

LINE-LAND = 'G'. LINE-NAME = 'Karl'.


LINE-AGE = 60. LINE-WEIGHT = '75.00'.
INSERT LINE INTO TABLE ITAB.
LOOP AT ITAB INTO LINE.
WRITE: / LINE-LAND, LINE-NAME, LINE-AGE, LINEWEIGHT.
ENDLOOP.

LINE-LAND = 'USA'. LINE-NAME = 'Howard'.


LINE-AGE = 40. LINE-WEIGHT = '95.00'.
INSERT LINE INTO TABLE ITAB.

103

Tabela Interna Inserir Linhas


Resultado

104

Tabela
Interna

Inserir
Linhas
Exemplo: Duas tabelas internas so criadas com os mesmos
componentes, mas com tipo de tabelas diferente. Cada um
preenchido com trs linhas.
DATA: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF LINE.
DATA: ITAB LIKE STANDARD TABLE OF LINE,
JTAB LIKE SORTED TABLE OF LINE
WITH NON-UNIQUE KEY COL1 COL2.
DO 3 TIMES.
LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX ** 2.
APPEND LINE TO ITAB.
LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX ** 3.
APPEND LINE TO JTAB.
ENDDO.
INSERT LINES OF ITAB INTO TABLE JTAB.
LOOP AT JTAB INTO LINE.
WRITE: / SY-TABIX, LINE-COL1, LINE-COL2.
ENDLOOP.

105

Tabela Interna Inserir Linhas


Resultado

106

Tabela Interna Inserir linhas


sumarizadas
O comando abaixo permite inserir linhas
somadas na tabela interna:
COLLECT <wa> INTO <itab>.

Todos os campos que no fazem parte da chave da


tabela deve ser do tipo numrico (F, I ou P).
O comando COLLECT deve ser utilizado para criar
tabelas sumarizadas.

107

Tabela Interna Inserir linhas


sumarizadas
Quando uma linha inserida, o sistema verifica se
h uma entrada na tabela que combine com a
chave. Se no houver uma entrada correspondente
na tabela, o comando COLLECT tem o mesmo
efeito do comando INSERT. Se uma entrada existir
na tabela, o comando COLLECT no cria uma nova
linha, mas adiciona o contedo dos campos
numricos da work-area no contedo dos campos
numricos da linha existente.
108

Tabela Interna Inserir linhas


sumarizadas
Exemplo: Os dois primeiros comandos COLLECT trabalham como o
comando INSERT. No terceiro comando COLLECT, a primeira linha
da ITAB modificada.
DATA: BEGIN OF LINE,
COL1(3) TYPE C,
COL2(2) TYPE N,
COL3 TYPE I,
END OF LINE.

LINE-COL1 = 'def'. LINE-COL2 = '34'.


LINE-COL3 = 5.
COLLECT LINE INTO ITAB.
WRITE / SY-TABIX.
LINE-COL1 = 'abc'. LINE-COL2 = '12'.

DATA ITAB LIKE SORTED TABLE OF LINE


WITH NON-UNIQUE KEY COL1 COL2.

LINE-COL3 = 7.
COLLECT LINE INTO ITAB.
WRITE / SY-TABIX.

LINE-COL1 = 'abc'. LINE-COL2 = '12.


LINE-COL3 = 3.
COLLECT LINE INTO ITAB.
WRITE / SY-TABIX.

LOOP AT ITAB INTO LINE.


WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
ENDLOOP.

109

Tabela Interna Inserir linhas


sumarizadas

110

111

Curso Avanado de ABAP


Dicionrio de Dados

Objetivo
O dicionrio de dados permite a descrio
centralizada de todos os dados utilizados no
sistema sem redundncia.
Informaes novas ou modificadas so
fornecidas automaticamente para todos os
componentes do sistema, garantindo assim, a
integridade, consistncia e segurana dos dados.

112

Caractersticas do Dicionrio de Dados


Gerncia centralizada das definies de dados
utilizados no sistema
Suporte as definies dos tipo de dados de
usurios (elemento de dados, estruturas e
tabelas)
Definio de estrutura de objetos de banco de
dados (tabelas, ndices e viso), os quais so
criados automaticamente no banco de dados
113

Caractersticas do Dicionrio de Dados


Os principais tipos de objetos do dicionrio de
dados so:
Tabelas
Vises
Tipos (elemento de dados, estruturas e categoria
de tabelas)
Domnios
Ajuda de Pesquisa
Objetos de Bloqueio
114

Transao SE11

115

116

TABELAS

Tabelas
As tabelas podem ser definidas
independentemente do banco de dados no
dicionrio de dados.
Quando a tabela ativada, uma definio fsica
da tabela criada no banco de dados de acordo
com a tabela criada no dicionrio de dados.
As definies das tabelas so convertidas do
dicionrio de dados para a definio de um
determinado banco de dados.
117

Ativao de tabelas
Dicionrio de Dados

TAB1

TAB2

TAB3

TAB4

TAB...

Banco de Dados

Oracle, MSSQL, DB2, etc


118

Tipos de tabelas
Existem trs tipos de tabelas no dicionrio de dados. So elas:
Tabelas Transparentes
 Para cada tabela transparente no dicionrio de dados h uma tabela
correspondente no banco de dados com o mesmo nome, campos e
definies.

Tabelas Pool
 Para cada tabela no banco de dados, h vrias tabelas no dicionrio de
dados. O R/3 utiliza o pool de tabelas uma grande quantidade (dezenas a
milhares) de pequenas tabelas (de 10 a 100 registros cada). As tabelas
pool reduzem a quantidade de recursos necessrios do banco de dados
quando vrias tabelas pequenas necessitam ser acessadas ao mesmo
tempo.

Tabelas Cluster
 As tabelas cluster so similares as tabelas pool. Eles so utilizados para
armazenar poucas tabelas (de 2 a 10) mas com grande quantidade de
dados. A vantagem de utilizar tabelas cluster no caso de acessar dados de
mltiplas tabelas simultaneamente, reduzindo o nmero de acesso ao
banco de dados aumentando a performance.

119

Classe de Entrega
A classe de entrega controla o transporte de
dados da tabela, no caso de instalao, mudana
de release, cpia de mandante, e no caso de
transporte entre sistemas de cliente. A classe de
entrega tambm considerada na Atualizao
ampliada de tabelas.

120

Classe de Entrega
Existem as seguintes classes de entrega:
A

Tabela de aplicao (dados mestre e de movimento)

Tabela de cliente, os dados so atualizados exclusivamente pelo cliente.

Tabela para arquivar dados temporrios.

Tabela de cliente, a SAP pode inserir registros novos, mas no pode sobregravar ou eliminar
aqueles que j existem. necessrio que o conjunto de nomes de cliente seja definido na
tabela TRESC (utilizar o report RDDKOR54).

Tabela de sistema com conjuntos de nomes prprios para entradas de cliente. necessrio
que o conjunto de nomes de cliente seja definido na tabela TRESC (utilizar o report
RDDKOR54).

Tabela de sistema, as modificaes de dados tm o status de modificaes de programa.

Tabela de sistema (por exemplo, tabela do ambiente de desenvolvimento), cujos dados so


transportados por objetos de transporte prprios (por exemplo, R3TR PROG, R3TR TABL,
etc).

121

Definio de tabelas
A definio de tabelas possuem os seguintes
componentes:

Campos da tabela
Chave Externa
Configuraes Tcnicas
ndice

122

Campos da Tabela
rea de definio dos campos da tabela

123

Campos da Tabela - Referncia


Se houver algum campo do tipo moeda ou
quantidade, necessrio informar a tabela e o
campo de referncia.
A tabela de referncia deve conter um campo no
formato de chave de moeda (tipo de dado CUKY)
ou unidade de medida (UNIT)
Um campo s atribudo ao campo de referncia
em tempo de execuo. Ex. Se um campo contm
um valor monetrio, a moeda determinada de
acordo com o campo de referncia.
124

Campo da tabela - Referncia

125

Chave Externa
O relacionamento de tabelas no dicionrio de
dados realizado atravs de chave externa
Verificao de valores para campos de entrada
Associar vrias tabelas numa viso ou objetos de
bloqueio

126

Chave Externa

127

Configuraes Tcnicas
Define como a tabela ser manuseada quando
for criada no banco de dados, tais como o tipo de
buffer da tabela e criar log de alterao de
registros da tabela
Os parmetros da configurao tcnica so:

Categoria de dados
Categoria de tamanho
Buffer
Log
128

Categoria de Dados
A categoria de dados define o tablespace ou Dbspace do banco
de dados quando ele criado.
As categorias de dados so:
APPL0 (dados mestre)
 So dados raramente atualizados como dados de um cliente
(nome, telefone, endereo)

APPL1 (dados transacionais)


 So dados freqentemente atualizados. Um exemplo so os
materiais de um depsito, os quais so alterados a cada nova
ordem de compra

APPL2 (dados organizacionais)


 So dados que so definidos quando o sistema instalado e
raramente modificado. Um exemplo a tabela com o cdigo dos
pases.

USR1 e USR2
 So categorias para uso do cliente para testes de desenvolvimento.
129

Categoria de tamanho
O parmetro categoria de tamanho define o
espao necessrio esperado para a tabela no
banco de dados.
As categorias de tamanho variam de 0 a 4.
Para cada categoria, atribudo um tamanho
fixo de memria no banco de dados, o qual
depende do tipo do banco de dados utilizado

130

Categoria de tamanho

Configuraes Tcnicas
Categoria de Tamanho

Extenso
Inicial

Primeira
Extenso

Segunda
Extenso

TAB_A
TAB_B
TAB_C

1
2
3

TAB_A
TAB_B
TAB_C

131

Buffer
O tipo de buferizao define quais os registros
sero armazenados no buffer do servidor de
aplicao quando o registro acessado.
Somente os campos chaves podem ser
buferizados.
Os tipos de buferizao so:
Armazenar em buffer registros individuais
Armazenar em buffer reas genricas
Armazenamento em buffer completo
132

Buffer Registros Individuais


Com o armazenamento em buffer de registros
individuais, somente os registros atualmente
lidos so carregados no buffer.
Esse tipo de buffer necessita de menos espao de
armazenamento
Os custos administrativos so maiores, pois mais
acesso ao banco de dados so necessrios

133

Buffer Registros Individuais


Exemplo:
Se o tipo de armazenamento
em buffer
for
Tabela transparente
MARD
MATNR
WERKS
LGORT
208014180
M400
individual, somente o registro lido MD40
carregado no
208014180 M400
MD42
208014400 M400
MD40
buffer.
SELECT SINGLE
208014400 M400
MD42
FROM MARD
WHERE MATNR = 208014400
AND WERKS = M400
AND LGORT = MD40.

280806160
280806160
280808120

M400
M400
M400

MD40
MD42
MD40

Contedo do Buffer
208014400 M400

MD40

134

Buffer reas Genricas


Com a bufferizao de reas genricas, todos os
registros onde o critrio de seleo seja genrico,
so carregados no buffer.
necessrio informar o nmero de campos
chave para a rea genrica.
necessrio que o nmero entrado esteja entre 1
e o nmero de campos chave -1. Por exemplo,
para uma tabela com 6 campos chave, s so
admitidos valores entre 1 e 5.
135

Buffer reas Genricas


No exemplo abaixo, o registro marcado lido pelo
programa. Se a tabela possuir buffer genrico, todos os
registros lidos com a chave genrica (MATNR e WERKS)
so gravados no buffer.
SELECT *
FROM MARD
WHERE MATNR = 280806150
AND WERKS = M400.

Tabela transparente MARD


MATNR
WERKS LGORT
208014180 M400
MD40
208014180 M400
MD42
208014400 M400
MD40
208014400 M400
MD42
280806160 M400
MD40
280806160 M400
MD42
280806160 M400
MD43

Contedo do Buffer
280806160 M400
280806160 M400
280806160 M400

MD40
MD42
MD43

136

Buffer Completo
Com a buferizao completa, todos os registros
da tabela so carregados no buffer a partir do
primeiro acesso tabela.
As tabelas que devem ser buferizadas so as
tabelas com poucos dados, lidos frequentemente
e raramente atualizados.

137

Buffer Completo
No exemplo abaixo, o registro marcado lido pelo
programa. Se a tabela possuir buffer completo, todos os
registros so gravados no buffer.
SELECT *
FROM MARD
WHERE MATNR = 208014400
AND WERKS = M400
AND LGORT = MD40.

Tabela transparente MARD


MATNR
WERKS LGORT
208014180 M400
MD40
208014180 M400
MD42
208014400 M400
MD40
208014400 M400
MD42
280806160 M400
MD40
280806160 M400
MD42
280806160 M400
MD43

Contedo do Buffer
208014180 M400
208014180 M400
208014400 M400
208014400 M400
280806160 M400
280806160 M400
280806160 M400

MD40
MD42
MD40
MD42
MD40
MD42
MD43

138

Log
O uso do flag de Log utilizado quando h a
necessidade de saber quais registros foram
alterados.
Se o log estiver ativo, cada alterao nos dados da
tabela (com os comandos UPDATE e DELETE) pelo
usurio ou pelo programa registrado na tabela de
log DBTABPRT.
O log deve ser usado com cuidado pois pode
impactar a performance do sistema e se houver
acesso de vrios usurios simultaneamente pode
causar a situao de Lock.
139

ndice
O ndice utilizado para aumentar a eficincia
na busca do registro em determinada tabela.
O ndice pode ser considerado um cpia
reduzida de uma tabela contendo determinados
campos. Essa cpia sempre ordenada.
O ndice contm um ponteiro ao registro
correspondente da tabela selecionada,
permitindo que os campos no contidos no
ndice sejam lidos.
140

ndice
Existem dois tipos de ndice:
ndice Primrio
 O ndice primrio possui os campos chaves da tabela e o ponteiro
para os campos no-chave da tabela. criado automaticamente.

ndice Secundrio
 O ndice secundrio necessrio se a tabela acessada
freqentemente de um modo que no aproveita os campos chaves
da tabela

Podem ser criados mais de um ndice secundrio, mas deve-se


levar em considerao a performance, pois a cada registro
inserido na tabela, o sistema tem que armazenar os dados do
ndice.
O sistema identifica automaticamente qual ndice ser
utilizado se houver mais de um ndice.
141

ndice
ndice Primrio
ndice Primrio para SCOUNTER
MANDT CARRID COUNTNUM P
100
AA
00000001 7
100
BA
00000001 9
100
BA
00000002 12
100
BA
00000003 5
100
BA
00000004 2
100
LH
00000001 10
100
LH
00000002 4
100
LH
00000003 8
100
LH
00000004 11
100
LH
00000005 1
100
LH
00000006 13
100
LH
00000007 6
100
LH
00000008 14
100
UA
00000001 3

Tabela SCOUNTER
MANDT CARRID COUNTNUM AIRPORT
100
LH
00000005
ACA
100
BA
00000004
ACE
100
UA
00000001
BER
100
LH
00000002
LCY
100
BA
00000003
LHR
100
LH
00000007
BER
100
AA
00000001
DEN
100
LH
00000003
FRA
100
BA
00000001
LCY
100
LH
00000001
LGW
100
LH
00000004
LHR
100
BA
00000002
MUC
100
LH
00000006
RTM
100
LH
00000008
HAM

Campos chaves
142

ndice
ndice Secundrio
SELECT *
FROM SCOUNTER
WHERE AIRPORT =LCY.

Binary
Search

ndice Secundrio
AIRPORT
P
ACA
1
ACE
2
BER
3
BER
6
DEN
7
FRA
8
HAM
14
LCY
4
LCY
9
LGW
10
LHR
5
LHR
11
MUC
12
RTM
13

Tabela SCOUNTER
MANDT CARRID COUNTNUM AIRPORT
100
LH
00000005
ACA
100
BA
00000004
ACE
100
UA
00000001
BER
100
LH
00000002
LCY
100
BA
00000003
LHR
100
LH
00000007
BER
100
AA
00000001
DEN
100
LH
00000003
FRA
100
BA
00000001
LCY
100
LH
00000001
LGW
100
LH
00000004
LHR
100
BA
00000002
MUC
100
LH
00000006
RTM
100
LH
00000008
HAM

143

Categoria de Ampliao
A seleo de uma categoria de ampliao
necessria, uma vez que nas ampliaes de
tabelas e de estruturas em programas sem
verificao unicode ativa, principalmente nas
verificaes de tipo e em conjunto com
estruturas profundas, podem ocorrer erros de
sintaxe e em tempo de execuo.
Em funo da definio de estrutura, os botes
de rdio permitidos da caixa de dilogo esto
prontos para entrada
144

Categoria de Ampliao (ECC 6.0)


As opes de categoria de ampliao so:
no amplivel
 A estrutura no pode ser ampliada.

amplivel e em forma de caractere


 Todas os componentes de estrutura e as respectivas ampliaes
tm de ser em forma de caractere (C, N, D ou T).

amplivel e em forma de caractere ou numrica


 A estrutura e a respectiva ampliao no pode conter
categorias de dados profundas (tabelas, referncias, cadeias).

amplivel conforme pretendido


 A estrutura e a respectiva ampliao pode conter componentes,
cuja categoria de dados facultativa.

no classificada
 Esta categoria pode ser selecionada, por exemplo, para um
status de transio, mas no ao criar estruturas.
145

146

DOMNIOS E ELEMENTO DE DADOS

Domnio
O domnio um objeto que contm as
informaes tcnicas de um campo, como o tipo
de dados e o tamanho do campo.
No domnio tambm definido o intervalo de
valores, os quais podem ser valores individuais
ou um conjunto de valores ou uma tabela de
verificao.
No domnio definido as rotinas de converso.
147

Domnio Tipos de dados


Tipos de Dados do Dicionrio
TIPO
ACCP
CHAR
CLNT
CUKY
CURR
DATS
DEC
FLTP
INT1
INT2
INT4
LANG
LCHR
LRAW
NUMC
PREC
QUAN
RAW
TIMS
VARC
UNIT

DESCRIO
Perodo contbil AAAAMM
Cadeias de caracteres com no mximo 255 caracteres
Mandante
Cdigo da moeda, referido por campos CURR
Campo de moeda (divisa), arquivado como DEC
Campo de data (AAAMMDD), arquivado como carac(8)
Campo de clculo ou montante com vrgula e sinal pos./neg.
Nmero em ponto flutuante com preciso de 8 bytes
1 byte n inteiro 0 a 255
2 byte n inteiro 32767 a 32767
4-byte n inteiro -2177483647 a 2177483647
Cdigo de idioma sempre 1 caracter
Seq. longa de caracteres maior que 255 e necessita campo INT2
Seq. longa de bytes, necessita campo INT2
Campo de caracteres s com dgitos mximo de 255 dgitos
Preciso de um campo QUAN
Campo quantidade, aponta p/campo de unidades de formato UNIT
Seqncia de bytes no interpretada
Campo de hora (hhmmss), arquivado como caract.(6)
Seq. longa caracteres, no suportada a partir da verso 3.0
Cdigo de unidades para campos QUAN

148

Elemento de Dados
O elemento de dados um objeto que contm as
possveis descries utilizadas na telas dos
programas e ajudas de pesquisa.
No elemento de dados, especificado o domnio
a ser utilizado.
O elemento de dados atribudo aos campos das
tabelas, estruturas e programas ABAP.

149

Domnio & Elemento de Dados


O domnio s pode ser utilizado pelo elemento
de dados e ambos se completam.
Um domnio pode ser utilizado por vrios
elemento de dados, mas o elemento de dados s
pode ter um domnio.
O campo de uma tabela herda as caractersticas
do elemento de dados, tais como a descrio e
ajuda de pesquisa e o tipo de dado e tamanho do
domnio atribudo ao elemento de dados.
150

Campo & Elemento de Dados &


Domnio
O tipo de dados e o tamanho so sempre consistente
TABELA 1

TABELA 2

Elemento de Dados 1

TABELA 3

Elemento de Dados 2

Domnio

151

152

Criao de Tabela

Antes de criar a tabela, necessrio criar os


domnios que sero atribudos aos elementos de
dados os quais sero atribudos aos campos da
tabela.

153

154
Criao do Domnio SE11
1.
2.
3.

Marcar o boto de rdio Domnio


Inserir o nome do domnio (sempre comea com a letra Z)
Clicar no boto Criar

1
2

155
Criao do Domnio - Definio
4.
5.
6.
7.

Inserir a descrio do domnio


Informar o tipo de dados
Informar a quantidade de posies
Ativar o domnio

4
5
6

156
Criao do Elemento de Dados SE11
8.
9.
10.
11.

Marcar o boto de rdio Categoria dados


Inserir o nome do elemento de dados (sempre comea com a letra Z)
Clicar no boto Criar
Selecionar a opo Elemento de Dados

8
9
11

10

157
Criao do Elemento de Dados Ctg.dds
12. Inserir a descrio
13. Inserir o nome do domnio criado
14. Clicar na aba Denomin.campo para inserir os textos do campo

12
14
13

158
Criao do Elemento de Dados Denomim.campo
15. Inserir a descrio
16. Ativar o elemento de dados

16

15

159
Criao da Tabela SE11
17. Marcar o boto de rdio Tab. Banco dados
18. Inserir o nome da tabela (sempre comea com a letra Z)
19. Clicar no boto Criar

17
18

19

160
Criao da Tabela Entrega e atualizao
20.
21.
22.
23.

Inserir a descrio da tabela


Definir a classe de entrega
Definir a regra de atualizao da tabela
Clicar na aba Campos

20

23
21
22

161
Criao da Tabela Campos
24.
25.
26.
27.
28.

Definir o nome do campo (nomenclatura livre)


Definir se o campo chave e se o campo NOT NULL
Inserir o nome do elemento de dados
Definir a chave externa (opcional)
Clicar no boto Configuraes tcnicas (obrigatrio)

28

25

27

24
26

162
Criao da Tabela Opes tcnicas
29.
30.
31.
32.
33.

Definir a categoria de dados


Definir a categoria de tamanho
Ativar o buffer se necessrio
Definir o tipo de armazenamento em buffer caso o buffer tenha sido ativado
Voltar para a tela anterior

33

29

30
31
32

163
Criao da Tabela ndice
34. Clicar no boto ndices... para abrir a janela de ndice
35. Clicar no boto Criar e selecionar a opo desejada para abrir a janela de identificao do
ndice
36. Inserir o cdigo de identificao do ndice

34

35

36

164
Criao da Tabela ndice
37)
38)
39)
40)

Inserir a descrio do ndice


Indicar os parmetros do ndice
Indicar os campos da tabela que faro parte do ndice
Salvar o ndice

40
37

38

39

165
Criao da Tabela Categoria de Ampliao
41) No menu Suplementos, selecionar a opo Categoria de ampliao...
42) Selecionar a categoria de ampliao pretendida
43) Clicar em Aceitar

41

42

43

Visualizar dados da tabela


Os dados includos em uma tabela podem ser
visualizados atravs das transaes SE16 ou
SE16
SE16N, sendo
esta ltima a verso SE16
mais nova nas
N
verses ECC5 e ECC6.

166

Viso
Os dados de uma viso so derivadas de uma ou
mais tabelas, mas no so armazenadas fisicamente.
Uma viso pode ser utilizado por um programa
ABAP para a seleo de dados.
O primeiro passo definir as tabelas bases
No segundo passo, essas tabelas devem ser
associadas atravs de condies Join
O terceiro passo definir os campos das tabelas base
que devero estar presentes na viso
O quarto passo definir as condies de seleo que
restringem os registros a serem apresentados na
viso
167

Viso
Existem quatro tipos de viso:

Viso de banco de dados


Viso de projeo
Viso de atualizao
Viso de ajuda

168

Viso de banco de dados


Geralmente, os dados esto distribudos entre vrias
tabelas. Uma viso fornece um meio de obter estes
dados distribudos.
A operao de join realizada no banco de dados,
minimizando o nmero de acesso ao banco de
dados.
Se a viso possuir somente uma tabela, o sistema
permite a insero de registro, caso contrrio
somente a leitura das tabelas
O acesso aos dados de uma viso geralmente mais
rpido do que acesso individual as tabelas
169

Viso de banco de dados


Programa ABAP
Definio da viso
no dicionrio de dados
F1

F2

F3

F5

F8

Interface do banco de dados


Ao ativar a viso
criada no banco de dados

F1

F2

F3

F5

F8

Definio da viso no
banco de dados
F1

F2

F3

Tabela 1

F4

F5

Tabela 2

F6

F7

F8

Tabela 3

170

Viso de projeo
Viso de projeo utilizado para ocultar
campos de uma tabela.
A viso de projeo contm apenas uma tabela
base. No possvel definir condies de
seleo.
No h um objeto correspondente no banco de
dados para a viso de projeo.
possvel acessar tabelas clusters e pool com a
viso de projeo
171

Viso de atualizao
A viso de atualizao fornece um meio fcil de
atualizar objetos de aplicaes complexas.
Todas as tabelas de uma viso de atualizao devem
estar associadas com chaves estrangeiras, pois as
condies de join na viso de manuteno so
derivadas das chaves estrangeiras.
No possvel entrar as condies de join como a
viso de banco de dados.
O mecanismos de manuteno fornecido atravs
da transao SE54, para criar o programa de
manuteno e a transao SM30 para executar o
programa de atualizao.
172

Viso de atualizao
Objeto da
Aplicao

Viso de manuteno
nas tabelas

F1

F2

F3

F5

F8

Atualizao dos dados


atravs da viso da
manuteno

F1

F2

F3

Tabela 1
Chave Estrangeira

F4

F5

F6

Tabela 2

F7

F8

Tabela 3

Chave Estrangeira

173

Viso de ajuda
A viso de ajuda utilizada na ajuda de
pesquisa.
O mtodo de seleo de uma ajuda de pesquisa
tabela ou viso.
Se for necessrio utilizar uma viso de banco de
dados, ser implementado a condio inner join.
Se for necessrio a condio outer join, a soluo
a viso de ajuda.
Todas as tabelas definidas na viso de ajuda
deve estar associadas com chave estrangeira.
174

175
Criao - Viso de banco de dados
1.
2.
3.
4.

Marcar o boto de rdio Viso


Inserir o nome da viso (sempre comea com a letra Z)
Clicar no boto Criar
Selecionar a opo Viso de banco de dados

4
1

176
Criao - Viso de DB tabelas/condies join
5.
6.
7.
8.

Inserir a descrio da viso


Definir as tabelas bases
Definir as condies de Join
Clicar na aba Cpos.viso

5
8

6
7

177
Criao - Viso de DB Campos Viso
9.

Especificar os campos da viso

178
Criao - Viso de DB condio de seleo
10. Definir a condio de seleo
11. Ativar a viso

11

10

Estruturas
As estruturas so utilizadas para definir os
dados da interface dos module pools e telas e
para definir os tipo de parametros dos mdulos
de funo.
As estruturas possuem componentes que podem
referenciar a um tipo elementar (via elemento de
dados ou diretamente especificando o tipo de
dados e tamanho), outra estrutura ou uma
categoria de tabela.
As estruras podem possuir vrios nveis.
179

Ajudas de Pesquisa
A ajuda de pesquisa (F4) uma funo standard
do SAP.
Ele permite apresentar ao usurio uma lista de
possveis entradas para um determinado campo.
til quando um campo requer a entrada de um
valor formal.

180

Ajuda de Pesquisa - Processo


1. O usurio clica no boto de match-code
relacionado ao campo para obter uma lista de
possveis valores para o campo
2. O sistema apresenta opes de pesquisa para os
valores
3. O usurio especifica o critrio de seleo e inicia a
pesquisa
4. O sistema determina os valores que satisfaam as
restries e apresenta o resultado em uma lista
5. O usurio seleciona o valor atravs de duplo
clique.
6. O valor selecionado transferido para o campo
181

Ajuda de Pesquisa Elementar

182

Ajuda de Pesquisa Coletiva

183

Objeto de bloqueio
O R/3 sincroniza simultaneamente o acesso de
vrios usurios aos mesmos registros atravs de
mecanismos de bloqueio.
Os bloqueios so ativados e desativados atravs de
mdulos de funo.
Os mdulos de funo de bloqueio so criados
automaticamente pelo dicionrio de dados.
O objeto de bloqueio pode ter uma ou mais tabelas.
O nome do objeto de bloqueio deve comear com a
letra E.
184

Objeto de bloqueio - Estrutura


As tabelas nas quais os registros devem ser
bloqueados atravs de objetos de bloqueio so
definidos com as respectivas chaves.

CH1

Tabela 1

D1

Chave estrangeira
CH2

Tabela 2

CH3

Chave estrangeira
CH4

CH5

CH6

D3

Tabela 2

185

Objeto de bloqueio - Parmetros


Os parmetros de bloqueio de uma tabela consiste
nas chaves da mesma.
Os parmetros de bloqueio so utilizados como
parmetros de entrada nos mdulos de funo de
bloqueio para ativar ou desativar o bloqueio.
Chamada do mdulo de funo de bloqueio com as chaves
CH1 = 2 e CH3 = 1
Tabela 1
CH1 D1
1
...
2
...
3
...

Tabela 2
CH2 CH3
1
1
2
1
2
2
3
1
3
3

D2
...
...
...
...
...

Tabela 3
CH4 CH5 CH6
1
1
A
2
1
A
2
1
B
2
1
C
2
3
A
2
3
B
3
1
A

D3
...
...
...
...
...
...
...

D4
...
...
...
...
...
...
...

Os registros em vermelho esto bloqueados

186

Objeto de bloqueio - Modo


O modo de bloqueio controla como os usurios iro acessar os
dados simultaneamente.
Pode ser atribudo separadamente para cada tabela do objeto de
bloqueio
O acesso por mais de um usurio pode ser efetuado pelos seguintes
modos:
Bloqueio de escrita (Exclusive Lock)
 Os dados bloqueados s podem ser lidos ou processados por um nico
usurio. Tanto a solicitao de outra proteo contra gravao como a
solicitao de um bloqueio de leitura so rejeitadas.

Bloqueio de leitura (Shared Lock)


 Vrios usurios podem acessar simultaneamente os mesmos dados para
leitura. Contudo, assim que um usurio processar os dados, um segundo
usurio j no pode acessar estes dados. As solicitaes de novos
bloqueios de leitura so aceitas, mesmo se forem provenientes de outros
usurios. Uma proteo contra gravao rejeitada.

Bloqueio de escrita ampliado (Exclusive but not cumulative)


 Enquanto as protees contra gravao podem ser solicitadas vrias vezes
e canceladas sucessivamente pela mesma transao, uma proteo contra
gravao ampliada s pode ser solicitada uma vez pela mesma transao.
Qualquer outra solicitao de um bloqueio rejeitada.

187

Objeto de bloqueio Mdulo de


Funo
Quando o objeto de bloqueio ativado, dois
mdulos de funo so criados.
ENQUEUE_<nome do objeto de bloqueio>
DEQUEUE_<nome do objeto de bloqueio>

188

Objeto de bloqueio Mdulo de


Funo - Parmetros
Campos do objetos de bloqueio
So os campos chaves definidos no dicionrio de
dados
Passar o valor X para o campo que deseja
bloquear
Se no for passado o valor X, ser feito um
bloqueio genrico

189

Transaes

SE11 Dicionrio de Dados


SE16/SE16N Exibio dos dados de tabelas
SE14 Utilitrio de banco de dados
SM30 Atualizao de viso de tabelas
SE93 Atualizao de transao

190

Exerccios
a) Criar as seguintes tabelas no SAP
Notas Fiscais de Entrada de Material para
Agrupamento com o nome: (Z##NFKGR)
Campo

Elemento de Dados

NUMDOC

J_1BDOCNUM

NFNUM
LIFNR
CGC_CPF

PRPRIO

Domnio
NUM 6

LIFNR
PRPRIO

PRPRIO

Itens das Notas Fiscais com o nome:


(Z##NFPGR):
Campo

Elemento de Dados

NUMDOC

J_1BDOCNUM

ITNUM

J_1BITMNUM

MATNR

MATNR

MENGE

J_1BNETQTY

MEINS

PRPRIO

VALOR

J_1BNETPRI

MOEDA

PRPRIO

Domnio

CUKY 3
PRPRIO

191

Exerccios
b) Criar os relacionamentos entre as duas tabelas
do exerccio anterior e as tabelas SAP
c) Criar uma viso para listar os fornecedores e os
respectivos materiais comercializados pelos
mesmos.

A viso deve conter os seguintes campos:







LIFNR (Nmero do fornecedor)


NAME1 (Nome do fornecedor)
MATNR (Cdigo do material)
MAKTX (Descrio do material pelo idioma de
logon)

192

193

Curso Avanado de ABAP


Abap Report

Tpicos
ABAP Editor
ABAP Report

194

ABAP Editor
O ABAP Editor a ferramenta para a criao de
programas ABAP
A transao do ABAP Editor SE38
No ABAP Editor possvel:

Criar/Modifica/Visualizar o programa
Copiar e renomear o programa
Excluir o programa do sistema
Ativar o programa
Alterar as caractersticas do programa
Documentar o programa
Criar/Modificar/Visualizar os elementos de texto do
programa
195

ABAP Editor Tela inicial


1.
2.
3.
4.
1 2 3

10

Verificar a sintaxe do cdigo


Ativar o programa
Executar o programa
Pesquisar onde o programa
utilizado
5. Excluir o programa do
sistema
6. Copiar o programa
7. Renomear o programa
8. Depurar o programa
9. Depurar o programa com
variante
10.Gerenciar variante do
programa

196

ABAP Editor Editor


1 2 3

4 5 6 7

9 10

11

12

1.
2.
3.
4.

Exibir/Modificar cdigo
Ativar/Desativar programa
Carregar outro programa
Pesquisar onde o programa
utilizado
5. Excluir o programa do
sistema
6. Copiar o programa
7. Renomear o programa
8. Depurar o programa
9. Depurar o programa com
variante
10.Gerenciar variante do
programa

197

198

ABAP Report

Caractersticas
As principais caracterticas de um ABAP Report
so:
um programa executvel
Possui tela de seleo, a qual definida atravs de
comandos ABAP

199

ABAP Report - Manuteno


A manuteno de programas ABAP Report
efetuado atravs da transao SE38
As opes de manuteno so:

Texto fonte
Variantes
Caractersticas
Documentao
Elemento de Texto

200

ABAP Report Texto Fonte


Como o prprio nome j diz, texto fonte onde
feito a criao/manuteno dos programas
ABAP

201

ABAP Report Variantes


Variante um grupo de valores de critrio de
seleo.
Em vez de entrar os mesmos critrios de seleo
cada vez que iniciar o programa de obteno de
dados, o usurio pode entrar e gravar em uma
variante os valores que sempre utiliza como
critrios de seleo
possvel criar e especificar uma variante para o
programa de obteno de dados em cada viso
de anlise.
202

ABAP Report Caractersticas

Nas caractersticas do programa so definidos:

Ttulo
Tipo de programa
Status
Aplicao
Grupo de autorizaes
Pacote
Banco de dados lgico
Verso tela seleo
Bloqueio do editor
Verificao unicode ativas
Aritmtica em ponto fixo
Incio com variante
203

ABAP Report Caractersticas

204

ABAP Report Caractersticas

Ttulo

Descrio breve da funcionalidade do programa

Tipo de programa

Neste campo necessrio informar o modo de


execuo do programa. As opes so:
1. Programa executvel: Declarar o programa como
Executvel, ou seja, que podem ser executados sem a
necessidade de se criar transaes para ele.
F. Grupo de funes: Declarar o programa como
mdulo de funo. Utilizado pelo SAP na criao de
mdulo de funo
I. Include: Declarar o programa como Include. Um
include um programa independente que possui duas
funcionalidades:







Pode ser utilizado em diversos programas;


Facilita a manuteno dos programas.
205

ABAP Report Caractersticas

J: Pool de Interface: As interfaces so administradas


pelo gerador de classes; a categoria de programa J
no pode ser modificada nos atributos.
K: Pool de classes: Contm classes. As classes so
administradas pelo gerador de classes; a categoria de
programa J no pode ser modificada nos atributos.
M: Pool de mdulos: Declarar o programa como
Module Pool, significa que, este programa necessita
da criao de transaes ou menus para ser
executado. Exemplo: Programas Dilogo.
S: Pool de sub-rotinas: contm partes de programa
(FORM) que so executveis atravs das instrues
PERFORM externas.
206

ABAP Report Caractersticas

Status

Descreve o status do programa. Exemplo: T


Programa de testes

Aplicao

Campo para alocao de programa em uma


determinada rea de negcio. Exemplo: Se o
programa for para Financial Account, escolhe-se
F.

Grupo de Autorizaes

Autorizao para os usurios executarem o


programa: S_DEVELOP e para manter o
programa S_PROGRAM.
207

ABAP Report Caractersticas

Pacote

Os pacotes so importantes para transportes


entre os sistemas de produo e
desenvolvimento.
So combinados todos os objetos pertencentes
ao desenvolvimento em uma classe de
desenvolvimento em uma change request
Todos os programas associados a classe de
desenvolvimento $TMP so locais e no so
transportados.
A classe de desenvolvimento escolhida na
criao do programa
208

ABAP Report Caractersticas

Banco de dados lgico

Somente para programas executveis (Tipo 1). Este


campo determina o Banco de Dados Lgico que ser
utilizado por este programa.

Verso tela seleo

Verso de tela de seleo do programa de banco de


dados

Bloqueio do Editor

Quando marcado, permite somente o proprietrio


atualizar, apagar, renomear o programa.
Somente o proprietrio poder modificar e
desbloquear o programa
209

ABAP Report Caractersticas

Verificao de unicode ativas

Realiza a verificao de unicode

Aritmtica em ponto fixo

Se marcar este campo, o sistema arredonda os


campos numricos (tipo P) de acordo com o
nmero de casas decimais especificados no
programa, ou preenche-as com zeros, neste caso
o sinal decimal o ponto (.).

Incio via variante

Somente para programas executveis. Informa


que o programa s pode ser executado com uma
Variant.
210

Report - Criao
1. Inserir o nome do programa
2. Selecionar Texto Fonte
3. Clicar no boto Criar

211

Report - Criao
1. Inserir uma descrio breve do programa
2. Determinar o tipo de programa
3. Clicar no boto Gravar

212

Report - Criao
4.
5.
6.
7.

Inserir o pacote
Clicar no boto Salvar
Inserir o nmero da change request
Clicar no boto Confirmar
4

5
6

213

Report Editor ABAP

214

Editor ABAP
1.
2.
3.
4.
5.
6.

Exibir/Modificar (CTRL+F1)
Ativar/Desativar o programa
(SHIFT+F8)
Verificar o cdigo (CTRL+F2)
Ativar o programa (CTRL+F3)
Executar o programa (F8)
Lista de Utilizao (CTRL+SHIFT+F3)

Definir/Eliminar ponto de parada


de sesso
Definir/Eliminar ponto de parada
externo
Modelo
Pretty Printer
Exportar o cdigo
Importar o cdigo

7.
8.
9.
10.
11.
12.

10

11
12

215

Editor ABAP - Funcionalidades


Exibir/Modificar (CTRL+F1)
Alterna o editor para o modo de visualizao e
edio do cdigo

Ativar/Desativar o programa (SHIFT+F8)


Altera o status do programa para ativo ou inativo

Ativar o programa (CTRL+F3)


Ativa o programa tornado-o possvel para a
execuo do usurio. Na ativao, o cdigo
verificado a procura de erros
216

Editor ABAP - Funcionalidades


Verificar o cdigo (CTRL+F2)
Verifica se o cdigo possui erro de sintaxe

217

Editor ABAP - Funcionalidades


Executar o programa (F8)
Executa o programa, desde que o mesmo seja do tipo 1
- Programa Executvel e o programa esteja ativo.

Lista de Utilizao (CTRL+SHIFT+F3)


Retorna uma lista informando quais os programas,
transaes, classes e ampliaes utilizam o programa
pesquisado.

Definir/Eliminar ponto de parada de sesso


Insere um ponto de parada para que o programa seja
interrompido em modo de depurao para a soluo de
problemas. O ponto de parada utilizado em todas as
sesses do logon atual.
218

Editor ABAP - Funcionalidades


Definir/Eliminar ponto de parada externo
Insere um ponto de parada vlido para todos os usurios, do
servidor e sistema atual.
Os pontos de parada externos so teis para debugar programas
BSP ou WebDynpro. Nesse caso, o logon no realizado atravs
do SAP GUI, mas sim do browser, por exemplo. Entretanto, os
pontos de parada devem ser devem ser ativados antes de logar.
O uso do ponto de parada externo vlido pelo perodo de 2
horas.

Modelo
O boto modelo uma ferramenta para inserir determinados
comandos como modelo, a modo de facilitar a codificao pelo
desenvolvedor.
219

Editor ABAP - Funcionalidades


Pretty Printer
O boto Pretty Printer utilizado para uniformizar o
layout do programa, tal como endentao e
capitulao.

Importar/Exportar cdigo
Importa/Exporta o cdigo fonte de/para um
arquivo texto.

220

221

Construo de um programa ABAP Report

Comando REPORT
Todo programa ABAP Report iniciado com o
comando REPORT.
A sintaxe do comando REPORT :
REPORT rep [list-options]
[MESSAGE-ID mid]
[DEFINING DATABASE ldb]

As opes de list-options so:


NO STANDARD PAGE HEADING
 Esta opo suprime a sada do cabealho padro da
pgina.
222

Comando REPORT
LINE-SIZE largura
 Esta opo define a largura da linha da listagem com
a quantidade de caracteres definido em largura.
 A largura mxima de 1023 caracteres.
 Quando a opo LINE-SIZE no especificada, a
largura da listagem se ajustar automaticamente ao
tamanho da janela.

223

Comando REPORT
LINE-COUNT page_lines [(footer_lines)]
 Esta opo define a altura da pgina em nmero de
linhas.
 Se a opo LINE-COUNT no for especificada, a
altura definida internamente em 60.000 linhas
 O parmetro footer_lines define o nmero de linhas
reservadas para o rodap da pgina.

224

Comando Report
MESSAGE_ID
A opo MESSAGE-ID para especificar a classe de
mensagens, a qual permite facilitar o uso do comando
MESSAGE, na qual somente o tipo e o nmero da
mensagem so especificados.

DEFINING DATABASE ldb


A opo DEFINING DATABASE ldb apresenta o
programa atual como um programa de banco de dados
do banco de dados lgico ldb.
O banco de dados lgico so definidos na transao
SE36.
225

Comando Report - Exemplos


Define a classe de mensagens SD, com a largura da lista de 100 caracteres e
sem cabealhos
REPORT zsdr0001 MESSAGE-ID SD
LINE-SIZE 100
NO STANDARD PAGE HEADING.
Define o banco de dados lgico F1S
REPORT zfir0001 DEFINING DATABASE F1S.
A altura da pgina de 65 linhas, sendo 8 reservados para o rodap da pgina. A
largura da pgina 132 caracteres.
REPORT zmmr0001 LINE-COUNT 65(8) LINE-SIZE 132.

226

227

Tela de Seleo

Tela de seleo
A tela de seleo fornece uma interface
padronizada para os usurios.
Os usurios podem inserir valores simples ou
complexos.
As opes de entrada so campos, radio-buttons
e check-boxes.

228

Tela de seleo - Definio


Existem trs comando ABAP para definir a tela
de seleo:
PARAMETERS para campos simples
SELECT-OPTIONS para campos complexos
SELECTION-SCREEN para formatar a tela de
seleo

Por padro, quando o programa do tipo Report


definido, o sistema cria automaticamente a tela
1000, quando a tela de seleo especificada.
229

Tela de seleo - Parameters


O comando PARAMETERS permite a criao de
um campo de entrada de um nico valor.
Cada comando PARAMETERS declarado no
programa cria um campo de entrada na tela de
seleo.

230

Tela de seleo - Parameters


A sintaxe do comando PARAMETERS :
PARAMETERS <p>[(<length>)] [TYPE <type>|LIKE <obj>] [DECIMALS <d>].

Este comando criar o parameter <p>. O nome do


parameter est limitado a oito posies.
Os parmetros LENGTH, TYPE/LIKE,
DECIMALS o mesmo que o comando de
declarao DATA.
Os dados de declarao dos parameters inclui
todos os tipos elementares do ABAP com exceo
do tipo F, referncia e tipos agregados.
231

Tela de seleo - Parameters


Exemplo:
PARAMETERS: WORD(10) TYPE C,
DATE TYPE D,
NUMBER TYPE P DECIMALS 2,
CONNECT TYPE SPFLI-CONNID.

232

Tela de seleo - Parameters


Valores padro do Parameters
Para atribuir um valor padro ao Parameters, e
necessrio utilizar o parmetro DEFAULT

Exemplo
PARAMETERS: VALUE TYPE I DEFAULT 100,
NAME LIKE SY-UNAME DEFAULT SY-UNAME,
DATE LIKE SY-DATUM DEFAULT 20090127'.

233

Tela de seleo - Parameters


Valores em maisculo e minsculo
Para alterar o valor dos parameters para
maisculo ou minsculo, necessrio utilizar o
parmetro LOWER CASE.
Se a opo no for especificada o valor ser
convertido automaticamente para maisculo

234

Tela de seleo - Parameters


Reduzir o tamanho visvel do Parameters
Por padro, o tamanho do campo de entrada na
tela de seleo o mesmo do parameter do
programa ABAP. Entretanto, possvel diminuir o
tamanho visvel do campo atravs o parmetro
VISIBLE LENGHT
Exemplo
PARAMETERS: p1(10) TYPE c VISIBLE LENGTH 1,
p2(10) TYPE c VISIBLE LENGTH 5,
p3(10) TYPE c VISIBLE LENGTH 10.

235

Tela de seleo Parameters


Tornar o campo obrigatrio
O campo pode ser definido como obrigatrio
atravs do parmetro OBLIGATORY
Exemplo
PARAMETERS FIELD(10) OBLIGATORY.

236

Tela de seleo - Parameters


Definir a ajuda de pesquisa para o Parameters
Para definir a ajuda de pesquisa no Parameters,
ser associado a ajuda de pesquisa do dicionrio
de dados. A sintaxe :
PARAMETERS <p> ... MATCHCODE OBJECT <search_help>.

237

Tela de seleo - Parameters


Exemplo
PARAMETERS p_carrid TYPE s_carr_id
MATCHCODE OBJECT demo_f4_de.

F4

238

Tela de seleo - Parameters


Verificar o contedo do campo
Para verificar o contedo do campo, necessrio
utilizar o parmetro VALUE CHECK
O parameter deve estar associado a um campo de
uma tabela, viso e estrutura
Se o valor inserido no estiver inserido na tabela,
por exemplo, o sistema retorna uma mensagem de
erro e o programa impedido de continuar.
Exemplo
PARAMETERS P_CARR LIKE SPFLI-CARRID OBLIGATORY VALUE CHECK.

239

Tela de seleo - Parameters


Checkbox
Para definir um campo como checkbox
necessrio utilizar o parmetro AS CHECKBOX
O parmetro criado com o tipo C e tamanho 1.
Neste caso, no pode ser utilizados os comandos
TYPE e LIKE.
Os valores do Parameters so (vazio) e X.

240

Tela de seleo - Parameters


Exemplo
PARAMETERS: A AS CHECKBOX,
B AS CHECKBOX DEFAULT 'X'.

241

Tela de seleo - Parameters


Radio Buttons
Para definir um Parameters como radio button,
necessrio utilizar o parmetro RADIOBUTTON
GROUP.
PARAMETERS <p> ...... RADIOBUTTON GROUP <radi>......

O parameters <p> criado com o tipo C e tamanho 1,


atribudo ao grupo <radi>. O tamanho mximo da
string <radi> 4. Os parmetros de atribuio TYPE e
LIKE podem ser utilizados, mas deve referir-se a um
campo do tipo C de tamanho 1.
Deve ser atribudo no mnimo 2 campos para cada
grupo <radi>.
242

Tela de seleo - Parameters


Exemplo
PARAMETERS: R1
R2 RADIOBUTTON
R3 RADIOBUTTON
S1 RADIOBUTTON
S2 RADIOBUTTON
S3 RADIOBUTTON

RADIOBUTTON GROUP RAD1,


GROUP RAD1 DEFAULT 'X',
GROUP RAD1,
GROUP RAD2,
GROUP RAD2,
GROUP RAD2 DEFAULT 'X'.

243

Tela de seleo - Parameters


Ocultando campo de entrada
Para ocultar o campo de entrada na tela de
seleo, necessrio utilizar o parmetro NODISPLAY.

244

Tela de seleo Select-Options


O comando SELECT-OPTIONS cria um campo
que permite ao usurio inserir um conjunto de
valores e inserir os critrios de seleo.
Ao contrrio do Parameters em que o campo da
tela est associado a uma varivel, o campo do
select-options est associado a uma tabela
interna especial chamada tabela de seleo.

245

Tela de seleo Select-Options


A sintaxe para criar o select options :
SELECT-OPTIONS <seltab> for <f>

declarado uma tabela de seleo<seltab> que


est associado a couna <f> de uma tabela de
banco de dados.
A tabela de seleo utilizada de vrios modos,
mas o propsito principal traduzir diretamente
o critrio de seleo nas selees de banco de
dados usando a clusula WHERE do comando
SQL
246

Tela de seleo Select-Options


Estrutura da tabela de seleo
O tipo de linha de uma tabela de seleo uma
estrutura que possui os seguintes componentes:
 SIGN
 O tipo de dados do campo SING C de tamanho 1. O
contedo do campo SIGN determina para cada linha se
o resultado da linha para ser includa ou excluda. Os
valores possveis so I (Inclusive) e E (exclusive)

247

Tela de seleo Select-Options


 Option
 O tipo de dados do campo Option C de tamanho 2. Option
contm o operador de seleo e os valores disponveis so:
EQ, NE, GT, LE, LT, CP e NP caso o campo HIGH no esteja
preenchido. Se o campo HIGH estiver preenchido os
operandos disponveis so: BT e NB.

 LOW
 O tipo de dados do campo LOW do mesmo tipo do tipo de
coluna da tabela de banco de dados a qual a tabela de seleo
est associada.
 Se o campo HIGH estiver vazio, o contedo do campo LOW
define uma simples comparao de campo. Em combinao
com o operador especificado no campo OPTION,
especificado uma condio para a seleo do banco de dados.
248

Tela de seleo Select-Options


 Se o campo HIGH conter valor, o contedo dos campos
LOW e HIGH definem os limites inferior e superior de
um intervalo. Em combinao com o operador do
campo OPTION, o intervalo especifica uma condio de
seleo do banco de dados.

249

Tela de seleo Select-Options


Exemplo:
DATA WA_CARRID TYPE SPFLI-CARRID.
SELECT-OPTIONS AIRLINE FOR WA_CARRID.

250

Tela de seleo Select-Options


Se o usurio entrar com o valor abaixo:

SIGN
I

OPTION
EQ

LOW
AA

HIGH

O contedo da tabela de seleo ser:


251

Tela de seleo Select-Options


Se o usurio entrar os valores abaixo:

SIGN
I

OPTION
EQ

LOW
AA

HIGH
LH

O contedo da tabela de seleo ser:


252

Tela de seleo Select-Options


Se o usurio clicar no boto e preencher as telas
abaixo:

O contedo da tabela de seleo ser:


SIGN
I
I
I
I

OPTION
EQ
GE
BT
BT

LOW
AA
AF
DL
AS

HIGH

LH
UA

253

Tela de seleo Select-Options


Se o usurio clicar no boto e preencher as telas
abaixo:

O contedo da tabela de seleo ser:


SIGN
E
E

OPTION
EQ
BT

LOW
FC
SQ

HIGH
SR

254

Tela de seleo Select-Options


Restringir a seleo a uma linha
Para permitir o usurio processar somente a
primeira linha da tabela de seleo na tela de
seleo, necessrio utilizar o parmetro NOEXTENSION.
DATA WA_SPFLI TYPE SPFLI.
SELECT-OPTIONS AIRLINE FOR WA_SPFLI-CARRID NO-EXTENSION.

255

Tela de seleo Select-Options


Restringir a entrada a um nico campo
Para permitir ao usurio processar somente um
nico campo da tela de seleo, necessrio
utilizar o parmetro NO INTERVALS.
DATA WA_SPFLI TYPE SPFLI.
SELECT-OPTIONS AIRLINE FOR WA_SPFLI-CARRID NO INTERVAL.

256

Tela de seleo Selection-Screen


O comando SELECTION-SCREEN possui
opes de formatao que podem ser utilizadas
para definir o layout da tela de seleo.
Podem ser definidos o layout dos parameters e
critrio de seleo e mostrar linhas de
comentrios e underlines na tela de seleo.

257

Tela de seleo Selection-Screen


Linhas em branco
O comando abaixo cria <n> linhas em branco,
onde <n> pode ser um valor de 1 a 9. Se o valor
<n> for omitido, ser criada somente uma linha
em branco. SKIP [<n>].
SELECTION-SCREEN

258

Tela de seleo Selection-Screen


Underlines
O comando abaixo cria uma underline. Se a opo
<pos(len)> no for utilizada, uma nova linha criada
abaixo da linha atual. Se a opo <pos(len)> for
utilizada, o underline comea na posio <pos> na
linha atual e continua com o tamanho <len> de
posies. Com vrios elementos em uma linha a opo
(<LEN>) pode ser utilizada sem o <pos>. A barra
produz um line feed.
O MODIF ID tem o mesmo comportamento do
comando PARAMETERS. Pode ser usado para
modificar a linha antes da tela de seleo ser chamada.
SELECTION-SCREEN ULINE [[/]<pos(len)>] [MODIF ID <key>].

259

Tela de seleo Selection-Screen


Comentrios
O comando abaixo insere um comentrio na tela de seleo.
Para <comm>, pode ser especificado um smbolo de texto
ou um nome de campo com o tamanho mximo de oito
posies. O campo no pode ser declarado com o comando
DATA, mas gerado automaticamente com o tamanho
<len>. O campo deve ser preenchido antes da chamada da
tela de seleo.
A opo <pos(les)> deve ser sempre especificada, se no
houver mais de um elemento na mesma linha.
A barra (/) insere o comentrio na prxima linha.
A opo FOR FIELD deve ser utilizada para atribuir o
campo ao comentrio.
SELECTION-SCREEN COMMENT [/]<pos(len)> <comm> [FOR FIELD <f>]
[MODIF ID <key>].

260

Tela de seleo Selection-Screen


Exemplo
SELECTION-SCREEN COMMENT /2(50) TEXT-001 MODIF ID SC1.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN COMMENT /10(30) COMM1.
SELECTION-SCREEN ULINE.
PARAMETERS: R1 RADIOBUTTON GROUP RAD1,
R2 RADIOBUTTON GROUP RAD1,
R3 RADIOBUTTON GROUP RAD1.
SELECTION-SCREEN ULINE /1(50).
SELECTION-SCREEN COMMENT /10(30) COMM2.
SELECTION-SCREEN ULINE.
PARAMETERS: S1 RADIOBUTTON GROUP RAD2,
S2 RADIOBUTTON GROUP RAD2,
S3 RADIOBUTTON GROUP RAD2.
SELECTION-SCREEN ULINE /1(50).
INITIALIZATION.
COMM1 ='Radio Button Group 1'.
COMM2 ='Radio Button Group 2'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'SC1'.
SCREEN-INTENSIFIED = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

261

Tela de seleo Selection-Screen


Vrios elementos em uma linha
Para posicionar um conjunto de parametros ou
comentrios em uma linha na tela de seleo, os
elementos devem ser declarados em um bloco
atravs dos seguintes comandos:
SELECTION-SCREEN BEGIN OF LINE.
...
SELECTION-SCREEN END OF LINE.

262

Tela de seleo Selection-Screen


O texto de seleo no apresentado quando est
opo utilizada. Para descrever os elementos de
texto, deve ser utilizado o parmetro COMMENT
do comando SELECTION-SCREEN.
Para determinar a posio de um elemento em
uma linha, deve ser utilizado o seguinte comando:
SELECTION-SCREEN POSITION <pos>.

263

Tela de seleo Selection-Screen


Exemplo 1
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(10) TEXT-001.
PARAMETERS: P1(3), P2(5), P3(1).
SELECTION-SCREEN END OF LINE.

264

Tela de seleo Selection-Screen


Exemplo 2
REPORT DEMO.
DATA WA_SPFLI TYPE SPFLI.
SELECT-OPTIONS AIRLINE FOR WA_SPFLI-CARRID.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION POS_HIGH.
PARAMETERS FIELD(5).
SELECTION-SCREEN END OF LINE.

265

Tela de seleo Selection-Screen


Bloco de elementos
Para criar um bloco lgico de elementos na tela de
seleo, utilize o comando abaixo:
SELECTION-SCREEN BEGIN OF BLOCK <block>
[WITH FRAME [TITLE <title>]]
[NO INTERVALS].
...
SELECTION-SCREEN END OF BLOCK <block>.

Deve ser definido um nome <block> para cada


bloco. Os elementos de bloco podem ser
aninhados.
266

Tela de seleo Selection-Screen


Se a opo WITH FRAME for utilizado um quadro
desenhado em volta do bloco.
Se o TITLE for utilizado, apresentado o ttulo
para cada bloco.
Na opo NO INTERVALS, todos os campos
definidos pelo comando SELECT-OPTIONS so
tratados para restringir os dados como valores
nicos, sem intervalos.

267

Tela de seleo Selection-Screen


Exemplo
SELECTION-SCREEN BEGIN OF BLOCK RAD1
WITH FRAME TITLE TEXT-002.
PARAMETERS R1 RADIOBUTTON GROUP GR1.
PARAMETERS R2 RADIOBUTTON GROUP GR1.
PARAMETERS R3 RADIOBUTTON GROUP GR1.
SELECTION-SCREEN END OF BLOCK RAD1.

268

269

Eventos

Eventos
Quando um programa
executvel acionado, o
fluxo do programa
controlado pelos eventos
externos no ambiente de
execuo ABAP.
O diagrama apresenta a
seqncia dos eventos:

Incio

INITIALIZATION

AT SELECTION-SCREEN

START-OF-SELECTION

END-OF-SELECTION

270

Eventos
O evento AT SELECTION-SCREEN s
processado se uma tela de seleo definido no
programa. Os outros eventos so acionados
quando qualquer programa executvel
acionado.
Bem como esses eventos, h outros eventos que
podem ser acionados quando quando uma
listagem criada (TOP-OF-PAGE, END-OFPAGE) e em listas interativas (AT LINESELECTION, AT USER-COMMAND)
271

Eventos - Descrio
INITIALIZATION
Esse evento acionado antes do processamento da
tela de seleo. Pode ser utilizado para inicializar
os valores dos parameters e select-options da tela
de seleo.

272

Eventos - Descrio
AT SELECTION-SCREEN
Esse evento a forma bsica de toda
uma srie de eventos que ocorrem
enquanto a tela de seleo est sendo
processada
A tela de seleo em um programa
executvel automaticamente
chamado entre os eventos
INITIALIZATION e START-OFSELECTION. Quando a tela de
seleo chamada e o usurio
interage com ela, o ambiente de
execuo ABAP cria os eventos de
seleo, os quais ocorrem entre os
eventos INITIALIZATION e STARTOF-SELECTION.
273

Eventos - Descrio
START-OF-SELECTION
Este evento executado depois do processamento
da tela de seleo. Pode ser utilizado para
preparar a leitura e preparao dos dados para a
criao de uma lista.

END-OF-SELECTION
Este o ltimo evento chamado pelo ambiente de
execuo. ativado depois que todos os dados
tenham sido lidos e processados e antes que o
processador de listagem seja iniciado.
274

Eventos Sair do evento


Para sair do evento, basta utilizar um dos comandos
abaixo:
STOP
 O comando STOP, s pode ser utilizado nos eventos AT
SELECTION-SCREEN (sem parmetros) e START-OFSELECTION. Ao usar o comando STOP, o evento atual
finalizado e o evento END-OF-SELECTION ativado.

EXIT
 Ao utilizar o comando EXIT, o ambiente de execuo no
chama mais nenhum evento e chama o processador de
listagem para apresentar a listagem bsica.
275

Eventos Sair do evento


Para sair do evento, basta utilizar um dos
comandos abaixo:
RETURN
 O comando return tem o mesmo procedimento do
comando EXIT.

CHECK
 O comando check utilizado junto com uma lgica
de teste. Se a condio for falsa, o evento
finalizado.
276

277

Curso Avanado de ABAP


Module Pool

Module Pool
Module Pool so programas que funcionam online, ou seja, instantaneamente
Maior capacidade de customizao de telas e
maior flexibilidade de criao de interface para o
usurio
til na criao de aplicaes que necessitam de
subtelas ou fornecer informao de forma
diferente de um relatrio.
278

Estrutura do programa
Modulo PBO Screen 1
Screen 1
Modulo PAI Screen 1

Modulo PBO Screen 2


Programa
Principal

Screen 2
Modulo PAI Screen 2

Modulo PBO Screen 3


Screen 3
Modulo PAI Screen 3

279

Screen
Desenho da Tela
Lista de campos para tratamento de erros
Definio dos mdulos PBO e PAI relacionados
com a tela

280

Screen - Caractersticas
Definio do nome
da tela, tipo de tela e
tamanho

281

Status GUI e Title GUI


Definio dos comandos de boto e menus
disponveis
Definio do ttulo de tela
Habilitao dos comandos standards existentes
Criao de novos comandos de boto, menus e
teclas de atalho

282

Flow Logic
O Flow Logic a rea responsvel pelo controle
do fluxo da tela
Nessa rea especificado os eventos PBO, PAI e
POV

rea
Flow Logic
283

Flow Logic
Comandos do Flow Logic
O flow logic s aceita os comandos abaixo
CALL
CHAIN
ENDCHAIN
ENDLOOP
FIELD
LOOP
MODIFY
MODULE
ON
PROCESS
SELECT
VALUES

Chama uma subtela


Inicia o processamento chain.
Finaliza o processamento chain.
Finaliza o processamento em LOOP
Referncia a um campo. possvel
combinar com os comandos MODULE e
SELECT
Inicia o processamento em LOOP
Modifica uma tabela
Identifica um mdulo de processamento
Utilizado com o comando FIELD
Define um evento de processamento
Verifica um entrada em uma tabela
Define os valores de entrada permitido

284

Flow Logic
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
PROCESS ON VALUE-REQUEST.
MODULE USER_COMMAND_0100.

285

Screen Painter
O screen-painter uma ferramenta do ABAP
Workbench que permite a criao de telas para
uma transao
utilizado para criar telas com campos ou outro
elemento grfico e codificar a lgica do fluxo por
trs da tela

286

Screen Painter
Janela de
Atributos

Tela do Screen painter

Barra de
Elementos
rea de trabalho

Palheta de
Elementos
287

Palheta de Elementos
Campo Texto
Insere um campo de sada de texto, o qual
utilizado como ttulo de um objeto como um
campo de entrada e sada

288

Palheta de Elementos
Campo de Entrada/Sada
um campo utilizado para a entrada de dados
pelo usurio

289

Palheta de Elementos
Campo de Entrada/Sada
Pode ser utilizado como um campo de texto
dinmico, ou seja, atravs de programao o valor
do texto atribudo dinamicamente.

Campo de Sada
Campo de Entrada

290

Palheta de Elementos
Campo de Seleo
Campo utilizado para o usurio escolher uma ou
mais opo
Quando o campo estiver marcado, o valor
transferido varivel atribuda ao campo de
seleo X. O tipo de varivel CHAR de uma
posio.

291

Palheta de Elementos
Boto de Rdio
Utilizado para fornecer ao usurio opes. Ex.:
Sim/No, Aprovado/Reprovado
O usurio s pode escolher uma opo
Os campos devem ser agrupados para que o boto
funcione
O tipo de dado da varivel atribuda ao campo
CHAR de uma posio

292

Palheta de Elementos
Boto
O boto um objeto para a execuo de uma
rotina
Para que o processador ABAP reconhea que um
boto foi pressionado, o boto tem uma
propriedade chamada cdigo de funo.
O cdigo de funo transferido para a varivel de
sistema SY-UCOMM para que o programador
possa criar uma rotina
O evento acionado pelo boto o evento PAI da
tela onde o boto foi criado
293

Palheta de Elementos
Controle de Fichas
Os campos podem ser organizados por
fichas(abas, guias)
O nico objeto que pode ser inserido nas fichas
subtela
Cada ficha um boto, o qual assume as mesmas
caractersticas do boto (cdigo de funo), com a
adio do campo de referncia, que o nome
tcnico da subtela a ser adicionada na ficha
294

Palheta de Elementos
Controle de Fichas
Boto

Subtela
SCR_01

295

Palheta de Elementos
Controle de Fichas (Wizard)
O controle de fichas pode ser criado atravs de um
assistente
De acordo com as opes escolhidas pelo
desenvolvedor, o sistema ir criar
automaticamente as rotinas nos eventos PAI e
PBO

296

Palheta de Elementos
Quadro
O quadro ou moldura uma ferramenta para que
o usurio possa organizar a tela
O quadro pode ter ttulo ou no
Quadro

297

Palheta de Elementos
rea de Subtela
rea de subtelas so reas que podem conter uma
determinada subtela
A vantagem a reutilizao de subtelas entre
vrias telas

298

Palheta de Elementos
Table Control
Table Control uma tabela que permite que os
dados sejam mostrados e manipulados na forma
de uma tabela

299

Palheta de Elementos
Table Control (Wizard)
O table control pode ser criado atravs de um
assistente
De acordo com as opes escolhidas pelo
desenvolvedor, o sistema ir criar
automaticamente as rotinas nos eventos PAI e
PBO

300

Palheta de Elementos
Container
Container uma rea de tela onde pode ser
adicionado uma caixa de texto ou uma tabela ALV
atravs de ABAP Objects

301

Palheta de Elementos
cone Status
um elemento de tela utilizado para representar o
estado de um programa graficamente.
O nome tcnico deve ser o mesmo do texto do tipo
ICONS do dicionrio de dados

302

Status GUI

303

Title GUI

304

Evento PBO
Evento executado antes da exibio da tela para
o usurio:
Definio do GUI Status e GUI Title para a tela
correspondente
Seleo inicial de dados e atribuio de valores a
serem exibidos na tela

305

Evento PBO
*&---------------------------------------------------------------------*
*&
Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*
Mdulo PBO
*
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'TELA100'.
SET TITLEBAR 'Z10'.
ENDMODULE.

" STATUS_0100 OUTPUT

306

Evento PAI
Evento executado aps um comando do usurio
(enter, click de um boto, etc...)
Verificao do cdigo de comando executado
(definido no GUI Status)
Cdigo ABAP para execuo da lgica do comando

307

Evento PAI
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*
Mdulo PAI
*
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'EXIT'.
SET SCREEN 0.
LEAVE SCREEN.
ENDCASE.
ENDMODULE.
" USER_COMMAND_0100 INPUT

308

Evento POV e POH


Process On Value-request (POV)
O evento POV ativado quando o usurio solicita
os possveis valores (F4) de um determinado
campo

Process On Help-request (POH)


O evento POH ativado quando o usurio solicita
ajuda (F1) de um determinado campo

309

Subtela
A Subtela uma rea na Tela onde podemos variar
os campos conforme a necessidade, no deixando
fixo os campos numa tela e no havendo
necessidade de replicar alguns campos e vrias
telas.
Podemos dividir a definio da Subtela em 2 Partes:
Tela de Origem: onde definimos uma rea especfica
para chamada da Subtela
Subtela: Tela onde sero definidos os campos da
Subtela
310

Subtela
Na criao da Tela em que ser feita a referncia
Subtela, criamos uma rea especfica para esta
Subtela.
rea para Subtela

Boto para Criar a


rea para Subtela

311

Subtela
Definies da Subtela
A Subtela (ou
Subscreen)
definida nas
caractersticas da
Tela.

312

Subtela


Tela de Origem

Na PBO (PROCESS BEFORE OUTPUT) dever existir um comando para a execuo desta subtela, sendo:

CALL SUBSCREEN sub1 INCLUDING programa dynpronr.

SUB1 Seria o nome da rea definida para a Subtela

PROGRAMA Nome do Programa onde se encontra a Subtela. Normalmente, se refere ao mesmo programa da
Tela Normal

DYNPRONR Nmero da Subtela a ser executada

Quando este comando executado, a PBO desta Subtela executada, com todas as rotinas definidas nela.

Na PAI (PROCESS AFTER INPUT) dever existir um comando para a execuo desta subtela, sendo:

CALL SUBSCREEN sub1.

Onde:

Quando este comando executado, a PAI desta subtela executada, com todas as rotinas definidas nela.

A Subtela no tem PF-STATUS definido, utiliza-se as definies da Tela de Origem, de onde est sendo executada
a Subtela.

SUB1 Seria o nome da rea definida para a Subtela (como na PBO)

313

TabStrip
O Tabstrip apropriado para estruturar
aplicaes complexas e exibir as respectivas
possibilidades de navegao. Este deve ser usado
onde seja possvel acessar livremente diferentes
subobjetos de uma aplicao.
O Tabstrip no pode ser definido se:
O processamento dos subobjetos so concebidos
como aplicaes independentes;
O ambiente do TabStrip (menus, botes, dados de
cabealho, etc.) no pode ser mantido constante.
314

Tabstrip
Definies na tela
rea para Tabstrip

Boto para
Criar Tabstrip
Subtela da
Tabstrip

315

316

Curso Avanado de ABAP


Batch-Input

O que batch Input


O batch-input uma ferramenta utilizada para
transferir um conjunto de dados para o sistema
R/3
O fluxo da transao simulado e o dado
transferido como se fosse inserido de forma online
A vantagem que todas as verificaes da
transao so executadas, garantido assim a
consistncia dos dados
317

Processo
O processo de batch input dividido em duas
partes:
O programa de transferncia de dados cria uma
sesso batch input que possui todos os dados
relevantes
A sesso batch input processada e o dado
transferido para o sistema R/3

318

Tipo de processamento
A sesso de batch input pode ser processada de
trs tipos:
Primeiro plano (foreground)
Plano de fundo (background)
Em plano de fundo, mas apresenta a tela com o
erro ocorrido

319

Viso geral do problema


Interfaces SAP

Sistema R/3
Banco de
Dados SAP

Dados
Externos

X
Sistema R/3
Verificaes

Banco de
Dados SAP

Dados
Externos

320

Viso geral do problema


Sistema Legado
R/2
R/3

X
Sesses
Batch Input

Transao

Sesses
Batch Input

321

Processamento Batch Input


Arquivo Sequncial

Programa Batch Input

Queue

Funo Batch Input

SAP R/3

Clientes

Fornecedores

Material

322

Programa Batch Input


Arquivo
Sequncial
READ DATASET

Estrutura
BDCDATA

Programa de Batch Input

Dicionrio
ABAP

Tabela BDC
INCLUDE STRUCTURE
CALL
FUNCTION

Queue

323

Batch Input Queue


Telas

Banco de
dados SAP

Queue

Batch Input

Transao 1

Tela 1

Tela 2

Transao 2

Tela 1

Arquivo de
Log

Tela 2

SAP R/3
Clientes

Fornecedores

Material

324

Formato da Sesso Batch Input


Usurio que criou a sesso
Mandante na qual a sesso deve ser processada
Nome da sesso
Usurio Batch Input
Data de quando a sesso deve ser processada (data de bloqueio)
Remover a sesso aps o processamento (manter a funo)

Cabealho da Sesso

Transao

Fechar Sesso

325

Criao de uma Sesso Batch Input


Abrir sesso de
Batch Input

Inserir os dados
das transaes

Fechar a sesso de
Batch Input

326

Mdulos de Funo de Batch Input


BDC_OPEN_GROUP
Mandante
Nome da Sesso
Data de Bloqueio
Remover a sesso aps
processamento
Usurio BDC

CLIENT
GROUP
HOLD
KEEP
USER

BDC_INSERT
Cdigo da Transao
Tabela BDC

TCODE
DYNPROTAB

BDC_CLOSE_GROUP

327

Mdulos de Funo de Batch Input


O mdulo de funo para abrir a sesso de batch
input BDC_OPEN_GROUP
Os parmetros obrigatrios so:
 CLIENT - Mandante
 GROUP - nome da sesso
 USER - usurio da sesso Batch Input

Os parmetros abaixo so opcionais


 HOLDDATE - a sesso s poder ser executada a partir
da data especificada
 Keep Flag informando se a sesso dever ser removida
aps o processamento ou no (KEEP = X no apaga a
sesso)
328

Mdulos de Funo de Batch Input


O mdulo de funo para inserir os dados de
UMA transao BDC_INSERT
Para transferir os dados para a funo, ser
necessrio que a tabela BDC esteja preenchida
Os seguintes parmetros devero ser preenchidos:
 TCODE Cdigo da transao (ex.: MM01, XK01)
 DYNPROTAB (Tabela interna BDC)

329

Tabela BDC
Nome do programa Nmero da tela ID Incio
PROGRAM
DYNPRO
DYNBEGIN
SAPLMGMM
0060
X

SAPLMGMM

0070

Nome do campo
FNAM

Contedo do campo
FVAL

BDC_CURSOR
BDC_OKCODE
RMMG1-MATNR
RMMG1-MBRSH
RMMG1-MTART

RMMG1-MATNR
/00
MH00046468111
M
ERSA

BDC_CURSOR
BDC_OKCODE
MSICHTAUSW-KZSEL(01)
MSICHTAUSW-KZSEL(04)

MSICHTAUSW-DYTXT(17)
=ENTR
X
X

330

Definio da Tabela BDC


A tabela interna deve ser criada com referncia a
estrutura BDCDATA.
DATA: TI_BDCDATA
TYPE BDCDATA OCCURS 0 WITH HEADER LINE.
Ou
DATA: TI_BDCDATA
TYPE TABLE OF BDCDATA.
Ou
DATA: BEGIN OF TI_BDCDATA OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF TI_BDCDATA.

331

Estrutura BDCDATA

332

Preenchimento da tabela BDC

333

Mdulos de Funo de Batch Input


O mdulo de funo para fechar a sesso de
batch input BDC_CLOSE_GROUP
O mdulo de funo BDC_CLOSE_GROUP no
possui parmetros de entrada, mas retorna as
excees que podem ser tratadas no programa de
batch input.

334

SHDB Transaction Recorder


As uma determinada transao pode ser
mapeada com a finalidade de ser utilizada em
um programa de batch input
A transao de mapeamento de transao
SHDB
Na transao SHDB possvel criar registros de
mapeamento e a partir dela, criar programas,
mdulo de funo e sesso batch input.
335

SHDB Transaction Recorder


Entrar na transao SHDB
1. clicar no boto Nova gravao

336

SHDB Transaction Recorder


Inserir os dados tais
como o nome do
registro da gravao, a
transao a ser
executada e as opes
de execuo da
transao.

337

SHDB Transaction Recorder


Inserir os dados necessrios nas telas conforme
a regra de negcio.

338

SHDB Transaction Recorder


Ao terminar o
mapeamento da
tela, o cdigo de
BDC
apresentado.

339

SM35 Gerncia de Batch Input


As sesses criadas pelo programa de batch input so
administradas na transao SM35.
A transao SM35 permite processar as sesses (pastas) e
visualizar o log das sesses e estatsticas do processamento.

340

SM35 - Status das sesses


Processada

Sesso processada com sucesso

Defeituosa

Sesso processada mas contendo


transaes com erros

A ser
processada

Sesso foi gravada mas ainda no foi


processada

Em criao

Sesso est a ser gravada

Em processamento

Sesso est a ser processada

Background

Sesso agendada para processamento


em background

Bloqueado

Sesso bloqueada para processamento


at determinada data

341

SM35 Processar Sesso


Para processar uma sesso:
1. necessrio selecionar a sesso desejada
2. clicar no boto Processar.
1

342

SM35 Processar Sesso


Ao clicar no boto processar, aberta uma janela
onde ser definido os parmetros de
processamento.

343

SM35 Processar Sesso


Os campos com os valores
em vermelho so
preenchidos
automaticamente pela
sesso.
A janela OK_CODE recebe o
cdigo de funo.

344

SM35 Cdigos de Funo


Funo

OK code

Terminar a transao de batch input corrente e


marcar como incorreta

/n

Apagar a transao de batch input corrente


da sesso

/bdel

Terminar processamento batch input e marcar


sesso como incorreta

/bend

Alterar modo de processamento, passar a


visualizar telas em vez de ver apenas erros

/bda

Alterar modo de processamento , passar a


visualizar apenas erros em vez de ver as telas

/bde

345

Sumrio
Batch Input um procedimento automtico
adequado para processamento de dados de massa.
usando primariamente na instalao do sistema SAP
e na transferncia do sistema legado (sistema
externo).
No desenvolvimento, o dado a ser transferido deve
existir no formato apropriado da tela. Tambm
necessrio utilizar os mdulos de funo
apropriados para criar uma sesso executvel em
um arquivo intermedirio (queue).
As sesses so executadas atravs da transao
SM35.
346

347

Curso Avanado de ABAP


Call Transaction

O que Call Transaction


O Call Transaction uma ferramenta utilizada
para transferir um conjunto de dados para o
sistema R/3
Diferentemente do batch input, o call
transaction permite transferir os dados
diretamente para a interface de dilogo (sem
usar o queue).

348

Overview
Batch Input
Arquivo
Sequencial

Call Transaction
Arquivo
Sequencial

Tabela BDC

QUEUE

Funo Batch Input

Tabela BDC

Call
Transactio
n

Funo da Aplicao

Funo da Aplicao

Banco de
Dados SAP

Banco de
Dados SAP

349

Comando CALL TRANSACTION


CALL TRANSACTION <cdigo da transao>
USING
<Tabela BDC>
MODE
<Modo de apresentao>
UPDATE
<tcnica de
atualizao>
MESSAGES INTO
<Tabela de
mensagem>
Modo de Apresentao
A

Mostrar todas as telas

Mostrar a tela se ocorrer erro

Mostrar a tela se ocorrer erro

Permite o debug

Tcnica de Atualizao
S

Sncrono - No continua o
processamento at que a atualizao
seja finalizada

Assncrono - Continua o
processamento imediatamente

350

Cdigo de retorno e campos de


sistema
Cdigo de retorno SY-SUBRC
Valor
0

Significado
Sucesso

<1000

Erro no programa de dilogo

>1000

Erro no processamento batch input (verificar campos


de sistema)

Campos de sistema
Nome do campo
SY-MSGID
SY-MSGTY
SY-MSGNO
SY-MSGV1
SY-MSGV2
SY-MSGV3
SY-MSGV4

Significado
ID da mensagem
Tipo da Mensagem
Nmero da Mensagem
Varivel da mensagem 1
Varivel da mensagem 2
Varivel da mensagem 3
Varivel da mensagem 4

351

Sada da mensagem
REPORT ZMMR0001.
...
CALL TRANSACTION MM01
USING TI_BDCDATA
MODE N
UPDATE S
MESSAGES INTO TI_MESSAGES.
MESSAGE ID SY-MSGID
TYPE SY_MSGTY
NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2
SY-MSGV3 SY-MSGV4.
...

352

Sumrio
O call transaction uma alternativa ao batch
input. A transferncia de dados
particularmente mais rpido pois o arquivo de
queue evitado (sem gerao de sesso).

353