Está en la página 1de 76

BASIS TECHNOLOGY OVERVIEW............................................................................

5
INTEGRAO R/3.............................................................................................................5
BUSINESS FRAMEWORK...................................................................................................6
COMPONENTES DO BUSINESS FRAMEWORK.....................................................................6
R/3 COMO UM SISTEMA ABERTO.......................................................................................6
CLIENT/SERVER ESCALABILIDADE DO SISTEMA R/3.....................................................7
PRINCPIO DO CLIENT/SERVER.........................................................................................8
CONFIGURAES CLIENT/SERVER NUM SISTEMA R/3......................................................8
HIERARQUIA DE TRS CAMADAS......................................................................................9
PLATAFORMAS PARA O SISTEMA R/3..............................................................................10
NAVEGANDO NO R/3....................................................................................................11
LOGON............................................................................................................................11
CONCEITO DE MANDANTE E CLIENT NO SISTEMA R/3..................................................12
ESTRUTURA DO MENU DO R/3.......................................................................................12
ESTRUTURA DE UMA TELA NO SISTEMA R/3..................................................................13
SELECIONANDO FUNES...............................................................................................14
AJUDA DE CAMPO..........................................................................................................14
HELP ON-LINE................................................................................................................16
SYSTEM FUNCTIONS.......................................................................................................16
Services......................................................................................................................16
Utilities......................................................................................................................16
KERNEL DO SISTEMA R/3..........................................................................................18
INTERFACE DE APRESENTAO......................................................................................18
RDBMS RELATIONAL DATABASE MANAGEMENT SYSTEMS......................................18
INTERFACE DE BANCO DE DADOS DO SISTEMA R/3......................................................19
PROCESSANDO REQUISIES DO USURIO.....................................................................20
APPLICATION SERVICES..................................................................................................21
TRANSAES..................................................................................................................21
LUW (LOGICAL UNIT OF WORK)..................................................................................21
REQUISITANDO UM LOCK...............................................................................................21
OBJETO DE LOCK...........................................................................................................22
PROCESSAMENTO EM BACKGROUND.............................................................................22
SERVIOS DE IMPRESSO...............................................................................................23
INSTANCIA R/3...............................................................................................................23
ABAP DICTIONARY......................................................................................................24
OBJETOS DO DICIONRIO................................................................................................24
CONCEPO DUAL LEVEL.............................................................................................24
TABELAS TRANSPARENTES.............................................................................................24
ESTRUTURAS..................................................................................................................25
VIEWS.............................................................................................................................25
SEARCH HELP.................................................................................................................25
ABAP................................................................................................................................26

243773697.doc

1 / 76

CONCEITO.......................................................................................................................26
REPOSITRIO..................................................................................................................26
FERRAMENTAS DO WORKBENCH....................................................................................27
TRANSPORTE DE OBJETOS..............................................................................................27
DESENVOLVENDO UM PROJETO DO WBO......................................................................28
FINALIZANDO UM PROJETO............................................................................................29
CRIANDO CLASSES DE DESENVOLVIMENTO...................................................................30
CRIANDO PROGRAMAS EM ABAP..................................................................................30
Overview....................................................................................................................30
Atributos....................................................................................................................31
Editor.........................................................................................................................32
Declaraes referenciando ao dicionrio.................................................................32
Telas de seleo.........................................................................................................33
Open SQL..................................................................................................................33
Messages...................................................................................................................34
Listas.........................................................................................................................34
Sintaxes......................................................................................................................35
Comentrios..............................................................................................................36
OPEN SQL.......................................................................................................................36
DATABASE INTERFACE....................................................................................................36
OVERVIEW......................................................................................................................37
COMANDO SELECT.......................................................................................................37
Overview....................................................................................................................37
Single Line.................................................................................................................38
Several Lines.............................................................................................................38
Tabela Interna...........................................................................................................39
Operadores da Clausula Where................................................................................39
CONTEXTO DE DADOS...............................................................................................40
DEFININDO OBJETO DE DADOS.......................................................................................40
Tipo de Dados............................................................................................................40
Tipos pr-definidos....................................................................................................40
Objeto de dados elementares.....................................................................................41
Estruturas..................................................................................................................42
Referindo-se ao Dicionrio ABAP............................................................................42
Comando TABLES.....................................................................................................43
Literais e contantes...................................................................................................43
Smbolo de Texto........................................................................................................43
Transferindo Valores.................................................................................................44
Comando MOVE..............................................................................................44
Comando MOVE-CORRESPONDING......................................................44
Regras de Converso.................................................................................................45
Calculando Valores...................................................................................................46
Sub-Campos...............................................................................................................46
Calculando Datas......................................................................................................47

243773697.doc

2 / 76

Expresses Lgicas...................................................................................................47
Estrutura CASE.........................................................................................................48
Loops DO e WHILE..................................................................................................49
Comandos CHECK e EXIT.......................................................................................50
FERRAMENTAS DE TESTE........................................................................................51
DEBUG............................................................................................................................51
Importantes funes do Debug..................................................................................51
Breakpoint.................................................................................................................52
TABELAS INTERNAS...................................................................................................53
DEFINIO......................................................................................................................53
EXPANSES DINMICAS..................................................................................................53
ATRIBUTOS.....................................................................................................................53
Tipos de linhas...........................................................................................................53
Keys...........................................................................................................................53
Tipos de tabelas.........................................................................................................54
WORK AREA...................................................................................................................55
DECLARANDO TABELAS INTERNAS.................................................................................56
PREENCHENDO TABELAS INTERNAS...............................................................................56
TABELAS INTERNAS COM OU SEM HEADER LINE.......................................................57
INTO TABLE E INTO CORRESPONDING FIELDS OF TABLE..............................57
COMANDO SORT...........................................................................................................58
LOOP EM TABELA INTERNA...........................................................................................58
ACESSANDO REGISTRO NA TABELA INTERNA.................................................................59
ALTERANDO REGISTROS COM NDICE.............................................................................60
MODULARIZAO DE PROGRAMAS....................................................................61
ESTRUTURAS DE UM PROGRAMA ABAP........................................................................61
TIPOS DE BLOCOS DE PROCESSAMENTO.........................................................................61
MODULARIZANDO..........................................................................................................61
Eventos em programas executveis...........................................................................61
Subrotinas..................................................................................................................62
Visibilidade dos dados...............................................................................................62
Chamando Subrotinas - Parmetros.........................................................................63
Chamando Subrotinas Estruturas..........................................................................63
Chamando Subrotinas Tabelas Internas.................................................................63
FUNES........................................................................................................................64
Chamando Mdulo de Funes.................................................................................64
Criando grupo de funo..........................................................................................65
Criando um mdulo de funo..................................................................................66
Elementos de um mdulo de funo..........................................................................66
Elementos de um mdulo de funo IMPORT.......................................................67
Elementos de um mdulo de funo EXPORT.......................................................67
Elementos de um mdulo de funo CHANGING..................................................67
Elementos de um mdulo de funo TABLES........................................................67
Elementos de um mdulo de funo EXCEPTIONS..............................................67
243773697.doc

3 / 76

Cdigo do mdulo de funes...................................................................................68


Inserindo funes no programa.................................................................................69
DIALOGS.........................................................................................................................70
LISTAS............................................................................................................................70
Comandos de operao em listas..............................................................................70
Cabealho de Pgina................................................................................................70
Detalhes de lista........................................................................................................71
HIDE Area.................................................................................................................72
Telas de seleo.........................................................................................................73
Search Help...............................................................................................................73
Salvando e chamando Variantes................................................................................73
Usando valores de telas de seleo no comando SELECT.......................................74
Usando o PARAMETERS.....................................................................................74
Usando o SELECT-OPTIONS...............................................................................74
Criando uma GUI Graphic User Interface............................................................75
Barra de Status.......................................................................................................75
TITLES..................................................................................................................77

243773697.doc

4 / 76

Basis Technology Overview


Integrao R/3

O sistema R/3 baseado num modelo que cobre diversas areas da empresa:
o FI
Financial Accounting
o CO
Controlling
o AM Asset Management
o MM Materials Management
o PP
Production Planing and Production Control
o SD
Sales and Distribuition
o QM Quality Management
o PM
Plant Maintenance
o PS
Project Management / Service Management
o HR
Human Resources
o WF
Office Communication / Workflow Functions
o IS
Industry Soluction
Os components do sistema R/3 utilizam a tecnologia UP-TO-THE-MINUTE
com compreensivas funes de negcio. O alto nvel de integrao de processos
permite que todas as funes sejam acessadas diretamente atravs do sistema e
portanto da companhia. Quando se instala o sistema R/3, todos os dados so
integrados usando uma base de dados comum.
Os processos do sistema R/3 no so restritos a um modulo individual. Todos os
dados e funes esto conectados uns aos outros.

243773697.doc

5 / 76

Business Framework

Business Framework um estratgia da SAP para produo de arquitetura de


software.
Ele trabalha com componentes de negcio, que so softwares modulares que
podem ser configurados individualmente.
Isso faz com que a empresa possa implementar novos mdulos sem interromper o
processo que esta ativo.
Exemplos de componentes de negcio so componentes como o FI (Financial
Accounting), LO (Logistics), HR (Human Resources) ou IS (Industry Soluction).
As vantagens do Business Framework incluem a facilidade de alterar e configurar
dinamicamente processos de negcios independente da verso, fcil integrao
com componentes para Internet e Intranet, fcil conexo entre o sistema R/3 e
outros Sistemas, tudo isso sem interromper o negcio em operao

Componentes do Business Framework

Os principais componentes so:


o Business Components (Human Resouces, por exemplo)
o Business Objects (Ordens e Clientes por exemplo)
o BAPI-Interfaces (Criar uma ordem e alterar um cliente, por exemplo)
Os Business Componentes interagem no Business Framework atravs do Business
Application Programming Interfaces (BAPI). A BAPI tambm disponibiliza
funes para aplicaes externas.
Para distribuir informaes de negcios no Business Framework, existe a
tecnologia Application Link Enabling (ALE). O ALE garante a integrao entre os
diversos componentes do negcio.

R/3 como um sistema aberto

O sistema R/3 garante portabilidade entre aplicaes, dados e interfaces do


usurio, utilizando tecnologias como:
o TCP/IP (protocolo de comunicao de redes)
o EDI (Eletronic Data Interchange) Processo que garante acesso aos dados
entre diferentes Sistemas
o OLE (Object Linking and Embedding) Integra aplicativos para PC com
o R/3.
O sistema R/3 tambm disponibiliza outras ferramentas de comunicao para
outros Sistemas:
o RFC (Remote Function Call) utiliza protocolo CPI-C (IBM) para
facilitar a comunicao e processamento de aplicaes e chamadas entre o
R/3, R/2 e outros Sistemas
o ALE (Application Link Enable) circula o processos autnomos e integra
o R/3, R/2 e outros sistemas que esto linkados.

243773697.doc

6 / 76

Client/Server Escalabilidade do sistema R/3


Presentation

Application

Escalabilidade

Database

O sistema R/3 tem uma arquitetura de software modular, que engloba


o princpio a arquitetura Client/Server.
Esse principio permite separar os servidor de banco de dados do
servidor de aplicao.
A escalabilidade permite ainda:
o Instalao de servidores adicionais
o Servidores paralelos
o Distribuir os usurios por servidores dedicados

Princpio do Client/Server

243773697.doc

7 / 76

Na terminologia SAP, um componente de software providencia um servio (viso


de orientao por software). Esse tipo de componente pode consistir de um
processo ou um grupo de processos e ele chamado de Servidor para esse
servio.
Componentes de softwares que usam esse servio so chamados de CLIENT. Ao
mesmo tempo, algums CLIENTS podem ser chamados de servidores para
servicos especficos.

Configuraes Client/Server num sistema R/3

Os principais services num sistema de aplicao de negcios so:


o Presentation Services
o Application Services
o Database Services
Na configurao CENTRAL do sistema R/3, todo processamento de requisies
so executados por um Host. Isso corresponde ao processamento classico do
mainframe.
Na configurao TWO-TIER (duas camadas), o servidor de banco de dados e
aplicaes so um s, e o de apresentao separado (normalmente estaes
Windows). Usado para desenvolvimento de programas.
Na configurao THREE-TIER (trs camadas), o servidor de banco de dados
separado do servidor de aplicao e dos servidores de apresentao.

243773697.doc

8 / 76

Hierarquia de trs camadas

Se for utilizado a distribuio do sistema R/3 de acordo com o princpio de


Client/Server, os componentes do sistema R/3 expande para a hierarquia de trs
camadas:
o O servidor de banco de dados instalado num host central, onde os
processos de banco de dados so executados.
o Vrios servidores de aplicao podem ser conectados ao servidor de banco
de dados.
o Vrios servidores de apresentao so conectados aos servidores de
aplicao. Esses servidores so chamados de frontend (workstation)

243773697.doc

9 / 76

Plataformas para o sistema R/3


HARDWARE

Unix System
Bull
IBM
Digital
SNI
HP
SUN

SISTEMAS
AIX
OPERACIONAIS Reliant
Digital Unix
Unix (SINIX)
HP-UX
Solaris
BANCOS
DE DB2
DADOS
INFORMIX
ORACLE
DIALOG
(SAPGUI)
LINGUAGENS

243773697.doc

Bull/Zenith
Compac
Digital
HP (Intel)
IBM (Intel)

IBM AS/400

IBM S/390

Windows NT

OS/400

OS/390

DB2
DB2
FOR DB2
INFORMIX
AS/400
OS/390
ORACLE
MS SQL
Windows (3.1/95/NT/ME/XP) OSF/Motif,
OS/2 Presentation Manager, Macintoch, Java
ABAP, C, C++, HTML, Java

FOR

10 / 76

Navegando no R/3
Logon

O sistema R/3 um sistema cliente. Com a concepo de cliente voc pode


controlar vria sesses separadas ao mesmo tempo em um mesmo sistema R/3.
Cada sesso s pode acessar dados no cliente que foi selecionado no logon.
Para voc logar no sistema R/3 voc deve ter um usurio criado no client
desejado.
Por razes de segurana, deve ser informado tambm uma senha de acesso.
O sistema R/3 multilingual. A linguagem default EN (Ingls) (exceto se for
configurado para outra linguagem). Use PT para portugus, DE para alemo ou
SP para espanhol, por exemplo.
o Nem todas as linguagens esto disponveis. Isso depende da traduo
selecionada no momento da instalao.

243773697.doc

11 / 76

Conceito de Mandante e Client no sistema R/3

Mandante , normalmente a mquina em que esta instalado o sistema R/3. Num


projeto, podem existir diversos Mandantes. Os mais comuns so os mandantes de
Produo, Qualidade e Produo.
Em cada mandante podem haver mais de um Client. Cada client pode ser utilizado
para uma finalidade diferente, por exemplo, no mandante de desenvolvimento
podemos ter um client para o desenvolvimento, um para teste dos
desenvolvimento e outro para teste de configurao.
Cada client trabalham de forma dependente para configurao, ou seja programas
e customizao (ajuste do sistema R/3 para particularidades da empresa).
O client 000 definido como um standard do SAP e no deve ser alterado.
Podem ser definidos at 997 clients.

Estrutura do Menu do R/3

Quando for feito o logon no sistema R/3, imediatamente ir aparecer o menu


personalizado do usurio (definido atravs da user-name).
No item favoritos aparecem as transaes mais comumente acessadas pelo
usurio. Essas transaes so inseridas MANUAMENTE pelo usurio, atravs da
opo FAVORITOS / INSERIR TRANSAO do menu principal.
No item MENU SAP aparece o menu dos mdulos do sistema R/3.
Todo o menu aparece em forma de rvore, sendo expandido a medida que o
usurio seleciona a opo, sendo que ao aparecer a transao, no tero mais
opes a exibir e sim o aplicativo.
Todo o menu configurado pelo usurio, podendo exibir ou inibir qualquer item.
Essa estrutura de menu chamada de SAP EASY ACCESS.

243773697.doc

12 / 76

Estrutura de uma tela no sistema R/3

Uma tela de aplicativo (transao) do sistema R/3 composta pelos seguintes


elementos:
o Title Bar: Exibe a descrio da tarefa que esta sendo executada no
momento
o Command Field:
Permite ao usurio escolher a tarefa
automticamente sem a necessidade de acionar botes. Existem
commando especiais para serem executados dento do objeto.
o Options: Permite ao usurio alterar a interface do sistema R/3 para uma
configurao pessoal.
o Standard Toolbar: Onde esto localizados os cones de navegao mais
utilizados (back, exit e cancel), cone de salvar, cone de help e cone de
imprimir.
o Application Toolbar: Onde esto localizados os icons de navegao
especficos da transao.
o Status bar: Exibe informaes sobre o status corrente, como hora, data,
transao, client, sesso, etc.

243773697.doc

13 / 76

Option
s
Title Bar
Command
Field

Standard
Toolbar

Applicatio
n Toolbar

Status
bar

Selecionando funes

Voc pode selecionar funes de vrias formas:


o Usando o mouse para selecionar funes diretamente no menu;
o Usando teclas de acesso rpido (Ctrl + char ou ALT + char)
o Entrando com a transao na Command Field
Os comandos mais comuns so:
/N+transao: fecha a transao corrente e abre outra
/O+transao: abre nova sesso com a transao
informada;
/I:
deleta a sesso corrente
/NEX:
fecha todas as sesses sem confirmao
transao:
se estiver no menu do logon, executa a
transao na mesma sesso.

Ajuda de Campo

Ao pressionar a tecla F1 sobre campos, mensagens, menus ou funes ir aparecer


a explicao tcnica sobre o item selecionado.
Informaes tcnicas como nome do campo, tabela, programa e tela, tambm
podem ser exibidas apertando a tecla F9 aps aparecer a tela de explicao
tcnica.
Pode-se ir ao Help selecionando informaes adicionais.

243773697.doc

14 / 76

243773697.doc

15 / 76

Help On-line

O sistema R/3 providencia um detalhado help on-line.


Pode ser acionado de qualquer local no sistema R/3 acionando a opo HELP do
menu horizontal.
A partir da verso 4.0, help foi disponibilizado em verso HTML.

System Functions
Services

Na opo Services do item System Functions voc encontra as seguintes opes:


a. Reporting
Inicia o modo de Reporting
b. Query
Inicia a chamada de Queries
c. Output Controller
Inicia o controle de Spool de impresso
d. Table Display
Inicia a exibio/manuteno de tabelas
e. Batch Input
Gerenciamento de sesses de Batch Input
f. Jobs
Gerenciamento de fila de Jobs
g. Sap Service
Logon no SAP OSS System

Utilities

Na opo Utilities do item System Functions voc encontra as seguintes opes:


a. Depurao Tela
b. Depurao ABAP/4
c. Depurao Sistema
d. Consumo de Recursos
e. Fila automtica Processamento Sncrono

243773697.doc

16 / 76

f. Exibio de Performance
g. Anlise de Tempo de Execuo
i. Executar
ii. Ativar
iii. Desativar
h. Exibir Verificao de Autorizao

243773697.doc

17 / 76

Kernel do Sistema R/3


Interface de Apresentao
Workstation / PC
Presentation

X Terminal

X Terminal

X Terminal

WINDOWS
MANAGER

SAPGUI

SAPGUI

SAPGUI

LAN / WAN NETWORK

SAPGUI

SAP DISPATCHER

Application

A interface de apresentao SAPGUI (GUI Graphical User Interface)


implementa a plataforma especfica de funes de entrada e sada do sistema R/3.
A SAPGUI utilizada por vrias plataformas e proporciona as mesmas funes
em cada. Se voc aprende a utilizar o sistema R/3 em uma plataforma e tem de
utiliza-la em outra, voc o far da mesma forma.
O fluxo de dados entre o nvel de apresentao e o nvel de aplicao no
somente preparar telas, mas compactar informaes usando elementos de controle
e entradas do usurio.

RDBMS Relational Database Management Systems

Sistema de gerenciamento de banco de dados relacionais (RDBMS) so


geralmente utilizados para gerenciar grande quantidades de dados.
Um RDBMS salva os dados e seu relacionamentos entre outros dados numa
tabela bidimensional.
O SQL (Structured Query Language) responsvel pela organizao, acesso e
manipulao dos dados.
Diferentes empresas produzem produtos RDBMS. Esses produtos no so
totalmente compatveis.

Interface de Banco de Dados do Sistema R/3

243773697.doc

18 / 76

APPLICATION SERVER

DATABASE SERVER
DB INTERFACE

ABAP INTERPRETER

SELECT *
FROM ....

LOCAL BUFFER

DATABASE

OPEN SQL
Native SQL
App. data
DB Data

Exec SQL...
Select ...
End Exec.

Native SQL
DB data

Na linguagem de programao ABAP, voc pode usar o SAP OPEN SQL para
acessar os dados no sistema gerenciador de banco de dados.
A interface de banco de dados converte os comandos OPEN SQL para os
comandos de bancos de dados. Por isso qua a aplicao escrita em ABAP
independe do banco de dados usado.
Quando os comandos do OPEN SQL so convertidos, a interface do banco de
dados checa a sintaxe dos comandos e verifica se os dados no esto buferizados,
pois desta forma optimiza o acesso a base de dados.
Os dados acessados mais frequentemente so armazenados no buffer e neste caso
os dados no so acessados na base de dados.

243773697.doc

19 / 76

Processando requisies do usurio


PRESENTATION

SAP
GUI

SAP
GUI

SAP
GUI

SAP
GUI

APPLICATION
DISPATCHER
WORK
PROCESS

WORK
PROCESS

WORK
PROCESS

DATABASE

DB PROCESS

DB

O processo central do nvel de aplicao do sistema R/3 o SAP DISPATCHER


que controla as instncias. Junto com o sistema operacional ele controla os
recursos para as aplicaes do sistema R/3.
A principal funo do dispatcher distribuir abertura para as Work Process,
conectando o nvel de apresentao e organizando a comunicao.
Entradas de dados em tela feita pelo usurio no nvel de apresentao so
convertidas para um formato prprio e enviado para o dispatcher. O
processamento das requisies so salvos pelo dispatcher em filas de requisies
e processados.
O dispatcher distribui as requisies uma aps a outra para as Work Processes
avaliadas. Os dados so processados nas work processes. No existem work
processes fixadas para determinados usurios.
Uma vez os dados processados, os resultados so enviados das work processes
para o dispatcher e dele para a SAPGUI. A SAPGUI interpreta os dados e
converte a sada para o usurio.
Quando o sistema R/3 inicializado, o dispatcher executas algumas outras
funes: ele l os parmetros do sistema, gera lista de areas, starta work
processes e loga-se no servidor de mensagens.

243773697.doc

20 / 76

Application Services

A execuo de sistema R/3 um grupo de processos paralelos e corporativos. Em


cada servidor de aplicaes, esses processos incluem o dispatcher com um
nmero de work processes que dependem de recursos. Work processes especiais
podem ser instaladas para processamento de dialogs, updates, dialog free
backgroud e spooling.
Com os vrios tipos de work process, o sistema R/3 providencia dois services
adicionais para a comunicao interna e externa:
o A comunicao entre o servidor de mensagens entre o dispatcher
distribuidor com o sistema R/3 prerequisito para escalabilidade de vrios
servidores de aplicaes que esto processando em paralelo.
o O servidor de gateway (tambm chamado de CPI-C handler) permite
comunicao entre R/3, R/2 e Sistemas de aplicaes externos.

Transaes

Transaes so unidades de processamento que executo determinadas funes do


sistema R/3.
Exemplos tpicos so cadastro de materiais, criao de ordens, pedidos de
material, venda, etc.
Transaes podem estar ligadas a reports, on-lines, manuteno de tabelas e
programas de desenvolvimento e configurao.

LUW (Logical Unit of Work)

O sistema corrente de banco de dados no suporta todo o fluxo de transaes


