Você está na página 1de 169

Conceito breve do SAP

O SAP um sistema que trabalha com um nmero muito grande de tabelas interligadas, que
armazenam e manipulam os valores de controle dos processos. Essas tabelas so responsveis pelo
armazenamento dos valores do sistema e so divididas em grupos que se interligam em um todo.
Assim, existem tabelas responsveis pelas informaes de FI, outras pelas informaes de SD, outras
ainda por MM, mas todas elas apresentam campos chaves que permitem, pelos mais diferentes e
complicados caminhos, a interligao e consistncia de todo o sistema.
Embora a ferramenta ABAP/4 dentro do SAP seja muito poderosa e praticamente capaz de permitir
qualquer customizao do sistema, muito importante manter os conceitos originais sempre em
mente, e nunca tentar forar alguma coisa que deveria ter um comportamento natural.
Por exemplo, nunca tente alterar um valor de uma tabela do SAP (embora perfeitamente possvel,
com o comando UPDATE), sem um minucioso estudo de suas implicaes anteriormente. Isso pode
comprometer a integridade dos dados do sistema, se no forem atualizados todos os valores de todas
as tabelas relacionadas a essa alterao.
MANDANTE Em uma mesma mquina pode-se Ter mais de um mandante ( client ) com o R/3, Trata-se uma diviso
lgica de informaes, num mesmo espao fsico, com o tempo ir se perceber que muitas coisas so dependentes
de mandantes e outras no. Por exemplo o primeiro campo de 95 % das tabelas o campo mandante, logo, quando
nos logamos em um mandante n, no iremos acessar as informaes desta tabela armazenadas para o mandante
n+1. Por outro lado os programas desenvolvidos em uma mquina iro estar disponveis para todos os mandantes.
TRANSAO So cdigos alfanumricos, os quais esto relacionados com programas on-line ( Relatrios, Batch
input, gerao de arquivo texto etc... ), mdulos de dilogo ou sub-menus. Alm de agilizar a chegada ao programa
pretendido, so a base para a montagem dos perfis de usurios finais. (Uma vez dominadas, muitas pessoas acabam
digitando a transao ao invs de percorrer o Menu ).
ABAP WORKBENCH ( Transao S001 ) Ambiente de desenvolvimento, onde se cria/altera dicionrios de dados,
programas, funes, Menus, etc ... ABAP -> Advanced Business Application Programming.
IMG ou CUSTOMIZING Parametrizao bsica de todo o ambiente funcional do SAP, como Empresas, Estruturas de
Empreendimentos, Plantas das Fbricas, Bancos, Moedas, etc ...
CLASSE DE DESENVOLVIMENTO Ou development Class, trata-se da forma a qual o programa, o dicionrio de
dados, a transao etc.. sero gravadas para o R/3, ou seja normalmente sugere-se ger-los em Objeto Local ( $TMP
), para futuramente ( depois de testes ) desloc-los para uma classe de desenvolvimento possibilitando-se o
transporte deste objeto para outras mquinas.
REQUEST Sempre que um objeto estiver em uma classe de desenvolvimento diferente de $TMP, todas as
alteraes deste precisaro de um request, o qual ser transportados para outras mquinas mantendo-se assim a
integridade.
PROGRAMAS ON-LINE Trata-se dos programas de manipulao de dados, na maioria das vezes somente para
extrao em arquivo texto, ou relatrio. Tambm so programas on-line, os Batch Inputs (os quais alteram a base
por executar transaes ), mas principalmente divergem dos mdulos de dilogo ( Mdulo Pool ).
MODULE POOL So a grande maioria de programas que manipulam telas e fazem manuteno de dados ( Standard
) tipo Incluso, Alterao e Excluso. Possui alguns conceitos novos tipo PBO e PAI, os quais sero explanados mais
adiante.
BATCH INPUT So programas que executam de forma automtica ( todos os registros de um arquivo texto por
exemplo ), qualquer transao do R3.
VARIANTES So valores fixo pr-definidos, para qualquer tela de seleo de parmetros de programas, ou seja,
quando um usurio sempre informa os mesmos dados, ou para execuo de um job. Difere do perfil de usurio >
Manuteno de dados, o qual fixa dados para qualquer tela, para um usurio.
STATUS Indica qual a transao, nome do programa, tela e outras informaes, a qual o processo em questo se
refere.
CLASSE DE MENSAGENS Diviso fsica das Mensagens de erros e/ou sucessos para os diversos mdulos e sub-
divises.
ANLISE DE DUMPS Normalmente so gerados dumps, quando se ocorre um erro no previsto, tipo Zero Divide.
Caminho para anlise de dumps gerados: Ferramentas > Administrao > Monitoramento > Anlise Dump.
NAVEGAO BASICA
Menu Principal do R/3: ( Neste Menu esto todos os Mdulos Funcionais e mais o ambiente de desenvolvimentos: Ferramentas >
ABAP/4 Workbench ).
DICIONRIO DE DADOS
O dicionrio de dados do ABAP/4 (DD) uma fonte central de informaes provenientes do sistema gerenciador de dados do SAP. Sua
principal funo suportar a criao e o gerenciamento das definies de dados, tambm conhecidas como metadados.
Este o ambiente de dicionrio de dados, display, criao e alterao de tabelas, e principalmente pela ferramenta de Data Browse
Utilitrios > Table contents ( tambm disponvel na transao SE16 ).
Escolha display de uma tabela qualquer por exemplo T001W ( Tabela de Centros ), para uma familiarizao com alguns conceitos. (
Trata-se de uma tabela de 53 campos, dependente de mandante, com a chave primria de um s campo WERKS ).
Muita coisa funciona no ABAP/4, com duplos cliques, por exemplo, dando duplo clique no DATA ELEMENT NAME1, similar a voltar
uma tela escolher o radio buttons Elemento de Dados com o nome NAME1. Podemos tambm navegar pelas tabelas que possuem
chave estrangeira da tabela que estamos. No caso a T001W, possui chave estrangeira somente da tabela T000 ( Tabela de Mandantes ).
Data Element Trata-se de um referncia a qual pode ser a mesma para diferentes campos de diferentes tabelas, onde se define labels
( curtos e longos ) para o campo, e principalmente referencia-se ao domnio dele. ( domain ).
Domain Trata-se como o prprio nome diz do domnio da informao que este campo pode conter. Este domnio pode ser uma outra
tabela ou um domnio fixo.
Caminho: Ferramentas > ABAP/4 Workbench > Dictionary. ( SE11 )
DICIONRIO DE DADOS
E
x
e
r
c

c
i
o
:

V
i
s
u
a
l
i
z
a
r

C
o
n
t
e

d
o

d
a
s

