Você está na página 1de 45

ABAP/4

R/3 Client/Server
Soluo de plena integrao nos negcios
Uma tecnologia cliente/servidor, de sistema baseado no cliente

1. Hierarquia de 3 nveis:
1.1. Banco de dados central
Um computador central funciona como servidor de bancos de dados .
Armazena servios de atualizaes do R/3.
Responsvel pela performance das atualizaes do banco de dados.
Contm processo que constituem servios de banco de dados.
Armazena todos os dados e os programas de aplicao.
Envia, de forma assncrona, as requisies de alteraes das aplicaes.
Um servidor de banco de dados pode ser ligado a vrios servidores de aplicao.
1.2. Lgica da aplicao
Buffer do banco de dados central.
Um servidor de aplicao pode ser conectado a vrios front-ends.
Programas ABAP/4 rodam no servidor de aplicao.
1.3. Apresentao
Interao do usurio.
Todos os servios de apresentao so processados nas mquinas individuais.
Todas as requisies so executadas por processo especializados e controlados por um
disparador.
Alguns mdulos SAP:
MM (materiais)
SD (vendas)
FI (financeiro)
CO (controladoria)
PP (produo)
RH (recursos humanos),
AM (livros/ativo)

2. Instncia R/3

Pgina 1

27/09/2016

ABAP/4
Sistema Central.
uma unidade administrativa que agrupa os componentes do sistema R/3 que fornecem um
ou mais servios. Esses servios so inicializados ou parados ao mesmo tempo. Todos os
componentes pertencentes a uma instncia so especificados como parmetros de um perfil
de instncia comum.
Cada instncia possui uma prpria rea de buffer SAP.

3. Client
Em termos comercial-tecnico-organizacional, um cliente uma unidade autoarmazenadora no
sistema R/3.
uma parte particular no sistema R/3.

Possui:
1.4. Sua prpria facilidade de customizao
1.5. Seus prprios dados de aplicao
1.6. Seus prprios registros mestres do usurio
O SAP distingue diversos clientes que podem ser distribuidos atravs de, no mnimo, 2
sistemas R/3.

2. Cada cliente possui uma proposta diferente:


2.1. Desenvolvimentos/Testes

INTEGRAO
Usa-se o cliente de desenvolvimento e teste para atividades de customizao e para
desenvolver objetos.
Todos os objetos podem ser alterados em todos os clientes.
2.2. Quality Assurance

CONSOLIDAO
Usa-se para testar a customizao e os programas desenvolvidos.
2.3. Treinamento
Usa-se para treinamentos de usurios.
2.4. Produo

RECIPIENTE

ABAP/4
A- Advanced
B- Business
A- A pplication
P- Programming
Pgina 2

27/09/2016

ABAP/4
4. Classe de Desenvolvimento
Para se criar um programa, deve-se primeiramente especificar uma Classe
Desenvolvimento.
As Classes de Desenvolvimento criadas pelo usurio devem iniciar-se por Z ou Y.

de

Exemplo de um programa simples (relatrio):


Lista cdigo do cliente na tela (todos os registros )
Tables: KNA1.
Select * from kna1
Write:/ kna1-kunnr, kna1-adrnr.
Endselect.

5. Elementos de texto (text elements)


2.5. ttulos e cabealhos
2.6. textos de seleo
2.7. smbolos de texto
report zasr001.

Tabelas---------------------------------------------tables:
Kna1.

Constantes-----------------------------------------constants:
c_ernam like kna1-ernam value ESCALC.

write:
Data (001), sy-datum,
Imprime data do sistema
Hora (002), sy-uzeit.
Imprime hora do sistema
uline.
skip 3.
----------------------------------------------------Incio de processamento
----------------------------------------------------Percorre tabela de clientes
select * from kna1
where ernam= c_ernam.
write: / kna1-kunnr,
N* cliente
kna1-ernam.
Nome do usurio que criou o objeto
endselect.
uline.

Tabela SYST
Fornece diversos campos do sistema
SY-DATUM
data
SY-UZEIT
hora
SY-UNAME
nome do usurio (logado)
SY-SUBRC
cdigo de retorno
SY-REPID
nome do programa
SY-LANGU
linguagem do logon
Pgina 3

27/09/2016

ABAP/4
3. Data Dictionary (Dicionrio de Dados)
uma facilidade central no sistema onde pode-se criar e manter:
Declaraes de dados, tabelas, estruturas e objetos agregados.
um componente ativo e integral do Desenvolvimento ABAP/4.
Qualquer alterao feita no Dicionrio ser efetivada em programas e telas.
Quando alteraes so feitas no Dicionrio de Dados, a ps-gerao automtica garante que o
interpretador est sempre trabalhando com o ltimo dado.

6. Objetos Bsicos de Definio de Dados


3.1. Tabelas
Os campos no so objetos independentes e podem ser tratados como tabelas .
Os campos pressupem a existncia de um data element.
Um data element pressupe a existncia de um domnio.
3.2. Domnios
Descreve os atributos tcnicos dos campos das tabelas (tipo e tamanho do campo).
Objetos centrais usados para descrever os atributos de um objeto de negcios.
3.3. Data element (elementos de dados)
Contm a definio semntica (definio curta).

7. Tabela
Campo da tabela
Usa data element
Usa domnio
3.4. Tabela transparente => os dados so permanentemente armazenados
3.5. Estrutura => os dados so armazenados somente durante a execuo do programa.
3.6. View (viso) => permite reunir informaes de campos de diferentes tabelas e
apresent-los aos usurios na forma que precisarem.
3.7. Matchcode => uma forma de help online (F4) que permite o uso de critrios adicionais
para acessar registros de dados sem o conhecimento da chave.

Tipo
Dado
P

de Significado

Valor
inicial
0

Tamanho
padro
8

Tamanho
permitido
1-16

0
0.000.....

*
*

1
1

1-max
1-max

I
F

Nmero
compactado
Inteiro
flutuante

N
C

numrico
caracter

00.0
brancos

D
T

Data
Hora

00000000 8
000000
6

8
6
Pgina 4

Exemplo

Sada
Alinhamento
-713, direita

57,
2.17
917, -882
25.873
1.213E15
0.556E7
778 87931
AXZ B123
AB-CD
19990219
105743

direita
direita
esquerda
esquerda
esquerda
esquerda
27/09/2016

ABAP/4
X

hexadecimal
X00
1
* depende da mquina mx.: 64Kb

1-max

OFFF

esquerda

Com os campos compactados, 2 dgitos so armazenados em 1 byte.A outra metade


contm o sinal.
Recomendaes de uso de tipos numricos:
I- para valores inteiros (contadores)
P- para problemas comerciais (nmeros decimais, intervalo de valores longos)
F- para problemas matemticos (rea de nmeros extensos, dupla preciso)

LIKE
BC400,4-9
Este parmetro permite que declare-se campos que tenham os mesmos atributos de campos
previamente definidos.
Ajuda a criar programas de forma fcil pois tem-se que alterar os atributos dos dados em um s
lugar.
Pode ser utilizado na definio de tipos com o comando TYPES.
Comandos: clear, move, compute, add, subtract, multiply, divide, unpack

Operaes com strings


Comandos: search, shift, replace, translate, condense, concatenate, split.

Operadores: + - / * DIV MOD


Funes: SQRT, EXP, LOG, SIN, COS,STRLEN, TAN

Subcampos
v_data
v_dia
v_ms
v_ano
v_ano

=
=
=
=
=

19990219.
v_data+06(02).
- Resultado: 19
v_ data+04(02).
- Resultado: 02
v_ data+00(04).
- Resultado: 1999
v_ data (04). - Resultado: 1999

Clculos com datas.


Comando: parameter

Comandos de controle
BC400, 4-18
Case Distinction

Pgina 5

27/09/2016

ABAP/4
If ... Endif
Case ... Endcase
Loops
Do
While

... Enddo
... Endwhile

Outros comandos de controle


Check
Exit

Operadores relacionais
=,
<>,
><,
>,
>=,
=>,
<,
<=,
=<,
between f1 and f2,
is initial

8. Tabelas Internas
Tabelas internas so estruturas de dados importantes no Sistema R/3.
Elas so usadas para armazenar dados requeridos durante a execuo de um programa
3.8. Field Strings
3.9. Tabelas internas COM header line
3.10.
Tabelas internas SEM header line

9. MOVE-CORRESPONDING<f1>TO<f2>

BC400, 6-5
Este comando transporta valores dos campos, campo a campo entre as estruturas de dados f1
e f2.
O sistema procura em f1 todos os campos com nomes que existam em f2 e, em seguida,
internamente gera o seguinte comando para todos esses pares de campos.
MOVE <f1>-<nome do campo> to <f2>-<nome do campo>.
3.11.