vindos de todos os processos. preciso diferenciar entre o processamento
elementar no sistema R/3 (SAP-LUW) e no sistema de banco de dados (DBLUW). A DB-LUW extremamente executada. Ela precisa garantir que o banco
de dados esteja consistente.
Ao iniciar uma transao SAP inicializada tambm uma SAP-LUW. A SAPLUW completada pelo comando Commit Work ou pelo fim da atualizao
assncrona.
A tcnica predominante usada pela SAP-LUW a atualizao assncrona.

Requisitando um Lock

O mecanismo de lock presente no sistema de banco de dados relacionais no so


geralmente suficiente para uma transao (como ordens de vendas) que pode
utilizar vrias tabelas no banco de dados. O sistema R/3 tem uma funo de
gerenciamento de lock que executado pela work process de enqueue
(travamento). Ele previne que vrias aplicaes acessem o mesmo objeto.

243773697.doc

21 / 76

A work process de enqueue gerencia os locks usando uma tabela de lock


armazenada na memria principal do servidor.
Se um lock requisitado, o sistema checa se j existe outro lock para o objeto na
tabela de lock. Neste caso a requisio rejeitada. Desta forma a aplicao avisa o
usurio que a requisio no foi possvel.
Como a janela de dilogo e a work process de enqueue no esto localizadas no
mesmo servidor de aplicao, esse dois processos se comunicam atravs do
servidor de mensagens.

Objeto de Lock

Para que o sistema R/3 execute uma requisio de lock, voc deve definir
primeiro um objeto de lock no dicionrio ABAP. O objeto de lock contm tabelas
que tero entradas travadas. Um objeto de lcok consiste de uma tabela primria.
Pode-se ter uma tabela adicional secundaria, usando-se as chaves estrangeiras do
relacionamento.
Para um objeto de lock voc deve especificar o modo de travamento: S read
lock e E write lock. Um lock s pode ser removido pelo mesmo usurio que
solicitou.
Se o objeto de lock esta ativado, o sistema gera uma funo de ENQUEUE e uma
de DEQUEUE .

Processamento em Background

Processamento em background so anlogos a processamento on-line.


Eles so schedulados na forma de Jobs. Cada job consiste de um ou mais passos
que so processados sequencialmente). Pode ser setado prioridade para que certo
job seja executado primeiramente.
Ao definir um job, voc identifica a data e a hora que o job ser executado. O job
pode ser disparado imediatamente tambm.
O job no executado no presentation server.

Servios de Impresso

Spooling o termo utilizado para se referir a buferizao do dados para


dispositivos de sadas como impressoras, faxes e outros dispositivos similares. Em
sistemas distribudos, a administrao de rede necessria para este processo.
O mecanismo de spool do sistema R/3 pode suportar requisies para impresso
tanto local como em rede.
Requisies de spool podem ser geradas em modo de dilogo ou durante o
processamento em background.

243773697.doc

22 / 76

Instancia R/3

Uma instancia uma unidade administrativa que combina componentes do


sistema R/3 que providencia um ou mais servios. Os servidos providenciados por
uma instancia so inicializados ou interrompidos ao mesmo tempo.
Um sistema R/3 central consiste de uma simples instancia que providencia todos
os servios necessrios para o funcionamento do sistema R/3.
Cada instncia tem sua prpria rea de buffer.

243773697.doc

23 / 76

ABAP Dictionary
Objetos do dicionrio

As difinies bsicas dos objetos no ABAP Dictionary so tabelas, domnios e


elementos de dados. Domnios descrevem os atributos tcnicos dos campos da
tabela (tipo de campo, tamanho) enquanto elemento de dados contm a definio
semntica dos campos (descrio por exemplo).
Campos no so objetos independentes e no podem existir sem as tabelas.
Necessitam da existncia de um elemento de dados.
Elementos de dados presupe-se a existncia de um domnio.
Domnios podem ser definidos sem referncias a outros objetos do dicionrio.

Concepo Dual Level

No ABAP Dictionary vrios campos podem ter o mesmo elemento de dados,


sendo ou no da mesma tabela.
Vrios elementos de dados podem ter o mesmo domnio associado, tendo diversas
definies para os mesmos.

Tabelas Transparentes

ABAP Dictionary
Campo 1Campo 2Campo 3Campo 4

Campo 1Campo 2Campo 3Campo 4

DATABASE definio
fsica de tabelas

Quando se cria e ativa uma tabela no dicionrio, uma tabela transparente criada
automaticamente no banco de dados. Este processo traduz a descrio da tabela
no banco de dados numa linguagem usada pelo sistema do banco de dados.
As tabelas do banco de dados tem os mesmos nomes no ABAP Dictionary. Os
campos tambm tem os mesmos nomes em ambos. O tipo dos dados no ABAP

243773697.doc

24 / 76

Dictionary so traduzidos para os tipos de dados correspondentes nos sistemas de


banco de dados.

Estruturas

Alm de definio de tabelas para armazenamento de dados, pode-se definir


estruturas de dados que so utilizadas, por exemplo, para passagem de valores
entre programas ou para serem anexadas em tabelas transparentes.
Estruturas no tem objetos correspondentes no banco de dados.
Estruturas so criadas e ativadas no ABAP Dictionary.
Enquanto os dados podem ser armazenados permanente em tabelas transparentes
no banco de dados, dados em estruturas s existem durante a execuo de
programas.
Campos de entrada e sadas de dados em telas tambm podem ser referenciados a
estrutura de dados.
Caractersticas de campos so as mesmas de uma tabela.

Views

Views so vises especificas de diferentes tabelas do ABAP Dicitionary. Um view


pode conter um simples viso de alguns campos de uma nica tabela ou campos
de diversas tabelas.
Vises permitem que seja selecionados campos de diferentes tabelas para serem
exibidos ao usurio na forma que ele requer quando estiver trabalhando no
sistema R/3.
Vises so utilizadas em programas ABAP ou em Search Help.

Search Help

O Search Help um objeto do ABAP Dicitionary que permite a exibio de


valores vlidos a um determinado campo.
O Search Help serve com validador de valores, checando a existncia desses
valores no banco de dados.
Nem todos os campos possuem Search Help associado. Em campos com
referncia (tabelas de verificao), o Search Help aparece automaticamente.
Para assionar o Search Help, basta tecla o F4 com o cursor sobre o campo
desejado.

ABAP
Conceito

ABAP a linguagem de programao criada para o desenvolvimento de


aplicaes pela SAP.

243773697.doc

25 / 76

Com a linguagem ABAP, o desenvolvedor no deve-se preocupar com a


comunicao entre os diferentes nveis, somente com as dialogs com o usurio.
O ABAP possui um conjunto de comandos chamados de OPEN SQL especfico
para acesso a banco de dados.
Todos os objetos do ABAP Workbench so armazenados no repositrio do R/3.
Isto inclue objetos como programas, telas e tabelas.

Repositrio

Todos os objetos desenvolvidos com ferramentas de desenvolvimento existentes


no ABAP Workbench so classificadas de Repositrio de objetos e so
armazenados no Repositrio R/.
O repositrio do R/3 uma parte especial do sistema central de banco de dados do
SAP.
Cada repositrio de objetos pode ser apontado para uma classe de
desenvolvimento quando ele criado.

243773697.doc

26 / 76

Ferramentas do Workbench

O ABAP Workbench contem vrias ferramentas que permite voc editar


repositrios de objetos especficos. Os mais importantes so:
o ABAP Editor:
para escrever e editar cdigos de programas;
o ABAP Dicitionary: para editar tabelas e outros objetos do ABAP
Dictionary;
o Menu Painter:
para desenhar as interface do usurio (barra de
menu, barra de ferramentas standards, barra de ferramentas de aplicaes);
o Screen Painter:
para desenhar telas e dilogos com o usurio;
o Function Builder:
para programar mdulos de funes.

Transporte de Objetos

Objetos do repositrio so automaticamente linkados ao sistema de transporte


quando eles so associados a uma classe de desenvolvimento.
Depois que o objeto estiver terminado ele pode ser transportado para os
mandantes de testes e produo.
O ABAP Workbench possui uma ferramenta chamada Workbench Organizer, que
organiza todos os desenvolvimentos em tarefas pertinentes para o repositrio de
objetos.

243773697.doc

27 / 76

Desenvolvendo um projeto do WBO

Quando o projeto inicia-se, o lder do projeto cria uma CHANGE REQUEST e


anexa alguns desenvolvedores a ela.
Depois, o WBO cria as TASKS (tarefas) para cada desenvolvedor. Todas as tarefa
que so desenvolvidas pelo desenvolvedor podem ser apontadas para a CHAGE
REQUEST e anexados na TASK prpria dele.
No necessrio que todos os objetos desenvolvidos por um desenvolvedor
estejam na mesma TASK, sob a mesma CHANGE REQUEST. Para cada tarefa
(por exemplo, relatrio de clientes, on-line de entrada de notas fiscais) podem esta
associadas a uma CHANGE REQUEST diferente e, portanto, dever estar com
uma TASK associada ao desenvolvedor.

243773697.doc

28 / 76

Finalizando um projeto

Quando o desenvolvedor finaliza determinado desenvolvimento, ele deve liberar a


TASK.
Aps o desenvolvedor liberar a TASK, o lder do projeto libera a CHAGE
REQUEST. Neste momento todos as travas (LOCKS) do objeto so removidos e
ele pode ser alterado novamente, mas associado a outra CHANGE
REQUEST/TASK.
Aps a CHANGE REQUEST ser liberada, o administrador do sistema (em geral a
equipe de BASIS) efetua o transporte para o destino solicitado. O desenvolvedor
pode checar o LOG de importao.

243773697.doc

29 / 76

Criando Classes de Desenvolvimento

A classe de desenvolvimento pode ser criada utilizando-se o Browse de


Repositrio (na verso 4.6 ele se encontra na transao SE80).
Voc deve entrar com algumas informaes quando vai criar uma nova classe de
desenvolvimento:
o Short Text: nome tcnico da classe;
o Transport Layer: criado pelo administrador do sistema, uma transport
layer determina para qual sistema seu repositrio de objetos ser
transportado. vrios transport layers podem ser criados no sistema R/3.
o Application Component: o repositrio divido primeiro em componente
de aplicao e depois em classe de desenvolvimento.

Criando programas em ABAP


Overview

Quando se cria um novo programa, primeiro deve ter uma srie de detalhes
administrativos.
Todos os programas devem apontar para uma classe de desenvolvimento. Isso faz
a classificao lgica do programa. Isso indica em qual repositrio o programa
ser criado.
Em seguida, vrios atributos gerais do programa devem ser especificados. O mais
importante o tipo do programa. O tipo do programa determina como o programa
vai ser executado no R/3.
Por ltimo o programa deve ser associado a uma CHANGE REQUEST. Isso
identifica o repositrio cronologicamente.
Um programa s poder ser editado aps a determinao desse detalhes. A
ferramenta de criao utilizada para o programa determina em qual ordem estas
informaes devem ser inseridas.

Atributos

243773697.doc

30 / 76

Os mais importantes atributos so:


o Ttulo do programa
Deve ser informado um pequeno texto para descrever a funo do
programa, pois essa informao ir aparecer na prxima edio do
programa para identifica-lo.
o Tipo
Identifica com o programa pode ser executado. Somente o tipo 1
(programa executvel) pode ser executado diretamente.
o Status
Esta informao atua como um log sobre o status de desenvolvimento do
programa.
o Aplicao
Esta informao exibe o cdigo de identificao do programa.
Voc pode utilizar essas informaes para procurar por um programa em
particular no sistema de informao do repositrio.

243773697.doc

31 / 76

Editor

O editor de programas do R/3 de fcil utilizao e engloba muitas funes


existentes normalmente na maioria dos editores de programas.
o Exibir/Alterar
o Mudar de ativo para inativo
o Selecionar outro objeto
o Verificar
o Ativar
o Testar
o Funo where-in-used
o Break-point
o Pretty Printer
o Recortar
o Copiar
o Colar
o Undo
o Redo
o Procurar
o Continuar procura.
Toda linha de programa deve de terminar com ponto ( . ).
Estas e outras funes sero melhores esplanadas durante o curso.