T
a
b
e
l
a
s
Exerccio Visualizar contedo das Tabelas:
1.Transao SE11
2.Informar o nome da tabela (VBAK)
3.Menu Utilitrios -> Contedo da Tabela -> Exibir
Para alterar os campos de filtro:
Menu Configuraes -> Critrios de Seleo
Para alterar os campos de exibio:
Menu Configuraes -> Formato de Lista -> Seleo Coluna
1.Transao SE16
2.Informar o nome da tabela (VBAK)
3.Menu Utilitrios -> Contedo da Tabela -> Exibir
Para alterar os campos de filtro:
Menu Configuraes -> Critrios de Seleo
Para alterar os campos de exibio:
Menu Configuraes -> Formato de Lista -> Seleo Coluna
ABAP Dictionary
Campo3 Campo2 Campo1
Campo3 Campo2 Campo1
Database Definio Fsica
Definio Lgica
A definio de uma tabela no SAP contm os
seguintes componentes:
Campos: define o nome e o tipo dos dados
contidos na tabela
Chave Estrangeira: define a relao entre
tabelas
Configuraes Tcnicas: controla como a
tabela deve ser armazenada no BD
ndices: torna a seleo de registros mais
rpida
Objeto
Descrio
Tabela
Repsitorio de armazenamento
Campos
Define as informaes armazenadas na tabela
Elemento de Dados
Descreve o significado do domnio em relao ao
negcio e determina como o campo ser exibido
ao usurio. Por ser armazenado como objeto no
dicionrio, pode ser reutilizado em outras
tabelas.
Domnio
Descreve os valores vlidos para um campo. O
domnio especifica informaes como o tipo de
dados e o tamanho do campo. Por ser
armazenado como objeto no dicionrio, pode
ser reutilizado assim como os Elementos de
Dados.
Campo
Elemento de Dados
Domnio
Usa
Usa
Tabela
Neste exemplo, os campos FORCURAM
(tabela SBOOK) e PRICE (tabela SFLIGHT)
possuem o mesmo domnio S_PRICE.
Para distinguir a aplicao nos negcios SAP,
cada campo utiliza um Elemento de Dados.
Utilizam o mesmo domnio pois ambos os
campos possuem atributos tcnicos
similares.
Tipo de Dados:
2 x
Transao : SE11
Para criar uma tabela devemos seguir os seguintes passos:
Criar a tabela
Especificar os campos
Definir os elementos de dados e domnios
Especificar as configuraes tcnicas
Ativar a tabela
Criao de Tabela
E
x
e
r
c

c
i
o
:

C
r
i
a
r

T
a
b
e
l
a
Exerccio - Criar Tabela
1. Transao SE11
2. Escolha Tab. Banco Dados, entre com o nome da tabela
3. Escolha criar
4. Entre com as seguintes informaes:
Descrio Breve: Descrio da tabela
Classe de entrega: A
Atualiz. Viso tabs: Permitida
5. Salve a tabela
E
x
e
r
c

c
i
o
:

E
s
p
e
c
i
f
i
c
a
r

o
s

c
a
m
p
o
s

d
a

t
a
b
e
l
a
Exerccio Especificar os campos da tabela
1. Transao SE11
2. Escolha Tab. Banco Dados, entre com o nome da tabela previamente criada
3. Escolha modificar
4. Entre com os nomes dos campos
5. Salve a tabela
E
x
e
r
c

c
i
o
:

C
r
i
a
r

D
o
m

n
i
o

e

E
l
e
m
e
n
t
o

d
e

D
a
d
o
s
Exerccio Definir Elemento de dados e Domnio
1. Certifique-se que a tabela est em modo de edio.
2. Atribua um nome para o elemento de dados dos campos criado acima.
3. Duplo click sobre o campo `Elemento de Dados.
4. Entre com as seguintes informaes:
5. Descrio Breve : texto identificador do E.D.
6. Domnio: atribua um nome ao domnio que ser criado
7. Duplo click sobre o campo `Domnio
8. Categoria de Dados : Tipo de Dados do campo
9. N de Posies: Tamanho do campo
10. Ative o domnio e click no boto `voltar
11. Ative o elemento de dados e click no boto `voltar
12. Salve a tabela
E
x
e
r
c

c
i
o
:

M
o
d
i
f
i
c
a
r

D
o
m

n
i
o

-
L
i
s
t
a

d
e

V
a
l
o
r
e
s
Exerccio Definir uma lista de valores ao Domnio
1. Na tela de edio de domnio, certifique-se que estamos em modo de
modificao
2. Selecione a aba `Interv.vals
3. Adicione ao grid de valores individuais os valores desejados
4. Ative o domnio
Define como a tabela ser armazenada no BD.
Os parmetros mais importantes so:
Data Class: informa a rea fsica na qual a
tabela ser armazenada.
-APPL0 Registros raramente alterados
-APPL1 Registros frequentemente alterados
- APPL2 Dados customizveis definidos na
instalao do software
Size Category: define o tamanho previsto da
tabela.
Configuraes
Tcnicas
E
x
e
r
c

c
i
o
:

A
t
u
a
l
i
z
a
r

C
o
n
f
i
g
u
r
a

e
s

T

c
n
i
c
a
s
Exerccio Atualizar Configuraes Tcnicas
1. Transao SE11
2. Escolha Tab. Banco Dados, entre com o nome da tabela
3. Escolha modificar
4. Clicar sobre o boto `Configuraes Tcnicas
5. Preencher o campo Categoria Dados
6. Preencher o campo Categor. Tamanho
7. Salvar
E
x
e
r
c

c
i
o
:

C
r
i
a
r

n
d
i
c
e
Exerccio Criar ndice na tabela
Com a tabela em modo de edio clicar sobre o boto `ndice (SE11)
Informar uma identificao nica para o ndice a ser criado
Preencher o campo Descrio Breve
Se atentar se o ndice deve ser nico ou no
Preencher todas as colunas que devem fazer parte do ndice no grid apresentado
Ativar
Para definir relacionamentos
entre tabelas utilizamos Foreign
Keys.
Usando essa chave, criamos
rapidamente uma validao para
o campo de entrada.
Chaves
Estrangeiras
E
x
e
r
c

c
i
o
:

C
r
i
a
r

C
h
a
v
e

E
s
t
r
a
n
g
e
i
r
a
E
x
e
r
c

c
i
o
:

C
r
i
a
r

D
i

l
o
g
o

d
e

M
a
n
u
t
e
n

o

d
e

T
a
b
e
l
a

(
S
M
3
0
)
Exerccio Criar Dilogo de Manuteno de Tabela (SM30)
1. Com a tabela em edio na transao SE11, acessar no Menu a opo Utilitrio ->
Gerador de Atualizao de Tabela
2. Preencher os campos em destaque abaixo
3. Clicar no boto `Criar
Genricas
KNA1 - Mestre de clientes
TVARV - Variveis para variantes
T012K - Mestre de bancos
EKKO - Cabealho de pedidos
EKPO - Item de pedidos
LFB1 - Mestre de fornecedores
T000 - Tabela de mandantes
T001 - Tabela de empresas
T001W - Tabela de centros e filiais
TCURR - Taxas de converso de valores
CSKS - Registro mestre de centro de
custo
CSKT - Textos de centro de custo
TBTCO - Tabela de jobs
MARV - Perodos corrente e precedente de
materiais
TADIR - Catlogo de objetos do R/3
MM & PP
PLAF - Tabela de Ordem planejada
MARA - Mestre de Materiais
MARM - Tabela de unidade de medida
MKPF - Cabealho de documentos de material
MSEG - Item de documentos de material
MARD - Estoques por depsito / centro
MAKT - Descries de materiais
MARC - Segmento de materiais por centro
MAST - Ligao Material com lista tcnica
STKO - Cabealho lista tcnica
STPO - Item da lista tcnica
S032 - Estoque retroativo
S031 - Estoque retroativo
AFKO - Cabealho da ordem PCP
MBEW - Avaliao de material
T134T - Denominao de tipos de material
FI & CO
BKPF - Cabealho de documentos contbeis
BSEG - Itens de documentos contbeis
BSIS - Contrapartida por contas contbeis de
clientes
BSAS - Contrapartida por contas contbeis de
fornecedores
BSIK - Partidas compensadas de
fornecedores
BSAK - Partidas abertas de fornecedores
BSID - Partidas compensadas de clientes
BSAD - Partidas abertas de clientes
LFA1 - Mestre de fornecedores
LFB1 - Mestre de fornecedores ( Empresa )
GLT0 - Mestre de contas razo
AUFK - Mestre de ordens
COSP - Objetos CO valores de ordens de
investimentos
SKA1 - Mestre das contas razo
COBK - Cabealho de documentos de CO
COEP - Partidas de CO
COVP - View das tabelas COBK e COEP
SD
VBAK - Cabealho de ordem de venda
VBAP - Itens de ordem de venda
LIKP - Cabealho de fornecimentos
LIPS - Itens de fornecimentos
VTTK - Cabealho de transportes
VTTP - Itens de transportes
VBRK - Cabealho de faturamento
VBRP - Itens de faturamento
J_1BNFDOC - Cabealho de notas fiscais
J_1BNFLIN - Itens de notas fiscais
Uma viso em um banco de dados uma
relao que no armazena dados, mas
definida dinamicamente por uma consulta
que previamente analisada e otimizada.
Entre as principais utilidades esto o
aumento de segurana por propiciar uma
viso limitada e controlada dos dados que
podem ser obtidos da base (a depender do
SGDB utilizado) e a performance por
utilizar uma consulta previamente
otimizada, tornando desnecessrio este
processo quando ela realizada.
E
x
e
r
c