Field String
Pgina 6

27/09/2016

ABAP/4
Declara-se field string (campo string) pelo comando DATA
No se utiliza o parmetro OCCURS na declarao de um field string.
Especifica-se o Incio e o fim do field string com:
BEGIN OF <nome do field string> e END OF <nome do field string>.
No possivel armazenar-se registros (mais de uma linha) em um field string.
Para imprimir um campo de uma field string, basta referenci-lo com:
write <nome do field string>-<nome do campo do field string>.
Para imprimir o field string interno:
write <nome do field string>.

Exemplo:
Flight Data
Carrier

Connection

Date

Time

10. Tabela interna (COM header line)


A declarao de uma tabela interna similar a declarao de um field string (campo string).
possivel armazenar-se registros (mais de uma linha) em um field string.
Utilizando-se do parmetro OCCURS, automaticamente indica-se que uma tabela interna est
sendo criada. Depois do parmetro, especifica-se um nmero. Sabendo-se que uma tabela interna
requer, no minimo, 8 KB de memria, especifica-se o nmero de linhas dessa tabela com o
parmetro OCCURS e o sistema aloca somente o montante de memria necessrio.
Se no possivel estimar o tamanho da tabela interna, o valor do parmetro OCCURS pode ser
definido com 0 (zero). Assim, o sistema gera blocos de 8 KB ou 16 KB para acomodar as linhas da
tabela, dependendo de seu tamanho.

Preenchendo tabelas internas (com header line)


3.12.
APPEND
Este comando armazena os contedos da header line no final da tabela interna incluindo,
assim, um registro.
APPEND <tabela interna>.
APPEND <tabela interna> SORTED BY <nome do campo>.
3.13.
COLLECT
Este comando armazena os contedos da header line para a tabela interna como uma nova
entrada ou adiciona-o em uma entrada j existente de mesmo tipo.
Pgina 7

27/09/2016

ABAP/4
Soma todos os campos do tipo P, I e F agrupados por campos de tipo caracter, considerados
portanto como campos-chave.
COLLECT <tabela interna>.
3.14.
Ordenando tabelas internas
SORT <tabela interna> BY <campo1> <campo2> <campon>.
3.15.
Processando tabelas internas (com header line)
LOOP AT <tabela interna>....
ENDLOOP.
Quando uma tabela interna est sendo lida, pelo comando loop, o comando de sistema SYTABIX contm o valor do ndice corrente da entrada (registro) na header line.
LOOP AT <tabela interna> WHERE....ENDLOOP.
Depois de condio WHERE, pode especificar uma expresso lgica.
Se nenhuma entrada (registro) satisfaz a expreso lgica e o loop no processado, o campo
de sistema SY-SUBRC retorna com valor diferente de 0.
3.16.
Lendo entradas (registro) de tabelas internas (com header line)
READ TABLE <tabela interna> WITH KEY.....
Este comando usado para se ler simples entradas da tabela interna.
Depois desse acesso de leitura, a entrada da tabela aparece na header line.
O parmetro KEY deve ser qualificado como um argumento de procura.
O sistema compara o nicio de cada entrada da tabela com o argumento de procura, que
usualmente um field string.
Se a tabela interna contm mais de uma linha idntica ao argumento de procura, o comando
retorna a primeira entrada.

READ TABLE <tabela interna> WITH KEY ..........BINARY SEARCH.


Se a tabela interna est ordenada pelo argumento de procura utilizado no parmetro KEY,
pode-se utilizar o adicional ... BINARY SEARCH, que processa uma busca binria e mais
eficiente.
READ TABLE < tabela interna> INDEX <nmero do ndice>.
Este comando l a e-nsima entrada da tabela interna.
3.17.

Alterando tabelas internas (com header line)

Utiliza-se INDEX para apontar ao nmero do ndice (registro) a ser alterado. Se no foi citado,
o sistema altera o ndice corrente da tabela interna; muito usado dentro de loop.
INSERT <tabela interna > INDEX <ndice>.
Sobrescreve a entrada <ndice> da tabela com os contedos da header line. A entrada
<ndice> j deve existir.
MODIFY <tabela interna> INDEX <ndice>.
Utiliza os contedos da header line para gerar uma nova entrada na tabela antes da entrada
<ndice>.
DELETE <tabela interna> INDEX < ndice>.
Deleta a entrada <ndice> da tabela.
DELETE <tabela interna> WHERE <condio>.
DELETE <tabela interna> FROM <ndice1> TO <ndice2>.
3.18.

Deletando tabelas internas (com header line)

CLEAR <tabela interna>.


Inicializa header line.
Pgina 8

27/09/2016

ABAP/4
REFRESH <tabela interna>.
Deleta todas as entradas da tabela interna, mas a header line permanece inalterada.
FREE <tabela interna>. O espao em memria usado pela tabela no inicializada.
Deleta todas as entradas da tabela interna, mas a header line permanece inalterada. O espao
em memria usado pela tabela inicializado.
3.19.
Informaes sobre tabelas internas
DESCRIBE TABLE <tabelas internas>...
O parmetro LINES retorna o nmero de entradas existentes na tabela interna.
Exemplo:
Carrier

Connection

Date

Time

11. Tabela interna (SEM header line)


Tabelas internas sem header line consiste em um nmero de entradas de tabela de estrutura de
acordo com o tipo <type> definido no programa.
Utiliza-se aqui o conceito de work area (rea de trabalho).
Pode-se usar o parmetro OCCURS para determinar quantas entradas tem a tabela inicialmente,
mas esse valor pode ser incrementado se necessrio (com a exceo APPEND... SORTED BY....).
Pode-se tambm utilizar a adio LIKE...OCCURS.. para declarar tabelas internas sem header
line.
Se for desejavel uma tabela interna com header line, basta adicionar ...WITH HEADER LINE.
DATA: <campo> TYPE <tipo definido> OCCURS<n>.
Este comando cria uma tabela interna sem um header line onde a estrutura consiste em um s
campo.
<tabela interna2> = <tabela interna1>
Enderea o corpo (estrutura) da tabela <tabela interna1>para<tabela interna2>.
3.20.
Preenchendo tabelas internas (sem header line)
APPEND <wa> TO <tabela interna>.
Os comandos APPEND e COLLECT possuem o mesmo efeito sobre tabelas internas sem
header line que sobre tabelas internas com header line.
3.21.
Lendo tabelas internas (sem header line)
READ TABLE <tabela interna> INTO <wa> WITH KEY..
O sistema carrega a entrada encontrada na work area.
LOOP AT <tabela interna> INTO <wa>...ENDLOOP.
CLEAR
Quando se est processando tabelas internas COM header line, todos os campo da
header line so inicializados com seus valores iniciais de acordo com seus tipos.
Quando se est processando tabelas internas SEM header line, o sistema deleta a
tabela interna, similar ao comando REFRESH.

Pgina 9

27/09/2016

ABAP/4
3.22.
Estruturas complexas
Usando-se tabelas internas sem header line, possivel construir tabelas internas multidimensionais, ou seja, uma tabela interna dentro de outras tabelas internas.
Parte de uma tabela interna construda com componentes de outra tabela interna.
Exemplo: dentro de cada registro, h uma tabela de 5 registros.
Exemplo:
Flight Data
Carrier

Connection

Date

Time

INCLUDE STRUCTURE <nome da tabela SAP>


Permite usar a estrutura de uma tabela do dicionrio ABAP/4 como base para uma tabela
interna ou field string.

12. SELECTION SCREEN

BC400, 7-3
Pode-se gerar uma tela de seleo para um programa onde o usurio entre com suas selees.
O resultado exibe uma lista com dados que correspondam aos valores selecionados.
SELECT-OPTIONS <nome da seleo> FOR <nome do campo>.
SELECT-OPTIONS SCARR FOR SPFLI-CARRID DEFAULT DLTO LH.
Para a seleo de intervalos de valores.
O <nome da seleo> no pode Ter mais de 8 caracteres.
Automaticamente o sistema cria uma tabela interna com estrutura padro:

SIGN

OPTION

I
E

EQ
NE
LT
GT
LE
GE
BT
NB
CP
NP

LOW

HIGH

Cada linha dessa tabela gerada formula uma condio com um operador de comparao
I
EQ
LE
GE

inclui
equal
less than or equal
greater than or equal

E
NE
LT
GT
Pgina 10

exclui
not equal
less than
greater than
27/09/2016

ABAP/4
BT
between
NB
intervalos)
Pode-se selecionar uma linha de texto para cada critrio de seleo.