Declaraes referenciando ao dicionrio

O dicionrio ABAP descreve tipos de dados e estruturas.


Todas as aplicaes tm acesso ao dicionrio ABAP.
Navegao tambm suporta referncias ao dicionrio
O mais importante objeto do dicionrio a estrutura lgica de uma tabela de
banco de dados.
Referncia ao dicionrio tambm podem ser utilizadas nos programas ABAP para
cria dados internos para processamento de dados do banco de dados.
Exemplo:
o DATA lc_hora LIKE sy-uzeit.
a declarao da varivel lc_hora recebe as caractersticas do campo
UZEIT da tabela SY (SYST).
o TABLES: VBAK, VBAP.
as tabelas VBAK e VBAP esto sendo instanciadas para a utilizao no
programa.

243773697.doc

32 / 76

Telas de seleo

Os comandos PARAMETERS e SELECTION-SCREEN criam automaticamente


tela de seleo para que o usurio informe valores que iro interferir/direcionar a
execuo do programa.
O comando PARAMETERS cria a opo do usurio informar somente um valor
nico para a seleo.
Sintaxe: PARAMETERS <nome do objeto> LIKE <referncia ao dicionrio>.
Exemplo: PARAMETERS pa_data LIKE sy-datum.
O camando SELECT-OPTIONS cria a opo do usurio informar uma faixa de
valores que vai de: de...at, podendo ser informado um nico valor, uma faixa de
valores ou um valor final.
Sintaxe: SELECT-OPTIONS <nome do objeto> FOR <referncia ao dicionrio>.
Exemplo: SELECT-OPTIONS so_data FOR sy-datum.

Open SQL

O comando DATA <objeto> LIKE <referencia objeto> declara um objeto de


dados interno cuja estrutura determinada pela adio do LIKE. Este objeto
usado como uma area de trabalho para os dados que o programa ABAP l da
tabela do banco de dados.
A linguagem ABAP contm uma srie de comandos chamados de OPEN SQL. Os
comandos Open SQL so utilizados para acesso a tabelas de banco de dados.
Um exemplo de comando Open SQL o comando SELECT que l colunas
especficas (campos) de uma linha (registro) de uma tabela e insere em uma rea
de trabalho.
Data: wa_vbap like vbap.

PARAMETERS: pa_ebeln LIKE vbap-ebeln,


pa_ebelp LIKE vbap-ebelp.

SELECT SINGLE ebeln ebelp matnr menge


FROM vbap
INTO CORRESPONDING FIELDS OF wa_vbap
WHERE ebeln = pa_ebeln
AND ebelp = pa_ebelp.

Messages

243773697.doc

33 / 76

O comando message utilizado para enviar mensagens ao usurio


Existem mensagens do tipo E (error), I (information) ou W (warning).
Mensagens do tipo E exibem no rodap da tela a informao ao usurio e pra
o processamento do mdulo que esteja sendo executado.
Mensagens do tipo I exibem uma tela modal com a mensagem, s seguindo o
processamento aps o fechamento desta tela.
Mensagens do tipo W exibem no rodap da tela a informao ao usurio e
segue o processamento aps o usurio pressionar <Enter>.
As mensagens so gravadas em uma rea chamada Classe de Mensagens e
so referenciadas atravs do nmero da mensagem na classe e pelo nome da
prpria classe.

SELECT SINGLE .
IF sy-subrc <> 0.
MESSAGE I020(FI).
ENDIF.

Listas

A linguagem ABAP possui comandos para criar listas: WRITE, SKIP, ULINE, so
exemplos de alguns deles.
O comando WRITE exibe o contedo de um campo (ou varivel), formatado de
acordo com o seu tipo, formando assim uma lista (relatrio).
O comando SKIP imprime uma linha em branco na lista.
O comando ULINE imprime uma linha continua, cobrindo toda a largura do
relatrio.

SKIP.
WRITE: / wa_vbap-ebeln, wa_vbap-ebelp.
ULINE.
WRITE: / wa_vbap-matnr, wa_vbap-menge.
ULINE.

Sintaxes

Cada comando finalizado por ponto.

243773697.doc

34 / 76

A primeira palavra do comando chamado de palavra chave.


Alternancia entre maiscula e minuscule no interfere no comando.
Um comando no tem necessidade de se encerrar na mesma linha.
Todos os comando possuem HELP, sendo acionado pressionando a tecla F1 sobre
o mesmo.
Existe a funo de verificao de sintaxe que informa onde se encontra o erro e
qual o mesmo.

REPORT

z_teste_curso

DATA

wa_vbap LIKE vbap

PARAMETERS

pa_ebeln LIKE vbap-ebeln

SELECT

SINGLE ebeln ebelp matnr menge


FROM vbap
INTO CORRESPONDING FIELDS OF wa_vbap
WHERE ebeln = pa_ebeln

IF
MESSAGE
ENDIF
ULINE
WRITE
WRITE
WRITE
WRITE
ULINE.

sy-subrc = 0
I027(FI)

/ wa_vbap-ebeln COLOR COL_KEY


wa_vbap-ebelp COLOR COL_HEADING
wa_vbap-matnr INTENSIFIED OFF
wa_vbap-menge

.
.
.
.
.
.
.
.

Comentrios

Existem duas formas de colocar comentrios no programa: a primeira utilizando


aspas () no final da linha de comando e a segunda utilizando o astersco (*) no
incio da linha.
TABLES: vbap.
Declara a tabela VBAP

* declara a work area para a tabela vbap


DATA: wa_vbap LIKE vbap.

243773697.doc

35 / 76

OPEN SQL
Database Interface
OPEN SQL

NATIVE SQL

Database Interface

BANCO DE DADOS

Existem 2 formas de acessar o banco de dados dentro de um programa ABAP:


usando Open SQL ou Native SQL.
Usando o Open SQL voc no precisa ater-se aos conhecimentos do banco de
dados em questo.
Quando de usa o Open SQL, a interface de banco de dados faz a traduo dos
comando para a linguagem utilizada pelo banco de dados onde esto sendo feitos
os acesso.
Usando o Native SQL, o acesso feito diretamente na base de dados,
necessitando de conhecimentos especficos do SQL do banco de dados em uso.
Neste caso no existe a necessidade de converso de comandos de leitura e escrita
no banco de dados.

Overview

O Open SQL contm os comandos SELECT, UPDATE, INSERT, DELETE e


MODIFY.
Voc nunca deve fazer atualizaes nas tabelas sem conhecer o conceito das
transaes.
Todos os comando do Open SQL retornam um valor aps a execuo. O retorno
fica armazenado no campo SUBRC na estrutura SYST (ou SY). O SY-SUBRC
com valor igual a 0 indica execuo correta em consequencia disso, valor
diferente de 0 indica insucesso na execuo.

243773697.doc

36 / 76

Comando SELECT
Overview
SELECT <resultado> FROM <tabela>
INTO <destino>
WHERE <condio>.

O comando SELECT utilizado para a leitura de dados na tabela.


Existem varias formas de utilizar o comando SELECT.
As clausulas do select especifica:
o Leitura de uma ou vrias linhas da tabela.
o Os campos so o resultado da seleo
o O resultado pode trazer duas ou mais linhas iguais.
o A clausula INTO indica o objeto onde os dados sero armazenados.
o A clausula FROM indica onde os dados sero lidos.
o A clausula WHERE indica a condio da leitura.

Single Line
SELECT SINGLE <F1> <F2>.<FN>
FROM <tabela>
INTO <WA>
ou
INTO (<V1>, <V2>,..<VN>)
ou
INTO CORRESPONDING FIELDS OF <work area>
WHERE <condio>

O uso do SINGLE no comando SELECT indica que ser lido somente uma linha
para a condio informada.
Se voc utilizar o CORRESPONDING FIELDS OF na clausula INTO, voc pode
preencher a rea de trabalho componente a componente, desde que esses
componentes tenham o mesmo nome e mesma estrutura. Caso no for informado,
o comando preenche a rea de trabalho ocupando os espaos da esquerda para a
direita, sem respeitar os limites dos campos.

Several Lines
SELECT <F1> <F2>.<FN>
FROM <tabela>
INTO <WA>
ou
INTO (<V1>, <V2>,..<VN>)

243773697.doc

37 / 76

ou

INTO CORRESPONDING FIELDS OF <work area>


WHERE <condio>
ENDSELECT.

Se no for utilizado o SINGLE no comando SELECT, o comando far ler todos


os registro enquanto satisfazer a condio do WHERE.
Para no causar erro de sintaxe, necessrio a adio do ENDSELECT ao final
do comando.
Todos os comandos entre o SELECT e o ENDSELECT sero executados para
cada registro da tabela.
O campo DBCNT da estrutura SYST (SY) indica o nmero de linha lida no loop.

243773697.doc

38 / 76

Tabela Interna
SELECT <F1> <F2>.<FN>
FROM <tabela>
INTO TABLE <TI>
WHERE <condio>.

Voc pode ler uma tabela e armazenar todos os registro que satisfazerem a
condio em um simples passo, utilizando o TABLE na clausula INTO.
No necessrio utilizar o ENDSELECT quando a leitura for feita diretamente na
tabela interna.

Operadores da Clausula Where


SELECT <campos>
FROM <tabela>
INTO <destino>

WHERE <campo> <operador> <valor>

WHERE <campo> LIKE <valor>

WHERE <campo> IN <valor>


ENDSELECT.
OPERADOR
EQ
=
NE
<> ><
GT
>
GE
>= =>
LT
<
LE
<= =<
BETWEEN FI and F2

DEFINIO
igual
diferente
maior que
maior ou igual a
menor que
menor ou igual a
intervalo

Voc especifica qual dado quer ler atravs da clausula WHERE.


S necessrio entrar com o(s) nome(s) do(s) campo(s) que voc que utilizar na
condio sem a necessidade de informar qual a origem, uma vez que esta esta
definida na clausula FROM.
A comparao pode ser feita a outros campos de outras tabelas, variaveis,
constants ou objetos de rea de trabalho ou tabela interna.

Contexto de dados
Definindo objeto de dados

243773697.doc

39 / 76

DATA: <varivel>

TYPE <Tipo de Dados ABAP>


TYPE <Objeto definido pelo usurio>
TYPE <Objeto do Dicionrio>

DATA: <varivel>

LIKE <Objeto do Dicionrio>

Voc pode associar uma varivel referenciando a um objeto pr existente no


programa, a um tipo pr difinido (caracter, data, numrico...) ou a um objeto do banco
de dados.
Quando se faz referncia a outro objeto, atribuda a varivel as mesma
caractersticas do objeto referenciado.

Tipo de Dados

Os dados definidos pelo usurio podem ser elementares ou estruturados.


Tipo de dados elementares no podem ser quebrados em outros componentes. Tipo de
dados estruturados, por outro lado, podem ser quebrados em varias partes para o
armazenamento das informaes.
Em dados estruturados existe uma diferena entre dados de estrutura e dados de
tabela
o Dados de estrutura s consegue armazenar um nico conjunto de informaes
(como se fosse um nico registro).
o Dados de tabela consegue armazenar vrios nveis de informao (como se
fosse uma tabela).

Tipos pr-definidos
N
U
M
E
R
I
C
A
L
F
A

Tipos
P
I
F
N
C
D
T
X

Significado
Packed Number
Integer
Float Point
Numeric Text
Text
Date (YYYYMMDD)
Time (HHMMSS)
Hexadecimal

Valor Inicial
0
0
0.000
000
Branco
00000000
000000
X00

Tamanho
Padro
8
4
8
1
1
8
6
1

Tamanho
Mximo
1-16
4
8
64kb
64kb
8
6
64kb

Existem oito tipos de dados pr definidos.


Os tipo de dados numricos P, I e F tem suas prprias particularidades:
Tipo Propriedade
Range
I Inteiro
-231 at +231
P N. com decimal 2 char por byte

243773697.doc

Usado para...
Contador, quantidade, ndice.
Valores, tamanhos, larguras.
40 / 76

