Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

ABAP Curso Básico

Fazer download em doc, pdf ou txt
Fazer download em doc, pdf ou txt
Você está na página 1de 77

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

5
INTEGRAÇÃO 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
PRINCÍPIO DO CLIENT/SERVER.........................................................................................8
CONFIGURAÇÕES CLIENT/SERVER NUM SISTEMA R/3......................................................8
HIERARQUIA DE TRÊS 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 FUNÇÕES...............................................................................................14
AJUDA DE CAMPO..........................................................................................................14
HELP ON-LINE................................................................................................................16
SYSTEM FUNCTIONS.......................................................................................................16
Services......................................................................................................................16
Utilities......................................................................................................................16
KERNEL DO SISTEMA R/3 18
INTERFACE DE APRESENTAÇÃO......................................................................................18
RDBMS – RELATIONAL DATABASE MANAGEMENT SYSTEMS......................................18
INTERFACE DE BANCO DE DADOS DO SISTEMA R/3......................................................19
PROCESSANDO REQUISIÇÕES DO USUÁRIO.....................................................................20
APPLICATION SERVICES..................................................................................................21
TRANSAÇÕES..................................................................................................................21
LUW (LOGICAL UNIT OF WORK)..................................................................................21
REQUISITANDO UM LOCK...............................................................................................21
OBJETO DE LOCK...........................................................................................................22
PROCESSAMENTO EM BACKGROUND.............................................................................22
SERVIÇOS DE IMPRESSÃO...............................................................................................23
INSTANCIA R/3...............................................................................................................23
ABAP DICTIONARY 24
OBJETOS DO DICIONÁRIO................................................................................................24
CONCEPÇÃO DUAL LEVEL.............................................................................................24
TABELAS TRANSPARENTES.............................................................................................24
ESTRUTURAS..................................................................................................................25

435312240.doc 1 / 77
VIEWS.............................................................................................................................25
SEARCH HELP.................................................................................................................25
ABAP 26
CONCEITO.......................................................................................................................26
REPOSITÓRIO..................................................................................................................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
Declarações referenciando ao dicionário.................................................................32
Telas de seleção.........................................................................................................33
Open SQL..................................................................................................................33
Messages...................................................................................................................34
Listas.........................................................................................................................34
Sintaxes......................................................................................................................35
Comentários..............................................................................................................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 Dicionário ABAP............................................................................42
Comando TABLES.....................................................................................................43
Literais e contantes...................................................................................................43
Símbolo de Texto........................................................................................................43

435312240.doc 2 / 77
Transferindo Valores.................................................................................................44
Comando MOVE..............................................................................................44
Comando MOVE-CORRESPONDING......................................................44
Regras de Conversão.................................................................................................45
Calculando Valores...................................................................................................46
Sub-Campos...............................................................................................................46
Calculando Datas......................................................................................................47
Expressões Lógicas...................................................................................................47
Estrutura CASE.........................................................................................................48
Loops DO e WHILE..................................................................................................49
Comandos CHECK e EXIT.......................................................................................50
FERRAMENTAS DE TESTE 51
DEBUG............................................................................................................................51
Importantes funções do Debug..................................................................................51
Breakpoint.................................................................................................................52
TABELAS INTERNAS 53
DEFINIÇÃO......................................................................................................................53
EXPANSÕES DINÂMICAS..................................................................................................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
MODULARIZAÇÃO DE PROGRAMAS.....................................................................................................61
ESTRUTURAS DE UM PROGRAMA ABAP........................................................................61
TIPOS DE BLOCOS DE PROCESSAMENTO.........................................................................61
MODULARIZANDO..........................................................................................................61
Eventos em programas executáveis...........................................................................61
Subrotinas..................................................................................................................62
Visibilidade dos dados...............................................................................................62
Chamando Subrotinas - Parâmetros.........................................................................63

435312240.doc 3 / 77
Chamando Subrotinas – Estruturas..........................................................................63
Chamando Subrotinas – Tabelas Internas.................................................................63
FUNÇÕES........................................................................................................................64
Chamando Módulo de Funções.................................................................................64
Criando grupo de função..........................................................................................65
Criando um módulo de função..................................................................................66
Elementos de um módulo de função..........................................................................66
Elementos de um módulo de função – IMPORT.......................................................67
Elementos de um módulo de função – EXPORT.......................................................67
Elementos de um módulo de função – CHANGING..................................................67
Elementos de um módulo de função – TABLES........................................................67
Elementos de um módulo de função – EXCEPTIONS..............................................67
Código do módulo de funções...................................................................................68
Inserindo funções no programa.................................................................................69
DIALOGS 70
LISTAS............................................................................................................................70
Comandos de operação em listas..............................................................................70
Cabeçalho de Página................................................................................................70
Detalhes de lista........................................................................................................71
HIDE Area.................................................................................................................72
Telas de seleção.........................................................................................................73
Search Help...............................................................................................................73
Salvando e chamando Variantes................................................................................73
Usando valores de telas de seleção 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

435312240.doc 4 / 77
Basis Technology Overview

Integração R/3

 O sistema R/3 é baseado num modelo que cobre diversas áreas 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 Distribution;
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 componentes do sistema R/3 utilizam a tecnologia “UP-TO-THE-MINUTE”
com compreensivas funções de negócio. O alto nível de integração de processos
permite que todas as funções sejam acessadas diretamente através do sistema e

435312240.doc 5 / 77
portanto da companhia. Quando se instala o sistema R/3, todos os dados são
integrados usando uma base de dados comum.
 Os processos do sistema R/3 não são restritos a um modulo individual. Todos os
dados e funções estão conectados uns aos outros.

Business Framework

 Business Framework é uma estratégia da SAP para produção de arquitetura de


software.
 Ele trabalha com componentes de negócio, que são softwares modulares que
podem ser configurados individualmente.
 Isso faz com que a empresa possa implementar novos módulos, sem interromper o
processo que esta ativo.
 Exemplos de componentes de negócio são 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 negócios independente da versão, fácil integração
com componentes para Internet e Intranet, fácil conexão entre o sistema R/3 e
outros Sistemas, tudo isso sem interromper o negócio em operação

Componentes do Business Framework

 Os principais componentes são:


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, através do
Business Application Programming Interfaces (BAPI). A BAPI também
disponibiliza funções para aplicações externas;
 Para distribuir informações de negócios no Business Framework, existe a
tecnologia Application Link Enabling (ALE). O ALE garante a integração entre os
diversos componentes do negócio.

R/3 como um sistema aberto

 O sistema R/3 garante portabilidade entre aplicações, dados e interfaces do


usuário, utilizando tecnologias como:
o TCP/IP (protocolo de comunicação de redes);
o EDI (Eletronic Data Interchange) – Processo que garante acesso aos dados
entre diferentes Sistemas;

435312240.doc 6 / 77
o OLE (Object Linking and Embedding) – Integra aplicativos para PC com
o R/3.
 O sistema R/3 também disponibiliza outras ferramentas de comunicação para
outros Sistemas:
o RFC (Remote Function Call) – utiliza protocolo CPI-C (IBM) para
facilitar a comunicação e processamento de aplicações e chamadas entre o
R/3, R/2 e outros Sistemas;
o ALE (Application Link Enable) – circula os processos autônomos e
integra o R/3, R/2 e outros sistemas que estão linkados.

Client/Server – Escalabilidade do sistema R/3

Presentation

Application

Escalabilidade

Database

435312240.doc 7 / 77
 O sistema R/3 tem uma arquitetura de software modular, que engloba
o princípio a arquitetura Client/Server;
 Este princípio permite separar os servidor de banco de dados do
servidor de aplicação;
 A escalabilidade permite ainda:
o Instalação de servidores adicionais;
o Servidores paralelos;
o Distribuir os usuários por servidores dedicados.

Princípio do Client/Server

 Na terminologia SAP, um componente de software providencia um serviço (visão


de orientação por software). Esse tipo de componente pode consistir de um
processo ou um grupo de processos e ele é chamado de Servidor para esse
serviço.
 Componentes de softwares que usam esse serviço são chamados de CLIENT. Ao
mesmo tempo, alguns CLIENTS podem ser chamados de servidores para serviços
específicos.

Configurações Client/Server num sistema R/3

 Os principais serviços num sistema de aplicação de negócios são:


o Presentation Services;
o Application Services;
o Database Services.
 Na configuração CENTRAL do sistema R/3, todo processamento de requisições é
executado por um Host. Isso corresponde ao processamento clássico do
mainframe.
 Na configuração TWO-TIER (duas camadas), o servidor de banco de dados e
aplicações são um só, e o de apresentação separado (normalmente estações
Windows). Usado para desenvolvimento de programas.
 Na configuração THREE-TIER (três camadas), o servidor de banco de dados é
separado do servidor de aplicação e dos servidores de apresentação.

435312240.doc 8 / 77
Hierarquia de três camadas

 Se for utilizada a distribuição do sistema R/3 de acordo com o princípio de


Client/Server, os componentes do sistema R/3 expandem para a hierarquia de três
camadas:
o O servidor de banco de dados é instalado num host central, onde os
processos de banco de dados são executados;
o Vários servidores de aplicação podem ser conectados ao servidor de banco
de dados;
o Vários servidores de apresentação são conectados aos servidores de
aplicação. Esses servidores são chamados de frontend (workstation).