not between (somente para

PARAMETERS <campo>.
PARAMETERS: CITY_FR LIKE SPFLI-CITYFROM.
Com este comando, posde-se especificar somente valores simples e no intervalos,
como ocorre com o select-options.

13. ABAP/4 Open SQL

BC400, 8-1
Uso de SELECT, MODIFY, UPDATE, DELETE E INSERT.
Acesso nico (singular).
SELECT SINGLE * FROM <tabela> WHERE ... AND ...
Processamento de loop SEM restrio
SELECT * FROM <tabela>.
ENDSELECT.
Leitura de colunas simples
SELECT <campo1><campo2> ... INTO (<f1>,<f2>,...) FROM WHERE ...
ENDSELECT.
Leitura de colunas simples (com funes agregadas)
SELECT MAX(campo1) MIN(campo2) COUNT(*) FROM ... INTO (...,...,...)
WHERE ...
Outras funes: MAX, MIN, COUNT(*), AVG, SUM, DISTINCT
Leitura de dados componente a componente
SELECT ... INTO CORRESPONDING FIELDS OF <work area>.
SELECT ... INTO CORRESPONDING FIELDS OF TABLE<tabela interna>.
SELECT ... APPENDING CORRESPONDING FIELDS OF TABLE<tabela interna>.
SELECT * FROM <tabela> INTO CORRESPONDING FIELDS OF TABLE <tab.int.>
Leitura com intervalo
SELECT * FROM <tabela> WHERE <campo da tabela> BETWEEN <f1> and <f2>.
ENDSELECT.
Leitura com template
SELECT * FROM <tabela> WHERE <campo da tabela> LIKE ...
ENDSELECT.
Leitura com lista
SELECT * FROM <tabela> WHERE <campo da tabela> IN (... , ...).
ENDSELECT.
SELECT * FROM SFLIGHT WHERE PRICE IN (123,1000).
ENDSELECT.
Leitura com operador IN (select-options / ranges)

Pgina 11

27/09/2016

ABAP/4
SELECT * FROM <tabela> WHERE <campo da tabela> IN <tabela interna>.
ENDSELECT.

Adicionais do SELECT: ... ORDER BY ...


SELECT * FROM <nome da tabela> ORDER BY <campo 1> <campo 2> ...
ENDSELECT.
SELECT * FROM <nome da tabela> ORDER BY PRIMARY KEY.
ENDSELECT.
Pode-se definir a sequncia da ordenao com os adicionais:
ASCENDING (padro) ou DESCENDING
Adicionais do SELECT: ...GROUP BY ...
SELECT <a1> <a2> ... INTO <f1>,<f2>, ... FROM <nome da tabela> GROUP BY ...
ENDSELECT.
SELECT CARRID MIN(PRICE) Max(PRICE)
INTO (V_CARRID, V_MINIMO, V_MAXIMO)
FROM SFLIGHT
GROUP BY CARRID.
ENDSELECT.
Esse exemplo agrupa as entradas (registros)pelos contedos do campo CARRID e usa funes de
agregao.
Adicionais do SELECT: ... BY PASSING BUFFER ...
Para se deixar as vezes de acesso o menor possvel, muitos dados no sistema R/3 so
armazenados em buffers nos servidores de aplicao, to bem quanto no banco de dados.
Como os buffers dessas tabelas devem ser atualizados em intervalos regulares, os dados alguma
vezes no casam com os dados do servidor de banco de dados.
Assim, para se ter certeza da leitura de dados no banco de dados, e no dos dados do buffer do
servidor de aplicao, deve-se usar esse adicional.
SELECT * FROM <nome da tabela> BY PASSING BUFFER.
ENDSELECT.

Pgina 12

27/09/2016

ABAP/4

14. Checagens de autorizaes


BC400, 9-1
Comando: AUTHORITY-CHECK OBJECT...

Modularizao
3.23.

Vantagens :

Evitar redundncias
Tornar os programas fceis de se ler e melhorar sua estrutura
Reutilizar componentes de programas
3.24.

Tcnicas :

Subrotinas internas
Exemplos:
Perform <nome da rotina> using a1 a2 e a3.
Form <nome da rotina> using a1 type p a2 type i a3 type c.
Perform <nome da rotina> using tabela_interna .
Form <nome da rotina> using <corpo_tabela like tabela_interna.
Perform <nome da rotina> tables tabela_interna.
Form <nome da rotina> tables tabela_interna2
Structure tabela_interna.

Subrotinas externas
Exemplos:
Perform <nome da rotina>(<nome do programa>) using ... .
Perform calculate_loss(RSAAA10B).
REPORT RSAAA10B
Form calculate_loss.

Mdulos de funo
Exemplos:
Call function <nome da funo>.
EXPORTING
IMPORT
CHANGING
TABLES
EXCEPTIONS

Pgina 13

27/09/2016

ABAP/4

15. Relatrios

BC400, 11-1
3.25.
Query
Utilizado para gerar relatrios por usurios sem conhecimento de programao.
3.26.
Report
Utilizado para gerar relatrios por usurios com conhecimento de programao.
possvel criar listas secundrias ou janelas, alm das listas bsicas, para fornecer
informaes adicionais ao usurio.
3.27.
Eventos
INITIALIZATION.
AT SELECTION-SCREEN OUTPUT.
AT SELECTION-SCREEN
START-OF-SELECTION.
GET....
END-OF-SELECTION.

Eventos usados na criao de listas


TOP-OF-PAGE.
END-OF-PAGE.

Eventos usados em relatrios interativos


AT LINE-SELECTION.
Executa no duplo clique do usurio.
AT PFxx.
Executa no clicar dos PFs do usurio.
AT USER-COMMAND.
Executa no clicar dos botes.
TOP-OF-PAGE DURING LINE-SELECTION.
Executa durante a carga da lista secundria.
Interao com relatrios
Listas secundrias
Janelas
Chamando uma transao
Chamando um relatrio

Pgina 14

27/09/2016

ABAP/4
16. HIDE <campo>.
Por default, os dados da lista bsica no so disponveis quando se est na lista secundria.
Este comando permite armazenar os contedos dos campos de uma linha
De uma determinada lista para uma rea especial. Para cada tempo, o sistema armazena o
nome do campo e o seu valor.
Esta comando deve imediatamente seguir o comando WRITE desde que a informao seja
guardada para cada linha de sada. Pode-se tambm armazenar campos que no apaream
na lista.
Os contedos da linha selecionada so tambm armazenadas no campo de sistema
SY_LISEL.

17. Introduo a Dialog Programming (transao)


BC400, 12-1
1. Desenvolvimento de layout de telas
2. Campos de telas
3. Programas (lgica de fluxo com suas chamadas de mdulos)
4. Menus.

18. Workbench Organizer

No incio de desenvolvimento do projeto, o lder do projeto cria uma change request e, a cada
membro do time do projeto destinado uma task que liberada quando o trabalho no objeto
concludo.
Quando um projeto est sendo concludo, o lder do projeto libera as change requests e
dispara processo de exportao. Importaes so executadas em nvel de sistema operacional
pelo administrador da rede.
Um objeto original no sistema em que ele foi criado. Quando se faz alteraes em objetos
do cliente, deve-se sempre alterar o original. O sistema SAP libera todos os objetos como
cpias. No se deve fazer alteraes nos objetos SAP (modificaes), visto que eles
podem ser modificados em uma atualizao de upgrade.

19. Princpios de desenvolvimento de software


Classes de desenvolvimento
Change request (requisies de alteraes) e tasks (tarefas)
Originais

20. Criao de um objeto SAP

Criar o objeto (programa, tabela, viso, funo, text element, etc...)


Atribuir o objeto a uma classe de desenvolvimento
Atribuir o objeto a uma change request
Atribuio automtica a uma task

Pgina 15

27/09/2016

ABAP/4
21. Nveis de alterao
H quatro maneiras de se alterar ou ajustar o sistema SAP para satisfazer os requerimentos
do cliente:
3.28.
Customizing
Customizao dos parmetros de sistema atravs de uma interface de usurio
especial; as possveis alteraes so preparadas e organizadas. A customizao
requerida durante a implementao do sistema.
3.29.

Modification
Alterao dos objetos SAP Repository no formulrio das alteraes de
customizao; quando alteraes SAP ocorrem, a verso customizada e a nova
verso SAP devem ser reconciliadas manualmente.

3.30.

Enhancement concept
Alterao dos objetos SAP Repository pelo customizador sem modificao.
Opes: program exit, menu exit, screen exit e field exit

3.31.

Custom development
Criao de objetos customizados com intervalo de nome customizador.

22. Runtime analysis


BC400, 14-1
A anlise de tempo de execuo permite analisar a performance de algumas transaes ou
programas criados.

Utilizando-se o comando GET RUN TIME FIELD <f>, pode medir o tempo consumido pela
CPU por uma determinada sequncia de comandos. Deve-se alterar o cdigo do
programa, inserindo-se esse comando como requerido.
Utilizando-se a funo SQL TRACE, pode-se guardar e analisar as operaes de banco de
dados para um usurio individualmente, ou para um sistema inteiro.

23. Funes de uma change request


BC400, 13-7
Em uma change request, determina-se quais desenvolvedores trabalharo em um projeto. Os
membros do projeto so autorizados para acessar todos os objetos da change request e
disponibiliza os membros do projeto para trabalhar em time.
Facilita:

Trabalho em equipe
Manuteno de verses
Documentao

Pgina 16

27/09/2016

ABAP/4
24. ABAP/4 Development Workbench Dialog Programming
BC410
O R/3 abrange aproximadamente 90% das necessidades da empresa, o restante resolvido
pelo ABAP/4.
Geralmente, o primeiro mdulo implantado na empresa o financeiro.

25. Estrutura Bsica de programas dentro do ABAP


3.32.

Batch input
XXX => SAP
Carrega dados de outros sistemas para dentro do SAP. So as converses de
inicio de projeto ou as cargas de dados frequentes.

3.33.

Interface
SAP => XXX
Lana dados para fora do SAP, para atualizar sistemas externos, etc...

3.34.

Relatrio
Representa as listagens de dados SAP e semi-linear, pois possui eventos.

3.35.

Transao
Uma transao possui o cdigo de programao, telas com botes, textos,
entradas, molduras, etc...

3.36.

Sapscript
Representa os formulrios no SAP como, por exemplo, a nota fiscal

3.37.

Enhancement (extenses SAP)


o conjunto de melhorias que se consegue programar dentro dos programas
standard do SAP, incluindo campos, telas, menus, programas.

26. Principais componentes de um programa de dilogo


BC410, 1-3
*

Ambiente de desenvolvimento (ABAP/4 Development Workbench)

3.38.
3.39.
3.40.
3.41.

ABAP/4 Dictionary tabelas, campos, text elements, domnios


Screen Painter telas
ABAP/4 cdigos de programao com a lgica de processamento
Menu Painter menus

Ambiente de execuo

3.42.
3.43.

Dialog Processor controla o fluxo lgico do programa : PBO e PAI


ABAP/4 Processor processa o cdigo ABAP/4

27. Overview do Screen Painter


BC410, 1-4

Pgina 17

27/09/2016

ABAP/4
*

Definio de tela de uma transao

3.44.
3.45.
3.46.
3.47.

Definir os atributos bsicos da tela (screen attributes)


Definir o layout da tela (fullscreen editor tela completa)
Definir os atributos dos campos da tela (field list)
Codificar o fluxo lgico da tela (PBO e PAI)

28. Fluxo lgico de transao


BC410, 1-5
O fluxo lgico de uma transao possui 2 eventos em cada tela
O sistema processa os mdulos em um evento sequencialmente.
Em cada mdulo, o controle passa do processador de dilogo para o processador ABAP/4.
Depois do processamento, o controle retorna ao processador de dilogo.
3.48.
PBO Process Before Output
Processamento antes da exibio da tela, como carga ou inicializao de campos das tabelas.
Quando todos os mdulos PBO so processados, os contedos dos campos na rea de
trabalho do ABAP/4 so copiados para os campos de nomes idnticos na rea de trabalho da
tela.
3.49.
PAI Process After Input
Processamento depois da exibio da tela, como consistencias de campos entrados pelo
usurio.
Ocorre quando o usurio pressiona alguma tecla.
H tipos de mensagem de erro como:
E(erro)
W(aviso)
I(informao)
S(sucesso).
Antes do mdulo PAI ser processado, os contedos dos campos na rea de trabalho da tela
so copiados para os campos de nomes idnticos na rea de trabalho do ABAP/4.

Exemplo de controle de fluxo lgico de uma tela de transao:


O controle do fluxo contm seus comandos MODULE
PROCESS BEFORE OUTPUT.
MODULE INICIALIZA_CAMPOS_TELA.
PROCESS AFTER INPUT
MODULE TRATA_CAMPOS_ENTRADOS

29. Consistncias de campo de tela


Processa-se um mdulo para cada campo entrado pelo usurio, sendo que depois processa-se
um mdulo para todos os campos (<mdulo 3>).
PROCESS AFTER INPUT.

Pgina 18

27/09/2016

ABAP/4
FIELD <campo 1 da tela>
FIELD <campo 2 da tela>
FIELD <campo 3 da tela>
FIELD <campo n da tela>

MODULE
MODULE
MODULE
MODULE

<mdulo
<mdulo
<mdulo
<mdulo

1>.
2>.
3>.
n>.

Se a checagem retornar erro, abre para edio do campo com erro.


PROCESS AFTER INPUT.
FIELD <campo 1 da tela>
FIELD <campo 2 da tela>
FIELD <campo 3 da tela>
FIELD <campo n da tela>

MODULE
MODULE
MODULE
MODULE

<mdulo
<mdulo
<mdulo
<mdulo

1>.
1>.
1>.
1>.

Se a checagem retornar erro, abre edio de todos os campos relacionados.


PROCESS AFTER INPUT.
CHAIN.
FIELD: <campo 1 da tela>
<campo 2 da tela>
<campo 3 da tela>
<campo n da tela>
MODULE <modulo n>.
ENDCHAIN.

30. Mensagens de erro


MESSAGE
Se o usurio entrar com dados inconsistentes ou selecionar valores sem a devida autorizao,
exibe-se uma mensagem com esse comando.
As mensagens de dilogo so armazenadas na tabela T100 e so classificadas por linguagem,
2 caracteres para o ID e 3 caracteres para o nome.

Pgina 19

27/09/2016

ABAP/4
6 tipos de mensagens
3.50.

A Abend

Transao terminada.
Exibida na mesma tela onde, depois do ENTER, o processamento
corrente finalizado e retornado a tela inicial.
3.51.

X Exit

Transao terminada com short dump.


3.52.

E Error
Erro.
Correo requerida, obrigatria.
Exibida na mesma tela onde, depois do ENTER, o processamento obriga o usurio
a reentrar os dados

3.53.

W Warning
Aviso.
Correo possvel.
Exibida na mesma tela onde, depois do ENTER, o processamento continua.

3.54.

I Information.
Informao.
Pressionar ENTER para continuar.
Exibida na mesma tela onde, depois do ENTER, o processamento continua de
onde foi interrompido.

3.55.

S Success
Sucesso, exibida na prxima tela.
Pode-se enviar valores para a memria do SAP, que podem ser carregados em
outro programa ou em outra tela de transao:
BC410,2-17
SET PARAMETER ID <pid> FIELD <campo>.
GET PARAMETER ID <pid> FIELD <campo>.
No atributo do campo, h o parameter id <pid> correspondente (dentro da data
element no Dicionrio de Dados) que dever ser utilizado.

31. Para se mudar a sequncia de telas de uma transao dinamicamente


3.56.

SET SCREEN <nnn>.


Chama a tela desejada e depois segue a sequncia desta tela.
Sobreescreve a prxima tela temporariamente, segue a sequncia de telas da tela
chamada e no volta para a tela que chamou.
Na sada da ltima tela da sequncia, deve ter o comando <set screen 0>.

3.57.

CALL SCREEN <nnn>.


Chama a tela, segue a sequencia de telas da tela chamada e volta ao ponto de
chamada.
A prxima tela somente processada depois da tela corrente, a menos que se
finalize seu processamento com o comando adicional <leave screen> ou
simplesmente <leave to screen nnn>.
Pgina 20

27/09/2016

ABAP/4
Na sada da ltima tela da sequncia, deve ter o comando <set screen 0>.
3.58.

LEAVE TO SCREEN <nnn>.


Sai da tela corrente e vai diretamente para a prxima tela.

3.59.

LEAVE SCREEN.
Sai da tela corrente sem terminar o processamento e carrega a prxima tela
definida.

3.60.

SET SCREEN 0.
LEAVE SCREEN.
LEAVE TO SCREEN 0.
Volta ao ponto de chamada onde o processamento da tela que chamou continua.
Se o processamento no se encontra em um modo de chamada, o programa
termina e retorna ao ponto onde esse programa foi chamado.

3.61.

CALL SCREEN <nnn> STARTING AT <nn> <nn> ENDING AT <nn> <nn>.


Especifica-se a posio e o tamanho da tela chamada.

32. Dialog step


BC410,3-5
Uma transao consiste de Dialogs Steps.
Inicia-se quando o usurio pressiona ENTER, ativa uma funo atravs de chave de funo,
d um duplo clique ou escolhe uma funo do menu.
Finaliza-se quando a prxima tela exibida.
Depois de cada dialog step, o sistema R/3 automaticamente passa um commit no BANCO DE
DADOS do sistema, quando requerido pelos comandos insert update, delete.

Os componentes mais importantes so encontrados nos seguintes objetos:


3.62.
3.63.
3.64.
3.65.

Dados globais e estruturas do Dicionrio de Dados no programa TOP


INCLUDE (declarao de dados)
Mdulo PBO (Process Before Output)
Mdulo PAI (Process After Input)
Subrotinas (se requeridas)

Pgina 21

27/09/2016

ABAP/4
Na execuo de uma transao, s possvel entrar com os campos nas suas caractersticas
definidas, respeitado tipo e tamanho.

33. Overview de Menu Painter


Menu de uma transao no SAP

Title Bar
Ttulo da janela

Menu Bar
Barra de menu, com as opes e seus subnveis.

Standard Toolbar
Barra de Ferramentas Padro, com botes criados pelo desenvolvedor.

Pelo cdigo do programa, carrega-se o menu criado pelos comandos :


SET TITLEBAR <cdigo>.
SET PF-STATUS <status>.
O desenvolvedor deve atribuir uma funo para cada boto criado na tela.
Quando o usurio pressiona o boto, sua funo correspondente armazenada em uma
varivel, denominada OK_CODE_FIELD que, via cdigo, determina a lgica a ser seguida no
evento PAI.
Pgina 22

27/09/2016

ABAP/4
Na criao de uma tela de transao, automaticamente, o SAP cria um campo tipo OK. O
desenvolvedor define o nome, recomendado OK_CODE, e verifica as entradas do usurio.
Ver comandos :
COMMIT WORK, ROLLBACK WORK
Conceito de Lock nos objetos
Alterao dinmica de tela
Table Control

(BC410, 3-14)
(BC410,4-1).
(BC410,5-1).
(BC410,6-1).

34. Linking Program Components


Para chamar um programa (exemplo : relatrio)
Submit <nome do programa>
Para chamar uma transao
CALL TRANSACTION xxxx.
Para passar parametros
SET PARAMETER ID COM FIELD SBOOK-CONNID.
- SAP MEMORY
EXPORT ... TO MEMORY ID ABCD
- ABAP/4 MEMORY
SET CURSOR FIELD SEL_FIELD LINE SEL_LINE.
GET CURSOR LINE SEL_LINE FIELD SEL_FIELD.
SUPRESS DIALOG.

35. Funes de Help automtico e programas


BC410,8-1
Pressionando-se F1 em um campo texto, sua documentao exibida.
Pressionando-se F4 em um campo de entrada, os possveis valores so exibidos.
Para tornar essa funcionalidade disponvel, necessrio referenciar os campos do Dicionrio
de Dados, ou programando-se usando os eventos especiais da tela:
Pgina 23

27/09/2016

ABAP/4
PROCESS ON HELP-REQUEST.
PROCESS ON VALUE-REQUEST.
Cria-se uma help view ou um matchcode.

36. Matchcode
BC410-8-8
um critrio de procura que pode acessar registros de uma tabela SAP sem o conhecimento
de sua chave.

Pode ser restrito por condies especiais


Pode ser formado por diversas tabelas.
So exibidos como entrada de ajuda no sistema R/4 (quando pressiona-se F4).

37. BC420 ABAP/4 Development Workbench Interface Programming 2


SAP tem definido altos padres de qualidade em software de negcios.
R/3 combina tecnologia com funcionalidade administrativa de negcio para fornecer uma
soluo de negcios de integrao para a empresa.
3.66.

Arquivos Sequenciais
So arquivos externos gerados por outro sistema qualquer e que so carregados
ao SAP.
Devem ser visveis no servidor de aplicao.

3.67.

Arquivos Locais
Arquivos que esto no servidor de apresentao (estaes de trabalho) no podem
ser processados por esses comandos, e so denominados arquivos locais.

3.68.

Processamento de um arquivo sequencial

Abrir arquivo

Processar arquivo

Fechar arquivo

38. Abrindo um arquivo sequencial

Pgina 24

27/09/2016

ABAP/4
OPEN DATASET <NOME DO ARQUIVO>.
... FOR OUTPUT
... FOR INPUT
... FOR APPENDING
... IN BINARY MODE
Os dados so interpretados pelas operaes de leitura e gravao <read dataset>
e <transfer>.
As reas de dados especificados por essas palavras-chave entram e saem
diretamente.
No precisa especificar <for input> explicitamente, ou seja, se no definir
especificaes adicionais, o arquivo aberto no modo binrio.
... IN

TEXT MODE
O sistema assume que o arquivo possui uma estrutura de linha.
Cada vez que os comandos <read dataset> e <transfer> so executados, uma
linha entra/sai e os dados so sempre processados na seleo do final da linha.
Se a rea de dados muito grande para a linha que est sendo lida, a rea
remanescente preenchida com brancos.
Se a rea de dados muito pequena, o final da linha perdido.

Abrindo um arquivo sequencial (AT POSITION)


OPEN DATASET <nome do arquivo>
....AT POSITION <posio>
....MESSAGE <campo>
Com essa adio ao comando, pode-se especificar a posio do arquivo (em bytes) do
incio do seu incio.A prxima operao de leitura ou gravao se posicionar nesse ponto.
Se algum erro ocorre durante a abertura do arquivo, a operao associada do sistema fica
armazenada no campo <field>.
Transferindo registros de dados
TRANSFER <campo> TO <nome do arquivo>
Este comando transfere um registro de dados para um arquivo sequencial.
Antes desse comando, deve-se definir um registro de dados em um campo ou
estrutura.
A execuo depende do modo:
Modo binario grava o tamanho do campo ou estrutura
Modo texto -grava uma linha
O parmetro adicional ... LENGTH <estrutura> permite especificar um tamanho em bytes
(no formato TRANSFER <estrutura> LENGTH <tamanho>. Neste caso, o nmero exato de
caracteres especificando em <tamanho> transferido. Se a estrutura for menor, o registro
preenchido (com brancos em modo texto e com zero hexadecimais com modo binrio).
Se a estrutura for maior, o registro fica truncado.
Lendo registros de dados
READ DATASET <nome do arquivo> INTO <nome do campo>.
Este comando l um registro de um arquivo sequencial para um campo ou
estrutura.
A execuo depende do modo:
Modo binrio - l o tamanho da estrutura
Modo texto
- l uma linha.
Se o final do arquivo sequencial for atingido, o campo de sistema SY-SUBRC
assume valor 4. Seno, assume 0. Se o arquivo no pode ser aberto, assume 8.

Pgina 25

27/09/2016

ABAP/4
O parmetro adicional....LENGTH <estrutura> permite especificar um tamanho em
bytes (no formato READ DATASET < estrutura> LENGTH <tamanho>. Neste caso,
o nmero exato de especificados em <tamanho> transferido. Se a estrutura for
menor, o registro preenchido (com brancos em modo texto e com zeros
hexadecimais em modo binrio). Se a estrutura for maior, o registro fica truncado.
Fechando / Deletando um arquivo sequencial
CLOSE DATASET <nome do arquivo>.
Fecha um arquivo sequencial explicitamente,
Dentro de um programa, todos os arquivos abertos so implicitamente fechados
cada vez que a tela muda, e depois so reabertos exatamente como estavam e o
processamento continua.
DELETE DATASET <nome do arquivo>.
Deleta um arquivo sequencial explicitamente.
possivel exibir o estado atual do arquivo na depurao do programa escolhendo
no menu a opo:
Goto
System
Systems areas
e entrando (ou selecionando) DATASETS.

39. Batch Input


BC400,2-1
Sistema externo
Arquivo-extenos ao SAP
Os dados externos no so gravados diretamente no banco de dados SAP
3.69.

Overview Tcnica de processamento Batch Input


Dados so transferidos ao sistema SAP usando-se batch input, que uma
procedure automtica.
Para garantir consistncia de dados, os dados a serem transferidos esto sujeitos
s mesmas checagens e atualizaes de quando so entrados interativamente
pelo usurio. Os dados a serem transferidos so temporariamente armazenados
na forma de uma sesso de batch input em um arquivo de fila.
Uma sesso de batch input uma coleo de processos de negcios (transaes).
Um user dialog (dilogo de usurio) simulado em uma procedure de batch input.

3.70.

Overview tcnica de tela


No sistema SAP, processamento dialog e background so controlados por
programas de telas. Um programa de tela controla um dialog step.
Os componentes de um dialog step so:
PBO (proces before output) evento que prepara a tela para sada
Entrada do usurio.
PAI (process after input) evento que processa a entrada de usurio.

3.71.

Processamento Batch Input


Batch Input ou BDC (Batch Data Comunication) uma procedure automtica para
transferncia de dados ao sistema SAP sem um user dialog (dilogo de usurio).

Pgina 26

27/09/2016

ABAP/4
Um user dialog simulado para essa procedure com as mesmas checagens e
atualizaes.
Um componente central dessa procedure um arquivo de fila.
Este arquivo recebe os dados via programa batch input e agrupa dados associados
juntos em sesses.
Para carregar os dados em banco de dados SAP, deve-se processar as sesses
com a funes batch input SM35.

40. Programa Batch Input


Dados so transferidos para o arquivo de fila por programas batch input.
Esses programas realizam as seguintes funes :
Fornecem reas de trabalho estruturadas na forma de uma tabela interna (tabela BDC) para
os dados serem transferidos.
Lem os dados.
Jogam os dados na tabela BDC.
Transferem a tabela preenchida BDC para o arquivo de fila.
A tabela BDC recebe a entrada de dados para transferncia nas transaes.
Um programa batch input pode gerar vrias sesses consecutivas de batch input.
Geraes paralelas no so possveis. Uma transao por vez.
Batch Input uma procedure automtica conveniente para processamento de massa de dados.
usado primeiramente quando se instala o sistema SAP e quando se transfere dados de um
sistema legacy (sistema externo).
Na programao, os dados a serem transferidos j devem existir no formato apropriado para a
tela. E deve-se utilizar no mdulos de funo apropriados para gerar e executar sesso em um
arquivo intermedirio (conhecido como arquivo de fila).
Executa-se as sesses chamando-se a transao SM35 onde os dados so transferidos ao
sistema SAP.
H vrias opes de processamento e administraes disponveis para suporte.
Pode-se processar uma sesso Batch Input em online ou background (SM35).

Pgina 27

27/09/2016

ABAP/4

3.72.

Modelo modularizado de um Batch Input simples

PERFORM CARREGA_DADOS.
form carrega_dados.

endform.
PERFORM PROCESSA_DADOS.
form processa_dados.

endform.
PERFORM ABRE_SESSO.
form abre_sesso.

endform.
PERFORM INSERE_SESSO
form insere_sesso.

endform.
PERFORM LIMPA_BDCDATA.
form limpa_bdcdata.

endform.
PERFORM FECHA_SESSO.
form fecha_sesso.

endform.
PERFORM INSERE_TELAS.
fom insere_telas.

Pgina 28

27/09/2016

ABAP/4

endform.
PERFORM INSERE_TRANSAO.
form insere_transao.

endform.

41. Sumrio de programas Batch Input


Definir estrutura da tabela BDC
Abrir arquivo e sesso
Ler registro
Preencher tabela BDC
Inserir tabela BDC na sesso
Fechar arquivo e sesso

42. Arquivo de fila Batch Input


O arquivo de fila armazena telas individuais e as combina em sesses.
Processa-se essas sesses com a funo batch input SM35. Tal como se executam funes de
aplicao (com transaes de incluso ou alterao) em interface de dilogo, essas enviam os
dados para o arquivo de log.
A funo batch input inicia as funes de aplicao especificadas na sesso correspondente
iniciada por seus cdigos de transao.
Os dados da sesso so assim copiados para as telas pertencentes s transaes especificadas.
No processamento de uma sesso, o modo de atualizao sempre sncrono, ou seja, a prxima
transao chamada somente quando a atualizao da transao precedente foi completada.

Pgina 29

27/09/2016

ABAP/4

43. Sumrio de preparaes do usurio


Executar funo de aplicao
Anotar nomes de programas e nmeros de telas
Anotar nomes de campos de telas
Anotar sequncia de telas e cdigos de funo
Criar layout da tabela BDC
Primeiramente, executa (passo-a-passo) a funo de aplicao a ser simulada.
Anotar :

O nome do programa e o nmero da tela para cada tela.


O nome do campo e o nome da tela para toda posio de entrada ou de cursor.
O nome de cada tecla funo pressionada .
A sequncia de tela do programa.

Usa-se a funo de ajuda do sistema Status e Technical Info (<F1> + <F9>).

44. Campos especiais


BC420,3-10
Para campos de uma Table Control ou de um Step Loop, deve-se especificar o nmero da
linha entre parnteses, como sufixo do nome do campo.
Pode-se tambm posicionar o cursor, usando-se o campo BDC_CURSOR , cujo valor
especifica-se o nome do campo no qual deseja-se que o cursor seja posicionado.
Para saber o nome do campo, entrar na transao, pr o cursor sobre o campo desejado e
teclar <F1> + <F9>.
Para paginar uma tecla, basta ver o cdigo do boto correspondente.
Para acessar um item de menu, executar a transao e, sobre a opo do menu desejada,
teclar <F1> para aparecer o nome do programa e o cdigo da funo .
Cdigo OK campo OK_CODE
<tabela BDC>-FNAM = BDC_OKCODE
<tabela BDC>-FVAL =/ nn.
Campo de Table Control indexado
<tabela BDC>-FNAM = <nome do campo>(nmeros da linha)
Pgina 30

27/09/2016

ABAP/4
<tabela BDC>-<valor do campo>

Set Cursor posicionamento de cursor


<tabela BDC>-FNAM = BDC_CURSOR
<tabela BDC>-FVAL = <nome do campo>(nmero da linha)
3.73.

Direct Input
Transferncia de grande volume de de dados (mais de 10.000
transaes).
Meio de atualizao imediata de dados.
Nenhuma sesso gerada.
Nenhuma janela envolvida.
Dados so importados pelas chamadas de mdulos de funo que
checam os dados e ento os transferem diretamente para as telas de
banco de dados.
Programas so executados somente em background jobs.
Particulamente rpido, visto que o arquivo de fila evitado.Como a
alterativa ao batch input, h programas de aplicao especficas que
usam a tcnica Direct Input.
Quando se transfere grande volumes de dados (mais que 10.000 transaes),
pode-se atingir considerveis melhorias na performace com direct input. Como
<call transaction using>, direct input um meio de atualizao imediata de dados
(nenhuma sesso gerada). Contudo, ao contrrio de <call transaction using> ou
batch input, nenhuma tela envolvida . Em vez disso, os dados so importados
chamando-se mdulos de funo que checam os dados e depois transferem
diretamente as tabelas do banco de dados. Uma vez que direct input oferece um
mecanismo de reincio no caso de um erro, os programas podem somente serem
executados em background jobs. A manuteno e a execuo desse jobs so
feitas pelo programa RBMVSHOW ou transao BMV0.

45. Call Transaction


BDC420,5-1
Ao contrrio de Batch Input, o comando Call Transaction permite passar dados diretamente para a
interface de dilogo (sem utilizar o arquivo de fila de espera).
Para armazenar dados de telas temporiariamente, usar uma tabela interna (uma tabela BDCDATA
que tenha a mesma estrutura como usada com Batch Input).
Portanto, chamar a transao desejada no programa e o sistema copia os dados temporariamente
armazenados na tabela BDCDATA. Pode aceitar somente uma transao por vez.
Em contraste ao Batch Input, no h log de erros e no oferece as mesmas opes de correo e
administrao.

Pgina 31

27/09/2016

ABAP/4
Comando Call Transaction
CALL TRANSACTION
USING
MODE
UPDATE
MESSAGES INTO
Modo de exibio
A
E
N
Modo de atualizao
S
ter terminado.

<cdigo da transao>
<tabela BDCDATA>
<modo de exibio>
<modo de atualizao>
<tabela de mensagens>.

exibe tudo (default)


exibe somente se houver erros.
exibe nada.
Sncrono, no continua o processamento at a atualizao
Mais seguro, mais lento.

(Batch

Input)
A

assncrono, continua processamento imediante (default).


Messagens into <tabela de mensagens>
Permite armazenar qualquer sada de mensagens pela chamada da transao em uma
tabela interna, que deve ter a estrutura BDCMSGCOLL.
Permite exibir mensagens da transao chamada atravs do programa que chamou.
A mensagem de sucesso ou falha de processamento exibida automaticamente.
Para exibir o erro :
IF SY-SUBRC <> 0.
MESSAGE

ID
SY-MSGID
TYPE
SY-MSGTY
NUMBER SY-MSGNO
WITH
SY-MSGV1 SY-MSGV2
SY-MSGV2 SY-MSGV2.

Sumrio
Batch Input

Call Transaction

Cdigo de retorno

No

Sim

Log de erros

Sim

No

Processamento

Indeterminado

Imediatamente

46. Local Files


BDC420,6-1

Pgina 32

27/09/2016

ABAP/4
Processam-se arquivos sequenciais no servidor de apresentao com os comandos READ
DATASET e TRANSFER, que copia de/para um field string.
Processam-se arquivos sequenciais locais no servidor de apresentao com os mdulos de
funes UPLOAD e DOWNLOAD, que copia de/para uma tabela interna.
Os dados so convertidos conforme o tipo do arquivo (file type).
Pode-se, assim, trocar dados entre arquivos locais e arquivos do servidor de aplicao.
WS_ QUERY
Checa a existncia e o tamanho de um arquivo, tal como outras variveis do ambiente.
WS_ EXECUTE
Atravs de um programa ABAP/4, atravs do caminho do diretrio, executa-se qualquer
executvel e retorna a prxima linha do processamento.
46.1.

Processamento background
Se um programa ABAP/4 (um relatrio, por exemplo) tem que processar grande
volume de dados e listas longas e complexas, pode-se execut-lo em background,
incluindo-o em um job atravs da transao SM36.

TRANSAES ABAP/4

Pgina 33

27/09/2016

ABAP/4
SE09
SE11
SE30
SE71
ST22
DB12
CMOD
SPRO
SMEN
SM12
SM35
SM36
SE37
SM39

WORKBENCH ORGANIZER
DATA DICTIONARY
ANLISE DO TEMPO DE EXECUO
SAPSCRIPT
ANLISE DOS LTIMOS DUMPS
BACKUP LOGS
CRIAO DE ENHANCEMENTS
CUSTOMIZAES
MENU DINMICO
OBJETOS LOCKADOS
PASTAS DE BATCH INPUT
DEFINIO DE JOBS
SINTESE DE JOBS
COMPARA EXECUO ENTRE DOIS
PROGRAMAS
EXEMPLOS DE RELATORIOS

LIBS

TRANSAES SAP
ATIVO FIXO
ABUM
ABAV
AS01
AS02
AS03

TRANSFERIR
BAIXAR
CRIAR
MODIFICAR
EXIBIR

MB21
MB22
MB32

CRIAR
MODIFICAR
EXIBIR

RESERVA

CONTAS A RECEBER
FD10
FBL3
F . 30

EXIBIR SALDO DE CLIENTES


EXIBIR PARTIDAS INDIVIDUAIS
ANLISES

Pgina 34

27/09/2016

ABAP/4
OUTRAS
ME9F
MM03

IMPRIMIR PEDIDO
CONSULTAR CADASTRO DE
MATERIAIS
EXIBIR CADASTRO DE
FORNECEDORES
REQUISITAR MATERIAIS /
SERV.
APROVAR RC
CRIAR PEDIDO
CRIAR MATERIAL
APROVAR ORDEM DE
COMPRA
RECEBER MERCADORIAS
ENTRAR COM A FATURA
EXIBIR CENTRO DE CUSTO
CONSULTAR PARTIDAR
INDIVIDUAIS REAL
CONSULTAR PARTIDAS
INDIVIDUAISN
COMPROM.
EXIBIR ORDEM EXTERNA
CONSULTAR VENDAS
RECONTAR INVENTARIO
EXIBIR DOCUMENTO

XK03
ME51
ME55
ME21
MM01
ME28
MB01
MRHR
KS03
KSB1
KSB2
KO03
MICKH
ML11
FB03

TABELAS
DD07
CDPOS
CDHD

VALOR DE DOMNIOS
LTIMAS ALTERAES DE DOCUMEMTO
LTIMAS ALTERAES DE CAB. DOS
DOCUMENTOS

VIEW_KNA1 ENVIA CDIGO E RETORNA UMA TABELA INTERNA COMPLETA

47. Programa modelo de batch input simples


REPORT ZXXXXXX .

Pgina 35

27/09/2016

ABAP/4

Constantes
---------------------------------------------------------------------------------------------------------------CONSTANRES:
C_nome_variaqvel like tabela-campo value xxx .

Tipos
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------TYPES:
BEGIN OF K-estrutura,
Campo1 like
tabelal-campo1,
Descrio do campo
1
Campo2 like
tabelal-campo2,
Descrio do campo 2
...
campon like tabelal-campon.
Descrio do campo n
END OF K-estrutura.

Tabelas internas
globais------------------------------------------------------------------------------------------------DATA:
T_TABINT
TYPE K_estrutura OCCURS O WITH HEADER LINE
Tabela
transporte
T_bdcdata like bdcdata occurs 0 with header line,
Tabela BDCDATA

Parmetros de entrada
-------------------------------------------------------------------------------------------------PARAMETERS:
P_NMPAST LIKE SY-REPID
DEFAULT XXX ,
Nome da
pasta
P_nmarqu like rlgrap-file name default F: \ .
Local do arquivo

-----------------------------------------------------------------------------------------------------------------------------Incio de processamento
-----------------------------------------------------------------------------------------------------------------------------START-OF-SELECTION.
Carrega dados do arquivo sequencial para tabelas internas
PERFORM CARREGA_DADOS.

P rocessa os dados carregados na tabela interna


PERFOM PROCESSA_DADOS.
END-OF-SELECTION.
*&------------------------------------------------------------------------------------------------------------------------------*
*&
Form CARREGA_DADOS
*&------------------------------------------------------------------------------------------------------------------------------*
Carrega dados do arquivo sequencial local para a tabela interna de transportes
*---------------------------------------------------------------------------------------------------------------------------------FORM CARREGA_DADOS .
CAL FUNCTION WS_UPLOAD
EXPORTING
FILENAME
= P_NMARQU Nome do arquivo sequencial
Filetype
= C_FILETYPE Tipo do arquivo

TABLES
Pgina 36

27/09/2016

ABAP/4
DATA_TAB

= T_TABINT Nome da tabela interna de transporte

EXCEPTIONS
CONVERSION ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
GUI_REFUSE_FILETRANSFER = 8
OTHERS = 9.
ENDFORM.

CARGA_DADOS

*&------------------------------------------------------------------------------------------------------------------------------*
*&
Form PROCESSA_DADOS
*&------------------------------------------------------------------------------------------------------------------------------*
Processa os dados carregados na tabela interna
*---------------------------------------------------------------------------------------------------------------------------*
FORM PROCESSA_DADOS.
* Abre sesso de Batch Input
PERFORM ABRE_SESSO.
* Insere sesso de Batch Input
PERFORM INSERE_SESSO .
* Fecha sesso de Batch Input
PERFORM FECHA_SESSO.
ENDFORM.
PROCESSA_DADOS

*&------------------------------------------------------------------------------------------------------------------------------*
*&
Form ABRE_SESSO
*&------------------------------------------------------------------------------------------------------------------------------*
* Abre sesso de batch input
* -------------------------------------------------------------------------------------------------------------------------------*
FORM ABRE_SESSO.
CALL FUNCTION BDC_open_group
EXPORTING
Pgina 37

27/09/2016

ABAP/4
CLIENT
= SY-MANDT
GROUP
= V_GRUPO
KEEP
=X
USER
= SY-UNAME
EXCEPTIONS
CLIENT_INVALID =1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11
ENDFORM.
ABRE_SESSO
*&------------------------------------------------------------------------------------------------------------------------------*
*&
Form INSERE_SESSO
*&------------------------------------------------------------------------------------------------------------------------------*
Insere sesso Batch Input
*--------------------------------------------------------------------------------------------------------------------------------*
FORM INSERE_SESSO.

Limpa tabela interna BDCDATA para inserir nova transao


PERFORM LIMPA_BDCDATA.
Insere telas da transao na tabela BDCDATA
PERFORM INSERE_TALAS.
Insere a tabela BDCDATA montada com os dados das telas
PERFORM INSERE_TRANSAO.

ENDFORM.

INSERE_TRANSAO

*&------------------------------------------------------------------------------------------------------------------------------*
*& Form LIMPA_BDCDATA
*&------------------------------------------------------------------------------------------------------------------------------*
Limpa tabela interna BDCDATA para inserir nova transao
*&------------------------------------------------------------------------------------------------------------------------------*
FORM LIMPA_BDCDATA .
REFRESH T_BDCDATA.
ENDFORM.
LIMPA_BDCDATA
*&------------------------------------------------------------------------------------------------------------------------------*
*&
Form FECHA_SESSO

Pgina 38

27/09/2016

ABAP/4
*&------------------------------------------------------------------------------------------------------------------------------*
Fecha sesso Batch Imput
*--------------------------------------------------------------------------------------------------------------------------------*
FORM FECHA_SESSO.
CALL FUNCTION BDC_CLOSE_GROUP
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.
ENDFORM.
FECHA_SESSO
*&------------------------------------------------------------------------------------------------------------------------------*
*&
Form INSERE_TRANSAO
*&------------------------------------------------------------------------------------------------------------------------------*
Insere uma transao na sesso Batch Input, ou seja,
Insere a tabela BDCDATA montada com os dados das telas
*--------------------------------------------------------------------------------------------------------------------------------*
FORM INSERE_TRANSAO .
CALL FUNCTION BDC_INSERT
EXPORTING
TCODE = C_TCODE
TABLES
DYNPROTAB = T_BDCDATA
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSITIONING_INVALID = 6
OTHERS = 7.
ENDFORM.

INSERE_TRANSAO

*&-------------------------------------------------------------------------------------------------------------------------------*
*&
Form INSERE_TELAS
*&------------------------------------------------------------------------------------------------------------------------------*
Insere telas de transao na tabela BDCDATA
Insere uma transao por vez
*-------------------------------------------------------------------------------------------------------------------------------*
FORM INSERE_TELAS.
PERFORM INSERE_TELA_SAPMV13A_0100.
PERFORM INSERE_TELA_SAPMV14A_0100.
PERFORM INSERE_TELA_SAPMV13A_1960.
ENDFORM.

INSERE_TELAS

*&------------------------------------------------------------------------------------------------------------------------------*

Pgina 39

27/09/2016

ABAP/4
*&
Form INSERE_TELA_SAPMV13A_0100
*&------------------------------------------------------------------------------------------------------------------------------*
Insere tela sapmv13_0100 ( programa saomv13a )
*-------------------------------------------------------------------------------------------------------------------------------*
FORM INSERE_TELA_SAPMV13_0100.
PERFORM INSERE_REGISTRO_BDCDATA USING:
X SAPMV13A
0100
RV13A-KSCHL
T_TABINT-KSCHL, Tipo de condio
BDC_CODE
/17.
Enter
ENDFORM.

INSERE_TELA_SAPMV13A_0100

*&------------------------------------------------------------------------------------------------------------------------------*
*&
Form INSERE_TELA_SAPMV14A_0100
*&------------------------------------------------------------------------------------------------------------------------------*
* Insere tela sapmv14_0100 (programa sapmv14a)
*-------------------------------------------------------------------------------------------------------------------------------*
FORM INSERE_TELA_SAPMV14_0100.
PERFORM INSERE_REGISTRO_BDCDATA USING:
X
SAPLV14A1
0100
RV130-SELKZ (1)
X
Bdc_OKCODE
/0
ENDFORM.

Seleciona linha 1 na tela


Enter

INSERE-TELA_SAPMV14A_0100.

*&------------------------------------------------------------------------------------------------------------------------------*
*&
Form INSERE_TELA_SAPMV13A_1960
*&------------------------------------------------------------------------------------------------------------------------------*
Insere tela sapmv13_1960 (programa sapmv13a)
*-------------------------------------------------------------------------------------------------------------------------------*
FORM INSERE_TELA_SAPMV13A_1960.
DATA:
V_DTATUAL (08) TYPE C.

Data do sistema

Formata a data do sistema para ddmmaaa


V_DTATUAL = SY-DATUM.
PERFORM INSERE_REGISTRO_BDCDATA USING:
X SAPMV13A
1960
Komg-kunnr
v_kunnr
RV13A-DATAB
V_DTATUAL
RB13A-DATBI
C_DTFINAL
KOMG-PRODH5 (1)
T_TABINT-PRODH5
KONP-KBETR (1)
T_TABINT-KBERT
Konp-konwa (1)
c konwa
KONP-KPEIN (1)
C_KPEIN
KONP-KMEIN (1)
T_TABINT-KMEIN
BDC_OKCODE
/11
Pgina 40

Nova tela programa n* tela


N cliente
Data inicial da seleo
Data final da seleo
Produto
Montante
Unidade de condio
Unidade de preo
Unidade de medida
GRAVA
27/09/2016

ABAP/4
ENDFORM.

INSERE _TELA_SAPMV13A_1960

*&------------------------------------------------------------------------------------------------------------------------------*
*& Form INSERE_REGISTRO_BDCDATA
*&------------------------------------------------------------------------------------------------------------------------------*
Insere registro na tabela BDCDATA
*&------------------------------------------------------------------------------------------------------------------------------*
Parmetros recebidos:
v_intela indicador de nova tela ( x ou )
v_nmnome nome do programa ou nome do campo
v_vlvalor nmero da tela ou contudo do campo
*-------------------------------------------------------------------------------------------------------------------------------*
FORM INSERE_REGISTRO_ BDCDATA
USING V_INTELA TYPE C V_NMNOME TYPE C V_VLVALOR TYPE ANY.
* Limpa header line da tabela BDCDATA
CLEAR T_BDCDTA.
CASE V_INTELA.

Se for igual a x uma nova tela na transao

WHEN X.
T_BDCDATA-DYNBEGIN
T_BDCDATA-PROGRAM
programa
T_BDCDATA-DYNPRO

= V_INTELA.
= V_NMNOME.
= V_VLVALOR.

* Se for igual a a mesma tela na transao


when .
T_BDCDATA-DYNBENGIN = V_INTELA.
T_BDCDATA-FNAM = V_NMNOME.
T_BDCDATA-FVAL = V_VLVALOR.
ENDCASE.
* Insere registro na tabela BDCDATA
APPEND T_BDCDATA.
ENDFORM.

Nova tela
Nome da
Nmero da tela

Mesma tela
Nome do campo
Contudo do campo

INSERE_REGISTRO_BDCDATA

***
OUTPUT.

MODULE STATUS_NNNN

PROCESS BEFORE OUTPUT.


***Module status_nnnnn.
Clear spfli
PROCESS AFTER INPUT.

Pgina 41

27/09/2016

ABAP/4
***
USER_COMMAND_NNNN
***Module user_command_nnnn.

MODULE

Select single *
from spfli
where carrid
= spfli-carrid
and connid = spfli-connid.
PERFORM CARREGA_DADOS.
Form carrega_dados.

endform
PERFORM PROCESSA_DADOS.
Form processa_dados.

endform
PERFORM ABRE_SESSO.
Form abre_sesso.

endform

FORM INSERE_SESSO
Form insere_sesso.

endform
PERFORM LIMPA_BDCDATA.
Form limpa_bdcdata.

endform
PERFORM FECHA_SESSO.
Form fecha_sesso.

endform
PERFORM INSERE_TELAS.
Form insere_telas.

endform

Pgina 42

27/09/2016

ABAP/4
PERFORM INSERE_TRANSAO.
Form insere_transao.

endform

Sistema externo
Arquivos externos ao SAP
FILA SESSES Batch Input
Os dados externos no so gravados diretamente no banco de dados SAP
Transao SAP

Banco de Dados SAP

Executa funo de aplicao


Anotar nomes de programa e nmeros de telas
Anotar nomes de campos de telas
Anotar sequncia de telas e cdigos de funo
Criar layout da tabela BDC
Definir estrutura e tabela BDC
Abrir arquivo e sesso
Ler registro
Preencher tabela BDC
Pgina 43

27/09/2016

ABAP/4
Fecha arquivo e sesso

SY-index
Sy-pagno
Sy-tabix
Sy-tfill
Sy-tlopc
Sy-temaxl
Sy-toccu
Sy-ttabc
Sy-tstis
Sy-ttabi
Sy-dbcnt
Sy-fdpos
Sy-colno
Sy-linct
Sy-linno
Sy-linsz
Sy-macol
Sy-marow
Sy-tleng
Sy-sfoff
Sy-willi
Sy-lilli
Sy-subrc
Sy-fleng
Sy-cucol
Sy-curow
Sy-lsind
Sy-listi
Sy-stepl
Sy-tpagi

Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x

4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4

Sy-winy2
Sy-winco
Sy-winro
Sy-windi
Sy-srows
Sy-scols
Sy-loopc
Sy-folen
Sy-fodec
Sy-tzone
Sy-dayst
Sy-ftype
Sy-appli
Sy-fdayw
Sy-ccurs
Sy-ccurt
Sy-debug
Sy-ctype
Sy-input
Sy-langu
Sy-modno
Sy-batch
Sy-binpt
Sy-calld
Sy-dynnr
Sy-dyngr
Sy-newpa
Sy-pri40
Sy-rstrt
Sy-wtitl

Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x
Int4x

4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4

Pgina 44

27/09/2016

ABAP/4
Sy-winx1
Sy-winy1
Sy-winx2

Int4x
Int4x
Int4x

4
4
4

Sy-wtitl
Sy-cpage

Int4x 4
Int4x 4

Pgina 45

27/09/2016

Você também pode gostar