F Ponto flutuante -2,2E-308 at +1,8E308 Clculo c/ nmeros muito grandes


Clculos com o tipo I so mais econmicos, comparados com os tipo P e F.
O tipo F s dever ser utilizados para problemas matemticos complexos que
possibilitem uma aproximao com erro. Para problemas financeiros deve ser
utilizados o tipo P.

Objeto de dados elementares


DATA: <varivel> TYPE <tipo de dados>.
DATA: contador
TYPE
nome(18)
data
nota
soma(3)

I,
TYPE
TYPE
TYPE
TYPE

C,
D,
I
P

VALUE
1,
DECIMALS 2.

Nos tipos P, N, C e X deve ser informado, entre parnteses, o tamanho mximo.


No tipo de dados P pode ser informado o nmero de casas decimais, com a adio
da clausula DECIMALS. O mximo que pode ser utilizado 14.
O tipo de dados default caracter (C), ou seja, se nenhum dado for informado, o
tipo ser C.
Cada dado elementar pode possuir valores iniciais, para isso adicione a clausula
VALUE aps o tipo do dado.
Regras para nomes de variveis:
o Mximo de 30 caracteres,
o No utilizar smbolos como: ( ) + . , :
o SPACE um campo pr definido.

Estruturas
TYPES:

BEGIN OF <definio>,
.,
.,
END OF <definio>.

DATA:

<variavel> TYPE <definio>.

TYPES:

BEGIN OF tp_endereco,
rua(40)
TYPE
numero(5)
TYPE
compl(15)
TYPE
bairro(25)
TYPE

243773697.doc

C,
I,
C,
C,
41 / 76

cidade(25)
TYPE
estado(2)
TYPE
END OF
tp_endereco.

C,
C

VALUE RJ,

DATA: wa_endereco TYPE tp_endereco.

Definio de tipo de estrutura usa a sintaxe TYPE: BEGIN OF <type>,...., END


OF <type>.
Dentro de estrutura pode conter outra estrutura ou mesmo uma tabela.
Por razes de compatibilidade, tambm pode ser declarado uma estrutura
utilizando DATA: BEGIN OF <type>,...., END OF <type>. Sem ter de haver uma
declarao de estrutura.

Referindo-se ao Dicionrio ABAP


DATA: <varivel> LIKE <objeto do dicionrio>.
DATA:
ld_data
LIKE
sy-datum.
DATA: lc_pedido
LIKE
EKKO-EBELN.

Variveis e tipos de dados tambm podem ser referenciar a objetos de banco de


dados.
Use a clausula LIKE para se referenciar a um objeto do banco de dados.
Quando se altera o contedo de uma varivel referenciada a um objeto de banco
de dados a varivel que modifica o contedo e no o objeto no banco de dados.

Comando TABLES
TABLES <nome da tabela no dicionrio>.
TABLES: EKKO, EKPO, EKKN.

O comando TABLES declara um objeto de dados interno que serve com estrutura
de dados e funciona como uma rea de trabalho.
No necessrio declarar no comando TABLES o nome de todas as tabelas
referenciadas no programa, somente quando for necessrio armazenar em
memria (work area) os dados.

Literais e contantes
CONSTANTS <contante> TYPE <tipo> VALUE <literal>.
243773697.doc

42 / 76

CONSTANTS cc_pais(6) TYPE C VALUE BRASIL.

Para se definir valores contantes (que no mudam o valor no programa)


utilizado o comando CONTANTS. A clausula VALUE obrigatria para definir o
seu valor.
O ABAP s reconhece 2 tipos de literais: numrico e texto. Os textos devero vir
sempre entre commas (aspas simples).
As contantes numricas so armazenadas utilizando os tipos P ou I.

Smbolo de Texto
Cdigo do Programa
..
..
SKIP 2.
WRITE: / text-001,
sy-datum,
text-002,
sy-uname.

Elemento de Texto
001
Data
002
Usurio

Smbolo de texto um outro tipo de literal. A grande vantagem dos smbolos


de texto que o mesmo pode ser traduzido e as contantes no.
Voc pode criar os elementos de texto dando um duplo-clique sobre o
elemento que voc quer criar ou ento, na tela de entrada da transao que
manipula o programa, escolhendo a opo Elemento de Texto.

Transferindo Valores
Comando MOVE
MOVE <objeto1> TO <objeto2>.
<objeto1> = <objeto2>.
CONTANTS: cc_silva(5)
VALUE Silva.
TYPES: BEGIN OF ty_nome,
nome(20),
prenome(20),
sobrenome(30),
END OF ty_nome.
DATA:
li_idade(3)
TYPE I,

243773697.doc

43 / 76

wa_nome
lc_sexo

TYPE ty_nome,
TYPE C.

MOVE M TO lc_sexo.
Li_idade = 30.
wa_nome-nome = Antonio.
MOVE Carlos TO wa_nome-prenome.
wa_nome-sobrenome = cc_silva.

Comando MOVE-CORRESPONDING
MOVE-CORRESPONDING <registro1> TO <registro2>.
TYPES:

BEGIN OF ty_dados1,
nome(30)
VALUE Antonio Carlos Silva,
ende(40)
VALUE Rua do Bispo, 40,
bairro(20)
VALUE Rio Cumprido,
cidade(20)
VALUE Rio de Janeiro,
END OF ty_dados1,
BEGIN OF ty_dados2,
Codigo(4)
TYPE I,
Nome(30),
Cidade(20),
END OF ty_dados2.

DATA: wa_dados1
TYPE ty_dados1,
wa_dados2
TYPE ty_dados2.
MOVE-CORRESPONDIG wa_dados1 to wa_dados2.
Resultado:
wa_dados1
Antonio Carlos Silva CODIGO
Rua do Bispo, 40
NOME
Rio Cumprido
CIDADE
Rio de Janeiro

NOME
ENDE
BAIRRO
CIDADE

wa_dados2
Antonio Carlos Silva
Rio de Janeiro

Regras de Converso
Tipo
C
C

Origem dos dados


Tamanho
Valor
1
A
4
ABCD

243773697.doc

Tipo
C
C

Destino dos dados


Tamanho
Valor
4
A____
2
AB
44 / 76

C
P

7
3

-47110
123-

P
C

5
5

47110_123-

Regras de converso existem para todas as combinaes de tipos de elementos,


exceto para T e D e vice-versa.

Campos do tipo C so justificados a esquerda. Se o destino dos dados for maior


que a origem, espaos em branco sero inseridos aps o contedo at o final do
campo.
Quando se converte tipo P em tipo C, os nmeros 0 a esquerda so convertidos
em espaos tambm a esquerda.
Quando se converte tipo C em tipo P, somente nmeros e os sinais de positivo ou
negativo so convertidos.

Calculando Valores
[COMPUTE] <campo> = <expresso aritimtica>.
Operadores:
Funes:

+
SQRT EXP

/
*
LOG SIN

DIV
COS

MOD **
STRLEN

TAN

..
..
lp_salario = 10000.
lp_desconto = 2000.
lp_aumento = 10,20.
lp_total = ( ( lp_salrio lp_desconto) * lp_aumento ) / 100.
..
..

O comando COMPUTE opcional.


Os operadores e os parnteses que so parte da expresso so contados como uma
palavra e portanto devem estar separados com espaos.
Os parnteses s no devem estar separados da chamada da funo, por exemplo
SQRT(...).
Os operadores DIV e MOD retornam valores inteiros.
A funo STRLEN retorna o tamanho de uma string.
Para efetuar as operaes matemticas bsicas (soma, subtrao, multiplicao e
diviso) tambm pode ser utilizado ADD, SUBTRACT, MULTIPLY e DIVIDE.

Sub-Campos
DATA: BEGIN OF wa_data,

243773697.doc

45 / 76

ano(04),
mes(02),
dia(02),
END OF wa_data.
DATA:

lc_ano(04),
lc_mes(02),
lc_dia(02).

MOVE sy-datum TO wa_data.

WRITE:

/ wa_data-dia, wa_data-mes, wa_data-ano.

MOVE

sy-datum(4)
sy-datum+4(2)
sy-datum+6(2)

WRITE:

/ lc_dia, lc_mes, lc_dia.

20 02 2003

TO lc_ano,
TO lc_mes,
TO lc_dia.
20 02 2003

Voc pode enderear e alterar sub-areas de um campo elementar especificando a


posio e o tamanho do campo de origem.
Pode-se enderear para estrutura, sem determinar qual a posio em que v ficar
as informaes.

Calculando Datas
DATA:

ld_data
ld_inicio
lp_dias

TYPE
LIKE
TYPE

D
VALUE
sy-datum,
P.

ld_inicio
= ld_data.
ld_inicio+6(2) = 01.
lp_dias
= ld_data ld_inicio.

sy-datum,

2003 02 20
2003 02 01 - incio do ms
20

Se a data convertida em campo numrico, o ABAP calcula o nmero de dias


entre a 01.01.0001 e o dia.
A data pode ser manipulada com string.
O formato de data no sistema R/3 no formato germnico, onde as posies so:
ano (4 posies), ms (2 posies) e dia (02 posies).

Expresses Lgicas
DATA:

243773697.doc

ld_start

TYPE

D,

46 / 76

lp_sum1
lp_sum2

TYPE
TYPE

P,
P.

..
..
IF sum2 GE 1000.
..
..
IF start IS INITIAL.
..
..
IF sum1 GT sum2 and sum1 between 0 and 100.
..
..
IF sum1 = 1000 and ( sum2 LE 2000 or start IS INITIAL).
..
..
OPERADOR
EQ
=
NE
<> ><
GT
>
GE
>= =>
LT
<
LE
<= =<
BETWEEN FI and F2
IS INITIAL

DEFINIO
igual
diferente
maior que
maior ou igual a
menor que
menor ou igual a
Intervalo
Valor inicial.

Expresses lgicas podem estar linkadas com NOT, AND e OR.


A utilizao dos parnteses indica uma sub expresso, e como tal ela
considerada uma palavra, portanto devero estar separadas por espao.

Estrutura CASE
CASE <objeto>.
WHEN <dado1>
...
WHEN <dado2>
...
...
WHEN OTHERS.
...
ENDCASE.

243773697.doc

47 / 76

IF
...
ELSEIF
...
ELSEIF
...
ELSE
...
ENDIF.

<expresso lgica>
<expresso lgica>
<expresso lgica>
<expresso lgica>

Os comando CASE e IF permite que se teste vrias distines.


No comando CASE...ENDCASE:
o Somente um seqncia de WHEN ser executada
o A seqncia WHEN OTHERS opicional.
No comando IFENDIF:
o As sequencias ELSE e ELSEIF so opicioanais.
o Se a expresso lgica completamente validada, a seqncia de comandos
seguida ser executada.
o Pede ser inseridos quantos ELSEIF entre o IF e o ENDIF, mas somente
um ELSE.

Loops DO e WHILE
DO <n> TIMES.
...
...
ENDDO.

WHILE <expresso lgica>.


...
...
ENDWHILE.
O contador de vezes que o loop executado armazenado no SY-INDEX, tanto
para DO...ENDDO quanto para WHILE...ENDWHILE.
No loop DO:
o O parmetro <n> TIMES opicional. Se no for necessrio, a sada do
loop deve ser feita por comando dentro do loop.
o O nmero de passos do loop no pode ser modificado em tempo de
execuo alterando o valor do SY-INDEX.
No loop WHILE:
o O loop ser executado vrias vezes enquanto a expresso lgica for
verdadeira.

243773697.doc

48 / 76

o O nmero de passos do loop no pode ser modificado em tempo de


execuo alterando o valor do SY-INDEX.

Comandos CHECK e EXIT


CHECK <expresso lgica>.
EXIT.
li_cont = 100.
WHILE sy-index LT li_cont.
CHECK sy-index < 50.
ENDWHILE.
DO 100 TIMES.
IF sy-index = 50.
EXIT.
ENDIF.
ENDDO.

Quando se utiliza o comando CHECK e a expresso lgica no for validada, o