435312240.doc 9 / 77
Plataformas para o sistema R/3

Unix System
HARDWARE Bull Bull/Zenith IBM AS/400 IBM S/390
IBM Compac
Digital Digital
SNI HP (Intel)
HP IBM (Intel)
SUN

SISTEMAS AIX Windows NT OS/400 OS/390


OPERACIONAIS Reliant
Digital Unix
Unix (SINIX)
HP-UX
Solaris
BANCOS DE DB2 DB2 DB2 FOR DB2 FOR
DADOS INFORMIX INFORMIX AS/400 OS/390
ORACLE ORACLE
MS SQL
DIALOG Windows (3.1/95/NT/ME/XP) OSF/Motif,
(SAPGUI) OS/2 Presentation Manager, Macintoch, Java
LINGUAGENS ABAP, C, C++, HTML, Java

435312240.doc 10 / 77
Navegando no R/3

Logon

 O sistema R/3 é um sistema cliente. Com a concepção de cliente você pode


controlar várias sessões separadas ao mesmo tempo em um mesmo sistema R/3.
Cada sessão só pode acessar dados no cliente que foi selecionado no logon.
 Para você logar no sistema R/3 você deve ter um usuário criado no client
desejado.
 Por razões de segurança, deve ser informada também uma senha de acesso.
 O sistema R/3 é multilingual. A linguagem default é EN (Inglês) (exceto se for
configurado para outra linguagem). Use PT para português, DE para alemão ou
SP para espanhol, por exemplo.
o Nem todas as linguagens estão disponíveis. Isso depende da tradução
selecionada no momento da instalação.

435312240.doc 11 / 77
Conceito de Mandante e Client no sistema R/3

 Mandante é, normalmente a máquina em que está instalado o sistema R/3. Num


projeto, podem existir diversos Mandantes. Os mais comuns são os mandantes de
Desenvolvimento, Qualidade e Produção.
 Em cada mandante pode 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 do desenvolvimento
e outro para teste de configuração.
 Cada client trabalha de forma independente para configuração, ou seja programas
e customização (ajuste do sistema R/3 para particularidades da empresa).
 O client 000 é definido como um standard do SAP e não 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 usuário (definido através da user-name).
 No item favoritos, aparece as transações mais comumente acessadas, pelo usuário.
Essas transações são inseridas MANUAMENTE pelo usuário, através da opção:
FAVORITOS / INSERIR TRANSAÇÃO, do menu principal.
 No item MENU SAP aparece o menu dos módulos do sistema R/3.
 Todo o menu aparece em forma de árvore, sendo expandido à medida que o
usuário seleciona a opção, sendo que ao aparecer a transação, não terão mais
opções a exibir e sim o aplicativo.
 Todo o menu é configurado pelo usuário, podendo exibir ou inibir qualquer item.
 Essa estrutura de menu é chamada de SAP EASY ACCESS.

435312240.doc 12 / 77
Estrutura de uma tela no sistema R/3

 Uma tela de aplicativo (transação) do sistema R/3 é composta pelos seguintes


elementos:
o Title Bar: Exibe a descrição da tarefa que esta sendo executada no
momento;
o Command Field: Permite ao usuário escolher a tarefa
automaticamente sem a necessidade de acionar botões. Existem comandos
especiais para serem executados dento do objeto;
o Options: Permite ao usuário alterar a interface do sistema R/3 para uma
configuração pessoal;
o Standard Toolbar: Onde estão localizados os ícones de navegação mais
utilizados (back, exit e cancel), ícone de salvar, ícone de help e ícone de
imprimir;
o Application Toolbar: Onde estão localizados os icons de navegação
específicos da transação;
o Status bar: Exibe informações sobre o status corrente, como hora, data,
transação, client, sessão, etc;

435312240.doc 13 / 77
Option
s
Title Bar

Command
Field Standard
Toolbar

Applicatio
n Toolbar

Status
bar

Selecionando funções

 Você pode selecionar funções de várias formas:


o Usando o mouse para selecionar funções diretamente no menu;
o Usando teclas de acesso rápido (Ctrl + char ou ALT + char)
o Entrando com a transação na Command Field
 Os comandos mais comuns são:
 /N+transação: fecha a transação corrente e abre outra;
 /O+transação: abre nova sessão com a transação
informada;
 /I: deleta a sessão corrente;
 /NEX: fecha todas as sessões sem confirmação;
 transação: se estiver no menu do logon, executa a
transação na mesma sessão.

Ajuda de Campo

 Ao pressionar a tecla F1 sobre campos, mensagens, menus ou funções, irá


aparecer a explicação técnica sobre o item selecionado.

435312240.doc 14 / 77
 Informações técnicas como nome do campo, tabela, programa e tela, também
podem ser exibidas apertando a tecla F9, após aparecer a tela de explicação
técnica.
 Pode-se ir ao Help selecionando informações adicionais.

435312240.doc 15 / 77
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 opção HELP do
menu horizontal.
 A partir da versão 4.0, help foi disponibilizado em versão HTML.

System Functions

Services

 Na opção Services do item System Functions você encontra as seguintes opções:


a. Reporting Inicia o modo de Reporting;
b. Query Inicia a chamada de Queries;
c. Output Controller Inicia o controle de Spool de impressão;
d. Table Display Inicia a exibição/manutenção de tabelas;
e. Batch Input Gerenciamento de sessões de Batch Input;
f. Jobs Gerenciamento de fila de Jobs;
g. Sap Service Logon no SAP OSS System.

Utilities

 Na opção Utilities, do item System Functions, você encontra as seguintes opções:


a. Depuração Tela;

435312240.doc 16 / 77
b. Depuração ABAP/4;
c. Depuração Sistema;
d. Consumo de Recursos;
e. Fila automática Processamento Síncrono;
f. Exibição de Performance;
g. Análise de Tempo de Execução;
i. Executar;
ii. Ativar;
iii. Desativar;
h. Exibir Verificação de Autorização.

435312240.doc 17 / 77
Kernel do Sistema R/3

Interface de Apresentação
Workstation / PC

Presentation
X Terminal X Terminal

X Terminal WINDOWS
MANAGER

SAPGUI SAPGUI
SAPGUI

LAN / WAN NETWORK

SAPGUI SAP DISPATCHER


Application

 A interface de apresentação SAPGUI (GUI – Graphical User Interface)


implementa a plataforma específica de funções de entrada e saída do sistema R/3.
A SAPGUI é utilizada por várias plataformas e proporciona as mesmas funções
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 nível de apresentação e o nível de aplicação não é
somente preparar telas, mas compactar informações usando elementos de controle
e entradas do usuário.

RDBMS – Relational Database Management Systems

 Sistema de gerenciamento de banco de dados relacionais (RDBMS), são


geralmente utilizados para gerenciar grandes quantidades de dados.
 Um RDBMS salva os dados e seus relacionamentos entre outros dados numa
tabela bidimensional.
 O SQL (Structured Query Language) é responsável pela organização, acesso e
manipulação dos dados.

435312240.doc 18 / 77
 Diferentes empresas produzem produtos RDBMS. Esses produtos não são
totalmente compatíveis.
Interface de Banco de Dados do Sistema R/3
APPLICATION SERVER DATABASE SERVER

ABAP INTERPRETER DB INTERFACE LOCAL BUFFER DATABASE

SELECT *
FROM .... OPEN SQL

Native SQL

App. data
DB Data

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

DB data

 Na linguagem de programação 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 a aplicação escrita em ABAP independe
do banco de dados usado.
 Quando os comandos do OPEN SQL são convertidos, a interface do banco de
dados checa a sintaxe dos comandos e verifica se os dados não estão buferizados,
pois desta forma otimiza o acesso a base de dados.
 Os dados acessados mais freqüentemente são armazenados no buffer e neste caso,
os dados não são acessados na base de dados.

435312240.doc 19 / 77
Processando requisições do usuário
PRESENTATION

SAP
GUI SAP
GUI SAP
GUI SAP
GUI

APPLICATION
DISPATCHER

WORK WORK
PROCESS WORK PROCESS
PROCESS

DATABASE

DB PROCESS
DB

 O processo central do nível de aplicação do sistema R/3 é o SAP DISPATCHER


que controla as instâncias. Junto com o sistema operacional ele controla os
recursos para as aplicações do sistema R/3.
 A principal função do dispatcher é distribuir abertura para as Work Process,
conectando o nível de apresentação e organizando a comunicação.
 Entradas de dados em tela feita pelo usuário no nível de apresentação são
convertidas para um formato próprio e enviado para o dispatcher. Os
processamentos das requisições são salvos pelo dispatcher em filas de requisições
e processadas.
 O dispatcher distribui as requisições uma após a outra para as Work Processes,
avaliadas. Os dados são processados nas work processes. Não existem work
processes, fixadas para determinados usuários.
 Uma vez os dados processados, os resultados são enviados das work processes
para o dispatcher e dele para a SAPGUI. A SAPGUI interpreta os dados e
converte a saída para o usuário.
 Quando o sistema R/3 é inicializado, o dispatcher executa algumas outras
funções: ele lê os parâmetros do sistema, gera lista de áreas, starta work
processes e loga-se no servidor de mensagens.

435312240.doc 20 / 77
Application Services

 A execução de sistema R/3 é um grupo de processos paralelos e corporativos. Em