c
i
o
:

C
r
i
a
r

V
I
E
W
Exerccio Criar View de Banco de Dados
Na transao SE11, marcar a opo `Viso e clicar Criar
Selecionar `Viso de banco de dados, transferir
Preencher o campo Descrio Breve
Na Aba Tabelas/Condies join informamos as tabelas e os campos de
relacionamento entre essas tabelas, conforme imagem abaixo
Na transao SE11 cria-se uma ajuda de pesquisa.
Atribui-se a tabela e os campos que serviro de ajuda quando o search-help for
acionado, conforme imagem que segue.
Defini-se o nome da
tabela que vai mostrar o
dados na ajuda de
pesquisa
- Se flegar o campo IMP e EXP, o campo ir aparecer na Ajuda de pesquisa e ir tambm
retornar para a tabela com o valor selecionado.
- Se Flegar somente o IMP, simplesmente mostrar o campo como uma descrio
Para amarrar o search-help a um campo da tabela siga os passos seguintes
1- Selecionar o campo desejado da tabela e clicar sobre o boto Aj.p/pes.
2- Informar o nome da ajuda de pesquisa.
3- <Enter>
4- Devemos associar o campo de IMP e EXP do search-help ao da tabela
5- Click no boto Transferir
Um trabalho muito comum, a ser realizado em novos projetos ( implementaes ), e tambm em
projetos que j estejam em andamento, so os relatrios.
Normalmente so extraes da base de dados, gerao de tabelas internas, e posterior impresso
com quebras e totais.
Como vimos anteriormente o grande trabalho esta em determinar aonde esto as informaes na
base de dados, pois uma vez determinadas estas tabelas, o ABAP/4 bastante simples para a
montagem de Reports.
Abaixo segue um exemplo de como o Report fica armazenado em tela, aps a execuo.
Transao: SE38
Disponibiliza um campo de entrada na tela, para que o usurio possa entrar um valor nico.
Parameters <nome> TYPE/LIKE <tipo> [DEFAULT <valor>] [OBLIGATORY].
Parameters: <nome> TYPE/LIKE <tipo> [DEFAULT <valor>] [OBLIGATORY],
<nome> TYPE/LIKE <tipo> [DEFAULT <valor>] [OBLIGATORY],
<nome> TYPE/LIKE <tipo> [DEFAULT <valor>] [OBLIGATORY].
Parameters: <nome> AS CHECKBOX [DEFAULT X].
Parameters: <nome1> RADIOBUTTON GROUP <grupo1> [DEFAULT X],
<nome2> RADIOBUTTON GROUP <grupo1>,
<nome3> RADIOBUTTON GROUP <grupo2> [DEFAULT X],
<nome4> RADIOBUTTON GROUP <grupo2>.
REPORT zcalculo.
DATA: v_result(4) TYPE N.
PARAMETERS p_valor(2) TYPE n default 1 obligatory.
v_result = ( p_valor ) * ( 5 ) .
WRITE: v_result.
REPORT zteste.
TABLES: T001.
SELECT-OPTIONS: so_filt FOR t001-bukrs OBLIGATORY.
WRITE: so_filt-low,
so_filt-high.
SIGN OPTION LOW HIGH
I BT 0001 2236
SELECT-OPTIONS <campo> FOR <campo> [OBLIGATORY].
Disponibiliza um campo de entrada na tela, para que o usurio possa entrar um range de valor.
LOW
HIGH
Tabela Interna : so_filt
Clicando no boto em destaque, ele disponibiliza outras opes de seleo.
SIGN OPTION LOW HIGH
I EQ AA
I EQ AB
I EQ AC
I EQ UA
Tabela Interna : so_fli
SELECTION-SCREEN BEGIN OF BLOCK <nm_bloco> WITH FRAME TITLE <texto>.
Parameters: ...
Select-Options: ...
SELECTION-SCREEN END OF BLOCK <nm_bloco>.
REPORT zcalculo.
DATA: v_result(4) TYPE N.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
PARAMETERS p_valor(2) TYPE n default 1 obligatory.
SELECTION-SCREEN END OF BLOCK bl1.
v_result = ( p_valor ) * ( 5 ) .
WRITE: v_result.
2x
MOVE <objeto> TO <objeto2>.
<objeto2> = <objeto>.
REPORT zcalculo.
DATA: v_result(4) TYPE N,
v_nome(30) TYPE C.
CLEAR: v_result, v_nome.
MOVE: 2 TO v_result.
V_nome = Joao.
Para atribuir Valor uma varivel
<variavel> = <expresso aritmtica>.
DATA: v_result(4) TYPE N,
v_numero(4) TYPE N,
v_nome(30) TYPE C.
v_result = 3 + 5.
v_numero = v_result * 3.
V_result = ( 18 mod 5 ).
Operaes Bsicas Aritmticas
Operador Significado
+ Adio
- Subtrao
* Multiplicao
/ Diviso
DIV Quociente da Diviso
MOD Resto da Diviso
Funes Numricas
Funo Resultado
ABS Valor Absoluto
SIGN Sinal Se > 0 , 1
Se = 0 , 0
Se < 0, -1
CEIL Maior Inteiro Menor que o arqumento
FLOOR Menor Inteiro Maior que o arqumento
TRUNC Parte inteira do argumento
FRAC Parte fracional do argumento
<valor> [+i] [(t)] .
Onde: i = posio inicial ( a partir de )
t = tamanho total a ser capturado
REPORT zstring.
TABLES: SPFLI.
DATA: v_string(20) TYPE C VALUE 'Joao Silva',
v_numero(4) TYPE N VALUE '1234'.
WRITE:/ v_string(6).
WRITE:/ v_string+7(1).
WRITE:/ v_string+2(8).
WRITE:/ v_numero+1.
Comentrios:
SIGN OPTION LOW HIGH
Comando bsico para exibio de valores na tela.
Trata-se de uma ferramenta muito til no dia-a-dia, tanto para encontrar erros em programas
desenvolvidos, como para entender processamentos Standard. Para programas Standard, o Debugging
pode ser muito difcil e demorado.
Podemos marcar BreakPoints nos programas a serem debugados, parando o processamento e
disponibilizando neste momento, valores de variveis, tabelas internas, tabela SY, e outros dados.
Podemos at mesmo mudar o contedo da varivel para continuar a execuo.
Alm do BreakPoint ( parada esta que acontece somente para o usurio que gerou o BreakPoint ), outra
maneira de debuggar um programa colocar /H, na linha de comando.
Existe tambm uma ferramenta bastante til, na procura de tabelas em transaes standard, a anlise
de tempo de execuo, pois alm de outras informaes, apresenta todas as tabelas e views que o
programa passou.
E
x
e
r
c