programa pula para o final do loop, ignorando todos os comandos existentes entre
o comando e o finalizador do loop (ENDWHILE ou ENDDO).
O comando EXIT faz com que o controle do sistema saia do loop, independente
se a condio original foi finalizada ou no.

243773697.doc

49 / 76

Ferramentas de Teste
Debug

O Debug a forma de verificao da sistaxe do programa em tempo de execuo.


Com o Debug voc pode executar passo a passo o programa, verificar valores de
variveis, constantes, tabelas internas, work areas, alterar os valores dos objetos
(exceto constante) e verificar a lgica do programa.
Para executar o Debug existem vrias formas, pode ser atravs de comando no
cdigo do programa ou colocando o comando /H na rea de comando do R/3.
Ao abrir a tela do Debug, a mesma ficar dividida em 2 partes, a primeira o
cdigo do programa que esta sendo executado e a segunda a rea de manipulao
dos dados.

Importantes funes do Debug

F5 ou Single Step: Processa o programa linha a linha.


F8 ou Continue: Processa todas as linhas do programa at o fim ou at o prximo
break.
F7 ou Return: Sai de dentro de um mdulo (funo, perform, metodo, subprograma) e volta ao programa chamador.
F6 ou Execute: Executa um mdulo sem mostrar os comandos internos.

243773697.doc

50 / 76

Breakpoint

O breakpoint do programa pode ser feito via programa ou dentro do prprio


debug.
Via programa o comando usado o BREAK-POINT ou BREAK <usurio>. O
primeiro para sempre que for encontrado e o segundo somente quando o usurio
definido estiver executando o programa.
Dentro do Debug, basta um duplo clique antes do

243773697.doc

51 / 76

Tabelas Internas
Definio

Como mencionada anteriormente, uma tabela interna (tambm conhecida como


Array) uma sequencia de entradas ou linhas que tem o mesmo tipo.
Tabelas internas so utilizada para armazenar resultado de processamento ou
dados de tabelas.
Usos tpico incluem:
o Armazenamento temporrio de dados de tabelas para futuro
processamento;
o Armazenamento de dados para exibio em listas;
o Usado como buferizao de dados para comunicao com o desktop,
outros servidores de aplicao R/3 ou sistemas no-SAP.

Expanses dinmicas

O nmero de linha de uma tabela interna no esttico ou pr-determinado. O


sistema de execuo do ABAP expande dinamicamente a tabela interna em
runtime de acordo com as necessidades.
So alocados no momento da criao da tabela interna 8 KB. Se for necessrio,
mais 8 KB sero alocados quando necessrio, assim por diante.

Atributos
Tipos de linhas

As tabelas internas so descritas usando uma srie de atributos, um desses


atributos so os TIPO DE LINHAS.
Tipos de linhas determina a estrutura do registro de dados que pode ser
armazenado na tabela interna.
Um tipo de linha de uma tabela interna pode consistir quantos tipos de dados que
quiser, incluindo outras tabelas internas.

Keys

Outro atributo da tabela interna so as chaves (Keys). Chaves ajudam a identificar


as entradas da tabela.
Quando definimos chaves a seqncia dos campos so importante, por exemplo:
chave EBELN e EBELP so diferentes de EBELP e EBELN.
Chaves de tabelas internas tambm podem ser definidas como UNIQUE ou NONUNIQUE. Isso determina se ser ou no possvel a entrada de mais de um dado
com a mesma chave.

243773697.doc

52 / 76

Tipos de tabelas

Acesso com ndice


Acesso com chave
Chave UNIQUE ou
NON-UNIQUE
Acesso usando

Tabelas Internas
Index Table
Hashed Table
Standard Table
Sorted Table
X
X
X
X
X
NON-UNIQUE
UNIQUE/NONUNIQUE
UNIQUE
ndice principal
Chave principal
Somente chave

Outro atributo da tabelas internas o tipo da tabela. Tabelas internas podem ser
divididas em trs tipo de acordo com o caminho de acesso aos dados:
o Standard Tables:
mantm um ndice linear internamente. Estas
tabelas podem ser acessadas usando ou ndice ou chave da tabela.
o Sorted Tables:
so organizados de acordo com a chave e so
salvos. Aqui tambm, um ndice linear montado externamente. Esse tipo
de tabela tambm pode ser acessado usando ou ndice ou chave da tabela.
o Hashed Tables:
no mantm um ndice linear interno. Hashed tables
s podem ser acessadas pela chave.
As tabelas internas do tipo Standard Tables so as mais comumente usadas.

243773697.doc

53 / 76

Work Area

Diferente dos arrays em outras linguagens de programao, o acesso direto aos


dados na tabela interna no so permitidos. Essa operao s possvel utilizando
Work Area.
So comando de manipulao de tabela interna:
Comando

Efeito

APPEND
INSERT
MODIFY
DELETE
LOOP AT
READ TABLE
SORT
CLEAR
FREE
COLLECT

Insere o contedo de uma work area no fim da tabela interna


Insere o contedo de uma work area na posio do ponteiro
Modifica o contedo de uma determinada linha com o valor da work area.
Deleta uma determinada linha da tabela interna.
Insere o contedo da tabela interna dentro da work area, linha a linha.
Insere exatamente o contedo de uma linha da tabela interna na work area.
Ordena uma tabela interna
Limpa o contedo da work area
Libera a rea de memria utilizada pela tabela interna
Agrupa vrios registros repetido em um s, somando o contedo numrico.

243773697.doc

54 / 76

Declarando tabelas internas


TYPES

<itabtype> TYPE <itabkind> OF <linetype>


[with {UNIQUE | NON-UNIQUE} key <keydef> ]
[INITIAL SIZE <n>].

DATA <itabtype> TYPE <itabkind> OF <linetype>


[with {UNIQUE | NON-UNIQUE} key <keydef> ]
[INITIAL SIZE <n>].
TYPES:

TYPES:

BEGIN OF struc,
name(10)
age
END OF STRUC.

TYPE c,
TYPE I,

itab_type TYPE STANDARD TABLE OF struc


WITH KEY name.

DATA: itab TYPE itab_type.

Os quatro tipos de tabelas (<itabkind>), junto com o tipo de linha (<linetyp>),


seqncia de chave (<keydef>) e o modo (UNIQUE|NON-UNIQUE) serve para
preencher atributos especficos das tabelas.
8 KB de memria so alocados para cada tabela interna na definio. Se for
necessria mais memria na execuo, ela aumentada em 8 KB, cada vez que
for necessrio.
A quantidade de memria alocado para cada tabela pode ser diminudo e
aumentado durante a declarao da tabela interna, basta adicionar INITIAL SIZE
<n> na declarao da tabela.

Preenchendo tabelas internas


APPEND [<wa> TO] <itab>.
DATA:
DATA:

it_vbak LIKE TABLE OF vbak.


wa_vbak LIKE vbak.

SELECT * FROM vbak INTO wa_vbak WHERE bukrs = 1000.


APPEND wa_vbak TO it_vbak.
ENDSELECT.

Como mensionado anteriormente, voc utiliza tabelas internas quando se tem a


necessidade de armazenar uma sequencia de entradas ou linhas que tem o mesmo

243773697.doc

55 / 76

tipo. o caso da necessidade de armazenar uma quantidade de entradas de uma


tabela de banco de dados.
Use o comando APPEND para preencher uma tabela interna.
Quando declaramos uma tabela interna do tipo STANDARD, voc pode omitir a
adio do STANDARD.

Tabelas internas com ou sem HEADER LINE.


DATA <itabtype> TYPE <itabkind> OF <linetype>
[with {UNIQUE | NON-UNIQUE} key <keydef> ]
[INITIAL SIZE <n>] [WITH HEADER LINE].
DATA: it_vbak LIKE of vbak WITH HEADER LINE.
SELECT * FROM vbak INTO it_vbak WHERE bukrs = 1000.
APPEND it_vbak.
ENDSELECT.

As tabelas internas podem ser definidas com ou sem HEADER LINE. Uma
tabela com HEADER LINE significa de uma WORK AREA junto com o
corpo da tabela interna, ambos endereados com o mesmo nome.
Para se declarar uma tabela interna com HEADER LINE, basta adicionar
WITH HEADER LINE na declarao da mesma.

INTO TABLE e INTO CORRESPONDING FIELDS OF TABLE


DATA:

BEGIN OF it_vbak occurs 0,


ebeln LIKE vbak-ebeln,
Ebelp LIKE vbak-ebelp,
END OF it_vbak.

SELECT ebeln ebelp FROM vbak INTO TABLE it_vbak


WHERE bukrs = 1000.
SELECT * FROM vbak INTO CORRESPONDING FIELDS OF TABLE it_vbak
WHERE bukrs = 1000.
ENDSELECT.

A seleo no banco de dados pode ser feita toda ao mesmo tempo ou de registro
em registro, quando utilizamos a adio INTO TABLE, a tabela interna
alimentada com todos os registros de uma nica vez.
Utilizamos a adio INTO CORRESPONDING FIELDS OF TABELE
<itabname> quando a seleo feita possuir muitos campos e a tabela interna no

243773697.doc

56 / 76

estiver na ordem da seleo ou ento no possuir todos os campos da seleo.


Essa forma de seleo feita registro a registro.

Comando SORT
SORT <itab> BY <f1> <f2> ...... [ASCENDING | DESCENDING]
DATA:

BEGIN OF it_vbak occurs 0,


ebeln LIKE vbak-ebeln,
Ebelp LIKE vbak-ebelp,
END OF it_vbak.

SELECT ebeln ebelp FROM vbak INTO TABLE it_vbak


WHERE bukrs = 1000.
SORT it_vbak BY ebeln ebelp.

Use o comando SORT para ordenar uma tabela interna. A adio de BY <f> e
ASCENDING ou DESCENDING permite voc restringir a ordenao a
determinados campos e hierarquia.
A hierarquia default ASCENDING.

LOOP em tabela interna


LOOP AT <itab> [ INTO <wa> ] [FROM <rec1> TO <rec2>] ENDLOOP.
DATA:
it_vbak LIKE TABLE OF vbak.
DATA:
wa_vbak LIKE vbak.
DATA: it_vbap LIKE vbap WITH HEADER LINE.
SELECT * FROM vbak INTO wa_vbak WHERE bukrs = 1000.
APPEND wa_vbak TO it_vbak.
ENDSELECT.
SELECT * FROM vbap INTO TABLE it_vbap
FOR ALL ENTRIES IN it_vbak
WHERE ebeln = it_vbak-ebeln.
LOOP AT it_vbak INTO wa_vbak FROM 4 TO 100.
WRITE: / wa_vbak-ebeln.
ENDLOOP.
LOOP AT it_vbak INTO wa_vbak WHERE bukrs = 1000.
WRITE: / wa_vbak-ebeln.
ENDLOOP.

243773697.doc

57 / 76

LOOP AT it_vbap.
WRITE: / it_vbak-matnr.
ENDLOOP.

O comando LOOP ATENDLOOP permite voc processar mltiplas entradas da


tabela interna. Cada vez que o LOOP processado, as informaes da tabela
interna so armazenadas na WORK AREA.
Com o comando LOOP voc pode acessar entradas de tabelas internas usando
ndice ou chave.
Quando acessa a tabela com chave, restringe-se o nmero de entradas ou linha
para serem lido usando a clausula WHERE, exatamente como no comando
SELECT.
No inicio de cada LOOP, o SY-TABIX preenchido com o ndice da entrada
corrente. Aps o loop o SY-TABIX retorna ao valor que ele tinha antes do
processamento.

Acessando registro na tabela interna


READ TABLE <itab> [INTO <wa>]....
DATA: it_vbak TYPE TABLE OF vbak WITH KEY ebeln ebelp.
SELECT * FROM vbak INTO TABLE it_vbak.
READ TABLE it_vbak WITH KEY ebeln = 450000076.
IF sy-subrc NE 0.
..
ENDIF.

Use o comando READ TABLE para acessar um registro individual. Se o acesso a