cada servidor de aplicações, esses processos incluem o dispatcher com um
número 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 vários tipos de work process, o sistema R/3 providencia dois serviços
adicionais para a comunicação interna e externa:
o A comunicação entre o servidor de mensagens entre o dispatcher
distribuidor com o sistema R/3 é pré-requisito para escalabilidade de
vários servidores de aplicações que estão processando em paralelo;
o O servidor de gateway (também chamado de CPI-C handler) permite
comunicação entre R/3, R/2 e Sistemas de aplicações externos.

Transações

 Transações são unidades de processamento que executam determinadas funções


do sistema R/3;
 Exemplos típicos são cadastro de materiais, criação de ordens, pedidos de
material, venda, etc.
 Transações podem estar ligadas a reports, on-lines, manutenção de tabelas e
programas de desenvolvimento e configuração.

LUW (Logical Unit of Work)

 O sistema corrente de banco de dados não suporta todo o fluxo de transações


vindas de todos os processos. É preciso diferenciar entre o processamento
elementar no sistema R/3 (SAP-LUW) e no sistema de banco de dados (DB-
LUW). A DB-LUW é extremamente executada. Ela precisa garantir que o banco
de dados esteja consistente.
 Ao iniciar uma transação SAP é inicializada também uma SAP-LUW. A SAP-
LUW é completada pelo comando “Commit Work” ou pelo fim da atualização
assíncrona.
 A técnica predominante usada pela SAP-LUW é a atualização assíncrona.

Requisitando um Lock

435312240.doc 21 / 77
 O mecanismo de lock presente no sistema de banco de dados relacionais não é
geralmente suficiente para uma transação (como ordens de vendas) que pode
utilizar várias tabelas no banco de dados. O sistema R/3 tem uma função de
gerenciamento de lock que é executado pela work process de enqueue
(travamento). Ele previne que várias aplicações acessem o mesmo objeto.
 A work process de enqueue gerencia os locks usando uma tabela de lock
armazenada na memória 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 requisição é rejeitada. Desta forma a aplicação avisa o
usuário que a requisição não foi possível.
 Como a janela de diálogo e a work process de enqueue não estão localizadas no
mesmo servidor de aplicação, esse dois processos se comunicam através do
servidor de mensagens.

Objeto de Lock

 Para que o sistema R/3 execute uma requisição de lock, você deve definir
primeiro um objeto de lock no dicionário ABAP. O objeto de lock contém tabelas
que terão entradas travadas. Um objeto de lcok consiste de uma tabela primária.
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 usuário que
solicitou.
 Se o objeto de lock está ativado, o sistema gera uma função de ENQUEUE e uma
de DEQUEUE .

Processamento em Background

 Processamento em background são análogos a processamento on-line.


 Eles são schedulados na forma de Jobs. Cada job consiste de um ou mais passos
que são processados seqüencialmente. 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 também.
 O job não é executado no presentation server.

435312240.doc 22 / 77
Serviços de Impressão

 Spooling é o termo utilizado para se referir a buferização de dados para


dispositivos de saídas como impressoras, faxes e outros dispositivos similares. Em
sistemas distribuídos, a administração de rede é necessária para este processo.
 O mecanismo de spool do sistema R/3 pode suportar requisições para impressão
tanto local como em rede.
 Requisições de spool podem ser geradas em modo de diálogo ou durante o
processamento em background.

Instancia R/3

 Uma instancia é uma unidade administrativa que combina componentes do


sistema R/3 que providencia um ou mais serviços. Os serviços providenciados por
uma instancia são inicializados ou interrompidos ao mesmo tempo.
 Um sistema R/3 central consiste de uma simples instancia que providencia todos
os serviços necessários para o funcionamento do sistema R/3.
 Cada instância tem sua própria área de buffer.

435312240.doc 23 / 77
ABAP Dictionary

Objetos do dicionário

 As definições básicas dos objetos no ABAP Dictionary são tabelas, domínios e


elementos de dados. Domínios descrevem os atributos técnicos dos campos da
tabela (tipo de campo, tamanho) enquanto elemento de dados contém a definição
semântica dos campos (descrição por exemplo).
 Campos não são objetos independentes e não podem existir sem as tabelas.
Necessitam da existência de um elemento de dados.
 Elementos de dados pré-supõe-se a existência de um domínio.
 Domínios podem ser definidos sem referências a outros objetos do dicionário.

Concepção Dual Level

 No ABAP Dictionary vários campos podem ter o mesmo elemento de dados,


sendo ou não da mesma tabela.
 Vários elementos de dados podem ter o mesmo domínio associado, tendo diversas
definições para os mesmos.

Tabelas Transparentes

ABAP Dictionary

Campo 1Campo 2Campo 3Campo 4

Campo 1Campo 2Campo 3Campo 4 DATABASE – definição


física de tabelas

435312240.doc 24 / 77
 Quando se cria e ativa uma tabela no dicionário, uma tabela transparente é criada
automaticamente no banco de dados. Este processo traduz a descrição da tabela
no banco de dados numa linguagem usada pelo sistema do banco de dados.
 As tabelas do banco de dados têm os mesmos nomes no ABAP Dictionary. Os
campos também têm os mesmos nomes em ambos. Os tipos de dados no ABAP
Dictionary são traduzidos para os tipos de dados correspondentes nos sistemas de
banco de dados.

Estruturas

 Além de definição de tabelas para armazenamento de dados, pode-se definir


estruturas de dados que são utilizadas, por exemplo, para passagem de valores
entre programas ou para serem anexadas em tabelas transparentes.
 Estruturas não têm objetos correspondentes no banco de dados.
 Estruturas são 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 execução de
programas.
 Campos de entrada e saídas de dados em telas também podem ser referenciados a
estrutura de dados.
 Características de campos são as mesmas de uma tabela.

Views

 Views são visões especificas de diferentes tabelas do ABAP Dicitionary. Uma


view pode conter uma simples visão de alguns campos de uma única tabela ou
campos de diversas tabelas.
 Visões permitem que sejam selecionados campos de diferentes tabelas para serem
exibidos ao usuário na forma que ele requer quando estiver trabalhando no
sistema R/3.
 Visões são utilizadas em programas ABAP ou em Search Help.

Search Help

 O Search Help é um objeto do ABAP Dicitionary que permite a exibição de


valores válidos a um determinado campo.
 O Search Help serve com validador de valores, checando a existência desses
valores no banco de dados.
 Nem todos os campos possuem Search Help associado. Em campos com
referência (tabelas de verificação), o Search Help aparece automaticamente.

435312240.doc 25 / 77
 Para associar o Search Help, basta teclar o F4 com o cursor sobre o campo
desejado.

ABAP

Conceito

 ABAP é a linguagem de programação criada para o desenvolvimento de


aplicações pela SAP.
 Com a linguagem ABAP, o desenvolvedor não deve se preocupar com a
comunicação entre os diferentes níveis, somente com as dialogs com o usuário.
 O ABAP possui um conjunto de comandos chamados de OPEN SQL específico
para acesso a banco de dados.
 Todos os objetos do ABAP Workbench são armazenados no repositório do R/3.
Isto inclui objetos como programas, telas e tabelas.
Repositório

 Todos os objetos desenvolvidos com ferramentas de desenvolvimento existentes


no ABAP Workbench são classificados de Repositório de objetos e são
armazenados no Repositório do R/3.
 O repositório do R/3 é uma parte especial do sistema central de banco de dados do
SAP.
 Cada repositório de objetos pode ser apontado para uma classe de
desenvolvimento quando ele é criado.

435312240.doc 26 / 77
Ferramentas do Workbench

 O ABAP Workbench contem várias ferramentas que permite você editar


repositórios de objetos específicos. Os mais importantes são:
o ABAP Editor: para escrever e editar códigos de programas;
o ABAP Dicitionary: para editar tabelas e outros objetos do ABAP
Dictionary;
o Menu Painter: para desenhar as interfaces do usuário (barra de
menu, barra de ferramentas standards, barra de ferramentas de aplicações);
o Screen Painter: para desenhar telas e diálogos com o usuário;
o Function Builder: para programar módulos de funções.

Transporte de Objetos

 Objetos do repositório são automaticamente linkados ao sistema de transporte


quando eles são associados a uma classe de desenvolvimento.
 Depois que o objeto estiver terminado ele pode ser transportado para os
mandantes de testes e produção.
 O ABAP Workbench possui uma ferramenta chamada Workbench Organizer, que
organiza todos os desenvolvimentos em tarefas pertinentes para o repositório de
objetos.

435312240.doc 27 / 77
Desenvolvendo um projeto do WBO

 Quando o projeto inicia-se, o líder do projeto cria uma CHANGE REQUEST e


anexa alguns desenvolvedores a ela.
 Depois, o WBO cria as TASKS (tarefas) para cada desenvolvedor. Todas as
tarefas que são desenvolvidas pelo desenvolvedor podem ser apontadas para a
CHAGE REQUEST e anexados na TASK própria dele.
 Não é necessário que todos os objetos desenvolvidos por um desenvolvedor
estejam na mesma TASK, sob a mesma CHANGE REQUEST. Para cada tarefa
(por exemplo, relatório de clientes, on-line de entrada de notas fiscais) podem
estar associadas a uma CHANGE REQUEST diferente e, portanto, deverá estar
com uma TASK associada ao desenvolvedor.