c
i
o
:

T
e
l
a

d
e

S
e
l
e

o

/

W
R
I
T
E
Exerccio: Tela de Seleo / WRITE.
1.Criar programa onde o usurio informe o nome e a idade. Aps a execuo do mesmo,
deve ser exibido na tela as primeiras 5 posies do nome e o dobro da idade.
2.Criar programa onde o usurio possa informar um intervalo de valores que vai ser
preenchido com nmeros. (VBAK- AWAHR). Com os valores inputados exibir o resto da
diviso entre o valor superior e inferior.
3.Criar programa onde o usurio informa o nome e o sobrenome (2 campos). Aps a
execuo do mesmo, deve ser exibido na tela o tamanho dos parmetros concatenados,
assim como o mesmo em caracteres minsculos.
O JOB possui o mesmo conceito dos JOBS nos ambientes de grande porte, ou seja, trata-se de uma
encadeao de STEPS ( execuo de programas ), a qual depende de outros JOBS, roda em horrio pr-
determinado, pode ou no ser peridico etc...
importante salientar que todo JOB roda em Background. A execuo normal de qualquer transao,
possibilita a execuo em Background, Programa > Exec. Em Background. Deve-se neste momento
especificar a impressora, se o relatrio vai direto para a impressora ou se vai ser gerado novo SPOOL.
Para a definio de JOBS, Sistema > Servios > Jobs > Definio de Jobs
Para a Monitorao do JOB, seguir o mesmo caminho anterior e trocar de Definio para Sntese de Jobs.
possvel tambm a monitorao do JOB atravs da transao SM37.
Para a checagem de SPOOL do usurio, Sistema > Servios > Controle de Sada. O SPOOL, de relatrios
possui um nmero limitado de impresso de linhas, porm existe um boto dentro do SPOOL, onde
aumentamos para aquele momento este limite.
E
x
e
r
c

c
i
o
:

J
O
B
S
Exerccio: JOB
1.Gerar um job para um programa para execuo programada. Utilizar o conceito de
variante.
REPORT zstring.
MESSAGE e001(ZWA) WITH ZPROGRAMA.
REPORT zstring.
MESSAGE e000(ZWA) WITH Mensagem de Warning exibida .
Transao SE91
Trata-se de uma separao lgica de mensagens: E Erro, W Warnings, I Informations e S Sucesso, ou seja,
basicamente uma tabela de erro que para no ser nica foi dividida em vrias menores ( Message Class ), por
isso normalmente em um desenvolvimento, criamos uma classe de mensagens ( comeadas por Z ou Y, claro ),
e a utilizamos para indicar nossos erros, sucessos etc...
Exerccio MESSAGE:
1 Criar Classe e Mensagens
Transao SE91
Informar o nome da classe de mensagem.
<Criar>.
Na aba Caractersticas, preencher o campo Texto Breve
Na aba Mensagens criar duas mensagens, sendo uma delas com o caractere
de substituio (&).
<Salvar>.
2 Criar report que receba o Tipo de Mensagem / Nmero da mensagem por
parmetro e exiba a mensagem criada no exerccio acima.
E
x
e
r
c

c
i
o
:

M
E
S
S
A
G
E
EBELN BUKRS
450000 WABR
450001 WABR
450002 WABR
Sintaxe Descrio Exemplo
<campo> = <contedo>. L os registros onde o campo <campo> igual
ao <contedo>
SELECT * INTO TABLE ti_aux
FROM t001
WHERE bukrs = TCSBR.
<campo> IN (<contedo1>,
<contedo2>,
...
<contedoN>).
L os registros onde o campo <campo> igual
ao <contedo1> ou <campo> igual ao
<contedo2> ou ...
ou <campo> igual ao <contedoN>
SELECT * INTO TABLE ti_aux
FROM t001
WHERE bukrs IN (TCSBR, TCSPT).
<campo> BETWEEN <contedo1>
AND <contedo2>.
L os registros onde o campo <campo> esteja
no intervalo <contedo1> e <contedo2>,
incluindo-os
SELECT * INTO TABLE ti_aux
FROM ekko
WHERE ebeln BETWEEN 450000
AND 450005.
<campo> LIKE <contedo>.
Caracteres coringas:
% sequncia de 1 ou n caracteres
_ 1 caractere
L os registros onde o campo <campo>
possua o contedo <contedo>
SELECT * INTO TABLE ti_aux
FROM t001
WHERE bukrs LIKE TCS%.
E
x
e
r
c

c
i
o
:

S
E
L
E
C
T
Exerccio: SELECT
1.Selecionar todos os pedidos de compra (EKKO) onde o tipo de documento (BSART) seja
igual a FO.
2.Selecionar o primeiro pedido de compra (EKKO) cujo criador (ERNAM) seja igual a
ALUNO10.
3.Selecionar os pedidos de compra (EKKO) cujo criador (ERNAM) seja igual a ALUNO10 ou
ALUNO9.
4.Selecionar todos os itens (EKPO) dos pedidos de compra (EKKO) cujo criador seja o
ALUNO13
C,I,P,T ...
Data Types
Data Objects
Definido pelo Usurio Pr-Definido
ELEMENTAR:
ESTRUTURADO:
Trata-se de um conceito muito utilizado em programas ABAP/4, so similares a arrays, ou temp-
tables de outras linguagens. Apesar do inconveniente de serem armazenadas na memria RAM da
mquina (o que pode acarretar problemas quando tentarmos montar uma tabela interna muito
grande), possui comandos muito interessantes para sorts, quebras e totalizaes.
Deve-se sempre lembrar que a tabela interna trabalha com o conceito de buffer, ou seja, aps
armazenarmos o buffer devemos appendar este novo registro a nossa tabela interna. Sempre que
possvel nos programas onde a tabela interna j no ser mais utilizada na lgica, devemos liberar
este espao de memria.
Comandos associados:
DATA: BEGIN OF t_tabela OCCURS 0,
CAMPO 1
CAMPO 2
END OF t_tabela.
Definio da tabela interna, tambm valido se criar uma tabela interna com include de uma
estrutura, alm disso existem outras variaes de definio como definir um type ( tabela interna ) e
utilizar este type WITH HEADER LINE, tem o mesmo efeito, porm melhor utilizar a definio acima.
CLEAR t_tabela.
Limpa o buffer da tabela interna.
APPEND t_tabela.
Inclui efetivamente o registro do buffer na tabela interna
COLLECT t_tabela.
Para registros com a mesma parte alfa-numrica, este commando soma todos os campos numricos.
SORT t_tabela BY campo.
Ordena a tabela interna pelos campos desejados. OBS. Para uma perfeita manipulao dos dados nos
comando AT, deve-se definir os campos da tabela interna na mesma ordem que sero sortiados no
comando SORT.
LOOP AT t_tabela.
Varre todos os registros da tabela interna, ou somente os registros que se pretende percorrer
(WHERE )
AT FIRST.
Em conjunto com o comando LOOP, identifica o primeiro registro da tabela percorrida.
AT NEW campo.
Em conjunto com o comando LOOP, identifica o primeiro registro de uma sequncia ( quebra ).
AT END OF campo.
Em conjunto com o comando LOOP, identifica o ltimo registro de uma sequncia ( quebra ).
AT LAST.
Em conjunto com o comando LOOP, identifica o ltimo registro da tabela percorrida.
READ TABLE t_tabela WITH KEY campo =
Leitura de um registro especfico. Este comando retorna SY-SUBRC = 0 se o registro for encontrado e
diferente de zero caso contrrio.
DELETE t_tabela.
Deleta um registro da tabela Interna
MODIFY t_tabela.
Modifica o registro na tabela Interna
REFRESH t_tabela.
Todos os Registro da Tabela Interna so deletados.
FREE t_tabela.
Libera o espao utilizado pela Tabela Interna na memria
Com Header Line
Sem Header Line
VBAP
TABELA INTERNA it_vbap
Work-Area
APPEND
SELECT
VBAP
TABELA INTERNA it_vbap
MANDT VBELN POSNR
100 0000000001 0010
100 0000000002 0010
MANDT VBELN POSNR
100 0000000001 0010
100 0000000002 0010
100 0000000001 0010
MANDT VBELN POSNR
100 0000000001 0010
100 0000000002 0010
MANDT VBELN POSNR
100 0000000001 0010
100 0000000002 0010
Inserir registro
MANDT VBELN POSNR
100 0000000001 0010
100 0000000002 0010
MANDT VBELN POSNR
100 0000000001 0010
100 0000000002 0010
Ordenar:
Ler um registro especfico:
BINARY SEARCH aumenta a performance na busca. Para us-lo a
tabela deve estar ordenada pelos campos de filtro.
LOOP
LOOP em Tabela
Alterar registro
Excluir registro
Excluir Tabela interna
Verificar se possui registros
Move - Corresponding
Informao
MANDT VBELN POSNR
100 0000000001 0010
100 0000000002 0010
Acumular Valores
E
x
e
r
c

c
i
o
:

T
a
b
e
l
a

I
n
t
e
r
n
a
Exerccio: Tabela Interna
1.Selecionar todos os pedidos de compra (EKKO) onde o tipo de documento (BSART) seja
igual a FO.
2.Selecionar o primeiro pedido de compra (EKKO) cujo criador (ERNAM) seja igual a
ALUNO10.
3.Selecionar os pedidos de compra (EKKO) cujo criador (ERNAM) seja igual a ALUNO10 ou
ALUNO9. Exibir na tela a somatria da quantidade dos itens (NETWR) por criador.
4.Selecionar todos os itens (EKPO) dos pedidos de compra (EKKO) cujo criador seja o
ALUNO13.
Trata-se de uma estrutura, a qual de momento a momento ( em tempo de execuo ) est disponvel
para o programa. Por exemplo mesmo sem definio em TABLES, est disponvel a qualquer momento
no programa a varivel SY-UNAME, a qual contm o nome do usurio que logou o SAP.
Segue abaixo uma relao das mais importantes variveis. Sempre que necessrio, cheque o dicionrio
desta estrutura para verificar se existe alguma varivel que possa ser til ao seus futuros programas.
SY-SUBRC Retorno dinmico aps cada comando. Normalmente quando o comando funcionou o SY-
SUBRC = 0, porm o help de cada comando indica qual o SUBRC para cada hiptese. No caso de CALL
FUNCTION, o SUBRC determinado pelas EXCEPTIONS.
SY-DATUM Data do sistema. Esta data est armazenada AAAAMMDD, ou seja para se separar em uma
varivel o dia : w_variavel = SY-DATUM+6(2). Vale lembrar que algumas datas em determinadas tabelas
transparentes, esto armazenadas em formato anormal ( quando fazem parte da chave primria),
exemplo tabela TCURR. Verificar para estes casos a rotina de converso do campo
( CONVERSION_EXIT_XXXXX_INPUT ).
SY-UZEIT Hora do Sistema
SY-LANGU Linguagem de Logon
SY-TABIX Linha Corrente de uma Tabela Interna
SY-ULINE Similar ao comando ULINE, porm permite linhas menores que o tamanho definido no LINE-
SIZE do REPORT, por exemplo: WRITE: / SY-ULINE(10).
SY-VLINE Caracter de fechamento lateral de Boxes.
SY-PAGNO Nmero da Pgina corrente no relatrio
SY-LINNO Linha corrente no relatrio
SY-UNAME Usurio de Logon
SY-BATCH Indicativo de execuo em Background
SY-UCOMM Comando escolhido em Relatrios Interativos
SY-LISEL Linha escolhida em Relatrios Interativos
SY-TVAR0 SY-TVAR9 Espcie de Elemento de Texto, para Ttulos de Relatrios.
E
x
e
r
c

c
i
o
:

T
a
b
e
l
a

S
Y
S
T