tabela for executado com sucesso, o campo SY-SUBRC receber o valor 0 (zero),
caso no encontre, o valor ser 4. o campo SY-TABIX receber o ndice que foi
acessado.
Tambm pode ser lido acessando diretamente pelo ndice na tabela, use para isso
READ TABLE <itab> INDEX <n>.

Alterando registros com ndice


INSERT [<wa> INTO] <itab> ... [INDEX <n>].
MODIFY <itab> [FROM <wa>] [INDEX <n>].
DELETE <itab> [INDEX <n>].
DATA: it_vbak TYPE TABLE OF vbak WITH KEY ebeln ebelp.

243773697.doc

58 / 76

SELECT * FROM vbak INTO TABLE it_vbak.


READ TABLE it_vbak WITH KEY ebeln = 450000076.
IF sy-subrc EQ 0.
it_vbak-bukrs = 2000.
MODIFY it_vbak INDEX sy-tabix.
ENDIF.
READ TABLE it_vbak WITH KEY ebeln = 450000077.
IF sy-subrc EQ 0.
DELETE it_vbak INDEX sy-tabix.
ENDIF.
READ TABLE it_vbak INTO wa_vbak INDEX 100.
IF sy-subrc EQ 0.
INSERT wa_vbak INTO it_vbak INDEX 101.
ENDIF.

Use o comando MODIFY para alterar o contedo de um registro na tabela.


Use o comando INSERT para inserir registros em posio definida na tabela.
Use o comando DELETE para excluir registros na tabela.

Modularizao de Programas
Estruturas de um programa ABAP

Um programa ABAP uma coletnea de blocos processados.


O processamento em bloco feito seqencialmente quando chamado
A seqncia de blocos no necessria (obrigatrio), mas devero estar presentes
em todos os programas.
Todas as declaraes globais so processadas quando o programa gerado. Por
isso, todas as declaraes globais devero estar no incio do programa

Tipos de blocos de processamento

Existem vrios tipos de processamento de blocos:


o Bloco de eventos: Em um programa executvel, o sistema de execuo
runtime o responsvel pela chamada de blocos de eventos numa
seqncia particular desenvolvida para produzir uma lista.
Subrotinas: Mdulos como uma interface, como so os programas
internos. Pode-se chamar uma subrotina de dentro de qualquer

243773697.doc

59 / 76

comando ABAP em qualquer bloco que se estiver processando.


Subrotinas podem ser, inclusive, outro programa ABAP.
Mdulos de funes: So mdulos com uma interface transparente.
Voc pode chamar um mdulo de funo de qualquer bloco do
programa ou de qualquer outro programa.
Todos os blocos so processados seqencialmente como eles so chamados.
Quando voc faz a chamada a uma subrotina ou a um mdulo de funo, o
processamento do bloco interrompido para a sua execuo.

Modularizando
Eventos em programas executveis

O sistema de execuo runtime do ABAP processa a chamada dos eventos em


seqncia:
o Primeiro bloco de eventos chamado o INITIALIZATION.
o Em seguida a tela de seleo enviada ao servidor de aplicao.
o Aps o usurio preencher a tela de seleo e seguir o processamento, o
bloco de eventos START-OF-SELECTION executado.
o Existem outros blocos de eventos que iremos ver no decorrer do curso,
como AT LINE-SELECTION, AT USER-COMMAND, AT SELECTIONSCREEN, TOP-OF-PAGE e END-OF-PAGE.

Subrotinas
PERFORM <nome da subrotina>
[USING <variveis>]
[CHANGING <variveis>].
PERFORM ys_calcula_salrio
USING

v_salhora
V_horastrab
CHANGING v_salliq.

...
...
...
FORM ys_calcula_salrio

USING

p_salhora
p_horastrab
CHANGING p_salliq.

p_salliq = p_salhora * p_horastrab.


ENDFORM.

243773697.doc

60 / 76

Subrotinas so blocos de processamento que so definidos para serem chamados


de outro bloco de processamento atravs de comandos ABAP. As subrotinas
proporcionam ao programa um encapsulamento.
Os parmetros em uma interface so chamados de parmetros formais e o
processamento que voc passa para a subrotina so chamados de parmetros
atuais.
O comando de chamada de subrotinas o PERFORM e a declarao da subrotina
dever estar entre os comandos FORM e ENDFORM.

Visibilidade dos dados

Os parmetros de passagem de valores no so obrigatrios. Se os dados que


sero processados na subrotina forem do tipo global, essa passagem
desnecessria. Se os mesmos forem locais, obrigatria a passagem de valores.
Se um dado declarado como global for redeclarado dentro de uma subrotina, o
dado vlido passa a ser o que foi criado nela. Ao retornar ao programa, o dados
global volta a valer para o resto do programa, sem alterar o valor original.

Chamando Subrotinas - Parmetros

O nmero de parmetros atuais deve de ser o mesmo dos parmetros formais. No


existe parmetro opcional.
O tipo dos parmetros passado para a subrotina definido automaticamente,
sendo assumido, na declarao da subrotina, o tipo dos parmetros passado na
chamada.

Chamando Subrotinas Estruturas


DATA: BEGIN OF wa_dados,
Nome(40),
Endereco(50),
END OF wa_dados.
PERFORM ys_imprime_dados USING wa_dados.
FORM ys_imprime_dados USING p_wa_dados LIKE wa_dados.
WRITE: /

sy-vline, p_wa_dados-nome,
sy-line, p_wa_dados-endereco, sy-vline.

ENDFORM.

243773697.doc

61 / 76

Pode ser, tambm, passado para a subrotinas, as estruturas (estruturas, header line
de tabela interna ou work 62reas) com a descrio da estrutura usando o LIKE ou
TYPE para declara o tipo da mesma.
Se no for passado o tipo da estrutura, os campos dela no sero reconhecida
dentro da subrotinas.

Chamando Subrotinas Tabelas Internas

Se voc quiser passar uma tabela interna para a subrotina, deve-se especificar o
tipo formal do parmetro na declarao do FORM, como se fosse uma estrutura.
Tabelas internas so passadas sem a rea de trabalho, necessitando assim criar
uma como local dentro da subrotina.

243773697.doc

62 / 76

Funes

Os mdulos de funo so subrotinas externas com uma interface transparente. A


interface considerada transparente porque no parte dos comandos do
programa ABAP. A interface definida separadamente e pode ser mantida
independente do cdigo do programa.
Elas so armazenadas no repositrio do sistema R/3.
Cada mdulo de funo deve ser associado a um grupo de funes. Um grupo de
funes um programa ABAP do tipo F, que um programa criado
exclusivamente para conter mdulos de funes.
Para criar mdulos de funes, voc deve usar o Function Builder (transao
SE37).
Os mdulos de funes podem ser executados por diversos programa (mesmo
simultaneamente) ou ento em outro sistema R/3 ou de um programa externo
(RFC).

Chamando Mdulo de Funes


CALL FUNCTION <nome> [IN UPDATE TASK]
[ IMPORT
<variavel/estrutura>
<variavel/estrutura>

<variavel/estrutura>]
[ EXPORT
<variavel/estrutura>
<variavel/estrutura>

<variavel/estrutura> ]
[TABLES
<tabela interna>
<tabela interna>
...
<tabela interna> ]
[ EXCEPTIONS
<erro>
<erro>
...
<erro> ].

243773697.doc

63 / 76

CALL FUNCTION ys_calcula_salario


EXPORT
v_sal_hora
v_horas_trab
IMPORT
v_sal_liquido
EXCEPTION
erro_calculo
variavel_vazia.

Os mdulos de funes no so do tipo executvel.


Quando se chama um mdulo de funo o sistema abre uma rea na memria para
a chamada do programa.
Internamente no mdulo de funo pode existir chamadas a subrotinas.
Todos os mdulos de funes so agrupados em grupo de funes por tema. Um
exemplo seria varias funes para calculo de imposto serem alocados num nico
grupo de funes.
O comando que efetua a chamada de um mdulo de funo o CALL
FUNCTION.
Funes so normalmente chamadas para serem executadas em seqncia ou
sincronamente no programa. Se for necessrio um processamento assncrono,
deve-se incluir o parmetro IN UPDATE TASK. Neste caso o processamento do
mdulo de funo ocorre paralelamente ao do programa ABAP chamador.

Criando grupo de funo

243773697.doc

64 / 76

Para se criar um grupo de funes, acessar a transao SE37. No menu acessar a


opo do menu Saltar / Admin. de Grupos de Funes / Criar Grupo.
O nome do grupo de funo deve ter at 30 caracteres. S poder conter
caracteres alfanumricos e o caractere underscore.
O grupo de funes deve comear com Z_ ou Y_.

Criando um mdulo de funo

Para se criar um mdulo de funo em um grupo de funo existente, basta inserir


o novo nome no campo prprio da transao SE37.
Um mdulo de funo dividido em: dados administrativos, parmetros da
interface, cdigo ABAP e documentao.
O nome mdulo de funo deve ter at 30 caracteres. S poder conter caracteres
alfanumricos e o caractere underscore.
O mdulo de funo deve comear com Z_ ou Y_.
O mdulo de funo s estar ativo no sistema aps voc ativa-lo (igual aos
programas).
Aps ativa-lo, o sistema gera o grupo de funo ao qual ele foi associado.

Elementos de um mdulo de funo

Um mdulo de funo consiste de:


o Informao de administrao: Nome do mdulo de funo, descrio,
grupo de funes, pessoa responsvel, ltimo alterador, tipo de
processamento e classe de desenvolvimento.
o Parmetros da Interface: Voc pode usar objetos de dados elementares,
estruturas ou tabelas internas como parmetros de entrada, sada ou
alterao. Mdulos de funo tm os mesmo mtodos para passagem de
parmetros da rotina FORM.
o Excees: Se um erro ocorre durante o processamento da funo, voc
pode informar a funo qual o tipo de erro que ocorreu.
o Cdigo de programa.
o Documentao: Cada mdulo de funo deve ser documentado
separadamente. A documentao pode ser traduzida e ela ira aparecer na
linguagem definida no logon do usurio.

243773697.doc

65 / 76

Elementos de um mdulo de funo IMPORT

Grande parte das caractersticas de passagem de valor para uma funo segue as
regras das subrotinas.
Diferente das subrotinas, voc pode definir quais parmetros so necessrios ou
no, permitindo que o usurio suprima alguns na chamada destes.
Os parmetros de IMPORT vistos de dentro da funo, so correspondentes aos
parmetros EXPORT na chamada da funo de dentro do programa.
A declarao dos elementos da importao so feitas associando ao dicionrio do
banco de dados ou a tipo declarados em um pool de tipos.
Parmetros de importao no podem ter o seu valor alterado durante o
processamento.

Elementos de um mdulo de funo EXPORT

Segue as mesmas regras dos parmetros de importao, sendo que estes so vistos
como parmetros de IMPORT na chamada da funo de dentro do programa.
Os parmetros de exportao no recebem valores na chamada da funo.

Elementos de um mdulo de funo CHANGING

Segue as mesmas regras dos parmetros de importao/exportao, sendo que


estes so vistos como parmetros de CHANGING na chamada da funo de
dentro do programa.
Parmetros de alterao recebem valores iniciais e podem ter os mesmos alterados
durante o processamento da funo.

Elementos de um mdulo de funo TABLES

Parmetros TABLES servem para a passagem de tabelas internas com valores


preenchidos para dentro da funo.
Os valores dessas tabelas podem ser alterados durante o processamento da funo.

Elementos de um mdulo de funo EXCEPTIONS


CALL FUNCTION XXXXXXX
....
....
EXCEPTIONS
SEM_DADOS
MENOR_ZERO.
FUNCTION XXXXXXXXX.

243773697.doc

66 / 76

IF variavel_a IS INITIAL.
RAIZE SEM_DADOS.
ENDIF.
IF variavel_a < 0.
RAIZE MENOR_ZERO.
ENDIF.

Voc pode antecipar possveis erro e escrever o programa para tratar esses erros
para no causar erro de execuo e conseqentemente abortar o programa. Voc
definir os possveis erros na lista de EXCEPTION na hora da criao da funo e
cham-los dentro do programa atravs do comando RAIZE.