435312240.doc 28 / 77
Finalizando um projeto

 Quando o desenvolvedor finaliza determinado desenvolvimento, ele deve liberar a


TASK.
 Após o desenvolvedor liberar a TASK, o líder do projeto libera a CHAGE
REQUEST. Neste momento todas as travas (LOCKS) do objeto são removidas e
ele pode ser alterado novamente, mas associado a outra CHANGE
REQUEST/TASK.
 Após 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 importação.

435312240.doc 29 / 77
Criando Classes de Desenvolvimento

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


Repositório (na versão 4.6 ele se encontra na transação SE80).
 Você deve entrar com algumas informações quando vai criar uma nova classe de
desenvolvimento:
o Short Text: nome técnico da classe;
o Transport Layer: criado pelo administrador do sistema, uma transport
layer determina para qual sistema seu repositório de objetos será
transportado. vários transport layers podem ser criados no sistema R/3.
o Application Component: o repositório é divido primeiro em componente
de aplicação e depois em classe de desenvolvimento.

Criando programas em ABAP

Overview

 Quando se cria um novo programa, primeiro deve ter uma série de detalhes
administrativos.
 Todos os programas devem apontar para uma classe de desenvolvimento. Isso faz
a classificação lógica do programa. Isso indica em qual repositório o programa
será criado.
 Em seguida, vários 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 repositório cronologicamente.

435312240.doc 30 / 77
 Um programa só poderá ser editado após a determinação desses detalhes. A
ferramenta de criação utilizada para o programa determina em qual ordem estas
informações devem ser inseridas.

Atributos

 Os mais importantes atributos são:


o Título do programa
Deve ser informado um pequeno texto para descrever a função do
programa, pois essa informação irá aparecer na próxima edição do
programa para identifica-lo.
o Tipo
Identifica com o programa pode ser executado. Somente o tipo 1
(programa executável) pode ser executado diretamente.
o Status
Esta informação atua como um log sobre o status de desenvolvimento do
programa.
o Aplicação
Esta informação exibe o código de identificação do programa.
 Você pode utilizar essas informações para procurar por um programa em
particular no sistema de informação do repositório.

435312240.doc 31 / 77
Editor

 O editor de programas do R/3 é de fácil utilização e engloba muitas funções


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 Função 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 funções serão melhores esplanadas durante o curso.

Declarações referenciando ao dicionário

 O dicionário ABAP descreve tipos de dados e estruturas.


 Todas as aplicações têm acesso ao dicionário ABAP.
 Navegação também suporta referências ao dicionário
 O mais importante objeto do dicionário é a estrutura lógica de uma tabela de
banco de dados.
 Referências ao dicionário, também podem ser utilizadas nos programas ABAP
para criar dados internos para processamento de dados do banco de dados.
 Exemplo:
o DATA lc_hora LIKE sy-uzeit.
a declaração da variável lc_hora recebe as características do campo
UZEIT da tabela SY (SYST).

435312240.doc 32 / 77
o TABLES: VBAK, VBAP.
as tabelas VBAK e VBAP estão sendo instanciadas para a utilização no
programa.

Telas de seleção

 Os comandos PARAMETERS e SELECTION-SCREEN criam automaticamente


tela de seleção para que o usuário informe valores que irão interferir/direcionar a
execução do programa.
 O comando PARAMETERS cria a opção do usuário informar somente um valor
único para a seleção.
Sintaxe: PARAMETERS <nome do objeto> LIKE <referência ao dicionário>.
Exemplo: PARAMETERS pa_data LIKE sy-datum.
 O camando SELECT-OPTIONS cria a opção do usuário 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 <referência ao dicionário>.
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 adição do LIKE. Este objeto é
usado como uma área de trabalho para os dados que o programa ABAP lê da
tabela do banco de dados.
 A linguagem ABAP contém uma série de comandos chamados de OPEN SQL. Os
comandos Open SQL são utilizados para acesso a tabelas de banco de dados.
 Um exemplo de comando Open SQL é o comando SELECT que lê colunas
específicas (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.


435312240.doc 33 / 77
SELECT SINGLE ebeln ebelp matnr menge
FROM vbap
INTO CORRESPONDING FIELDS OF wa_vbap
WHERE ebeln = pa_ebeln
AND ebelp = pa_ebelp.

Messages

 O comando message é utilizado para enviar mensagens ao usuário


 Existem mensagens do tipo E (error), I (information) ou W (warning).
 Mensagens do tipo E exibem no rodapé da tela a informação ao usuário e pára
o processamento do módulo que esteja sendo executado.
 Mensagens do tipo I exibem uma tela modal com a mensagem, só seguindo o
processamento após o fechamento desta tela.
 Mensagens do tipo W exibem no rodapé da tela a informação ao usuário e
segue o processamento após o usuário pressionar <Enter>.
 As mensagens são gravadas em uma área chamada “Classe de Mensagens” e
são referenciadas através do número da mensagem na classe e pelo nome da
própria classe.




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

 A linguagem ABAP possui comandos para criar listas: WRITE, SKIP, ULINE, são
exemplos de alguns deles.
 O comando WRITE exibe o conteúdo de um campo (ou variável), formatado de
acordo com o seu tipo, formando assim uma lista (relatório).
 O comando SKIP imprime uma linha em branco na lista.
 O comando ULINE imprime uma linha continua, cobrindo toda a largura do
relatório.




SKIP.

435312240.doc 34 / 77
WRITE: / wa_vbap-ebeln, wa_vbap-ebelp.
ULINE.
WRITE: / wa_vbap-matnr, wa_vbap-menge.
ULINE.


Sintaxes

 Cada comando é finalizado por ponto.


 A primeira palavra do comando é chamada de palavra chave.
 Alternância entre maiúscula e minúscula não interfere no comando.
 Um comando não tem necessidade de se encerrar na mesma linha.
 Todos os comando possuem HELP, sendo acionado pressionando a tecla F1 sobre
o mesmo.
 Existe a função de verificação 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 sy-subrc = 0 .
MESSAGE I027(FI) .
ENDIF .

ULINE .
WRITE / wa_vbap-ebeln COLOR COL_KEY .
WRITE wa_vbap-ebelp COLOR COL_HEADING .
WRITE wa_vbap-matnr INTENSIFIED OFF .

435312240.doc 35 / 77
WRITE wa_vbap-menge .
ULINE.

Comentários

 Existem duas formas de colocar comentários no programa: a primeira, é


utilizando aspas (“) no final da linha de comando; e a segunda, é utilizando um
asterísco (*) no início da linha.

TABLES: vbap. “Declara a tabela VBAP





* declara a work area para a tabela vbap
DATA: wa_vbap LIKE vbap.

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.

435312240.doc 36 / 77
 Usando o Open SQL você não precisa ater-se aos conhecimentos do banco de
dados em questão.
 Quando de usa o Open SQL, a interface de banco de dados faz a tradução dos
comandos para a linguagem utilizada pelo banco de dados onde estão sendo feitos
os acesso.
 Usando o Native SQL, o acesso é feito diretamente na base de dados,
necessitando de conhecimentos específicos do SQL do banco de dados em uso.
Neste caso não existe a necessidade de conversão de comandos de leitura e escrita
no banco de dados.

Overview

 O Open SQL contém os comandos SELECT, UPDATE, INSERT, DELETE e


MODIFY.
 Você nunca deve fazer atualizações nas tabelas sem conhecer o conceito das
transações.
 Todos os comandos do Open SQL retornam um valor após a execução. O retorno
fica armazenado no campo SUBRC na estrutura SYST (ou SY). O SY-SUBRC
com valor igual a 0 indica execução correta em conseqüência disso, valor
diferente de 0 indica insucesso na execução.

Comando SELECT

Overview

SELECT <resultado> FROM <tabela>


INTO <destino>
WHERE <condição>.

 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 várias linhas da tabela.
o Os campos são o resultado da seleção
o O resultado pode trazer duas ou mais linhas iguais.
o A clausula INTO indica o objeto onde os dados serão armazenados.
o A clausula FROM indica onde os dados serão lidos.
o A clausula WHERE indica a condição da leitura.

435312240.doc 37 / 77
Single Line

SELECT SINGLE <F1> <F2>….<FN>


FROM <tabela>
INTO <WA>
ou INTO (<V1>, <V2>,..<VN>)
ou INTO CORRESPONDING FIELDS OF <work area>
WHERE <condição>

 O uso do SINGLE no comando SELECT indica que será lido somente uma linha
para a condição 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 não for informado,
o comando preenche a área de trabalho ocupando os espaços 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>)
ou INTO CORRESPONDING FIELDS OF <work area>
WHERE <condição>
ENDSELECT.

 Se não for utilizado o SINGLE no comando SELECT, o comando fará ler todos
os registro enquanto satisfazer a condição do WHERE.
 Para não causar erro de sintaxe, é necessário a adição do ENDSELECT ao final
do comando.
 Todos os comandos entre o SELECT e o ENDSELECT serão executados para
cada registro da tabela.
 O campo DBCNT da estrutura SYST (SY) indica o número de linha lida no loop.

435312240.doc 38 / 77
Tabela Interna

SELECT <F1> <F2>….<FN>