(
S
Y
)
Exerccio: Tabela SYST (SY)
1.Dar o display das variveis sy-datum, sy-uzeit, sy-uline e sy-uname.
Relacionaremos a seguir alguns comandos e conceitos importantes no ABAP, sendo que a totalidade
dos comandos e suas sintaxes, podem ser encontradas no help. Os comandos relativos a tabelas
internas sero tratados mais adiante.
DECLARATIVE KEY WORDS
DATA
Internal fields, field strings, internal tables,
common areas
LOCAL
Global fields in subroutines
TABLES
SAP tables
PARAMETERS
Internal fields set by the user after starting the
program
SELECT-OPTIONS
Selection criterion set by the user for data selection
purposes after starting the program
SELECTION-SCREEN
Selection screen layout
RANGES
Selection criterion handled within the program only
CONTROL KEY WORDS
IF..ELSE..ENDIF
Conditional processing
You can use the following comparison operators
here:
- EQ, NE, GT, LT, GE, LE
- O, Z, M (bit comparison)
- CO, CN, CA, NA, CS, NS ,CP, NP (string
comparison)
- BETWEEN...AND
- IS INITIAL
- IN
- All comparison operators are documented
under ==>IF.
CHECK Selection condition, leaving loops
and subroutines
Comparison operators: ==>IF
CASE..WHEN..ENDCASE
CONTROL KEY WORDS (cont..)
Case distinction
FORM..ENDFORM
Defines a subroutine
PERFORM..
Calls a subroutine
SELECT..ENDSELECT
Reads tables (ATAB, database)
Comparison operators: ==>IF
WHILE..ENDWHILE
Loop processing
Comparison operators: ==>IF
DO..ENDDO Loop processing
EXIT - Leaves loops or subroutines
LEAVE - Leaves program processing, goes to a
transaction, list or menu
STOP Exit selection
CONTINUE Leaves loops
OPERATIONAL KEY WORD
ADD Adds fields together
CALL Calls a transaction, screen, dialog
module or function module
CLEAR Resets to initial value
COMMIT Executes DB changes
COMPUTE Compute
You can use the following functions here:
SQRT Square root
EXP Exponential function to e
LO Natural logarithm
SIN Sine
COS Cosine
STRLEN Character string length
CONDENSE Compresses a field
DIVIDE Divides fields
FORMAT Sets the report output format
HIDE Notes line-related field contents
FORMAT Sets the report output format
HIDE Notes line-related field contents
INCLUDE Inserts a program component
MESSAGE Outputs messages
MOVE Moves field contents
FORMAT Sets the report output format
HIDE Notes line-related field contents
INCLUDE Inserts a program component
MESSAGE Outputs messages
MOVE Moves field contents
MOVE-CORRESPONDING
OPERATIONAL KEY WORD (cont..)
Moves matching fields of field strings
MULTIPLY Multiplies fields
NEW-PAGE Sets a new page
REPLACE Replaces character strings
RESERVE Reserves output lines on the current page
SEARCH Finds character strings in tables
SHIFT Moves field contents
SKIP Sets blank lines, goes to a
particular line
SUBMIT Starts another program
SUBTRACT Subtracts fields
TRANSFER Sequential data output
TRANSLATE Conversion to upper / lower case
ULINE Underline
UNPACK Unpacked with leading zeros
WINDOW Define screen section (window)
WRITE Output
COMMENTS
* In first column: Whole line is a
comment
" In any other column: Rest of line is
a comment
INTEGRATING OTHER PROGRAM COMPONENTS
INCLUDE nserts specified program component at this point
PERFORM form(prog),
Calls a subroutine from another program
CASE <campo>.
WHEN <valor1>.
...
WHEN <valor2>.
...
WHEN <valor3> OR <valor4>.
...
WHEN OTHERS.
...
ENDCASE
CONTINUE CHECK EXIT
Dentro do LOOP Dentro do LOOP Dentro do LOOP
DATA: v_cont(1) TYPE n VALUE 5.
WHILE v_cont > 0.
v_cont = v_cont 1.
IF <expresso lgica>.
CONTINUE.
ENDIF.
WRITE:/ sy-index.
ENDWHILE.
DATA: v_cont(1) TYPE n VALUE 5.
WHILE v_cont > 0.
v_cont = v_cont 1.
CHECK <expresso lgica>.
WRITE:/ sy-index.
ENDWHILE.
DO.
IF v_cont = 5.
EXIT.
ENDIF.
v_cont = v_cont + 1.
WRITE:/ 'Contador',
v_cont.
ENDDO.
WRITE:/ Saiu do loop.
Fora do LOOP Fora do Loop Fora do LOOP
...
CHECK <expresso lgica>.
...
...
EXIT.
...
Processa o
prximo loop
Processa o
prximo loop
Sai do loop
Abandona o bloco
imediatamente
Abandona o bloco
imediatamente
Exerccio: Comandos
1.Percorrer todos os nmeros inteiros at 100 e imprimir somente os nmeros divisveis por
11.
2.Percorrer todos os nmeros inteiros at 100 e imprimir os nmeros 1, 10, 20 , 30 , 40, 50,
60, 70, 80, 90 e 100.
3.Percorrer todos os nmeros inteiros at 100 e imprimir na tela somente os nmeros
primos.
E
x
e
r
c

c
i
o
:

C
o
m
a
n
d
o
s
Evento Descrio
INITIALIZATION Ocorre antes da tela de seleo ser exibida.
Usada para, por exemplo, inicializar
parmetros. a nica maneira de alterar os
valores defaults dos parmetros.
AT SELECTION-SCREEN Ocorre quando ocorre uma interao do
usurio com a tela de seleo.
START-OF-SELECTION Ocorre aps o processamento da tela de
seleo. Usada para leitura de dados, criao
de listas.
AT USER-COMMAND Ocorre aps interao do usurio em algum
boto.
Uma forma fcil de se entender a tratativa de eventos, seria imaginar cada evento como um programa a parte, onde um
evento termina quando comea o prximo, e independente do posicionamento destes eventos no cdigo fonte, a
sequncia de execuo destes sub-programas a seguinte:
1 INITIALIZATION Inicializa variveis de parmetros ( antes da exibio da tela ).
2 AT-SELECTION-SCREEN Validao das informaes solicitadas ( aps interveno do usurio ).
3 START-OF-SELECTION Evento de extrao de dados da base.
4 END-OF-SELECTION Display dos dados extrados.
Os eventos TOP-OF-PAGE e END-OF-PAGE, so executados a cada quebra de pgina, sendo que aps o comando NEW-
PAGE, no se executa o evento END-OF-PAGE.
REPORT zwrite.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE
text-001.
PARAMETERS p_valor(1) TYPE n default 1.
SELECTION-SCREEN END OF BLOCK bl1.
DATA: v_calc(3) TYPE N.
DATA: tcs_vbap LIKE vbap.
DATA: it_vbap LIKE vbap OCCURS 0.
START-OF-SELECTION.
SELECT * UP TO 10 ROWS
INTO TABLE it_vbap
FROM VBAP.
PERFORM ZCalcular_Dobro USING p_valor
CHANGING v_calc.
WRITE:/ v_calc.
PERFORM ZImprimir_Tabela TABLES it_vbap
USING p_valor
CHANGING v_calc.
WRITE:/ v_calc.
*&------------------------------------------*& Form
ZCALCULAR_DOBRO
*&------------------------------------------form ZCALCULAR_DOBRO
USING p_numero TYPE n
CHANGING p_dobro TYPE n.
CLEAR: p_dobro.
p_dobro = p_numero * 2.
endform. " ZCALCULAR_DOBRO
*&------------------------------------------*& Form
ZIMPRIMIR_TABELA
*&------------------------------------------form ZIMPRIMIR_TABELA
TABLES p_tabela STRUCTURE tcs_vbap
USING p_indice TYPE n
CHANGING p_triplo TYPE n.
LOOP AT p_tabela INTO tcs_vbap FROM p_indice.
WRITE:/ tcs_vbap-vbeln,
tcs_vbap-posnr.
ENDLOOP.
CLEAR: p_triplo.
p_triplo = p_indice * 3.
endform. " ZIMPRIMIR_TABELA
So cdigos alfanumricos com no mximo 4 posies, o qual corresponde a um
objeto, ou seja, a transao uma chamada rpida a um programa on-line,
programa module pool, menu etc..
Para se executar um programa via Menu, este deve obrigatoriamente possuir
uma transao associada, pois ela que o menu vai executar.
Caminho: Ferramenta > ABAP/4 Workbench > Desenvolvimento > Outras
Ferramentas > Transaes.
As transaes no so dependente de mandante.
E
x
e
r
c

c
i
o
:

C
r
i
a
r

T
r
a
n
s
a

o

p
a
r
a

D
i

l
o
g
o

d
e

M
a
n
u
t
e
n

o