Cdigo do mdulo de funes

Para cada mdulo de funo, o sistema cria um programa template. Os parmetros


da interface e os exceptions que voc definiu so automaticamente inseridos com
linha de comentrio no cdigo do mdulo de funo. Lembre-se que so as
definies da interface que realmente a define e no as linhas comentadas. No
altere as linhas manualmente, se voc alterar as interfaces, o sistema
automaticamente ir alterar as linhas comentadas.
Todos os cdigo ABAP devero estar entre os comandos FORM e ENDFORM.

243773697.doc

67 / 76

Inserindo funes no programa

Quando a verso do mdulo de funo estiver ativa, voc pode cham-lo de


dentro do programa.
Para isso v na opo MODELO do editor ABAP e digite o nome do mdulo de
funo que voc quer inserir.
O sistema ir inserir no cdigo do programa o comando CALL FUNCTION com
o nome da funo escolhida e todos os seus parmetros.
Preencha os parmetros atuais com as informaes na qual voc deseja enviar a
funo para o processamento.
Lembre-se que parmetros de IMPORT so aqueles que a funo ir retornar ao
programa e parmetros de EXPORT so aqueles que enviamos a funo. Essa
viso do programa para a funo.

243773697.doc

68 / 76

Dialogs
Listas

O principal propsito de uma lista a sada de dados de maneira fcil do usurio


entender.
o Elas so independentes de linguagem. Textos e cabealhos aparecem na
linguagem do logon sempre que a traduo possvel.
o As sadas de valores monetrias podem aparecer em diversas moedas.
Voc pode fazer a sada de diversas formas:
o Na tela;
o Na impressora;
o Na internet/intranet: converso automtica ta HTML;
o Gravando em arquivo de diversos tipos.

Comandos de operao em listas


<inserir os botes back/exit/cancel/scroll/print/find>

As listas standards oferecem ao usurio vrios comando de navegao:


o Back
o Exit
o Cancel
o Print
o Find (na lista)
o Save
o Send

Cabealho de Pgina

Cada lista pode ter um cabealho e at 4 linhas de cabealho de coluna. Isto pode
ser criado de uma das seguintes formas:
o Dentro do editor usando as funes de manuteno do elemento de texto.
o Dentro da prpria lista. Voc pode criar o cabealho da lista e cabealho
das colunas, escolhendo no menu a opo Sistema > Lista > Cabealho de
Lista.
o Na prxima vez que startar o programa, o novo cabealho ir aparecer na
lista automaticamente.

243773697.doc

69 / 76

Cores/cones/Smbolos na lista
WRITE <objeto> <opo>.
REPORT xxxxxxxxxxxx.
INCLUDE <LIST>.
::
::
::
WRITE: / ti_tabela-campo COLOR col_key, icon_date AS ICON.

Voc pode configurar vrios atributos de exibio em lista com o comando


WRITE. Um desses elementos a cor, que pode ser ajustado usando a opo de
formatao COLOR <cor>. Voc pode escolher at 7 cores de fundo que so
ativadas pelo nmero ou o smbolo da cor.
0
1
2
3
4
5
6
7

COL_BACKGROUND
COL_HEADING
COL_NORMAL
COL_TOTAL
COL_KEY
COL_POSITIVE
COL_NEGATIVE
COL_GROUP

Fundo
Cabealho
Entradas
Totais
Colunas Chaves
Valores positivos
Valores negativos
Nveis de controle

Para consultar um guia de cores, consulte a transao LIBS.


A adio de AS ICON com o comando WRITE permite a adio de cones na
lista. Para incluir cones na lista, voc deve utilizar o comando INCLUDE
ativando o include <ICON> ou o include <LIST> no incio do programa.
Para saber de todos os cones que esto disponveis, use o HELP do comando
WRITE.

Detalhes de lista

Num programa executvel, pode ser utilizado o bloco de eventos AT LINESELECTION para criar detalhamento de lista ou o comando AT USERCOMMAND para criar detalhamento de funes.
O sistema de execuo ABAP:
o Mostra uma lista bsica depois do apropriado bloco de eventos ter sido
processado (por exemplo, depois do START-OF-SELECTION). Neste
caso, o campo do sistema SY-LSIND contem o valor 0.
o Insere funes associadas ao menu de funes e a uma GUI particular no
campo de sistema SY-UCOMM quando uma entrada de usurio
executada.

243773697.doc

70 / 76

o Processa o bloco de eventos AT LINE-SELECTION usando o cdigo de


funo PICK cada vez que voc der um duplo-clique numa entrada da
lista.
o Processa o bloco de eventos AT USER-COMMAND cada vez que uma
ao for executada (enter ou clique em algum boto da barra).
o Exibe detalhes de lista aps o processamento do evento AT LINESELECTION e aumenta o valor contido no SY-LSIND em 1.
o Executa determinada funo (que pode ser uma atualizao de tabela) aps
o processamento do evento AT USER-COMMAND.
Podem ser criados barras de botes e menus especficos para cada programa
usando o comando SET PF-STATUS <nome>. Ao dar duplo-clique sobre o nome
da barra de status, o MENU EDITOR ser automaticamente aberto para ser
configurado. Neste caso todos os comandos da barra de boto standard sero
desativados durante a exibio da lista (ateno especial para o PICK que deve ser
redefinido para o funcionamento do AT LINE-SELECTION).
SET TITLEBAR <nome> redefine o nome do relatrio que ser impresso.

HIDE Area.
HIDE <lista de campos>.
LOOP AT ti_tabela.
WRITE> /

ti_tabela-campo1,
ti_tabela-campo2 HOTSPOT ON,
ti_tabela-campo3,
ti_tabela-campo4 HOTSPOT ON.

HIDE: ti_tabela-campo2, ti_tabela-campo4.


ENDLOOP.

Quando o evento AT LINE-SELECTION processado, o dados que so passados


para o evento so o que foram exibidos por ltimo na lista. A lista de detalhes
necessita dos dados selecionados pelo usurio para que possa ser processada.
Voc deve usar o comando HIDE para armazenar os dados da linha selecionada.
Voc determina que dados devem ser armazenados da linha escolhida pelo usurio
quando criar a lista bsica.
Insira o comando HIDE logo aps a exibio da lista contendo os campos da
mesmas que deveram ser armazenados no momento da escolha do usurio.
O parmetro HOTSPOT no comando WRITE possibilita a mudana do formato
do cursor no momento em que o mouse para sobre os campos, fazendo o efeito
semelhante de um mouse passando sobre um hiperlink de uma pgina HTML.

243773697.doc

71 / 76

Telas de seleo

Tela de seleo permite ao usurio entrada de critrios de seleo requeridos pelo


programa.
Por exemplo, se voc precisar criar uma lista contendo dados de um grande tabela
de banco de dados, voc pode usar a tela de seleo para restringir a quantidade
de dados que ser selecionada. Em tempo de execuo, o usurio pode entrar com
intervalo de um campo chave ou data para a leitura da tabela e exibio da lista.
Isto um considervel redutor de trfico na rede.
Os comando de uma tela de seleo so o PARAMETERS e o SELECTOPTIONS, sendo que este segundo ser comporta como uma tabela interna,
contendo um range de valores para o processamento. O PARAMETERS funciona
como uma varivel em tela.
A tabela interna criada com o comando SELECT-OPTIONS possui os campos:
SIGN, OPTION, LOW e HIGH.

Search Help

Voc pode referenciar um campo de entrada para um objeto do dicionrio ABAP


contendo os valores possveis de uma entrada.
Podem ser criados novos SEARCH HELPs usando a transao SE11.

Salvando e chamando Variantes

Voc pode definir e armazenar variantes para uma tela de seleo. Para isso,
preencha a tela de seleo e clique no cone de salvar. Defina o ttulo e o nome da
variante e salve novamente.
Variantes permitem selecionar dados de uma tela de seleo de forma fcil para o
usurio.
Uma simples variante pode estar associada para mais de uma tela de seleo.
Para chamar uma variante pr-gravada, basta selecionar o cone na tela de seleo.
Para programas com barra de status definidas internamente, o boto salvar no
funciona como gravao de variantes.

243773697.doc

72 / 76

Usando valores de telas de seleo no comando SELECT


Usando o PARAMETERS
REPORT xxxxxxxxx.
::
::
::
PARAMETERS:
pa_ebeln LIKE vbap-ebeln,
Pa_ebelp LIKE vbap-ebelp.
::
::
SELECT *
FROM vbap
INTO TABLE ti_vbap
WHERE
ebelp = pa_ebeln
AND
ebelp = pa_ebelp.
::
::

Se voc utilizou o comando PARAMETERS no programa com um campo de


entrada como um campo chave para a tabela, voc pode utiliza-lo na clausula
WHERE do comando SELECT para limitar os valores na seleo.
Com o uso dos valores do comando PARAMETERS voc pode utilizar os
operadores lgicos validos para as variveis.

Usando o SELECT-OPTIONS
REPORT xxxxxxxxx.
::
::
::
SELECT-OPTIONS: pa_ebeln for vbap-ebeln,
Pa_ebelp for vbap-ebelp.
::
::
SELECT *
FROM vbap
INTO TABLE ti_vbap
WHERE
ebelp IN pa_ebeln
AND
ebelp IN pa_ebelp.

Se voc utilizou o comando SELECT-OPTIONS no programa com um campo de


entrada como um range de chaves para a tabela, voc pode utiliz-lo na clausula
WHERE do comando SELECT para limitar os valores na seleo.

243773697.doc

73 / 76

Com o uso dos valores do comando PARAMETERS voc pode utilizar o


operador lgico IN na comparao da clausula WHERE.
As condies numa tabela interna declarada usando o SELECT-OPTIONS so
interpretadas da seguinte forma:
o Se a tabela interna estiver vazia, a condio ser sempre verdadeira e
todos os registros sero selecionados sem que haja restrio.
o Se na tabela interna contiver somente valores simples, o resultado ser a
composio da condio: <valor 1> ou <valor 2> .... ou <valor N>.
o Se na tabela interna contiver excluso de valores, o resultado ser a
composio da condio <NOT valor 1> e <NOT valor 2> .... e <NOT
valor N>.
o Se na tabela interna contiver ambos, o resultado ser a composio da
condio <valor 1> ou <valor 2> .... ou <valor N> e <NOT valor 1> e
<NOT valor 2> .... e <NOT valor N>.
o Se na tabela interna contiver range, o resultado ser a composio da
condio <ENTRE valor1 e valor2>.

Criando uma GUI Graphic User Interface


Barra de Status
SET PF-STATUS <nome>.
SET PF-STATUS BARRA.

Pode-se criar uma barra de status das seguintes formas:


o Atravs da navegao diretamente do cdigo ABAP (duplo clique sobre o
nome da barra)
o Usando o MENU PAINTER.
Quando criamos uma barra de status, voc pode criar um novo menu, uma nova
barra de botes da aplicao ou teclas de acesso rpido a opes do menu ou da
barra.
Nome de status pode ter no mximo 20 caracteres.
Pela escolha do tipo da barra de status, voc determina se a mesma se refere a
uma lista ou a uma tela.

243773697.doc

74 / 76

No primeiro nvel, definiremos as opes do menu. O boto fundir normas


acrescenta as opes Sistema e Ajuda, que aparecem em todos os menus no
R/3.
No segundo nvel, iremos criar os botes da aplicao.

No terceiro nvel so os botes standards do R3 que iremos redefinir.


No quarto nvel esto as teclas de acesso rpido recomendadas. Neste nvel
iremos definir a opo PICK ou F2 para ativar listas interativas.

243773697.doc

75 / 76

No quarto nvel aparece todas as teclas de funo, inclusive as que j esto


associadas a outro item.

TITLES
SET TITLEBAR <nome>.
SET TITLEBAR <100>.

Pode-se criar um ttulo das seguintes formas:


o Atravs da navegao diretamente do cdigo ABAP (duplo clique sobre o
nome da barra).
o Usando o MENU PAINTER.
Nomes de ttulos podem ter at 20 caracteres.

243773697.doc

76 / 76

También podría gustarte