FROM <tabela>
INTO TABLE <TI>
WHERE <condição>.

 Você pode ler uma tabela e armazenar todos os registro que satisfazerem a
condição em um simples passo, utilizando o TABLE na clausula INTO.
 Não é necessário 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 DEFINIÇÃO
EQ = igual
NE <> >< diferente
GT > maior que
GE >= => maior ou igual a
LT < menor que
LE <= =< menor ou igual a
BETWEEN FI and F2 intervalo

 Você especifica qual dado quer ler através da clausula WHERE.


 Só é necessário entrar com o(s) nome(s) do(s) campo(s) que você quer utilizar na
condição sem a necessidade de informar qual a origem, uma vez que esta está
definida na clausula FROM.
 A comparação pode ser feita a outros campos de outras tabelas, variáveis,
constantes ou objetos de área de trabalho ou tabela interna.

435312240.doc 39 / 77
Contexto de dados

Definindo objeto de dados


TYPE <Tipo de Dados ABAP>
DATA: <variável> TYPE <Objeto definido pelo usuário>
TYPE <Objeto do Dicionário>

DATA: <variável> LIKE <Objeto do Dicionário>

 Você pode associar uma variável referenciando a um objeto pré-existente no


programa, a um tipo pré difinido (caracter, data, numérico...) ou a um objeto do banco
de dados.
 Quando se faz referência a outro objeto, é atribuída a variável as mesmas
características do objeto referenciado.

Tipo de Dados

 Os dados definidos pelo usuário podem ser elementares ou estruturados.


 Tipo de dados elementares não podem ser quebrados em outros componentes. Tipo de
dados estruturados, por outro lado, podem ser quebrados em varias partes para o
armazenamento das informações.
 Em dados estruturados existe uma diferença entre dados de estrutura e dados de
tabela
o Dados de estrutura só conseguem armazenar um único conjunto de
informações (como se fosse um único registro).
o Dados de tabela conseguem armazenar vários níveis de informação (como se
fosse uma tabela).

Tipos pré-definidos
N Tipos Significado Valor Inicial Tamanho Tamanho
U
M Padrão Máximo
E
R
P Packed Number 0 8 1-16
I I Integer 0 4 4
C
F Float Point 0.000 8 8
A
N Numeric Text 00…0 1 64kb
L C Text Branco 1 64kb
F
D Date (YYYYMMDD) 00000000 8 8

435312240.doc 40 / 77
A T Time (HHMMSS) 000000 6 6
X Hexadecimal X’00’ 1 64kb

 Existem oito tipos de dados pré-definidos.


 Os tipos de dados numéricos P, I e F tem suas próprias particularidades:

Tipo Propriedade Range Usado para...


I Inteiro -231 até +231 Contador, quantidade, índice.
P Nº. com decimal 2 char por byte Valores, tamanhos, larguras.
F Ponto flutuante -2,2E-308 até +1,8E308 Cálculo c/ números muito grandes
 Cálculos com o tipo I são mais econômicos, comparados com os tipos P e F.
 O tipo F só deverá ser utilizado para problemas matemáticos complexos que
possibilitem uma aproximação com erro. Para problemas financeiros deve ser
utilizado o tipo P.

Objeto de dados elementares

DATA: <variável> TYPE <tipo de dados>.

DATA: contador TYPE I,


nome(18) TYPE C,
data TYPE D,
nota TYPE I VALUE 1,
soma(3) TYPE P DECIMALS 2.

 Nos tipos P, N, C e X deve ser informado, entre parênteses, o tamanho máximo.


 No tipo de dados P pode ser informado o número de casas decimais, com a adição
da clausula DECIMALS. O máximo 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 após o tipo do dado.
 Regras para nomes de variáveis:
o Máximo de 30 caracteres,
o Não utilizar símbolos como: ( ) + . , :
o SPACE é um campo pré-definido.

435312240.doc 41 / 77
Estruturas

TYPES: BEGIN OF <definição>,


….,
….,
END OF <definição>.

DATA: <variavel> TYPE <definição>.

TYPES: BEGIN OF tp_endereco,


rua(40) TYPE C,
numero(5) TYPE I,
compl(15) TYPE C,
bairro(25) TYPE C,
cidade(25) TYPE C,
estado(2) TYPE C VALUE ‘RJ’,
END OF tp_endereco.

DATA: wa_endereco TYPE tp_endereco.

 Definição 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 razões de compatibilidade, também pode ser declarada uma estrutura
utilizando DATA: BEGIN OF <type>,...., END OF <type>. Sem ter de haver uma
declaração de estrutura.

Referindo-se ao Dicionário ABAP

DATA: <variável> LIKE <objeto do dicionário>.

DATA: ld_data LIKE sy-datum.


DATA: lc_pedido LIKE EKKO-EBELN.

 Variáveis e tipos de dados também 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 conteúdo de uma variável referenciada a um objeto de banco
de dados é a variável que modifica o conteúdo e não o objeto no banco de dados.

435312240.doc 42 / 77
Comando TABLES

TABLES <nome da tabela no dicionário>.

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.
 Não é necessário declarar no comando TABLES o nome de todas as tabelas
referenciadas no programa, somente quando for necessário armazenar em
memória (work area) os dados.

Literais e contantes

CONSTANTS <contante> TYPE <tipo> VALUE <literal>.

CONSTANTS cc_pais(6) TYPE C VALUE ‘BRASIL’.

 Para se definir valores contantes (que não mudam o valor no programa) é


utilizado o comando CONTANTS. A clausula VALUE é obrigatória para definir o
seu valor.
 O ABAP só reconhece 2 tipos de literais: numérico e texto. Os textos deverão vir
sempre entre commas (aspas simples).
 As contantes numéricas são armazenadas utilizando os tipos P ou I.

Símbolo de Texto

Código do Programa Elemento de Texto


001 Data
.. 002 Usuário
..
SKIP 2.
WRITE: / text-001,
sy-datum,
text-002,
sy-uname.

435312240.doc 43 / 77
 Símbolo de texto é um outro tipo de literal. A grande vantagem dos símbolos
de texto é que o mesmo pode ser traduzido e as contantes não.
 Você pode criar os elementos de texto dando um duplo-clique sobre o
elemento que você quer criar ou então, na tela de entrada da transação que
manipula o programa, escolhendo a opção “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,
wa_nome TYPE ty_nome,
lc_sexo 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’,

435312240.doc 44 / 77
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 wa_dados2
NOME Antonio Carlos Silva CODIGO
ENDE Rua do Bispo, 40 NOME Antonio Carlos Silva
BAIRRO Rio Cumprido CIDADE Rio de Janeiro
CIDADE Rio de Janeiro

Regras de Conversão

Origem dos dados Destino dos dados


Tipo Tamanho Valor Tipo Tamanho Valor
C 1 A C 4 A____
C 4 ABCD C 2 AB
C 7 -47110 P 5 47110-
P 3 123- C 5 _123-

Regras de conversão existem para todas as combinações de tipos de elementos,


exceto para T e D e vice-versa.
 Campos do tipo C são justificados a esquerda. Se o destino dos dados for maior
que a origem, espaços em branco serão inseridos após o conteúdo até o final do
campo.
 Quando se converte tipo P em tipo C, os números 0 a esquerda são convertidos
em espaços também a esquerda.
 Quando se converte tipo C em tipo P, somente números e os sinais de positivo ou
negativo são convertidos.

435312240.doc 45 / 77
Calculando Valores

[COMPUTE] <campo> = <expressão aritimética>.

Operadores: + - / * DIV MOD **


Funções: SQRT EXP LOG SIN COS STRLEN TAN

..
..
lp_salario = 10000.
lp_desconto = 2000.
lp_aumento = 10,20.

lp_total = ( ( lp_salário – lp_desconto) * lp_aumento ) / 100.


..
..

 O comando COMPUTE é opcional.


 Os operadores e os parênteses que são parte da expressão são contados como uma
palavra e portanto devem estar separados com espaços.
 Os parênteses só não devem estar separados da chamada da função, por exemplo
SQRT(...).
 Os operadores DIV e MOD retornam valores inteiros.
 A função STRLEN retorna o tamanho de uma string.
 Para efetuar as operações matemáticas básicas (soma, subtração, multiplicação e
divisão) também pode ser utilizado ADD, SUBTRACT, MULTIPLY e DIVIDE.

Sub-Campos

DATA: BEGIN OF wa_data,


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.

435312240.doc 46 / 77
WRITE: / wa_data-dia, wa_data-mes, wa_data-ano. “ 20 02 2003

MOVE sy-datum(4) TO lc_ano,


sy-datum+4(2) TO lc_mes,
sy-datum+6(2) TO lc_dia.

WRITE: / lc_dia, lc_mes, lc_dia. “ 20 02 2003

 Você pode endereçar e alterar sub-areas de um campo elementar especificando a


posição e o tamanho do campo de origem.
 Pode-se endereçar para estrutura, sem determinar qual a posição em que vá ficar
as informações.

Calculando Datas

DATA: ld_data TYPE D VALUE sy-datum,


ld_inicio LIKE sy-datum,
lp_dias TYPE P.

ld_inicio = ld_data. “ 2003 02 20


ld_inicio+6(2) = ‘01’. “ 2003 02 01 - início do mês
lp_dias = ld_data – ld_inicio. “ 20

 Se a data é convertida em campo numérico, o ABAP calcula o número 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 germânico, onde as posições são:
ano (4 posições), mês (2 posições) e dia (02 posições).

Expressões Lógicas

DATA: ld_start TYPE D,


lp_sum1 TYPE P,
lp_sum2 TYPE P.

..
..
IF sum2 GE 1000.
..
..

435312240.doc 47 / 77
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 DEFINIÇÃO
EQ = igual
NE <> >< diferente
GT > maior que
GE >= => maior ou igual a
LT < menor que
LE <= =< menor ou igual a
BETWEEN FI and F2 Intervalo
IS INITIAL Valor inicial.

 Expressões lógicas podem estar linkadas com NOT, AND e OR.


 A utilização dos parênteses indica uma sub expressão, e como tal ela
considerada uma palavra, portanto deverão estar separadas por espaço.

Estrutura CASE

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

IF <expressão lógica>
...
ELSEIF <expressão lógica>

435312240.doc 48 / 77
...
ELSEIF <expressão lógica>
...
ELSE <expressão lógica>
...
ENDIF.

 Os comando CASE e IF permite que se teste várias distinções.


 No comando CASE...ENDCASE:
o Somente uma seqüência de WHEN será executada
o A seqüência WHEN OTHERS é opicional.
 No comando IF…ENDIF:
o As seqüências ELSE e ELSEIF são opicioanais.
o Se a expressão lógica é completamente validada, a seqüência 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 <expressão lógica>.


...
...
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 parâmetro “<n> TIMES” é opcional. Se não for necessário, a saída do
loop deve ser feita por comando dentro do loop.
o O número de passos do loop não pode ser modificado em tempo de
execução alterando o valor do SY-INDEX.
 No loop WHILE:
o O loop será executado várias vezes enquanto a expressão lógica for
verdadeira.

435312240.doc 49 / 77
o O número de passos do loop não pode ser modificado em tempo de
execução alterando o valor do SY-INDEX.

Comandos CHECK e EXIT

CHECK <expressão lógica>.

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 expressão lógica não 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 condição original foi finalizada ou não.

435312240.doc 50 / 77
Ferramentas de Teste

Debug

 O Debug é a forma de verificação da sintaxe do programa em tempo de execução.


 Com o Debug você pode executar passo a passo o programa, verificar valores de
variáveis, constantes, tabelas internas, work areas, alterar os valores dos objetos
(exceto constante) e verificar a lógica do programa.
 Para executar o Debug existem várias formas, pode ser através de comando no
código 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
código do programa que esta sendo executado e a segunda a área de manipulação
dos dados.

Importantes funções 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 próximo
break.

435312240.doc 51 / 77
 F7 ou Return: Sai de dentro de um módulo (função, perform, metodo, sub-
programa) e volta ao programa chamador.
 F6 ou Execute: Executa um módulo sem mostrar os comandos internos.

Breakpoint

 O breakpoint do programa pode ser feito via programa ou dentro do próprio


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

435312240.doc 52 / 77
Tabelas Internas

Definição

 Como mencionada anteriormente, uma tabela interna (também conhecida como


Array) é uma seqüência de entradas ou linhas que tem o mesmo tipo.
 Tabelas internas são utilizadas para armazenar resultado de processamento ou
dados de tabelas.
 Usos típicos incluem:
o Armazenamento temporário de dados de tabelas para futuro
processamento;
o Armazenamento de dados para exibição em listas;
o Usado como buferização de dados para comunicação com o desktop,
outros servidores de aplicação R/3 ou sistemas não-SAP.

Expansões dinâmicas

 O número de linha de uma tabela interna não é estático ou pré-determinado. O


sistema de execução do ABAP expande dinamicamente a tabela interna em
runtime de acordo com as necessidades.
 São alocados no momento da criação da tabela interna 8 KB. Se for necessário,
mais 8 KB serão alocados quando necessário, assim por diante.

Atributos

Tipos de linhas

 As tabelas internas são descritas usando uma série de atributos, um desses


atributos é o TIPO DE LINHAS.
 Tipo 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 é a chave (Keys). Chaves ajudam a identificar as


entradas da tabela.
 Quando definimos chaves a seqüência dos campos é importante, por exemplo:
chave EBELN e EBELP são diferentes de EBELP e EBELN.

435312240.doc 53 / 77
 Chaves de tabelas internas também podem ser definidas como UNIQUE ou NON-
UNIQUE. Isso determina se será ou não possível a entrada de mais de um dado
com a mesma chave.

Tipos de tabelas

Tabelas Internas
Index Table Hashed Table
Standard Table Sorted Table
Acesso com índice X X
Acesso com chave X X X
Chave UNIQUE ou NON-UNIQUE UNIQUE/NON- UNIQUE
NON-UNIQUE UNIQUE
Acesso usando Índice principal Chave principal Somente chave

 Outro atributo das tabelas internas é o tipo da tabela. Tabelas internas podem ser
divididas em três tipos de acordo com o caminho de acesso aos dados:
o Standard Tables: mantém um índice linear internamente. Estas
tabelas podem ser acessadas usando ou índice ou chave da tabela.
o Sorted Tables: são organizados de acordo com a chave e são
salvos. Aqui também, um índice linear é montado externamente. Esse tipo
de tabela também pode ser acessado usando ou índice ou chave da tabela.
o Hashed Tables: não mantém um índice linear interno. Hashed tables
só podem ser acessadas pela chave.
 As tabelas internas do tipo Standard Tables são as mais comumente usadas.

435312240.doc 54 / 77
Work Area

 Diferente dos arrays em outras linguagens de programação, o acesso direto aos


dados na tabela interna não são permitidos. Essa operação só é possível utilizando
Work Area.
 São comandos de manipulação de tabela interna:

Comando Efeito

APPEND Insere o conteúdo de uma work area no fim da tabela interna


INSERT Insere o conteúdo de uma work area na posição do ponteiro
MODIFY Modifica o conteúdo de uma determinada linha com o valor da work area.
DELETE Deleta uma determinada linha da tabela interna.
LOOP AT Insere o conteúdo da tabela interna dentro da work area, linha a linha.
READ TABLE Insere exatamente o conteúdo de uma linha da tabela interna na work area.
SORT Ordena uma tabela interna
CLEAR Limpa o conteúdo da work area
FREE Libera a área de memória utilizada pela tabela interna
COLLECT Agrupa vários registros repetidos em um só, somando o conteúdo
numérico.

435312240.doc 55 / 77
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: BEGIN OF struc,


name(10) TYPE c,
age TYPE I,
END OF STRUC.

TYPES: 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>),


seqüência de chave (<keydef>) e o modo (UNIQUE|NON-UNIQUE) serve para
preencher atributos específicos das tabelas.
 8 KB de memória são alocados para cada tabela interna na definição. Se for
necessária mais memória na execução, ela é aumentada em 8 KB, cada vez que
for necessário.
 A quantidade de memória alocada para cada tabela pode ser diminuída e
aumentada durante a declaração da tabela interna, basta adicionar INITIAL SIZE
<n> na declaração da tabela.

Preenchendo tabelas internas

APPEND [<wa> TO] <itab>.

DATA: it_vbak LIKE TABLE OF vbak.


DATA: wa_vbak LIKE vbak.

SELECT * FROM vbak INTO wa_vbak WHERE bukrs = ‘1000’.


APPEND wa_vbak TO it_vbak.

435312240.doc 56 / 77
ENDSELECT.

 Como mencionado anteriormente, você utiliza tabelas internas quando se tem a


necessidade de armazenar uma seqüência de entradas ou linhas que tem o mesmo
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
adição 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 a existência de uma WORK AREA,
junto com o corpo da tabela interna, ambos endereçados com o mesmo nome.
 Para se declarar uma tabela interna com HEADER LINE, basta adicionar
WITH HEADER LINE na declaração 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’.

435312240.doc 57 / 77
ENDSELECT.

 A seleção no banco de dados pode ser feita toda ao mesmo tempo ou de registro
em registro, quando utilizamos a adição INTO TABLE, a tabela interna é
alimentada com todos os registros de uma única vez.
 Utilizamos a adição INTO CORRESPONDING FIELDS OF TABLE <itabname>
quando a seleção feita possuir muitos campos e a tabela interna não estiver na
ordem da seleção ou então não possuir todos os campos da seleção. Essa forma de
seleção é 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 adição de BY <f> e
ASCENDING ou DESCENDING permite você restringir a ordenação 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.

435312240.doc 58 / 77
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.

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

 O comando LOOP AT…ENDLOOP permite você processar múltiplas entradas da


tabela interna. Cada vez que o LOOP é processado, as informações da tabela
interna são 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 número 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. Após 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.

435312240.doc 59 / 77
 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 não encontre, o valor será 4. o campo SY-TABIX receberá o índice que foi
acessado.
 Também 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.

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 conteúdo de um registro na tabela.


 Use o comando INSERT para inserir registros em posição definida na tabela.
 Use o comando DELETE para excluir registros na tabela.

435312240.doc 60 / 77
Modularização de Programas

Estruturas de um programa ABAP

 Um programa ABAP é uma coletânea de blocos processados.


 O processamento em bloco é feito seqüencialmente quando chamado
 A seqüência de blocos não é necessária (obrigatório), mas deverão estar presentes