Exerccio Criar Transao para o Dilogo de manuteno
Executar a transao SE93
Informar o nome da nova transao
<CRIAR>
Preencher a txt breve e Escolher a opo Transao com parmetros
<CONTINUAR>
Informar texto de descrio da transao (Texto da transao)
No quadro Valor proposto para, informar cdigo da transao SM30
Escolher a opo ignorar 1 tela
Na primeria linha do quadro "Valores Propostos" :
"Nome da rea da Tela" atribuir "VIEWNAME"
"Valor" atribuir < Nome da Tabela >
Na segunda linha do quadro "Default Values" :
"Nome da rea da Tela" atribuir UPDATE"
"Valor" atribuir X
<SALVAR>
INCLUDE L <nm_grp> TOP.
INCLUDE L <nm_grp> UXX.
INCLUDE L <nm_grp> F<xx>.
Container para mdulos de funo. O diagrama abaixo nos
mostra a estrutura de um grupo de funo
Programa Bsico SAPL <nm_grp>
Declaraes globais para todo o
grupo de funes
Mdulos de Funo
Sub-rotinas chamadas por todos
os Mdulos de Funo
FUNCTION-POOL <fgrp>.
TABLES: ...
TYPES: ...
DATA: ...
FUNCTION <nm_funao>.
....
ENDFUNCTION.
INCLUDE L <nm_grp> U01.
INCLUDE L <nm_grp> U02.
INCLUDE L <nm_grp> U03.
FORM <nm_form>.
...
ENDFORM.
Transao: SE37
Declarao dos Parmetros Editor
Exerccio: Criar Grupo de Funo
1.Ir na transao SE37.
2.Menu: Ir Para -> Administrao de grupo de funes -> Criar grupo
3.Informar o nome e o texto breve do grupo a ser criado
4.Gravar
E
x
e
r
c

c
i
o
:

C
r
i
a
r

G
r
u
p
o

d
e

F
u
n

o
Transao: SE37
Exerccio: Criar Funo (SE37)
1.Criar uma funo que receba como parmetro um nmero e retorne o triplo do
mesmo.
2.Criar uma funo que receba o pedido de compra (EKKO-EBELN) e retorne todos
os itens de compra (EKPO) desse pedido. Caso no seja encontrado nenhum
registro retornar erro (Exceo).
E
x
e
r
c

c
i
o
:

C
r
i
a
r

F
u
n

o
Nome da Funo
Automaticamente trs a funo com sua estrutura
completa
Exerccio: Utilizar funo num report
Criar uma funo que receba o pedido de compra (EKKO-EBELN) e
retorne todos os itens de compra (EKPO) desse pedido. Caso no seja encontrado
nenhum registro retornar erro (Exceo). -> J criada
1.Criar um report para utilizar essa funo.
E
x
e
r
c

c
i
o
:

U
t
i
l
i
z
a
r

F
u
n

o

n
u
m

R
e
p
o
r
t
Exemplo Search Help Dinmico
REPORT ZFRRF0001 .
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-099.
PARAMETERS:
p_werks TYPE mseg-werks OBLIGATORY,
p_bdatj TYPE mseg-gjahr OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK b1.
*&-----------------------------------------------------------
* AT SELECTION-SCREEN ON
*&-----------------------------------------------------------
AT SELECTION-SCREEN ON p_bdatj.
PERFORM ValidarPeriodo. "Validar Ano
*&-----------------------------------------------------------
* AT SELECTION-SCREEN ON VALUE-REQUEST FOR
*&-----------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_werks.
PERFORM MatchcodeWerks. "Search Help Dinmico
*&-----------------------------------------------------------* START-OF-SELECTION
*&-----------------------------------------------------------
START-OF-SELECTION.
WRITE:/ p_bdatj,
p_werks.
*&-----------------------------------------------------------*& Form ValidarPeriodo
*&-----------------------------------------------------------
FORM ValidarPeriodo.
IF p_bdatj > '2008'.
MESSAGE i888(sabapdocu) WITH 'Ano invlido'.
STOP.
ENDIF.
ENDFORM. " ValidarPeriodo
FORM MatchcodeWerks.
constants: c_fieldname type help_value-fieldname value 'WERKS'.
types: begin of ty_valuetab,
werks LIKE t001w-werks,
name1 LIKE t001w-name1,
end of ty_valuetab.
data: t_valuetab type table of ty_valuetab,
t_return_tab type table of ddshretval.
data: tcs_return_tab type ddshretval,
tcs_valuetab type ty_valuetab.
SELECT t001w~werks t001w~name1
INTO TABLE t_valuetab
FROM t001w.
call function 'F4IF_INT_TABLE_VALUE_REQUEST'
exporting
retfield = c_fieldname
value_org = 'S'
tables
value_tab = t_valuetab
return_tab = t_return_tab
exceptions
parameter_error = 1
no_values_found = 2
others = 3.
if sy-subrc = 0.
read table t_return_tab into tcs_return_tab index 1.
if sy-subrc = 0.
p_werks = tcs_return_tab-fieldval.
endif.
endif.
ENDFORM. " MatchcodeWerks
Inserir registros em tabelas transparentes
Alterar registros em tabelas transparentes
Modificar registros em tabelas transparentes
Excluir registros em tabelas transparentes
Arquivo Servidor.
Download Arquivo Local
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = 'c:\temp\teste_down.csv'
FILETYPE = 'ASC'
tables
data_tab = it_arquivo
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
Upload Arquivo Local
call function 'GUI_UPLOAD'
exporting
filename = 'c:\temp\teste.csv'
tables
data_tab = it_saida
exceptions
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
others = 17
.
BDC
Tcnica de programao para a insero de dados dentro do SAP.
Passos para criao de uma BDC Session:
Identificar as telas que a transao processar
Escrever o programa em ABAP para gerar a tabela de BDC que submeter os dados na transao
Submeter a tabela de BDC para o sistema em modo batch ou atravs do comando CALL TRANSACTION
BDC
Identificar tela a ser processada
Quando um usurio entra com dados no SAP utiliza transaes. Cada transao tem vrias telas identificadas por
um nome de programa e um nmero de tela. As informaes sobre a tela atual obtida atravs no menu System,
item Status.
Alm de identificar o nome do programa e nmero da tela, deve-se tambm identicar o(s) campo(s) que se deseja
entrar com o dados. Para conseguir saber o nome da tabela/estrutura e o nome do campo deve-se clicar sobre o
campo que entraria com o dado e teclar <F1> seguido do boto Informaes Tcnicas.
Nesta tela consegue-se quase todos os dados para a sesso de BDC. O nome do programa, o nmero da tela e o
nome do campo para a sesso de Batch input.
Alm destes dados deve-se saber quais as teclas/funes de movimentao entres as telas. Por exemplo, se para
passar para a prxima tela da transao deve-se teclar <Enter>, o cdigo para a BDC /0.
BDC
Gerar tabela BDC
A tabela BDC uma tabela interna com uma estrutura especfica no qual preenchida para ser enviada para a
sesso batch input. Esta estrutura se chama BDCDATA e tem os seguintes campos:
Campo Tipo Descrio
Program Char(40) Nome do programa da transao
Dynpro Numc(4) Nmero da tela da transao
Dynbegin Char(1) Indicador de uma nova tela
Fnam Char(132) Nome do campo da tela
Fval Char(132) Valor a ser colocado no campo
Exemplo de uma tabela com estrutura BDCDATA com dados:
Program dynpro dynbegin fnam fval
SAPMF02K 0100 X
RF02K-LIFNR 0010010
RF02K-EKORG CNTL
SAPMF02K 0200 X
...
...
BDC
Para facilitar o trabalho de mapeamento dos
campos, o SAP dispe de uma ferramenta que faz
isso para o programador. a transao SHDB. Essa
transao monitora todos os passos que o usurio
faz quando utiliza uma transao e a resposta do
SHDB uma lista com os campos e telas que foram
utilizados, permitindo que o programador crie as
tabelas BDC.
Essa transao funciona da seguinte forma:
Na primeira tela, informa-se um nome para o
mapeamento que se deseja efetuar
Em seguida, informa-se a transao que deve ser
mapeada
A transao ento chamada. Deve-se fazer o
processamento normal nesta transao. Quando
terminar, o SHDB exibe a seguinte tela, com a lista
dos campos e telas utilizados.
Enviando uma tabela BDC para o sistema Call Transaction
Call transaction
Possibilita o processamento de uma tabela BDC imediatamente pelo sistema. Os dados da tabela BDC so
utilizados para executar a transao e o return code deste comando nos mostra se a transao foi executada com
sucesso ou no.
A sintaxe deste comando :
Os modos para executar este comando so:
A Mostra todas as telas
E Mostra apenas telas com erros
N No mostra as telas
Em adio ao return code, podemos utilizar as variveis de sistema para recuperar a mensagem que o SAP enviou
ao trmino do processamento. As variveis mais utilizadas so: SY-MSGID, SY-MSGV1, SY-MSGV2, SY-MSGV3 e SY-
MSGV4.
Exemplo:
Batch Input - Conceito
um conceito muito utilizados nas implantaes, e mesmo em interfaces no dia-a-dia, trata-se de um
processamento automtico, com todos os passos de um processamento manual, para qualquer transao do ECC,
ou seja, qualquer transao do ECC, pode ser executada via um arquivo texto, montando-se uma mscara e
executando-se automaticamente uma certa transao, quantos forem os registros do arquivo texto.
primordial para a integridade dos dados, que as tabelas no seja armazenadas diretamente (comandos INSERT,
MODIFY ... ), pois por mais que achemos que sabemos quais as tabelas que so armazenadas quando uma
transao executada, somente poderemos garantir a integridade executando-se a prpria transao.
Relacionaremos abaixo os passos necessrios para a montagem de um programa de BATCH INPUT (Carga
automtica de dados ).
1 Determinar a transao desejada.
2 Determinar os campos e funes por tela a serem preenchidas em uma execuo manual.
3 Montar o layout do arquivo texto a ser processado.
4 No programa : Pedir parmetros e consistir parmetros.
5 Para cada registro lido, Montar mscara de dados ( Tabela Interna BDCDATA ).
6 Para Interfaces no crticas: Tentar executar com mtodo CALL TRANSACTION, se o retorno no for sucesso
enviar para a pasta de BATCH INPUT.
7 Para Interfaces crticas: Enviar para a pasta de BATCH INPUT.
8 Emitir um resumo de Execuo.
Enviando uma tabela BDC para o sistema Batch Input
Batch Input
A segunda maneira para processar uma sesso de BDC submetendo-a ao sistema via processamento batch. Ao
contrrio do CALL TRANSACTION, estas transaes no sero executadas imediatamente, sero colocadas em
uma pasta de Batch Input que pode ser executada na transao SM35 ou schedulada para rodar em um dia e uma
hora desejada.
Existem trs mdulos de funes que devem ser executados para este tipo de processamento.
BDC_OPEN_GROUP
Esta funo abre a sesso de BDC e necessita ser chamada antes de qualquer processamento.
BDC_INSERT
Esta funo chamada para cada transao no processamento Batch.
BDC_CLOSE_GROUP
Esta funo deve ser chamada aps todo processamento para que a pasta de processamento Batch seja criada.
Enviando uma tabela BDC para o sistema Batch Input
BDC_OPEN_GROUP
CLIENT Cliente do SAP que ser processada a sesso
GROUP Nome para a pasta de Batch input (no precisa ser nico)
HOLDDATE Suspende o processamento da pasta de Batch input at a data especificada
KEEP Mantem a pasta de Batch Input aps o processamento
USER Nome de usurio que executar o Batch Input.
BDC_INSERT
TCODE Cdigo da transao na qual ser executada a tabela BDC
DYNPROTABNome da tabela interna utilizada para gerar a pasta de Batch
BDC_CLOSE_GROUP
No existem parmetros a serem passados para esta funo
Exemplo:
Enviando uma tabela BDC para o sistema Batch Input
E
x
e
r
c