em todos os programas.
 Todas as declarações globais são processadas quando o programa é gerado. Por
isso, todas as declarações globais deverão estar no início do programa

Tipos de blocos de processamento

 Existem vários tipos de processamento de blocos:


o Bloco de eventos: Em um programa executável, o sistema de execução
runtime é o responsável pela chamada de blocos de eventos numa
seqüência particular desenvolvida para produzir uma lista.
 Subrotinas: Módulos como uma interface, como são os programas
internos. Pode-se chamar uma subrotina de dentro de qualquer
comando ABAP em qualquer bloco que se estiver processando.
Subrotinas podem ser, inclusive, outro programa ABAP.
 Módulos de funções: São módulos com uma interface transparente.
Você pode chamar um módulo de função de qualquer bloco do
programa ou de qualquer outro programa.
 Todos os blocos são processados seqüencialmente como eles são chamados.
Quando você faz a chamada a uma subrotina ou a um módulo de função, o
processamento do bloco é interrompido para a sua execução.

Modularizando

Eventos em programas executáveis

 O sistema de execução runtime do ABAP processa a chamada dos eventos em


seqüência:
o Primeiro bloco de eventos chamado é o INITIALIZATION.
o Em seguida a tela de seleção é enviada ao servidor de aplicação.
o Após o usuário preencher a tela de seleção e seguir o processamento, o
bloco de eventos START-OF-SELECTION é executado.

435312240.doc 61 / 77
o Existem outros blocos de eventos, que iremos ver no decorrer do curso,
como: AT LINE-SELECTION, AT USER-COMMAND, AT
SELECTION-SCREEN, TOP-OF-PAGE e END-OF-PAGE.

Subrotinas

PERFORM <nome da subrotina>


[USING <variáveis>]
[CHANGING <variáveis>].

PERFORM ys_calcula_salário
USING v_salhora
V_horastrab
CHANGING v_salliq.
...
...
...

FORM ys_calcula_salário USING p_salhora


p_horastrab
CHANGING p_salliq.

p_salliq = p_salhora * p_horastrab.

ENDFORM.

 Subrotinas são blocos de processamento que são definidos para serem chamados
de outro bloco de processamento através de comandos ABAP. As subrotinas
proporcionam ao programa um encapsulamento.
 Os parâmetros em uma interface são chamados de parâmetros formais e o
processamento que você passa para a subrotina são chamados de parâmetros
atuais.
 O comando de chamada de subrotinas é o PERFORM e a declaração da subrotina
deverá estar entre os comandos FORM e ENDFORM.

Visibilidade dos dados

 Os parâmetros de passagem de valores não são obrigatórios. Se os dados que


serão processados na subrotina forem do tipo global, essa passagem é
desnecessária. Se os mesmos forem locais, é obrigatória a passagem de valores.

435312240.doc 62 / 77
 Se um dado declarado como global for redeclarado dentro de uma subrotina, o
dado válido passa a ser o que foi criado nela. Ao retornar ao programa, o dado
global volta a valer para o resto do programa, sem alterar o valor original.

Chamando Subrotinas - Parâmetros

 O número de parâmetros atuais deve de ser o mesmo dos parâmetros formais. Não
existe parâmetro opcional.
 O tipo dos parâmetros passado para a subrotina é definido automaticamente,
sendo assumido, na declaração da subrotina, o tipo dos parâmetros 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.

 Pode ser, também, passado para a subrotinas, as estruturas (estruturas, header line
de tabela interna ou work Areas) com a descrição da estrutura usando o LIKE ou
TYPE para declarar o tipo da mesma.
 Se não for passado o tipo da estrutura, os campos dela não serão reconhecidos
dentro da subrotinas.

Chamando Subrotinas – Tabelas Internas

 Se você quiser passar uma tabela interna para a subrotina, deve-se especificar o
tipo formal do parâmetro na declaração do FORM, como se fosse uma estrutura.
 Tabelas internas são passadas sem a área de trabalho, necessitando assim criar
uma como local dentro da subrotina.

435312240.doc 63 / 77
Funções

 Os módulos de função são subrotinas externas com uma interface transparente. A


interface é considerada transparente porque não é parte dos comandos do
programa ABAP. A interface é definida separadamente e pode ser mantida
independente do código do programa.
 Elas são armazenadas no repositório do sistema R/3.
 Cada módulo de função deve ser associado a um grupo de funções. Um grupo de
funções é um programa ABAP do tipo F, que é um programa criado
exclusivamente para conter módulos de funções.
 Para criar módulos de funções, você deve usar o Function Builder (transação
SE37).
 Os módulos de funções podem ser executados por diversos programas (mesmo
simultaneamente) ou então em outro sistema R/3 ou de um programa externo
(RFC).

Chamando Módulo de Funções

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> ].

435312240.doc 64 / 77
CALL FUNCTION ys_calcula_salario
EXPORT
v_sal_hora
v_horas_trab
IMPORT
v_sal_liquido
EXCEPTION
erro_calculo
variavel_vazia.

 Os módulos de funções não são do tipo executável.


 Quando se chama um módulo de função o sistema abre uma área na memória para
a chamada do programa.
 Internamente no módulo de função podem existir chamadas a subrotinas.
 Todos os módulos de funções são agrupados em grupo de funções por tema. Um
exemplo seria varias funções para calculo de imposto serem alocados num único
grupo de funções.
 O comando que efetua a chamada de um módulo de função é o CALL
FUNCTION.
 Funções são normalmente chamadas para serem executadas em seqüência ou
sincronamente no programa. Se for necessário um processamento assíncrono,
deve-se incluir o parâmetro IN UPDATE TASK. Neste caso o processamento do
módulo de função ocorre paralelamente ao do programa ABAP chamador.

Criando grupo de função

435312240.doc 65 / 77
 Para se criar um grupo de funções, acessar a transação SE37. No menu acessar a
opção do menu Saltar / Admin. de Grupos de Funções / Criar Grupo.
 O nome do grupo de função deve ter até 30 caracteres. Só poderá conter
caracteres alfanuméricos e o caractere underscore.
 O grupo de funções deve começar com “Z_” ou “Y_”.

Criando um módulo de função

 Para se criar um módulo de função em um grupo de função existente, basta inserir


o novo nome no campo próprio da transação SE37.
 Um módulo de função é dividido em: dados administrativos, parâmetros da
interface, código ABAP e documentação.
 O nome módulo de função deve ter até 30 caracteres. Só poderá conter caracteres
alfanuméricos e o caractere underscore.
 O módulo de função deve começar com “Z_” ou “Y_”.
 O módulo de função só estará ativo no sistema após você ativa-lo (igual aos
programas).
 Após ativa-lo, o sistema gera o grupo de função ao qual ele foi associado.

Elementos de um módulo de função

 Um módulo de função consiste de:


o Informação de administração: Nome do módulo de função, descrição,
grupo de funções, pessoa responsável, último alterador, tipo de
processamento e classe de desenvolvimento.
o Parâmetros da Interface: Você pode usar objetos de dados elementares,
estruturas ou tabelas internas como parâmetros de entrada, saída ou
alteração. Módulos de função têm os mesmo métodos para passagem de
parâmetros da rotina FORM.
o Exceções: Se um erro ocorre durante o processamento da função, você
pode informar a função qual o tipo de erro que ocorreu.

435312240.doc 66 / 77
o Código de programa.
o Documentação: Cada módulo de função deve ser documentado
separadamente. A documentação pode ser traduzida e ela ira aparecer na
linguagem definida no logon do usuário.

Elementos de um módulo de função – IMPORT

 Grande parte das características de passagem de valor para uma função segue as
regras das subrotinas.
 Diferente das subrotinas, você pode definir quais parâmetros são necessários ou
não, permitindo que o usuário suprima alguns na chamada destes.
 Os parâmetros de IMPORT vistos de dentro da função, são correspondentes aos
parâmetros EXPORT na chamada da função de dentro do programa.
 A declaração dos elementos da importação, é feita associando-se ao dicionário do
banco de dados ou a tipos declarados em um pool de tipos.
 Parâmetros de importação não podem ter o seu valor, alterado durante o
processamento.

Elementos de um módulo de função – EXPORT

 Segue as mesmas regras dos parâmetros de importação, sendo que estes são vistos
como parâmetros de IMPORT na chamada da função de dentro do programa.
 Os parâmetros de exportação não recebem valores na chamada da função.

Elementos de um módulo de função – CHANGING

 Segue as mesmas regras dos parâmetros de importação/exportação, sendo que


estes são vistos como parâmetros de CHANGING na chamada da função de
dentro do programa.
 Parâmetros de alteração recebem valores iniciais e podem ser os mesmos,
alterados durante o processamento da função.

Elementos de um módulo de função – TABLES

 Parâmetros TABLES servem para a passagem de tabelas internas com valores


preenchidos para dentro da função.
 Os valores dessas tabelas podem ser alterados durante o processamento da função.

Elementos de um módulo de função – EXCEPTIONS

435312240.doc 67 / 77
CALL FUNCTION XXXXXXX
....
....
EXCEPTIONS
SEM_DADOS
MENOR_ZERO.

FUNCTION XXXXXXXXX.

IF variavel_a IS INITIAL.

RAIZE SEM_DADOS.

ENDIF.

IF variavel_a < 0.

RAIZE MENOR_ZERO.

ENDIF.

 Você pode antecipar possíveis erros e escrever o programa para tratar-los à fim de
não causar erro de execução e conseqüentemente abortar o programa. Você
definirá os possíveis erros na lista de EXCEPTION na hora da criação da função e
chamá-los dentro do programa através do comando RAIZE.

Código do módulo de funções

 Para cada módulo de função, o sistema cria um programa template. Os parâmetros


da interface e os exceptions que você definiu são automaticamente inseridos com
linha de comentário no código do módulo de função. Lembre-se que são as
definições da interface que realmente a define e não as linhas comentadas. Não
altere as linhas manualmente, se você alterar as interfaces, o sistema
automaticamente irá alterar as linhas comentadas.
 Todos os códigos ABAP deverão estar entre os comandos FORM e ENDFORM.

435312240.doc 68 / 77
Inserindo funções no programa

 Quando a versão do módulo de função estiver ativa, você pode chamá-lo de


dentro do programa.
 Para isso, vá à opção MODELO do editor ABAP e digite o nome do módulo de
função, que você quer inserir.
 O sistema irá inserir no código do programa o comando CALL FUNCTION com
o nome da função escolhida e todos os seus parâmetros.
 Preencha os parâmetros atuais com as informações na qual você deseja enviar a
função para o processamento.
 Lembre-se que parâmetros de IMPORT são aqueles que a função irá retornar ao
programa e parâmetros de EXPORT são aqueles que enviamos a função. Essa
visão é do programa para a função.

435312240.doc 69 / 77
Dialogs

Listas

 O principal propósito de uma lista é a maneira fácil do usuário entender a saída de


dados.
o Elas são independentes de linguagem. Textos e cabeçalhos aparecem na
linguagem escolhida no logon, sempre que a tradução é possível.
o As saídas de valores monetárias podem aparecer em diversas moedas.
 Você pode fazer a saída de diversas formas:
o Na tela;
o Na impressora;
o Na internet/intranet: conversão automática na HTML;
o Gravando em arquivo de diversos tipos.

Comandos de operação em listas

<inserir os botões back/exit/cancel/scroll/print/find>

 As listas standards oferecem ao usuário vários comandos de navegação:


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

Cabeçalho de Página

 Cada lista pode ter um cabeçalho e até 4 linhas de cabeçalho de coluna. Isto pode
ser criado de uma das seguintes formas:
o Dentro do editor usando as funções de manutenção do elemento de texto.
o Dentro da própria lista. Você pode criar o cabeçalho da lista e cabeçalho
das colunas, escolhendo no menu a opção: Sistema > Lista > Cabeçalho de
Lista.
o Na próxima vez que startar o programa, o novo cabeçalho irá aparecer na
lista automaticamente.

435312240.doc 70 / 77
Cores/Ícones/Símbolos na lista

WRITE <objeto> <opção>.

REPORT xxxxxxxxxxxx.
INCLUDE <LIST>.
::
::
::
WRITE: / ti_tabela-campo COLOR col_key, icon_date AS ICON.

 Você pode configurar vários atributos de exibição em lista com o comando


WRITE. Um desses elementos é a cor, que pode ser ajustado usando a opção de
formatação COLOR <cor>. Você pode escolher até 7 cores de fundo que são
ativadas pelo número ou o símbolo da cor.

0 COL_BACKGROUND Fundo
1 COL_HEADING Cabeçalho
2 COL_NORMAL Entradas
3 COL_TOTAL Totais
4 COL_KEY Colunas Chaves
5 COL_POSITIVE Valores positivos
6 COL_NEGATIVE Valores negativos
7 COL_GROUP Níveis de controle

 Para consultar um guia de cores, consulte a transação LIBS.


 A adição de AS ICON com o comando WRITE permite a adição de ícones na
lista. Para incluir ícones na lista, você deve utilizar o comando INCLUDE
ativando o include <ICON> ou o include <LIST> no início do programa.
 Para saber de todos os ícones que estão disponíveis, use o HELP do comando
WRITE.

Detalhes de lista

 Num programa executável, pode ser utilizado o bloco de eventos AT LINE-


SELECTION para criar detalhamento de lista ou o comando AT USER-
COMMAND para criar detalhamento de funções.
 O sistema de execução ABAP:
o Mostra uma lista básica depois do apropriado bloco de eventos ter sido
processado (por exemplo, depois do START-OF-SELECTION). Neste
caso, o campo do sistema SY-LSIND contém o valor 0.

435312240.doc 71 / 77
o Insere funções associadas ao menu de funções e a uma GUI particular no
campo de sistema SY-UCOMM quando uma entrada de usuário é
executada.
o Processa o bloco de eventos AT LINE-SELECTION usando o código de
função ‘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
ação for executada (enter ou clique em algum botão da barra).
o Exibe detalhes de lista após o processamento do evento AT LINE-
SELECTION e aumenta o valor contido no SY-LSIND em 1.
o Executa determinada função (que pode ser uma atualização de tabela) após
o processamento do evento AT USER-COMMAND.
 Podem ser criados barras de botões e menus específicos 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 botão standard serão
desativados durante a exibição da lista (atenção especial para o PICK que deve ser
redefinido para o funcionamento do AT LINE-SELECTION).
 SET TITLEBAR <nome> redefine o nome do relatório que será impresso.

HIDE Área.

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 são passados


para o evento são o que foram exibidos por último na lista. A lista de detalhes
necessita dos dados selecionados pelo usuário 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 usuário
quando criar a lista básica.

435312240.doc 72 / 77
 Insira o comando HIDE logo após a exibição da lista contendo os campos da
mesma que deverão ser armazenados no momento da escolha do usuário.
 O parâmetro HOTSPOT no comando WRITE possibilita a mudança 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 página HTML.

Telas de seleção

 Tela de seleção permite ao usuário entrada de critérios de seleção 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 seleção para restringir a quantidade
de dados que será selecionada. Em tempo de execução, o usuário pode entrar com
intervalo de um campo chave ou data para a leitura da tabela e exibição da lista.
Isto é um considerável redutor de tráfico na rede.
 Os comando de uma tela de seleção são o PARAMETERS e o SELECT-
OPTIONS, sendo que este segundo ser comporta como uma tabela interna,
contendo um range de valores para o processamento. O PARAMETERS funciona
como uma variável 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 dicionário ABAP


contendo os valores possíveis de uma entrada.
 Podem ser criados novos SEARCH HELPs usando a transação SE11.

Salvando e chamando Variantes

 Você pode definir e armazenar variantes para uma tela de seleção. Para isso,
preencha a tela de seleção e clique no ícone de salvar. Defina o título e o nome da
variante e salve novamente.
 Variantes permitem selecionar dados de uma tela de seleção de forma fácil para o
usuário.
 Uma simples variante pode estar associada para mais de uma tela de seleção.
 Para chamar uma variante pré-gravada, basta selecionar o ícone na tela de seleção.
 Para programas com barra de status definida internamente, o botão salvar não
funciona como gravação de variantes.

435312240.doc 73 / 77
Usando valores de telas de seleção 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 seleção.
 Com o uso dos valores do comando PARAMETERS você pode utilizar os
operadores lógicos validos para as variáveis.

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.

435312240.doc 74 / 77
 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 seleção.
 Com o uso dos valores do comando PARAMETERS você pode utilizar o
operador lógico IN na comparação da clausula WHERE.
 As condições numa tabela interna declarada usando o SELECT-OPTIONS são
interpretadas da seguinte forma:
o Se a tabela interna estiver vazia, a condição será sempre verdadeira e
todos os registros serão selecionados sem que haja restrição.
o Se na tabela interna contiver somente valores simples, o resultado será a
composição da condição: <valor 1> ou <valor 2> .... ou <valor N>.
o Se na tabela interna contiver exclusão de valores, o resultado será a
composição da condição <NOT valor 1> e <NOT valor 2> .... e <NOT
valor N>.
o Se na tabela interna contiver ambos, o resultado será a composição da
condição <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 composição da
condição <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 Através da navegação diretamente do código 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 botões da aplicação ou teclas de acesso rápido a opções do menu ou da
barra.
 Nome de status pode ter no máximo 20 caracteres.
 Pela escolha do tipo da barra de status, você determina se a mesma se refere a
uma lista ou a uma tela.

435312240.doc 75 / 77
 No primeiro nível, definiremos as opções do menu. O botão fundir normas
acrescenta as opções “Sistema” e “Ajuda”, que aparecem em todos os menus no
R/3.
 No segundo nível, iremos criar os botões da aplicação.

435312240.doc 76 / 77
 No terceiro nível são os botões standards do R3 que iremos redefinir.
 No quarto nível estão as teclas de acesso rápido recomendadas. Neste nível
iremos definir a opção “PICK” ou F2 para ativar listas interativas.
 No quarto nível aparecem todas as teclas de função, inclusive as que já estão
associadas a outro item.

TITLES

SET TITLEBAR <nome>.

SET TITLEBAR <100>.

 Pode-se criar um título das seguintes formas:


o Através da navegação diretamente do código ABAP (duplo clique sobre o
nome da barra).
o Usando o MENU PAINTER.
 Nomes de títulos podem ter até 20 caracteres.

435312240.doc 77 / 77

Você também pode gostar