c
i
o
:

C
a
l
l

T
r
a
n
s
a
c
t
i
o
n

B
a
t
c
h

I
n
p
u
t
Exerccio: Utilizar funo num report
1.Desenvolver um programa em ABAP que envie dados para a transao VA01 atravs de CALL
TRANSACTION ou BATCH INPUT de acordo com o desejado pelo usurio seguindo o seguinte
mapeamento da transao: (Obs: Informar os dados a serem inputados por parameter)
2.Modificar o exerccio anterior para que os dados a serem inputados venham de um arquivo .csv.
SAPMV45A 0101 X
BDC_OKCODE /00
VBAK-AUART ZVPT
VBAK-VKORG B004
VBAK-VTWEG 01
VBAK-SPART 02
SAPMV45A 4001 X
BDC_OKCODE /00
VBKD-BSTKD testeDRP
KUAGV-KUNNR 15
RV45A-KETDAT 29.04.2008
RV45A-KPRGBZ D
VBKD-PRSDT 29.04.2008
VBKD-ZTERM 0001
RV45A-MABNR(01) OMO EM PO
RV45A-KWMENG(01) 10
VBAP-VRKME(01) 001
SAPMV45A 4001 X
BDC_OKCODE =SICH
BAPI
Business Application Programming Interface (BAPI) - Interface de programao standard que permite
acesso externo a processos e dados do SAP.
Como encontrar BAPI para uma transao
Na SE93 informar o cdigo da transao e clicar em Exibir.
Duplo click no campo pacote.
Clicar no boto Exibir lista de objetos conforme figura que segue.
Selecionar a pasta Business Engeneering -> Tps business object.
BAPI
Ir na rvore de mtodos e achar um que atenda o seu objetivo, clicar 2 vezes para na aba ABAP ver o nome da
funo.
BAPI
Como encontrar BAPI opo 2.
Ir na transao BAPI, e pela rvore de navegao encontrar a opo que atenda o objetivo
BAPI
Exerccio: BAPI
1. Criar um programa para exibir detalhes da empresa atravs de BAPI.
(BAPI_COMPANYCODE_GETDETAIL)
2. Desenvolver um programa em ABAP que envie dados para a transao VA01 atravs de BAPI,
conforme exerccio de call transaction efetuado anteriormente.
E
x
e
r
c

c
i
o
:

B
A
P
I
EXIT
Field Exit
USER EXIT
FIND_USER_EXIT_FROM_TRANSACTION.txt
BADI
FIELD SYMBOLS
Quando implantamos uma exit, muitas vezes precisamos ler dados adicionais disponveis no programa principal da SAP
mas no visveis dentro da exit.
Com o uso de field-symbols podemos acessar essas informaes externas. O cdigo abaixo demonstra como faz-lo
numa field-exit do campo BSTNR na transao ME21.
ALV GRID
Macro
Funo p/ Exibir Grid
ALV GRID (ICON)
ALV GRID - Layout
C:\temp\
ALV_SAVE_LAYOUT.txt
Melhores Prticas
Melhores Prticas
Melhores Prticas
Exemplo Tela Inicial
Exemplo Tela Entrada de dados
Exemplo Tela com Table Control
Exemplo de Sub-tela com botes
PAI / PBO
Layout de criao de tela
Tela Inicial
Area de desenvolvimento
Exemplo

Você também pode gostar