Sei sulla pagina 1di 131

ABAP

Treinamento

SAP R3
MÓDULO ABAP
TREINAMENTO

Data : 06/10/10 CURSO DE ABAP/4 Página 2 de 131


TREINAMENTO

Qual a função do R/3?


É oferecer um conjunto integrado compacto, de aplicativos empresariais de grande escala. O conjunto
padrão de aplicativos integrados com cada sistema R/3 é o seguinte:
• PP (Production Planning - planejamento de produção)
• MM (Materials Management - gerenciamento de materiais)
• SD (Sales and Distribution - vendas e distribuição)
• FI (Financial Accounting - contabilidade financeira)
• CO (Controlling - controladoria)
• AM (Fixed Assets Management - gerenciamento de ativos fixos)
• PS (Project System - sistema de projeto)
• WF (Workflow - fluxo de trabalho)
• IS (Industry Solutions - soluções de industria)
• HR (Human Resources - recursos humanos)
• PM (Plant Maintenance - manutenção das instalações)
• QM (Quality Management - gerenciamento da qualidade)

Estes aplicativos são chamados áreas funcionais, áreas de aplicativo ou, ás vezes, módulos funcionais
do R/3. Todos estes termos são sinônimos.

Tradicionalmente, as estruturas empresariais desenvolvem um conjunto de aplicativos de


processamento de dados avaliando produtos individuais e comprando esses produtos separadamente de
diversos fabricantes de software. Interfaces entre eles são então necessárias. Por exemplo, o sistema de
gerenciamento de materiais precisará ser vinculado com as vendas e a distribuição e com os sistemas
financeiros, e o sistema de fluxo de trabalho precisará de uma alimentação a partir do sistema do HR.
Uma quantidade significativa de tempo e dinheiro de IS é gasta na implementação e manutenção
dessas interfaces.
O R/3 vem predefinindo com os aplicativos empresariais básicos necessários à maioria das grandes corporações. Esses
aplicativos coexistem em um ambiente homogêneo. Eles são projetados para funcionar utilizando desde um único banco de
dados e um conjunto (muito grande) de tabelas. Os tamanhos de banco de dados de produção atuais variam de 12 gigabytes
a aproximadamente 3 terabytes. Cerca de 8.000 tabelas de banco de dados são distribuídas com o produto R/3 padrão.

Data : 06/10/10 CURSO DE ABAP/4 Página 3 de 131


TREINAMENTO

Por que você precisa saber isso?


É importante para você, como um programador de ABAP , saber por que esses aplicativos são todos escritos
inteiramente em ABAP . Esses são os aplicativos que você deve entender para ser um bom desenvolvedor de R/3.
Por exemplo, suponha que você conhece ABAP e tenha recebido a incumbência de escrever um relatório
financeiro que resume débitos e créditos de cada ano fiscal para cada fabricante na empresa. Talvez você saiba escrever
código em ABAP , mas você saberia como começar a resolver essa tarefa?
Ou talvez seu trabalho exija um novo desenvolvimento em ABAP . Você é incumbido de projetar um sistema que
ofereça informações de estoque para potenciais compradores. Se você não conhece os sistemas de vendas e financeiro e de
distribuição, você não saberá se está criando algo que já existe em R/3. Tampouco você poderá saber se há tabelas do R/3
que já contêm dados semelhantes ou idênticos aos tipos de dados que você quer recuperar. Esses aplicativos são altamente
integrados. Um desenvolvedor que assume a abordagem “eu construirei minhas próprias tabelas e manterei minhas próprias
cópias dos dados”, pode logo descobrir que seus dados são redundantes e devem ser rotineiramente sincronizados com o
resto do banco de dados. Ele construiu um aplicativo que não tira proveito da natureza altamente integrada do ambiente
R/3.
É importante que o ABAP seja desenvolvido com a certeza de que dentro do R/3 não possua
nada que já não atenda as necessidades da área funcional.

Data : 06/10/10 CURSO DE ABAP/4 Página 4 de 131


TREINAMENTO

Hierarquia do SAP

Se o Sistema R/3 é distribuído de acordo com os princípios de tecnologia de client/server que seus
componentes são divididos em uma hierarquia de computador de três-níveis.

Um computador central funciona como um servidor de banco de dados, i.e. contém processos que
constituem o serviço de banco de dados. Este computador também aloja o serviço de atualização do
R/3 o qual é responsável por executar atualizações de banco de dados. O servidor de banco de dados
pode ser unido a vários servidores de aplicação. Nos servidores de aplicação, é processada a lógica de
aplicação atual.

Cada servidor de aplicação pode ser conectado a vários front-ends (por exemplo workstations, PCs)
nos quais os usuários estão trabalhando. Todas as tarefas de apresentação são processadas nestas
máquinas individuais.

Data : 06/10/10 CURSO DE ABAP/4 Página 5 de 131


TREINAMENTO

Divisão dos Processos

Cada processo de trabalho é responsável por somente um tipo de request. Tipos de request incluem
dialog, background, update, enqueue e spool.

O dispatcher distribui as tarefas adequadamente para os processos definidos. Porém. esta distinção só
se refere aos papéis diferentes ou serviços especiais associados aos processos de trabalho através da
estratégia de dispatch.

Como os processos de trabalho contêm aplicações escritas em ABAP/4 , um grupo de processos que
consiste em um dispatcher e um número definido de processos de trabalho, também é conhecido como
um servidor de aplicações.

O servidor de mensagem permite os servidores de aplicações para trocar mensagens internas pequenas.

O servidor de acesso facilita comunicação entre R/3, R/2 e outros sistemas.

Em programas de aplicações, os processos de aplicações podem ser divididos em processos de


atualização (V1, V2) e processos de background (B).

Data : 06/10/10 CURSO DE ABAP/4 Página 6 de 131


TREINAMENTO

Instance

Definição de uma instance:

Uma instance é uma unidade administrativa onde se agrupam os componentes de um Sistema R/3 que
provê um ou mais serviços. Estes serviços são começados e são parados ao mesmo tempo. Todos os
componentes que pertencem a uma instância são especificados como parâmetros em perfil de instance
comum.

Um Sistema R/3 central consiste em uma única instance que inclui todos os serviços necessários do
SAP.

Cada instance tem sua própria área de buffer SAP.

Data : 06/10/10 CURSO DE ABAP/4 Página 7 de 131


TREINAMENTO

Clients
Client 100 Client 001 Client nnn
(delivery system) (delivery system) (custumer system)

application application application


data data data
client-
especific
Customizing Customizing Customizing
data data data

cross-client customizing
cross-
client
Repository objects

Em termos comerciais, organizacionais e técnicos, um client é uma unidade auto-suficiente do Sistema


R/3. Clients têm seus próprios:

Facilidade na customização.

Dados de Aplicação.

Registros mestre de usuários.

Clients representam uma parte particular no Sistema R/3.

SAP distingue vários clients que deveriam ser distribuídos em pelo menos dois Sistemas R/3. Cada
client tem um propósito diferente:

Teste/desenvolvimento:

Você usa o client de desenvolvimento e de teste para suas atividades de customização e para
desenvolver seus próprios objetos de Repositório. Lembre-se porém, que todos os objetos de
Repositório estão disponíveis e podem ser mudados em todos os clientes.

Garantia de qualidade:

Você usa a garantia de qualidade para testar sua customização. Para apagar o cliente de garantia de
qualidade depois de testar, a SAP recomenda que você use outro cliente para manter os dados de teste.

Treinamento:

O client de treinamento é utilizado para treinar times de projeto e usuários finais.

Data : 06/10/10 CURSO DE ABAP/4 Página 8 de 131


TREINAMENTO
Produção:

O client de produção recebe os parâmetros de customização testados e seus objetos de Repositório. A


SAP recomenda que você defina não mais do que um client produtivo.

O sistema padrão compara dois clients idênticos. Ambos contém os mesmos parâmetros de
customização mas não contém dados de aplicação. O client 000 é o padrão do SAP o qual é
modificado por cada atualização do SAP. Você não poderia alterá-lo de forma alguma. Efetue seus
trabalhos de customização no client 001.

Data : 06/10/10 CURSO DE ABAP/4 Página 9 de 131


TREINAMENTO

Logon
Através do logon o sistema identificará se o usuário está autorizado a entrar no SAP no client que está
acessando, e é através do seu UserId que são identificados quais módulos e transações você terá
acesso.

Client onde se desenvolverá a atividade

Barra de
Ferramentas
Standard

Barra de Título
Campo command

Área Screen

Barra de Status

Data : 06/10/10 CURSO DE ABAP/4 Página 10 de


131
TREINAMENTO

Cores
Para que você possa alterar as cores de seu ambiente tornando-o mais agradável, utilize o recurso
abaixo demonstrado.

Clique nas
bolinhas
coloridas e
depois em
“Options...”.

Data : 06/10/10 CURSO DE ABAP/4 Página 11 de


131
TREINAMENTO

Ícones no SAP
Abaixo alguns exemplos, com descrição, dos ícones que você terá contato no SAP.

Data : 06/10/10 CURSO DE ABAP/4 Página 12 de


131
TREINAMENTO

Arquitetura do Development Workbench

O ABAP/4 Development Workbench provê acesso para as ferramentas de desenvolvimento do SAP


que cobrem o ciclo de desenvolvimento de software inteiro.

Estas ferramentas podem ser usadas ambos para desenvolvimentos específicos de cliente e melhorias
para aplicações R/3 fornecidas pelo SAP.

Todas as aplicações criadas com o ABAP/4 Development Workbench podem rodar sem modificações
adicionais em qualquer plataforma, sistemas de banco de dados e interfaces gráficas de usuário
suportadas pelo SAP.

Data : 06/10/10 CURSO DE ABAP/4 Página 13 de


131
TREINAMENTO

ABAP Programação Geral


Os quatro processos do ABAP / Dialog Program

Dialog programming Batch Input

layout
layout

module
module external
external
checks
checks SAP
SAP
pool
pool system
system

Flow
Flow logic
logic
S
C
R
E
E
N

ABAP

host
host host
host reporting
reporting
11 22

Host communication Sequential datasets

Em um relatório você utiliza o ABAP/4 Open SQL para ler dados do banco de dados do R/3. Um
relatório consiste em uma tela de seleção na qual você define o dataset que deseja exibir, e uma lista
que exibe os seus próprios dados .No Relatório interativo, o usuário pode navegar de uma lista básica
para listas de detalhes na execução. Tipicamente, informa-se somente a leitura de dados do banco de
dados. Porém, também é possível fazer mudanças no banco de dados que usa um relatório.

Em um programa de diálogo que usa a tela Painter para criar telas e programar a seqüência na qual elas
aparecem. Você escreve um programa ABAP/4 para suas telas. Esta é uma coleção de módulos de
diálogo que são chamados pela lógica de fluxo de suas telas. Você usa programas de diálogo para
leitura de tabelas de banco de dados

Data : 06/10/10 CURSO DE ABAP/4 Página 14 de


131
TREINAMENTO

Object Browser

Para criar um programa, você especifica primeiro uma classe de desenvolvimento. Classes de
desenvolvimento são recipientes para objetos na mesma área. Uma rota de transporte comum é
definida para todos os objetos dentro de uma classe de desenvolvimento. Classes de desenvolvimento
específicas de cliente começam com Y ou Z.

Se você está criando um objeto de teste que você não quer que seja transportado, selecione local priv.
objects. A classe de desenvolvimento é fixada então como $TMP.

Você então especifica o nome do novo programa. Para continuar, clique no buttom Program e escolha
Display.

Uma caixa de diálogo então aparece e lhe pergunta se você quer criar o programa com um TOP
include. Se você escolhe fazer assim, o sistema gera um include program no qual você pode armazenar
todas as declarações (assumindo que você mantenha as convenções, como por exemplo, nomes de
programa em módulo de pesquisa que começam com SAPM...)
em módulo de pesquisa que começam com SAPM...)

Data : 06/10/10 CURSO DE ABAP/4 Página 15 de


131
TREINAMENTO

Objetos de Programa

Development class

Dev. Class objects types Program

Dictionary objects Global data

Programs PBO modules

Function Groups PAI modules

Includes Subroutines

Transactions Screens

Logical databases GUI Status

Message classes Includes

. Transactions
.
.

Você pode usar o ABAP/4 Development Workbench para criar programas ABAP/4 .

Você pode chamar objetos da lista de objetos gerada na tela inicial do Object Browser.

A visão de objeto é uma estrutura hierárquica na qual a classe de desenvolvimento é a raiz.

Uma vez que você gerou uma lista de objetos, esta é mantida automaticamente e dinamicamente pelo
sistema.

Você pode criar, mudar ou exibir os objetos de um programa ABAP/4 da lista de objetos.

Data : 06/10/10 CURSO DE ABAP/4 Página 16 de


131
TREINAMENTO

Arquivos Seqüenciais e Interfaces

Programa ABAP

TRANSFER READ DATASET

Série de arquivos

Quando você usa a interface de dados ABAP , um dataset seqüente é gerado no sistema fonte. Isto é
lido então no sistema designado pelo programa de transferência de dados e é importado
automaticamente no banco de dados R/3 utilizando um batch input, Call Transaction ou direct input.

O ABAP contêm declarações para a implementação de programas de comunicação (CPI-C, RFC e


OLE).

Data : 06/10/10 CURSO DE ABAP/4 Página 17 de


131
TREINAMENTO

Atributos

Quando você cria um programa ABAP/4, você tem primeiro que manter os atributos.

Os atributos Tipo, Aplicação e classe de Desenvolvimento são usados para administrar programas
ABAP/4.

Se você está na função relatório ou no desenvolvimento ABAP/4, você pode gerar um diretório dos
programas ABAP/4 armazenados no sistema. Na função relatório, só programas com tipo ‘1’
(relatórios on-line) são listados. Você pode selecionar quais partes do diretório você deseja exibir:

Para verificar os programas no sistema, selecione:

No ABAP/4 Development Workbench:

ABAP/4 Editor, Utilities → Find program:

No modo relatório:

System → Services → Reporting → Utilities → Find program

Data : 06/10/10 CURSO DE ABAP/4 Página 18 de


131
TREINAMENTO

Tipos de Editor
Caminho: No menu clique em “Utilitários”
Clique em “Opções...”
Abrirá a tela abaixo para que você selecione qual editor irá trabalhar.

Características:
• Modo Editor Frontend (Sem numeração de linhas)
Proporciona um estilo de “processador de texto” com comandos de cópia, recortar e colar mas sem a numeração de
linhas incluídas. Este é o modo default do SAP.

• Modo Editor Backend


Proporciona um estilo de “processador de texto” com comandos de cópia, recortar e colar, podendo ser com ou sem
numeração de linhas.

Data : 06/10/10 CURSO DE ABAP/4 Página 19 de


131
TREINAMENTO

Sintaxe

data counter type i. data counter type i.


data: sum type p, “total
data name(20). data name(20).
counter type p.
move 1 to counter. move 1 to counter,
*novo contador
move ‘abc’to name. ‘abc’to name.
*inicializa o campo total
write name. write name,
clear sum.
write counter. counter.

Nos programas de ABAP/4 as declarações são individuais, e também consistidas individualmente.


Cada declaração deve encerrar com um ponto.
A primeira palavra ou melhor comando deve ser conhecida como palavra chave.
Cada declaração deve ser separada por um espaço em branco, de forma que o que segue atrás das
declarações são dependentes da primeira palavra.
De preferência use cada comando em linhas diferentes.
Você pode usar um comando seguido de dois pontos em vez de repeti-lo várias vezes (veja o exemplo
acima), mantenha os comandos em uma estrutura mostrando a dependência, troque o ponto por vírgula
e encerre o comando com ponto.
Você pode ter linhas de comentários dentro do seu programa de duas formas:
Usando asterisco (*) logo no inicio da linha, sendo que tudo que estiver atrás será um comentário,
caso mude de linha, coloque novamente o asterisco.
Usando aspas (“) pode ser colocadas em qualquer ponto da linha, sendo o que estiver atrás das
aspas será um comentário, não se extende para linha de baixo igual ao asterisco. Veja os exemplos:

Data : 06/10/10 CURSO DE ABAP/4 Página 20 de


131
TREINAMENTO

Dicionário ABAP
Integração do sistema com o dicionário

Development
ABAP envioronment DATA Screen
tolls Modeler Painter

ABAP
Dictionary

ABAP Diolog Interface Screen


Interpreter control programs Interpreter

Development envioronment

O Dicionário ABAP/4 é um componente ativo, integrante do ABAP/4 Development Workbench.


Qualquer mudança feita no Dicionário torna-se efetiva imediatamente nos programas ABAP/4
pertinentes e telas.

A base para isto é a natureza de interpretar dos Sistemas R/3. O desenvolvedor não opera diretamente
no código original de um programa ou tela de ABAP/4, mas interpreta uma representação interna
gerada.

Quando são feitas mudanças no Dicionário ABAP/4 , a pós-geração automática destas representações
internas garantem que o desenvolvedor sempre está trabalhando com os dados mais recentes.

Data : 06/10/10 CURSO DE ABAP/4 Página 21 de


131
TREINAMENTO

Hierarquia de tabela

SCARR SPFLI SFLIGHT SBOOK

Airline Flight Schedule Flight Flight

mandt  mandt  mandt  mandt 

carrid  carrid  carrid  carrid 

carrname connid  connid  connid 

... airfrom fldate  fldate 

airpto seatsmax bookid

deptime seatsocc customid

... ... counter

agencynum

...
H

11001 H 11001 H H
11001 11001
Airline Flight
Flight Bookings
Carrier Schedule

Note a hierarquia das tabelas e como elas se relacionam , sempre temos uma tabela mestre com relação
a outra tabela que contem dados dependentes, de forma que para acessarmos os dados necessários
precisamos entender o relacionamento entre elas obtendo assim o melhor aproveitamento.

Data : 06/10/10 CURSO DE ABAP/4 Página 22 de


131
TREINAMENTO

Hierarquia de um campo

Table

table field

data element
uses

domain
uses

Os objetos de definição de dados básicos no Dicionário de ABAP/4 são tabelas, domínios e elementos
de dados. Domínios descrevem os atributos técnicos de campos de tabela (por exemplo tipo de campo,
comprimento de campo), enquanto elementos de dados contêm a definição semântica (por exemplo
descrição curta).

Campos não são objetos independentes e só podem ser mantidos dentro de tabelas. Eles pressupõem a
existência de um elemento de dados.

Um elemento de dados pressupõe a existência de um domínio.

Domínios podem ser definidos sem referência adicional para outros objetos do Dicionário.

Data : 06/10/10 CURSO DE ABAP/4 Página 23 de


131
TREINAMENTO

Criando uma tabela transparente

Ativando uma tabela do tipo TRANSP no Dicionário de ABAP/4 , você cria automaticamente a tabela
pelo utilitário do banco de dados no banco de dados.

Só operações de banco de dados complexas como conversões de tabela devem ser executadas
diretamente pelo utilitário do banco de dados. Operações simples como criar objetos. podem ser
executadas automaticamente ativando os objetos no Dicionário de ABAP/4 .

No utilitário do banco de dados, você pode controlar os objetos de banco de dados com uma
ferramenta de análise.

Data : 06/10/10 CURSO DE ABAP/4 Página 24 de


131
TREINAMENTO

View

No Dicionário ABAP/4 , objetos agregados são objetos que vêm de várias tabelas transparentes
diferentes.

Views são visões específicas de aplicações de diferentes tabelas do Dicionário ABAP/4 .

Views lhe permitem juntar informações dos campos de tabelas diferentes e apresentar isto para os
usuários na forma que eles necessitam quando trabalham com o Sistema R/3.

Views são principalmente usadas para programar com ABAP/4 e para o help online F4.

Data : 06/10/10 CURSO DE ABAP/4 Página 25 de


131
TREINAMENTO

Search Help

Se você relacionar um campo inserido num objeto Dicionário de ABAP o que terá search help, valores
possíveis são automaticamente disponibilizados para você.

Se o campo não existe em um search help pode ser associada a ele no Dicionário de ABAP uma tabela
de verificação com search help e mesmo será exibido.
Se search help não existe para outro campo ou outra tabela de verificação e os data elements possuem
o search help associado a ele o mesmo você pode exibir.

O processos técnicos trabalham como se segue:


Escolha a tecla F4, o sistema checa no dicionário a verificação do search help direta ou indiretamente a
associação do campo.
Se este for o caso o search help correspondente será mostrado em caixa de dialogo.
Definindo um search help no Dicionário permitindo a possibilidade de selecionar os dados que você
necessita.

Data : 06/10/10 CURSO DE ABAP/4 Página 26 de


131
TREINAMENTO

Open SQL

ABAP Programs
Database

ABAP
Dictionary
select...
Data definition Data

Matching entries

Você usa a declaração SELECT para ler dados das tabelas de banco de dados.

O ABAP/4 usam declarações similares ao SQL standard. Você pode usá-las para ter acesso ao seu
banco de dados. ABAP/4 Open SQL tem as seguintes características:

- ABAP/4 Sintaxe de Open SQL corresponde ao SQL Standard.


- ABAP/4 Open SQL é um subconjunto de SQL Standard.
- ABAP/4 Open SQL contém formas abreviadas SAP.

SELECT avalia as tabelas do banco de dados que usam a interface ABAP/4 Open SQL. As tabelas
devem ser definidas no Repositório ABAP/4 e ter uma chave primária.

SELECT não efetua nenhuma checagem de autorização.

Data : 06/10/10 CURSO DE ABAP/4 Página 27 de


131
TREINAMENTO

Overview - o que o comando select faz

Which columns? select <result> from <table> Which tables?

into <target> Where to?

where <condition> Which entries?

group by <fields> How are they grouped?

Order by <fields> How are they arrenged?

Single line
Several lines

Particular
column

O comando SELECT consiste em uma sucessão de cláusulas com várias tarefas:


A cláusula SELECT indica:
- se o resultado da seleção será uma tabela ou um único registro,
- quais colunas devem conter o resultado,
- se podem acontecer entradas idênticas no resultado.
A cláusula INTO determina a área designada na qual os dados selecionados serão lidos.
A cláusula FROM especifica a fonte (tabela de banco de dados ou visão) de onde os dados serão
selecionados.
A cláusula WHERE especifica condições que devem ser conhecidas na seleção. Em outras palavras,
determina quais registros serão incluídos na tabela de resultado.
A cláusula GROUP BY combina grupos de entradas em entradas individuais.
A cláusula ORDER BY determina como deveriam ser ordenadas as entradas na tabela de resultado.

Data : 06/10/10 CURSO DE ABAP/4 Página 28 de


131
TREINAMENTO

Select com where

...
tables: sbook.

select * from sbook


where carrid = ‘lh ‘.
...
endselect.
...

Você pode usar o parâmetro where dentro de um comando como o select.


Este parâmetro restringe o número de registros que são lidos pelo comando de forma que satisfaçam a
condição seguida do parâmetro.

Outros exemplos de Select


Select single seleciona apenas um registro da tabela usando a chave completa da tabela, caso você não
use a chave completa ele trará o primeiro registro encontrado que satisfaça a condição.

...
tables: spfli.

select single * from spfli


where carrid = ‘LH’
and connid = ‘0400’.
...

Select por colunas de uma tabela, você apenas seleciona alguns campos de uma tabela, de forma que
sua performance será muito mais rápida.
...
tables: spfli.
data: ziel like spfli-cityto,
start like spfli-cityfrom.

select cityto
cityfrom
into (ziel, start)
from spfli
where carrid = ‘LH’.

write: / start, ziel.

endselect.
...
Data : 06/10/10 CURSO DE ABAP/4 Página 29 de
131
TREINAMENTO

Select usando uma tabela interna, voce carrega os dados dentro da sua tabela interna declarada. Sua
performance e melhorada pois voce não acessa o banco de dados varias vezes, você usa os dados
carregados na sua tabela interna.

...
tables: sflight.
data: itab like sflight occurs 100 with header line.

select * from sflight


into table itab
where carrid = ‘AA’.

loop at itab.
write : / itab-carrid, itab-connid, .....
endloop.
...

Data : 06/10/10 CURSO DE ABAP/4 Página 30 de


131
TREINAMENTO

Comando write
Quando se faz necessária a exibição na tela do resultado de um report você utiliza o comando write e
todo o conteúdo que estiver após a instrução até ser finalizado por “.” gerará um relatório de saída.
Como no exemplo abaixo, o write irá fornecer uma listagem de dados que foram selecionados dentro
da tabela sflight produzindo um resultado como demonstrado abaixo.

Ex.:
report zexemplo.
tables: sbook.
select * from sbook
where carrid = 'lh'
and connid = '0400'.
write: / sbook-carrid,
10 sbook-connid,
20 sbook-fldate,
35 sbook-bookid,
50 sbook-luggweight,
60 sbook-wunit.
endselect.
if sy-subrc ne 0.
write: / 'não existem entradas para esta seleção.'.
endif.
skip 5.
uline.
skip.

Resultado:

Data : 06/10/10 CURSO DE ABAP/4 Página 31 de


131
TREINAMENTO

Startando um Report
Caminho: Clique no menu a opção “Ferramentas” > “ABAP Workbench”
Clique no botão “Editor ABAP ”.
Chegando na tela do “ABAP Editor”, deve-se entrar com o nome do programa que será
criado.
Clique em criar.

DICA: Se você
digitar “SE38”
no campo
command a tela
de entrada do
editor de ABAP
irá surgir.
Obs.: Todo o programa
que for criado deve
começar por “Y” ou “Z”

Data : 06/10/10 CURSO DE ABAP/4 Página 32 de


131
TREINAMENTO
Nesta tela você irá digitar os dados assinalados e clicar em salvar.
Abrirá uma tela menor “Modificar entrada catálogo objetos” onde você deverá preencher o campo
“Classe desevolvim.” com a sua classe.

Descrição
Simples

Tipo de programa

Área de aplicação do programa

Obs.: Após clicar em salvar na tela “Modificar entrada catálogo objetos” uma outra tela surgirá
solicitando o número da request, caso você já tenha criado uma request anteriormente, salve o seu
programa nela, caso contrário crie uma nova.
Imp.: Uma request permite o transporte do seu programa de uma máquina de desenvolvimento para
uma outra de produção fisicamente diferente, pois na mesma máquina os programas são vistos em
todos os clients pois são independentes. Caso não haja necessidade de transporte pode-se criar como
LOCAL OBJECT.

Data : 06/10/10 CURSO DE ABAP/4 Página 33 de


131
TREINAMENTO

Retorne para a tela inicial e tecle “Modificar”.


O editor ABAP será aberto.
A primeira linha indicará o nome do programa e é através desta linha que o sistema identificará e
executará o programa ou por execução direta ou por um atalho (Ex.: Uma transação).

Data : 06/10/10 CURSO DE ABAP/4 Página 34 de


131
TREINAMENTO

Where–used list

Tecla
Where-used list

Quando você pressiona esse botão enquanto o cursor está em qualquer nome de variável, ele exibirá
todas as linhas de código que a utilizam.

Data : 06/10/10 CURSO DE ABAP/4 Página 35 de


131
TREINAMENTO

Copiando Programas

Select

Insert from buffer

Copy to buffer

Existem algumas formas para você copiar parte de um programa ou ele inteiro. Por meio de ícones
selecione a área que será copiada clicando em Select, clique em Copy to buffer e vá para onde irá
descarregar o que foi copiado e clique em Insert from buffer.
Outra forma é após selecionar a área que será copiada vá no menu e selecione Block -> Move ->
Clipboard e depois vá para onde irá descarregar o que foi copiado e no menu selecione Edit -> Insert
buffer -> Clipboard.

Data : 06/10/10 CURSO DE ABAP/4 Página 36 de


131
TREINAMENTO

Tipos de dados, tipo n, c, d, p etc...


Data type Meaning Initial Default Permitted
Value leng length

P packed number 0 8 1-16

I Integer 0 4 4

F Floating point nº 0.000... 8 8

N Numeric text 00...0 1 1-max.

C
Text blank 1 1-max.

D
Date (YYYYMMDD) 00000000 8 8

T
Time (HHMMSS) 000000 6 6

X
hexadeciamal x ‘00’ 1 1-max.

São oito tipos de dados predefinidos em ABAP .

Tipos de propriedade valor de alcance satisfatório para


I inteiro -231 para +231 contadores, quantidades, índices,
cronometrar períodos
P nº. com lugar para 2 caráter por quantias de byte dinheiro, tamanho, pesos,
decimal
F ponto flutuante -2,2E-308 a +l,8E308 cálculo em um valor de alcance
muito grande

Cálculos com número de tipo I são mais econômica, seguido após do tipo F e então do tipo P. Você
deve notar, porém, aquela aproximação pode causar erros com tipo números de F. É particularmente
desaconselhado comparar dois números de tipo de ponto flutuantes para igualdade. Você deve ao invés
disso conferir se a diferença entre as duas quedas está dentro de uma tolerância aceitável. Você só deve
usar número de ponto flutuante para problemas matemáticos onde você pode aceitar erros de
aproximação. Para problemas empresariais, você deveria usar normalmente o tipo P.

Data : 06/10/10 CURSO DE ABAP/4 Página 37 de


131
TREINAMENTO
Em número tipo P, são armazenados dois dígitos em cada byte. O último meio byte é usado para o
sinal de mais ou menos.

Data : 06/10/10 CURSO DE ABAP/4 Página 38 de


131
TREINAMENTO

Data Declaration – definir o elemento data: c/


type, like, value

data <data object> type <type> [value <literal>].


data <data object2> like <data object1> [value <literal>].
data: begin of <data object>,
... ,
end of <data object>.
Data <data object> type <field string type>.

clear <data object>.

report zexemplo.

data: name1 (25) type c,


first_line type i value 4,
flighttime type t,
clear: name1, first_line, flightime.

Você usa a declaração DATA para declarar objetos de dados em seus programas ABAP/4 .
As adições para a declaração de DATA são iguais para a declaração de TYPES. Exatamente do mesmo
modo como com a declaração de TYPES, você pode usar:
TYPE para se referir a um tipo pré-definido ou definido pelo usuário com um valor
LIKE para se referir ao tipo de um objeto de dados dentro do programa ou um objeto de
Dicionário ABAP/4 .
Note que você pode usar as adições TYPE e LIKE para qualquer dados de objeto nas declarações.
Cada campo elementar é inicializado com um valor apropriado para seu tipo. Você pode fixar um valor
inicial por um campo elementar usando a extensão VALUES da declaração DATA Só um objeto de
dados fixo pode seguir a extensão de VALUE (um literal ou uma constante).

Data : 06/10/10 CURSO DE ABAP/4 Página 39 de


131
TREINAMENTO

Type Declaration – defenindo o comando type,


type c/ tabela interna

type <type2> [(<lenght>)] type <type1> [occurs 0].


type <type> like <data object1> [occurs 0].
Types:begin of <typ>,
... ,
end of <typ>.

Você pode declarar o usuário definindo tipos de dados em seus programas ABAP usando a declaração
TYPES.

Fazendo assim você pode se referir

predefinido ou o usuário defini os tipos de dados usando TYPE ou

o tipo de objetos de dados dentro do programa ou objeto do Dicionário ABAP usando LIKE.

Note que você pode usar as adições TYPE e LIKE para qualquer declaração de tipo.

Data : 06/10/10 CURSO DE ABAP/4 Página 40 de


131
TREINAMENTO

Definindo valores para declarações – move,


add, compute, igualando os campos

report rsaaa04a.
data: name1 (25),
sort_name (10),
first_line (4) type n,
next_line type i.
.
.
.
move ‘SAP’ to name1.
move 5 to first_line.
compute next_line = first_line + 1.
sort_name = name1.
add 1 to next_line.
.
.
.

Estas são algumas declarações ABAP/4 que nomeiam valores a campos. Os mais importantes destes
são MOVE e COMPUTE. COMPUTE é opcional.

Se há uma falta de coincidência de tipo ou tamanho entre o campo e o valor nomeado, o sistema
executa um ajuste automático.

Para operações de aritmética simples, você também pode usar as declarações ADD, SUBTRACT,
MULTIPLY e DIVIDE.

Data : 06/10/10 CURSO DE ABAP/4 Página 41 de


131
TREINAMENTO

Literais e Constantes – comando constants

O ABAP/4 reconhece dois tipos de constantes:

Há literais de número para os tipos de dados P e I, e textos literais para os tipos de dados C e N.
Outros tipos de dados não têm constantes específicas de tipo. Para estes, você sempre deveria usar um
texto literal.

Se você quer associar uma fração a um campo de tipo P (definido com casas decimais), você deve
especificar isto como um texto literal (por exemplo ‘2.17’).

Internamente, o ABAP/4 gera um valor que está correto para cada tipo.

Se um texto literal contém aspas simples, você deve colocá-las duas vezes.

Você pode criar constantes com a palavra chave CONSTANTS. Depois da opção VALUE você
associa um valor a uma constante esta não pode ser mudado (também veja a documentação online para
CONSTANTS).

Data : 06/10/10 CURSO DE ABAP/4 Página 42 de


131
TREINAMENTO

Parameters e Table – os dois comandos com


um exemplo

table <table>.
parameters <field>.

report zexemplo.
table sflight.
parameters: par1 type p,
par2 default ‘x’.
.
.
.
move par1 to ... .
write: par1, par2.
.
.
.

Utilize TABLE para declarar os nomes das tabelas que serão utilizadas durante o programa.

A declaração PARAMETERS é uma palavra chave declarativa para declarar campos internos. Em
contraste com a declaração DATA, campos declarados com PARAMETERS são exibidos campos na
tela de seleção para inserção de dados.

A declaração de PARAMETERS oferece os mesmos parâmetros que a declaração DATA (i.e. TYPE,
LIKE, DECIMALS etc.). Enquanto a opção VALUES com a declaração DATA lhe permite associar
valores iniciais a campos, você pode usar a opção DEFAULT dos PARAMETERS para fixar um valor
default.

Data : 06/10/10 CURSO DE ABAP/4 Página 43 de


131
TREINAMENTO

Text Symbols

Text symbols são outros tipos de literais. Eles tem vantagens em relação as literais, dentro do
programa o mesmo pode ser definido. Você pode remover ou inserir textos na codificação de seu
programa, é um processo fácil que você terá uma lista independente de textos.
Você pode endereçar o text symbol em seu programa de duas formas:
TEXT(XXX) (onde xxx e uma numeração de três caracteres seqüenciais)
‘<text>’ (XXX) (onde xxx e uma numeração de três caracteres seqüenciais)
Você pode usar o text symbols usando duplo clique ou pelo menu.

Data : 06/10/10 CURSO DE ABAP/4 Página 44 de


131
TREINAMENTO

Inicializando os dados – clear

clear c1 [with c2 : with 'A': with null]

DATA: TEXT(10) VALUE 'Hello',


NUMBER TYPE I VALUE 12345,
ROW(10) TYPE N VALUE '1234567890',
BEGIN OF PLAYER,
NAME(10) VALUE 'John',
TEL(8) TYPE N VALUE '08154711',
MONEY TYPE P VALUE 30000,
END OF PLAYER.
...
CLEAR: TEXT, NUMBER, PLAYER.
...

Você usa CLEAR para resetar qualquer objeto de dados variável ao valor inicial apropriado para seu
tipo.

Data : 06/10/10 CURSO DE ABAP/4 Página 45 de


131
TREINAMENTO

Expressões Aritméticas – compute, sum

report zexemplo.
data: counter type i,
amount type p value 1000,
sum type p,
result type p,
number(2) type f.
compute: counter = counter + 2,
resulte = amount * counter.
sum = result + number – counter.
result = counter + number – counter.
root = sqrt (number + counter).

Compute, instrução utilizada com mais freqüência para executar cálculos.


Utilize a instrução SUM cara calcular os totais das linhas de um nível de controle.
Quando for necessário trabalhar com parênteses utilize um espaço, “( “ , “ )”, antes e depois do valor
dentro dos parênteses.

Data : 06/10/10 CURSO DE ABAP/4 Página 46 de


131
TREINAMENTO

Sub-fields

report zexmplo.
data: year(4) type c,
month(2) type c,
day(2) type c.

move: sy-datum(4) to year,


sy-datum+4(2) to month,
sy-datum+6(2) to day,
write: / year, month, day.
write: / sy-datum.

Você pode endereçar e mudar componentes de um campo, especificando deslocamento e tamanho.


Somente algumas declarações (ASSIGN, parâmetros atuais e WRITE ... TO), permitem especificações
de deslocamento e tamanho de variáveis.

Data : 06/10/10 CURSO DE ABAP/4 Página 47 de


131
TREINAMENTO

String Operations – Concatenate, Split

concatenate f1 f2 f3 into g

split g at space into fi f2 f3

Report zexemplo
Data: one(1) value ‘I’, two(4) value ‘like’,
Three(6) value ‘ABAP ’, target(20).
Concatenate one two three into target separeted by space.
Write: / target.
...
clear: one, two, three.
...
split tagrget At space into one two thrww.
Write: / one, two, three.

As palavras-chave CONCATENATE e SPLIT são usadas para concatenar e dividir strings.

Operandos são tratados como campos tipo C, independente do tipo atual deles, i.e. nenhuma conversão
de tipo é executada.

Valores do código de retorno de CONCATENATE:

SY-SUBRC = 0: resultado se ajusta no campo designado

SY-SUBRC = 4: Resultado é muito longo para campo designado; só a tamanho definido é


transferido.

Valores do código de retorno de SPLIT:

SY-SUBRC = 0: Todos os campos designados foram suficientes


SY-SUBRC = 4: Um dos campos designados era não grande o bastante

Outros comandos que manuseiam strings incluem SEARCH, SHIFT, REPLACE, TRANSLATE e
CONDENSE (também veja a documentação online).

Data : 06/10/10 CURSO DE ABAP/4 Página 48 de


131
TREINAMENTO

Cálculo de Datas

report zexmplo.
data: diff type p,
date_1 like sy-datum,
date_2 like sy-datum.
date_1 = sy-datum.
date_2 = sy-datum.

date_2+6 = ‘01’.

date_2 = date_2 – 1.

diff = date_1 – date_2.

Se um campo de data é convertido a um campo numérico, o sistema ABAP/4 calcula o número de


dias desde 0l.0l.0000.

Na conversão, quando você associa um campo numérico ao um campo de data, o valor é interpretado
como o número de dias desde 0l.0l.1900.

Valores de campos de data são convertidos em valores numéricos (número de dias desde 01.01.1900)
antes de qualquer operação aritmética.

Data : 06/10/10 CURSO DE ABAP/4 Página 49 de


131
TREINAMENTO

Operadores de comparação

eq = Igual
ne <> >< Diferente
gt > Maior
ge >= => Maior ou igual
lt < Menor
le <= =< Menor ou igual
between Intervalo
is initial Valor inicial

Se os operadores não são do mesmo tipo de dados, o sistema executa um ajuste de tipo. Para detalhes
sobre quais tipos são convertidos, por favor refira-se à documentação online (veja HELP IF).

Se um campo mostra ser menor que o outro, quando você compara dois campos de tipo C, o tamanho
do campo menor é ajustado para igualar-se ao campo mais longo e é aumentado à direita com espaços
em branco.

Há vários outros operadores para executar comparações de strings (veja HELP IF).

Data : 06/10/10 CURSO DE ABAP/4 Página 50 de


131
TREINAMENTO

Expressões lógicas – IF – Case – Do – While –


check –
IF
As declarações ELSE e ELSEIF são opcionais.
Se a expressão lógica é satisfeita, a sequencia de declaração seguinte é executada.
Se a expressão lógica não é satisfeita, a seção ELSE ou ELSEIF é processada. Se não há nenhuma
declaração ELSE ou ELSEIF adicional, o programa continua processando depois da declaração
ENDIF.
Você pode incluir quantas declarações ELSEIF você quiser entre IF e ENDIF. Não mais do que uma
das seqüências de declarações será executada.

if <logical expression>.
statements
statements

endif.

if <logical expression>.
statements
statements

else.
statements
statements

endif.

if <logical expression>.
statements
statements

elseif <logical expression>.


statements
statements

elseif <logical expression>..

statements
statements

else.

statements
statements

endif.

Data : 06/10/10 CURSO DE ABAP/4 Página 51 de


131
TREINAMENTO

CASE
Única das sequencias de declarações é executada.
A declaração WHEN OTHERS é opcional.

case <field1>.

when <value1>

statements
statements

when <value2>
statements
statements

when <value3> or <value4>.

statements
statements
when others.

statements
statements

endcase.

Data : 06/10/10 CURSO DE ABAP/4 Página 52 de


131
TREINAMENTO
DO Loop
O parâmetro <n> TIMES é opcional. Se você não usá-lo, você deverá construir uma declaração de
terminação no loop. (veja declaração de EXIT)

SY-INDEX é o contador loop para os comandos loop DO e WHILE. SY- INDEX tem valor 1 durante
a primeira passagem do loop e é aumentado 1 pelo sistema para cada passagem do loop.
O número de passagens loop não podem ser alterados pelo campo de SY- INDEX ou o contador loop
dentro de DO...ENDDO.

do <n> times.

statements
statements

enddo.

Data : 06/10/10 CURSO DE ABAP/4 Página 53 de


131
TREINAMENTO
WHILE
Enquanto a expressão lógica é satisfeita, a sequencia de declarações é executada.

O número de passagens loop não podem ser alterados pelo campo de SY- INDEX dentro do loop
WHILE... ENDWHILE.

while <logical expression>.

statements
statements

endwhile.

sy-index loop index

While counter > 0.


...
subtract 1 from counter.
endwhile.

Data : 06/10/10 CURSO DE ABAP/4 Página 54 de


131
TREINAMENTO
CONTINUE e CHECK
Você só pode programar a declaração CONTINUE dentro um loop. O comando assegura que aquelas
declarações subseqüentes dentro do loop não serão executadas nesta passagem e o próxima passagem
do loop começa imediatamente.

A declaração CHECK dentro de uma estrutura loop tem o mesmo efeito de CONTINUE se a expressão
lógica especificada não é cumprida.

Se uma condição CHECK não é cumprida e dentro de um subrotina, a seqüência de dados termina.

Se uma declaração CHECK acontece fora de estrutura loop e sua expressão lógica não é cumprida, não
são executadas as declarações seguintes do bloco.

continue. check <logical expression>.

dentro de uma estrutura loop

while counter gt 0.
while counter gt 0.
statements
statements statements
statements

if f1= f2.
continue. check flag ne space.
endif. statements
statements

statements
statements
endwhile.
endwhile.

fora de uma estrutura loop

statements
statements

check <condition>.

statements
statements

Data : 06/10/10 CURSO DE ABAP/4 Página 55 de


131
TREINAMENTO
EXIT
Você usa a declaração EXIT dentro uma estrutara loop para deixar o corrente loop.

Você usa a declaração EXIT dentro de uma seqüência de dados deixar a seqüência de dados atual.

Se você usa a declaração EXIT fora de um loop ou uma seqüência de dados, causa o termino do
processo do relatório, e a lista é produção.

exit.

exit within a loop structure.

do

statements
statements

if counter ge 100.
exit.
endif.

statements
statements
enddo.

exit outside a loop structure.

statements
statements

if ... .
exit.
endif.
statements
statements

Data : 06/10/10 CURSO DE ABAP/4 Página 56 de


131
TREINAMENTO

Modo Debugging

Quando você está no modo debuggind, as linhas de programa aparecem na metade superior da tela. A
próxima linha a ser processada é sinalizada pelo caráter “>”. Como sempre, você pode rolar pelo
código de programa usando as chaves de função standards.

Do meio da tela para baixo, você pode exibir os conteúdos de campos. Para fazer isto, coloque o cursor
em um campo e selecione Choose ou use as opções de pickup standards (pressionando F2 ou clicando
duas vezes).

Data : 06/10/10 CURSO DE ABAP/4 Página 57 de


131
TREINAMENTO

Como executar um programa em debugg

Estes são vários modos diferentes que você pode ramificar o modo depurando:

1. Comece um programa chamando a função de Debugging.

2. Fixe pontos de ruptura no programa (selecione Utilities -> Breakpoint -> Set) e inicie o programa
(escolha Programa -> Execute).

3. Se você quiser testar uma transação (tela debugging), entre com ‘/h’ no campo de comando,
pressione ENTER e escolha Execute.

4. No Object Browser, você pode acessar o modo debugging modificando o “Program and Display”
na caixa de “Object List” ou “Program objects and Edit”, e, finalmente acionando a tecla
“Test/execute” (pushbutton). Na próxima tela, você pode especificar o tipo de execução (por
exemplo Debugging).

Data : 06/10/10 CURSO DE ABAP/4 Página 58 de


131
TREINAMENTO

As funções mais importantes do Debugg

Single Step Executa a próxima linha do programa.

Execute Em contraste com Single Step, executa todo o processo.

Return Processa retornos de apenas um nível de hierarquia.

Continue Excecuta o code up até o próximo breakpoint ou até o final


do programa.
Table Apresenta o conteúdo das tabelas internas.

Breakpoint Você utiliza esta função no menu para definir o breakpoint.

Editor
Dirige-se para o ABAP Editor.

Hexadecimal Display
Apresenta os dados em formato hexadecimal.

Replace Permite que você mude os dados no debugging.

Função Replace:

Você associa um novo valor a um campo entrando com valor no lugar apropriado. A seguir, você
seleciona o “Checkbox” na coluna R e pressiona o pushbutton. O novo valor é então usado na sessão
de depuração.

Data : 06/10/10 CURSO DE ABAP/4 Página 59 de


131
TREINAMENTO

Breakpoint

A função Continue no Debugger executa comandos até o próximo ponto de breakpoint. Você fixou
breakpoint como segue:
Linhas-orientadas breakpoint
− Você pode colocar um ponto de breakpoint na posição do cursor atual selecionando a função
Choose ou através de duplo clique. Linhas onde um ponto de breakpoint for fixo estão marcadas
com um símbolo de STOP. Você pode exibir tudo sobre os pontos de ruptura fixados
atualmente, selecionando Goto → Breakpoint. Você pode apagar pontos de breakpoint através
de duplo clique, após posicionar o cursor em um deles ou usando o menu de ponto de
breakpoint.
− Você pode usar a declaração BREAK-POINT no Editor ABAP .
− Você pode posicionar o cursor e então pode escolher Utilities → Breakpoint → Set.
−Campo de conteúdo-orientou breakpoint ??
− Você pode fixar um ponto de visão selecionando Goto → Fields. Quando o campo no qual o
ponto de visão é fixo contendo um valor diferente, as paradas de debugger. ??
− Você pode fixar pontos de breakpoint dependente em SY-SUBRC <> 0 através de Breakpoint →
Breakpoint at...
Command-oriented breakpoint: Você pode fixar pontos de breakpoint através do ABAP para palavras-
chave, eventos e seqüência de dados escolhendo Breakpoint → Breakpoint at...

Data : 06/10/10 CURSO DE ABAP/4 Página 60 de


131
TREINAMENTO

Tabelas Internas

data <itab object> type <line type> occurs <n>.


data <itab object> type <itab type>.
Data: begin of <itab object> occurs <n>,

...

end of <itab object>.

Internal table <itab>

CARRID CONID
AA 0010
LH 0400
LH 0450
LH 0460
SQ 0005
UA 0020

Tabela interna (‘ordens’ em outra terminologia) é um jogo de linhas com o mesmo tipo de
característica.

O número de linhas não é determinado estatisticamente. Uma tabela interna pode tratar de qualquer
número de entradas na execução. A única restrição no volume de dados que podem ser armazenados é
a capacidade limitada de sistemas concretos instalados.

Data : 06/10/10 CURSO DE ABAP/4 Página 61 de


131
TREINAMENTO

WA e Tabela interna, tipos de tabelas internas


Em contraste com os conceitos de ordem achados em outros idiomas de programação, ABAP não
usam acesso direto para as entradas de tabela. Ao invés, operações na entradas da tabela são levadas
para fora de uma área de trabalho.

ABAP reconhece as operações seguintes essencialmente em tabelas internas:

Comando Efeito Sint.


APPEND Junta os conteúdos da área de trabalho ao append...<itab>.
término da tabela interna

COLLECT Inserções dos conteúdos cumulativos da área collect...<itab>.


de trabalho na tabela interna

INSERT Inserções os conteúdos da área de trabalho em insert...<itab>.


uma entrada de tabela particular

MODIFY Escreve elaboradamente uma entrada de tabela modify <itab>... .


particular com o conteúdo da área de trabalho

DELETE Apaga uma entrada especificada da tabela delete <itab>... .


interna

LOOP AT Identifica individualmente as entradas de uma loop at <itab>...


tabela interna em um trabalho área uma de endloop.
cada vez

READ TABLE Identifica uma única entrada de tabela interna read table <itab>... .
em uma área de trabalho

SORT Tipos a tabela interna sort <itab> by <field1>


... <fieldn>.
CLEAR Apaga a área de trabalho ou a tabela interna clear <itab>.

REFRESH Apaga a tabela interna refresh <itab>.

FREE Gera espaços na memória previamente


ocupado através de tabela

Data : 06/10/10 CURSO DE ABAP/4 Página 62 de


131
TREINAMENTO

Tabelas internas

...
tables: sflight.
data: begin of itab_sflight occurs 5,
carrid like sflight-carrid,
connid like sflight-connid,
...
end of itab_sflight.
...

Quando declarar uma tabela interna respeite a ordem dos campos, a seu processamento será muito
mais rapido.

Data : 06/10/10 CURSO DE ABAP/4 Página 63 de


131
TREINAMENTO

Declarando tabelas

Header Line <itab> Work area <itab>


append <itab>. append <wa> to <itab>.
modify <itab> index <n>. modify <itab> index <n> from <wa>.

loop at <itab>. loop at <itab> into <wa>.


write <itab>-<field>. write <wa>-<field>.
endloop. endloop.

read table <itab> index <n>. read table <itab> index <n> into <wa>.
write <itab> <field>. write <wa> <field>.

Você pode definir tabelas internas com ou sem uma linha de cabeçalho. Uma tabela interna com linha
de cabeçalho é um tipo de área de trabalho (enfileiram cabeçalho) e o tamanho da própria tabela.
Ambos são enviados usando o mesmo nome, a interpretação do nome é contexto-sensível.
Consequentemente, a representação do cabeçalho enfileira uma declaração MOVE, mas representaria
o tamanho da tabela em uma declaração de SEARCH.

Data : 06/10/10 CURSO DE ABAP/4 Página 64 de


131
TREINAMENTO

Preenchendo uma tabela interna

append [<wa> to] <itab>.

report zexemplo.
tables: sflight.
data: flightinfo_list like sflight occurs 0.

select * from sflight.


append sflight to flightinfo_list.
endselect.

Tabelas internas entram em jogo quando você precisa de um jogo de linhas ao mesmo tempo. Isto
acontece particularmente quando você precisa de uma cópia de uma tabela de banco de dados para
trabalhar dentro de um programa.

O comando SELECT coloca uma entrada de uma tabela de banco de dados na área de trabalho na
tabela do mesmo nome em cada passagem. Se você quer pode enviar todas as entradas da tabela
durante a execução do programa, cada entrada da tabela deve ser salva na tabela interna.

Você usa a declaração APPEND para encher a tabela interna: APPEND <wa> TO <itab> soma os
conteúdos da área de trabalho <wa> para o fim da tabela interna <itab>. Se você está trabalhando com
uma tabela interna com cabeçalho enfileirado, a sintaxe é encurtada para APPEND <itab>.

Data : 06/10/10 CURSO DE ABAP/4 Página 65 de


131
TREINAMENTO

Transportando valores para uma tabela interna


– move corresponding

move-corresponding <rec1> to <rec2>.

report zexemplo.
tables: sflight.
data: begin of flightinfo,
flag type c,
carrid like sflight-carrid,
connid like sflight-connid,
fldate like sflight-fldate,
price like sflight-price,
end of flightinfo.
select * from sflight where...
move-corresponding sflight to flightinfo.
endselect.

A declaração MOVE-CORRESPONDING <rec1> para <rec2> transporta valores de campo para


campo entre a estrutura de dados ABAP <rec1> e <rec2>. Este transporte acontece apenas se os
componentes têm nomes idênticos.

O sistema procura em <rec1> para todos os campos com nomes que também ocorrem em <rec2> e,
entâo providencia campo de transportes <recl>-<fleld name> para <rec2>-<field nome> para todos os
casos onde acha uma partida. Todos os outros campos permanecem inalterados.

Data : 06/10/10 CURSO DE ABAP/4 Página 66 de


131
TREINAMENTO

Fazendo um Sort numa tabela interna

sort <itab> by <field1> <field2>... .

report zexemplo.
tables: sflight.
data: flightinfo_list like sflight occurs 0
with header line.
select * from sflight into table flightinfo_list
where ... .
sort flightinfo_list.
.
.
sort flightinfo_list by price fldate
.
.
sort flightinfo_list by price ascending
fldate descending
carrid ascending as text.

Você pode ordenar uma tabela interna usando o comando SORT. Se você não especificar nenhum tipo
de critério, a tabela é ordenada por todos os campos exceto com dados tipo P, I e F, em ordem
ascendente a sua especificação.

Você pode usar as adições BY <nome de campo> e ASCENDING ou DESCENDING para limitar o
tipo para certos campos e determinar a ordem de seqüência e hierarquia.

Você deve usar a adição BY para restringir os tipos de critério de ordenação por razões de
desempenho.

Você pode executar um tipo alfabético idioma-específico de ordenação de campos de texto que usam a
adição TEXT.

Data : 06/10/10 CURSO DE ABAP/4 Página 67 de


131
TREINAMENTO

Processo de LOOP numa tabela interna

loop at <itab> [into <wa>] ... endloop.

report zexemplo.
tables: sflight.
data: flightinfo_list like sflight occurs 0
with header line.
select * from sflight into table flightinfo_list
where ... .
loop at flightinfo_list.
Write: / flightinfo_list-carrid, flightinfo_list-connid...
endloop.
.
.
.
loop at flightinfo_list where carrid = ‘LH’.
Write: / flightinfo_list-carrid, flightinfo_list-connid...
endloop.
if sy-subrc ne 0.
.
.
.
endif.

Você pode processar uma tabela interna usando a declaração LOOP AT ... ENDLOOP. Cada vez que
processamos através do Loop, o sistema localiza a próxima entrada na tabela na linha de cabeçalho.
Se você estiver endereçando um campo de tabela no programa, estes serão campos de linha de
cabeçalho.

Cada passagem do loop dentro do sistema a próxima entrada da tabela na área de trabalho <wa> ou o
cabeçalho enfileirado da tabela interna <itab>.

Você pode restringir as entradas que são lidas usando a adição WHERE da mesma maneira como você
faz quando está usando o comando SELECT.

No começo de cada passagem do loop, SY-TABIX é fixado ao valor da entrada da tabela atual.
Quando o sistema abandona o LOOP, SY-TABIX tem o mesmo valor que tinha antes do loop
começado.

Data : 06/10/10 CURSO DE ABAP/4 Página 68 de


131
TREINAMENTO

Lendo uma tabela interna

read table <itab> [into <wa>] whith key ... .

report zexemplo.
tables: sflight.
data: flightinfo_list like sflight occurs 0 with header line,
tab_index type i.
select * from sflight into table flightinfo_list
where ... .

read table flightinfo_list


with key carrid = ‘LH’
connid = ‘0400’.

if sy-subrc ne 0 ... endif.


tab_index = sy-tabix + 1.
read table flightinfo_list
index tab_index.
if sy-subrc ne 0 ... endif.

Você usa o comando READ TABLE <itab> para ler unicamente tabelas de entrada. Após a leitura de
acesso, a tabela de entrada aparece na linha de cabeçalho - estando na área de trabalho <wa> ou o
cabeçalho enfileirado de <itab>. Se o acesso foi um sucesso, o valor que será trazido pelo sistema no
campo de SY-SUBRC é zero, caso contrário ele trará algum outro valor. SY-TABIX leva o valor da
entrada da tabela lida.

READ TABLE <itab> INDEX <i>.


Este comando lê o “i-th” da tabela de entrada.

Se você deseja especificar campos individuais como um argumento de procura você pode usar a
seguinte sintaxe:
READ TABLE <itab> WITH KEY <kl> = <vl> <k2> = <v2>... <kn> = <vn>.
Neste caso, a primeira entrada de <itab> é lida com os correspondentes dos componentes especificados
em <kl> ...<kn>.

Se a tabela interna é ordenada pelo argumento de procura, você pode usar a adição BINARY
SEARCH. Dessa forma, o sistema leva a cabo uma procura binária com desempenho mais eficiente
para a entrada especificada.

Na documentação online encontramos mais informações sobre outras “additions” para o comando
READ.

Data : 06/10/10 CURSO DE ABAP/4 Página 69 de


131
TREINAMENTO

Modificando uma tabela interna – insert,


modify e delete

insert [<wa> into] <itab> index <i>.


modify <itab> index <i> [from <wa>].
delete <itab> index <i>.

report zexemplo.
tables: sflight.
data: flightinfo_list like sflight occurs 0 with header line.

select * from sflight into table flightinfo_list


where ... .

read table flightinfo_list


with key carrid = ‘LH’
connid = ‘0400’.

move ‘123.45’ to flightinfo_list-price.


modify flightinfo_list index sy-tabix.
if sy-subrc ne 0 ... endif.
.
.
insert flightinfo_list index 5.

.
.

delete flightinfo_list index


if sy-subrc ne 0 ... endif.

O comando MODIFY <itab> INDEX <i> [FROM <wa>] escrevem elaboradamente a entrada 1’ de
uma tabela com os conteúdos da área de trabalho ou a linha de cabeçalho. A entrada 1’ já deve existir.

O comando INSERT [<wa> INTO] <itab> INDEX <i> cria uma entrada nova na tabela antes da
entrada “i” que contém os conteúdos da área de trabalho ou a linha de cabeçalho. Se a tabela <i> tem -l
entradas, os conteúdos da área de trabalho ou linha de cabeçalho são agrupados à tabela interna.

O comando DELETE <aba> INDEX <i> apaga entrada “i” na tabela.

Você pode fazer mudanças em uma tabela interna dentro de um LOOP. As mudanças sempre se
aplicam à entrada da tabela atual (SY-TABIX).

Data : 06/10/10 CURSO DE ABAP/4 Página 70 de


131
TREINAMENTO

INSERT:
Um registro novo é inserido antes da entrada atual que dispõe dos conteúdos da área de trabalho ou
linha de cabeçalho.

MODIFY:
A entrada atual é escrita elaboradamente com os conteúdos da área de trabalho ou linha de cabeçalho.

DELETE:
O registro atual é apagado.

As adições seguintes podem ser usadas com a declaração DELETE (cf. adições correspondentes com a
declaração LOOP):

...WHERE <condição>. O comando DELETE é aplicado em todas as entradas da tabela que


satisfazem a condição.

...FROM <n1> TO <n2>. Todas as entradas de <ni> para <n2> inclusive são apagadas. Se só a
adição FROM é especificada, todas as entradas de <ni> para o fim da tabela são apagadas. Se só a
adição TO é especificada, todas as entradas do início da tabela para <n2> é apagado.

Data : 06/10/10 CURSO DE ABAP/4 Página 71 de


131
TREINAMENTO

Limpando uma tabela – clear e refresh

clear <wa>.

clear <itab>.
refresh <itab>.

clear <itab>.

clear <itab>[].
refresh <itab>.

Se você está usando uma tabela interna sem uma linha de cabeçalho, CLEAR <itab > apaga o corpo da
tabela. Se sua tabela interna tem uma linha de cabeçalho, CLEAR <itab> apaga a linha de cabeçalho.

Se você só quer enviar o corpo de uma tabela interna com uma linha de cabeçalho, você usa o a <itab>
de forma [].
Exemplo 1: ITAB_WITHOUT e ITAB_WITH são duas tabelas internas sem e com linhas de
cabeçalho respectivamente. O comando ITAB_WITHOUT = ITAB_WITH[] designa o corpo de
ITAB_WITH para ITAB_WITHOUT.
Exemplo 2: CLEAR ITAB_WITH[] apaga só o corpo da tabela interna ITAB_WITH.

REFRESH <itab> apaga o corpo da tabela.

Data : 06/10/10 CURSO DE ABAP/4 Página 72 de


131
TREINAMENTO

Informações de uma tabela interna – describe

describle table <itab>.

report zexemplo.
tables: sflight.
data: flightinfo_list like sflight occurs 10.
select * from sflight into table flightinfo_list.

describle table flightinfo_list lines_count.

Você pode adquirir informação sobre uma tabela interna usando a declaração DESCRIBE TABLE:

A adição de LINES devolve o número para as entradas atuais na tabela.

A adição OCCURS devolve o número de OCCURS na definição de tabela.

Você pode exibir informação sobre qualquer dados do objeto usando o declaração DESCRIBLE
FIELD (veja a documentação online para a declaração DESCRIBLE).

Data : 06/10/10 CURSO DE ABAP/4 Página 73 de


131
TREINAMENTO

Selection screen
Você pode gerar uma visão de seleções para relatórios, onde o usuário poder entrar com as seleções;
resultando numa lista de saída contendo apenas as informações correspondentes aos campos
slelecionados. Você pode abastecer um relatório com dados sem programar um usuário explicitamente
“dialogue”. Você faz isto usando as declarações PARAMETERS e de SELECT-OPTIONS:

PARAMETERS declaram um campo no qual o usuário pode entrar com um único valor.

SELECT-OPTION declaram uma tabela interna que é automaticamente composta com valores ou
alcances de valores inseridos pelo usuário final.

Cada comando, PARAMETERS ou SELECT-OPTIONS, gera uma linha na tela de seleção que é
exibida automaticamente quando o relatório é chamado.

Data : 06/10/10 CURSO DE ABAP/4 Página 74 de


131
TREINAMENTO

Parameters
Este comando quando executado em um programa gera um campo de entrada de dados numa tela de
seleção antes do programa realmente em si ser executado, esta tela é onde você digitará a informação
que será a chave para a seleção dos dados do seu programa.

Sint.:

parameters p1 [(1)] [type t] [decimals d]...


− p1 é o nome do parâmetro.
− 1 é a especificação interna de comprimento.
− t é o tipo de dado
− d é o número de espaços decimais (utilizado apenas como tipo p).

Ex.:

report zexemplo
parameters aircom like spfli-carrid.

Resultado:

Data : 06/10/10 CURSO DE ABAP/4 Página 75 de


131
TREINAMENTO

Select-options
O usuário ou pode entrar em um único valor (‘DL’), um valor genérico (‘D’) ou um intervalo (‘DL’
para ‘LH’). A entrada conduz a uma única entrada na tabela interna <selname>.

A tabela interna declarada em SELECT-OPTIONS <selname> para <field> é enviado pelo ABAP
usando <selname>. Esse tipo de linha contém os campos SIGN, OPTION, LOW e HIGH. O tipo de
LOW e HIGH são iguais como no <campo>.

O campo de SIGN pode conter os seguintes valores:


I Inclusive (deve ser aplicado)
E Exclusive (não deveria aplicar)

O campo de OPÇÃO pode levar os valores seguintes:


EQ Igual GT Maior que
NE Não igual BT Entre
LE Menor ou igual NB Não entre
LT Menor que CP Contêm padrão
GE Maior ou igual NP igual Nenhum padrão

Data : 06/10/10 CURSO DE ABAP/4 Página 76 de


131
TREINAMENTO

Selection- text
Através do default, o nome introduzido no parâmetro ou a opção de seleção é exibido na tela de
seleção.
Para cada declaração PARAMETER ou SELECT-OPTIONS você deve definir um texto selecionando
Text elements -> Selection texts. Você pode manter estes textos então em vários idiomas. Isto assegura
que eles são exibidos no idioma de logon atual em vez do nome do critério de seleção.

Data : 06/10/10 CURSO DE ABAP/4 Página 77 de


131
TREINAMENTO

Autorizações e Checks
Você tem que especificar todos os campos do objeto em um AUTORITY-CHECK. Se você não quer
levar a cabo um cheque para um campo particular, entre em DUMMY depois do nome de campo.

Exemplo: Quando chama uma transação para mudar dados de vôo, para conferir se o usuário é
autorizado para mudar as entradas para um portador de linha aérea particular:
AUTORITY-CHECK OBJECT ‘S_CARRID’
‘ID' ‘ACTVT’ campo ‘02’
ID ‘CARRID’ dummy.

Os códigos de retorno mais importante para AUTORITY-CHECK são:

0: O usuário tem uma autorização que contém os valores exigidos.

4: O usuário não tem a autorização exigida.

24: O cheque não pôde ser levado a cabo desde que todos os campos do objeto forem
especificados.

A documentação online para AUTORITY-CHECK contém uma lista completa de códigos de retorno.

Você só pode especificar um único campo depois da adição de FIELD, não uma tabela de seleção. Há
módulos de função que levam a cabo o AUTORITY-CHECK para todos os valores na tabela de
seleção.

Data : 06/10/10 CURSO DE ABAP/4 Página 78 de


131
TREINAMENTO

Autorização

Todos os dados no Sistema R/3 devem ser protegidos contra acesso por usuários sem autorização.
Autorizações são nomeadas por um usuário mestre em manutenção.
Você pode determinar explicitamente quais tipos de dados um usuário poderá ou não ter acesso e que
tipo de acesso lhe é possível. Por exemplo, você pode definir que um usuário possa exibir os dados de
todos os portadores de linha aérea, porém, não poderá fazer qualquer mudança nestas informações, ou
seja, ele não foi autorizado a fazer qualquer alteração. Durante cada cheque de autorização, os cheques
de sistemas dos campos ‘activity’ e ‘airline carrier' são ativados.
Quando estiver definindo autorizações, você tem que especificar valores para estes campos. Para fazer
isto, você precisa criar um objeto de autorização que consiste dos campos ‘activity’ e ‘airline carrier' e
enviar este para ambos objetos quando você nomeia autorizações em registros mestre de usuário e
quando você executa cheques de autorização em programas.

Para autorização de objetos só se define a combinação de campos se enviados simultaneamente e


servir como modelos para autorizações e cheques de autorização. Para fazer a manutenção e
identificação de objetos de autorização mais fácilmente, devemos combiná-los de forma a obtermos
classes de objeto. São nomeadas uma ou mais classes a uma aplicação. Do menu de Desenvolvimento
na tela inicial da ABAP Development Workbench, você pode ter acesso a transação de manutenção
para objetos de autorização e exibe uma lista de todos os objetos com os campos correspondentes e
documentação.

Data : 06/10/10 CURSO DE ABAP/4 Página 79 de


131
TREINAMENTO

Autorização dentro de programas

Quando estiver fazendo cheques de autorização em programas, você especifica o objeto e os valores
das necessidades do usuário em uma autorização para poder ter acesso ao objeto. Você não tem que
especificar o nome da autorização.

Os exemplos acima checa se o usuário é autorizado para o objeto S_CARRID que tem o valor ‘LH’ no
campo CARRID (o portador de linha aérea) e o valor ‘02’ para ‘Mudança’ no campo ACTVT
(atividade). As abreviações para as possíveis atividades são documentadas nas tabelas TACT e
TACTZ e também nos objetos apropriados.

Importante: A declaração AUTORITY-CHECK executa o cheque de autorização e retorna um código


de valor apropriado. Quando ler este código de retorno pode-se especificar as conseqüências de uma
autorização perdida (por exemplo, programa termina ou salta alguma produção enfileirada).

Data : 06/10/10 CURSO DE ABAP/4 Página 80 de


131
TREINAMENTO

Sintaxe do authority-check

Você executa um cheque de autorização para cada registro lido com SELECT. A declaração de
AUTORITY-CHECK confere primeiro se o usuário tem a autorização que contenha todos os valores
exigidos. Você leu o valor de código de retorno então no campo de sistema SY-SUBRC. Se este valor
é 0, o usuário tem a autorização exigida e o programa pode continuar. Se o valor é algo diferente de 0,
o usuário não possui a autorização exigida e é produzida mensagem apropriada no sistema.

...
authority-check object <authorization object>
id <authorization field1> field <required
value>
id <authorization field1> field <required
value>
...
id <authorization fieldn> dummy.

if sy-subrc ne 0.
...
endif.
...
Data : 06/10/10 CURSO DE ABAP/4 Página 81 de
131
TREINAMENTO

Modularização e Estrututura de Programa

Através de modularização de seus programas ABAP , você pode:

evitar redundância
Se seu programa contém as mesmas ou semelhantes sucessões de declaração em vários
lugares diferentes, você pode evitar isto por modularização.

fazer seus programas fácies de ler e melhorar suas estruturas

Uma sucessão de declarações é definida em um módulo e pode ser chamada de várias


localizações dentro do programa.

ré-usar componentes do programa

Podem ser novamente usadas algumas partes de seu programa em outros programas.

Quando estiver usando uma subrotina, há três possíveis enredos:

1. a subrotinae a chamada está no mesmo programa ABAP (chamada interna).


2. a própria subrotina está em um programa externo (chamada externa).
3. são nomeados módulos de função para funções de grupos e são armazenados centralmente na
Biblioteca de Função.

Em contraste com subrotina externas, módulos de função têm uma interface claramente definida.

Data : 06/10/10 CURSO DE ABAP/4 Página 82 de


131
TREINAMENTO

Chamando e definindo subrotinas

Para declarar uma seqüência de dados, você usa as palavras chaves FORM e ENDFORM. Depois de
FORM, você especifica um nome (até 30 caracteres).

Por causa de claridade, você deveria colocar todas as subrotinas junto ao término do programa.

Para chamar seqüência de dados você usa a declaração PERFORM, seguida pelo nome da seqüência
de dados.

Você pode executar ambos (FORM and Endform) sucessivamente e as chamadas de subrotina de
retorno.

Data : 06/10/10 CURSO DE ABAP/4 Página 83 de


131
TREINAMENTO

Dados Globais e Locais

Em uma subrotina, você pode definir dados locais.

Você pode usar a declaração DATA para criar estruturas internas com espaço de memória quando
chamando a seqüência de dados.
Estruturas definidas com a declaração TABLE sempre são globais. Se você quer usar áreas de trabalho
de tabela localmente em uma seqüência de dados, você pode os definir usando a declaração LOCAL.
Em uma seqüência de dados, você pode se referir a:

parâmetros formais

declarou campos localmente

dados globais

Data : 06/10/10 CURSO DE ABAP/4 Página 84 de


131
TREINAMENTO

Autorização valores de atual para parâmetros


formais

Quando uma subrotina é chamada, o programa principal pode passar dados para a subrotina por uma
interface.
Qualquer dado determinado na subrotina é considerado disponível ao programa de chamada.
O programa e a subrotina podem se comunicar por parâmetros. Quando definida uma subrotina, você
especifica parâmetros formais. Ao chamar uma subrotina, você especifica parâmetros atuais.
A tarefa dos parâmetros atuais e formais depende de suas posições. Considerando que cada parâmetro
formal deve ser nomeado a um parâmetro atual, deve haver tantos parâmetros atuais quanto parâmetros
formais.
Estes são dois tipos de parâmetros – parâmetros de entrada e parâmetros de saída. Você define
parâmetros de entrada como chamada por valor, e parâmetros de saída como chamada através de
referência ou chamada por valor e resultado.

Data : 06/10/10 CURSO DE ABAP/4 Página 85 de


131
TREINAMENTO

Métodos para autorizar parâmetros

ABAP contém os métodos seguintes para autorizar parâmetros:

chamados por valor:


Quando uma subrotina é chamada, são criados parâmetros formais como cópias dos parâmetros
atuais (no próprio espaço de memória deles/delas).

chamados por valor e resultado:


Parâmetros formais têm seus próprios espaços de memória. Em deixar a seqüência de dados, é
copiado o valor de um parâmetro formal ao espaço de memória do parâmetro atual nomeado.

chamado através de referência:


Os parâmetros formais não são nomeados em seus próprios espaços de memória quando a
subrotina é chamada. Ao invés o endereço do parâmetro atual apropriado é passado. Mudanças
para os valores dos parâmetros formais afetam diretamente os campos pertinentes no programa
principal.

A diferença entre chamada por valor e resultado e chamada através de referência mentem no tempo ao
qual os valores são passados atrás. Chame por valor e resultado e chamada através de referência
causará resultados diferentes se a subrotina termina anormalmente. Isto só acontece se uma mensagem
de erro é gerada ((MENSAGEM Error/Ennn) ou quando uma declaração STOP acontece. Isto causa o
término da subrotina que é processada e a declaração de ENDFORM não é executada. Porém, se você
deixa a subrotina pelas declarações CHECK <expressão lógica> ou EXIT, os parâmetros são
autorizados atrás, desde que a subrotina saia por ENDFORM nestes casos.

Data : 06/10/10 CURSO DE ABAP/4 Página 86 de


131
TREINAMENTO

Autorizando parâmetros com tipos

Depois de USING vêm os parâmetros com os quais se introduzem valores. Você pode autorizar estes
parâmetros que usam chamada por valor (se você quer criar uma cópia local) ou chamada através de
referência (se você quer autorizar a referência).

Sintaticamente, após o USING, você especifica o parâmetro trasmitido por valor ou por referência,
como segue:
• chamam por “valor” ou “valor e resultado”:
Você usa a adição VALUE quando você especifica os parâmetros formais individuais. VALUE
aparece imediatamente antes do nome do parâmetro em parênteses.
Exemplo: FORM upro USING VALUE(f1) Value(f2)...
• chamam através de referência
Você usa a adição USING depois da qual os parâmetros individuais são especificados sem
adição adicional.
Exemplo: FORM upro USING f1 f2 ...
A especificação USING através da chamada de referência é documentada - podendo ser
mudados parâmetros autorizados deste modo na subrotina.

Depois de CHANGING vêm os parâmetros que servem como valores de produção. Você pode passar
estes parâmetros através de chamada por valor e resultado (se você quiser criar uma cópia local) e
chamada através de referência (se você quiser autorizar a referência).

Note que você pode autorizar parâmetros de referência utilizando USING como também CHANGING.
Use USING sempre que você não quiser que os dados dos objetos correspondentes sejam mudados na

Data : 06/10/10 CURSO DE ABAP/4 Página 87 de


131
TREINAMENTO
subrotina. Porém, isto só tem uma documentação natural. Em outras palavras, o programador pode
mudar uma autorização da variável com USING na subrotina e isto terá efeito no programa principal.
Autorizando parâmetros com cheque de tipo

Para assegurar que um parâmetro formal de uma subrotina é de um certo tipo, você pode especificar
isto na declaração FORM. Para fazer isto, entre com TYPE <t> ou LIKE <f> depois do parâmetro
formal na lista depois de TABLES, USING, ou CHANGING.

Quando você chama uma subrotina com PERFOM, o sistema checa quando os tipos de parâmetro atual
no comando PERFORM são compatíveis com os tipos associados ao parâmetro formal. Se os tipos
são incompatíveis, o sistema gera uma menssagem durante o cheque de síntaxe para as chamadas de
subrotinas internas.

Data : 06/10/10 CURSO DE ABAP/4 Página 88 de


131
TREINAMENTO

Autorizando estruturas como tabelas


Você pode autorizar dados na estrutura (por exemplo campo string, linhas de cabeçalhos de tabelas
internas, áreas de trabalho de tabela) especificando LIKE ou TYPE depois do parâmetro formal
pertinente.

· Se você não nomeia um tipo ao parâmetro formal, os únicos campos do campo string na subrotina
não podem ser enviados.

report zexemplo.
tables: sflight
data: ...
...
form write_sflight1 using rec.
perform
write: /write_sflight1
rec using sflight.
perform
endform.write_sflight2 using sflight.
...
form write_sflight1 using rec like sflight.
write: / rec-carrid,
rec-connid,
rec-fldate.
endform.

Data : 06/10/10 CURSO DE ABAP/4 Página 89 de


131
TREINAMENTO

Autorizando tabelas internas como parâmetros

report zexemplo.
form calc_write1 using tabbody like tab [].
data:
data: tab like sflght
itab_line occurs 50 with header line.
like sflight.
... loop at tabbody into itab_line.
perform calc_write1 using tab[].
write: / itab_line-carrid.
perform calc_write2
endloop. tables tab.
...
endform.

form calc_write2 tables itab structure tab.


loop at itab.
write: / itab-carrid.
endloop.
endform.

Se você quer autorizar uma tabela interna para uma subrotina e ter acesso aos campos individuais das
entradas da tabela, você tem que especificar o tipo do parâmetro formal correspondente (como com
estruturas em declarações FORM).

Você pode autorizar tabelas internas com USING ou TABLES. Em contraste com USING, TABLES
autoriza a tabela interna junto com a linha de cabeçalho.
Na subrotina, você tem que definir o parâmetro de TABLES antes de USING. Tabelas internas sempre
são autorizadas através de referência. Para nomear um tipo à tabela, use a adição ESTRUCTURE.

Data : 06/10/10 CURSO DE ABAP/4 Página 90 de


131
TREINAMENTO

Subrotinas externas

O relatório RSAAAlOB é chamado dinamicamente quando executado.

Os programas chamados compartilham as áreas de trabalho das tabelas de Dicionário ABAP


(TABLES).

Com as subrotinas internas, você pode nomear tipos aos parâmetros formais. Com subrotinas externas,
incompatibilidades de tipo resultam em um erro de execução.

Data : 06/10/10 CURSO DE ABAP/4 Página 91 de


131
TREINAMENTO

Módulos de Função

Módulos de função são classificados em grupos de função e são armazenados na Biblioteca de Função.
Um grupo de função contém funções que servem a propósitos semelhantes (por exemplo calendário de
funções) ou funções com a mesma base de dados (1ª função enche a tabela interna, 2ª função edita a
tabela interna e assim por diante).

Data : 06/10/10 CURSO DE ABAP/4 Página 92 de


131
TREINAMENTO

Diretório dos módulos de funções

Você pode inserir uma declaração ABAP que chama um módulo de função escolhendo Edit -> Insert
statement no editor ABAP.

Se você não sabe o nome do módulo de função, você pode pressionar o botão de valores possíveis para
ter acesso ao Sistema ABAP Repository Information. Aqui você pode procurar genericamente na
Function Library de acordo com vários critérios.

Você pode usar a função FUNCTION LIBRARY na tela inicial do ABAP Development Workbench
ou no Object Browser para criar ou manter um módulo de função.

Data : 06/10/10 CURSO DE ABAP/4 Página 93 de


131
TREINAMENTO

Documentando e chamando funções

Parâmetros de entrada e saída são definidos para cada módulo de função. Podem ser descritos todos os
elementos de um módulo de função por meio de uma descrição pequena e documentação
compreensiva.

Quando um módulo de função é chamado, os campos e os campos string dos parâmetros EXPORTING
são autorizados no módulo de função. No retorno da chamada do programa, são devolvidos valores ao
parâmetros IMPORTING.

São nomeados parâmetros no programa principal como segue:

parâmetro formal = parâmetro atual

O significado de IMPORTING e EXPORTING, dependendo do seu ponto de vista, é o módulo de


função ou o programa de chamada.

Data : 06/10/10 CURSO DE ABAP/4 Página 94 de


131
TREINAMENTO

Definindo a interface

Export parâmetros são passados por valor (i.e. uma cópia dos conteúdos de campo é passada) ou
através de referência selecionada.

Com parâmetros de exportação, a especificação de parâmetros atuais é opcional.

Parâmetros import são autorizados por valor (i.e. uma cópia dos conteúdos de campo é autorizada) ou
através da referência selecionada.

Parâmetros import podem conter valores default. Valores default podem ser bilaterais, constantes de
número, campos de sistemas (SY-DATUM, SY-LANGU) ou campo SPACE predefinido. Quando
autorizar parâmetros, você somente poderá omitir o parâmetro atual se houver um valor default ou se o
parâmetro de import flegado for opcional.
Parâmetros import com valores default sempre são opcionais.

Se você especificar um campo de referência do Dicionário ABAP para um parâmetro, o sistema checa
o tipo e o tamanho do parâmetro atual. Se nenhum campo de referência é especificado, o sistema
converte os parâmetros atuais de acordo com as convenções ABAP e não executa nenhum cheque.

Data : 06/10/10 CURSO DE ABAP/4 Página 95 de


131
TREINAMENTO

Parâmetro Changing

Parâmetros CHANGING contêm campos ou campos string que são autorizados no programa pelo
módulo de função quando o módulo de função é chamado, e do módulo de função para a chamada do
programa de retorno.

Parâmetros CHANGING são autorizados por valor (i.e. uma cópia dos conteúdos de campo é
autorizada) ou através de referência se foi selecionoda. Este parâmetros sempre devem conter valores
quando eles são chamados. Quando autorizados, os parâmetros atuais podem ser omitidos apenas se
existir um valor default ou o parâmetro CHANGING flegado como opcional.

Data : 06/10/10 CURSO DE ABAP/4 Página 96 de


131
TREINAMENTO

Autorizando Tabelas Internas

Tabelas Internas autorizadas não podem ser copiadas (chame através de referência).

Você pode associar para tabelas internas as estruturas de referência. Estas estruturas devem ser objetos
do Dicionário ABAP. São executados tipo e cheque de tamanho para os parâmetros atuais em base
desta tarefa.

Como todos os parâmetros, as tabelas podem ser flegadas como opcional.

Data : 06/10/10 CURSO DE ABAP/4 Página 97 de


131
TREINAMENTO

Tratamento de exceções

Quando criar módulos de função, você pode definir exceções. O programa de chamada determina
quais exceções serão efetuadas.

Você pode associar o mesmo número de erro para várias exceções.

A cláusula OTHERS não cobre explicitamente todas as exceções especificadas.

Se uma exceção acontece durante a execução de um módulo de função, a exceção ou é determinada no


próprio módulo de função (por exemplo através de outputting com mensagem de erro) ou controla
imediatamente retorno para o programa de chamada. O posterior só é possível se a exceção é
especificada no parâmetro de EXCEPTIONS da chamada.

Data : 06/10/10 CURSO DE ABAP/4 Página 98 de


131
TREINAMENTO

Criando Um Modulo de Função

Um módulo de função pertence a um grupo de função. Cada grupo de função é associado a uma pessoa
que é autorizada para lançar módulos de função.

• Todos os módulos de função de um grupo de função são gerenciados em um programa ABAP.

• Os nomes dos módulos de função podem Ter até 30 caracteres e podem apensas consistir de
caracteres alfanuméricos e o caracter especial de sublinhado ( _ ).

• Os nomes dos grupos de função começando com a letra Z e, os nomes ds módulos de função
começando com o caracter Z_ são reservados para clientes.

Data : 06/10/10 CURSO DE ABAP/4 Página 99 de


131
TREINAMENTO

Interfaces

• · não usam nomes que o ABAP Dicionário objeta para parâmetros formais.

• · Você pode especificar que “and/or” de campos de referência estruturados pelo ABAP Dicionário
para os parâmetros. O sistema confere o tipo e a duração do parâmetro atual nomeado contra o
campo de referência ao tempo de execução. Especificando estruturas de campos de referência
“and/or” também melhora o tempo de execução de módulos de função.

• · Você também pode associar valores default para importar parâmetros. Estes podem ser campos de
sistemas (por exemplo SY-DADO, SY-LANGU), literais (em marcas de cotação) ou o campo pré-
definido ESPACE.

• · Parâmetros de IMPORT são passados por valor, parâmetros de EXPORT por valor e resultado, e
tabela de parâmetros por referência.

• · Excepcionalmente nomes podem ter o tamanho de até 30 carácteres .

• · Para documentação mais detalhada no módulo de função ou seus parâmetros individuais, coloque
o cursor no objeto desejado e aperte F2.

Data : 06/10/10 CURSO DE ABAP/4 Página 100 de


131
TREINAMENTO

Programa/Editor

Para cada módulo de função, o sistema gera uma estrutura de programa básica. Insere as interfaces
definidas e exceções como linhas de comentário.

Você pode declarar tipos de dados locais.

Você escreve os dados informativos e os comandos relativos ao módulo de função na FUNÇÃO...


ENDFUNCTION block.

Data : 06/10/10 CURSO DE ABAP/4 Página 101 de


131
TREINAMENTO

Exceções

Você define os nomes de exceções na interface de seu módulo de função.


No programa, você eleva uma exceção com as declarações seguintes:

RAISE<exceção>.
ou
MESSAGE ... RAISING<exceção>.

O efeito destes comandos dependem se o programa de chamada é dirigir a própria exceção elevada ou
não.

Se o programa de chamada é dirigir a exceção, o controle devolve imediatamente ao programa de


chamada sem terminação e sem outputting qualquer mensagem. Neste caso, os parâmetros de
EXPORT são fixados sempre aos valores seus iniciais.

Se a exceção não é dirigida pelo programa de chamada, o módulo de função termina depois Do
comando de RAISE. No caso de MESSAGE com a adição RAISING, a mensagem apropriada é
produzida.

Data : 06/10/10 CURSO DE ABAP/4 Página 102 de


131
TREINAMENTO

Ambientes de Teste

Quando você cria um módulo de função, você pode testá-lo no ambiente de teste. Você pode
especificar a entrada de valores pelos parâmetros de IMPORT em uma entrada padrão. O sistema
transporta o resultado para os parâmetros de EXPORT e então exibe uma lista.

• Se uma exceção ocorre, a exceção elevada é flegada ou sinalizada.

• tempo exigido para executar o módulo de função é exibido em microseconds. As mesmas


restrições se aplicam aos valores calculados aqui como na função Runtime Analysis. Você deveria
repetir os testes então com os mesmos dados várias vezes.

• Você pode armazenar dados de teste em um diretório de dados de teste.

• Você pode testar módulos de função com parâmetros de tabela dentro do ambiente de teste.

• Você pode criar sucessões de teste.

Data : 06/10/10 CURSO DE ABAP/4 Página 103 de


131
TREINAMENTO

Subrotinas

· Você pode criar uma subrotina chamada somente de um módulo de função no módulo de programa
apropriado (depois de ENDFUNCTION).

· Você cria subrotina chamadas de diferentes módulos de função, do mesmo grupo de função em um
programa INCLUDE separado. Para fazer isto, entre com o nome do programa INCLUDE no
programa principal do grupo de função (use a função Main Program).

E Use L<group>Fxx como o nome para o programa INCLUDE.

Data : 06/10/10 CURSO DE ABAP/4 Página 104 de


131
TREINAMENTO

Global Data / Local Memory

· Você pode usar a função Global Data para criar campos e tabelas internas os quais você quer que
estejam disponíveis como global data para todos os módulos de função e subrotinas em um grupo de
função. Áreas de trabalho de tabela (TABELAS) sempre são globais.

· Quaisquer campos locais de um módulo de função, que você declara no programa de módulo de
função, são inicializados cada vez que o módulo de função é chamado.

· Campos Globais são inicializados quando um módulo de função pertencente a um grupo de função
particular é chamado a primeira vez. Quando este módulo de função ou outros módulos de função no
mesmo grupo são chamados novamente, os dados globais disponíveis contém os valores da última
chamada. Usando dados globais permite-se implementar uma memória local, para um grupo de função.

Data : 06/10/10 CURSO DE ABAP/4 Página 105 de


131
TREINAMENTO

Organização de programa

· Você cria e mantém módulos de função com a função Function Library ou no Object Browser. O
ABAP/4 administra os diferentes programas e tabelas.

· Você acessa programas INCLUDE individuais somente em casos excepcionais (sub-rotinas, módulos
de diálogo).

· Quando se cria um módulo de função novo, ABAP/4 criam outro programa INCLUDE e determina o
nome (número) do programa.

Data : 06/10/10 CURSO DE ABAP/4 Página 106 de


131
TREINAMENTO

Administração de módulo de função

· Você pode imprimir módulos de função usando o menu Function Module.

· A última pessoa que mudou o módulo de função deixa o módulo de função disponível usando a
função Activate.

· A pessoa responsável por um grupo de função atualiza um módulo de função usando a função
Administration.

· Atualizar um módulos de função significa que o módulo foi testado e a interface determinada.
Quando um módulo de função foi atualizado, a interface não pode ser alterada. Você não pode chamar
módulos de função até que eles tenham sido ativados, mas você pode chamá-los antes que eles sejam
atualizados.

Data : 06/10/10 CURSO DE ABAP/4 Página 107 de


131
TREINAMENTO

Sumário da Call function


· Quando você chama módulos de função com a declaração CALL FUNCTION, você pode usar os
seguintes parâmetros:

EXPORTING p1 =fl ... pn = fn: Passa os campos , strings de campo e tabelas internas do programa de
chamada para o módulo de função.

IMPORTING p1 = fl... pn = fn: Retorna campos, strings de campo e tabelas internas do módulo de
função para o programa de chamada.

CHANGING p1 = fl .... pn = fn: Passa os campos, strings de campo e tabelas internas para o módulo
de função e retorna os valores alterados.

TABLES p1 = itabl... pn = itabn: Passa referências para tabelas internas.

EXCEPTIONS except1 = rcl...... exceptn = rcn: Executa exceções que o programa de chamada
manuseia. Quando uma exceção acontece, SY-SUBRC é fixado ao valor associado e controla retornos
para o programa de chamada.

Com módulos de função, você pode evitar as desvantagens de usar subrotinas convencionais porque
eles têm uma interface precisa e são administrados na Biblioteca de Função.

Data : 06/10/10 CURSO DE ABAP/4 Página 108 de


131
TREINAMENTO

Os componentes principais de um programa de


diálogo

Você usa o Screen Painter e o Menu Painter para criar e projetar modelos de tela e programas.

Você define a lógica de processamento em um programa ABAP/4 (conjunto de módulos).

São definidas estruturas de dados no Dicionário ABAP/4. Estas estruturas podem ser acessadas por
ambos: programas de tela e programas ABAP/4.

O processador de diálogo controla o fluxo de seus programas de diálogo

Data : 06/10/10 CURSO DE ABAP/4 Página 109 de


131
TREINAMENTO

Screen Painter - ABAP/4


·

. para criar uma tela, siga os seguintes passos:


· Defina as características básicas de uma tela (atributos de tela)
· Desenhe o layout de tela (no editor de fullscreen)
· Defina os atributos de campo (lista de campo)
· Escreva a lógica do fluxo de tela

· Os componentes de programa ABAP/4 mais importantes são achados nos seguintes objetos:
· Global data ou estrutura do Dicionário no programa INCLUDE TOP (declarações de dados)
· módulo PBO (Process Before Output)
. Módulo PAI (Process After Input)
. Subrotinas (se preciso for)

Data : 06/10/10 CURSO DE ABAP/4 Página 110 de


131
TREINAMENTO

Criando programas

Crie seu programa (conjunto de módulos ABAP/4 ) no ABAP/4 Development Workbench

O programa INCLUDE TOP inicialmente inclui somente a declaração PROGRAMA. Para isto, você
soma todas as declarações de dados (dados globais).

Se você está usando INCLUDES, o sistema propõe nomes formulados de acordo com uma regra
particular. Os primeiros três bytes do nome do conjunto de módulos ABAP/4 são removidos e a string
inicia-se a partir do quarto byte e é movido três bytes à esquerda. Nos três bytes livres do fim, o
sistema adiciona caracteres os quais são apropriados para o INCLUDE.

Exemplo: O nome do INCLUDE TOP inclui para o conjunto de módulo ABAP/4 SAPMTALA é
MTALATOP.

Nota:

Neste capítulo, crie todos os seus objetos como objetos particulares locais.

Data : 06/10/10 CURSO DE ABAP/4 Página 111 de


131
TREINAMENTO

Atributos de programa

· Nos atributos de programa, você mantém o título, o tipo de programa e a aplicação. Para tipo de
programa, entre com o valor M (conjunto de módulo). Selecione S (Componente de Basis) como a
aplicação.

Data : 06/10/10 CURSO DE ABAP/4 Página 112 de


131
TREINAMENTO

Definindo Telas

Crie as telas pertinentes para seu conjunto de módulo da lista de objeto.

Depois que você entrou com o número de tela., o sistema ramifica para a manutenção de
atributo de tela. Entre com uma descrição pequena, selecione o tipo de tela Normal e especifique o
número da tela de sequencia.

Data : 06/10/10 CURSO DE ABAP/4 Página 113 de


131
TREINAMENTO

Layout de tela (Screen Painter Gráfico)

Para projetar telas, você usa o Screen Painter.

A interface do Screen Painter gráfico contém funções fáceis de usar por definir os vários elementos de
tela (por exemplo campos de input/Output, textos de campo, caixas, etc.). Você escolhe cada elemento
de tela e o posiciona na tela usando o mouse.

Para apagar elementos de tela, você seleciona o elemento com o mouse e então escolhe Delete.

Para mover elementos de tela, você usa o mouse para arrastar o elemento para a posição exigida.

Nota:

Na versão 3.0, o o Screen Painte gráfico é suportado pelo Windows NT, Windows 95 e UNIX. Se você
está usando outros sistemas operacionais, você usa o Screen Painter alfanumérico.

Data : 06/10/10 CURSO DE ABAP/4 Página 114 de


131
TREINAMENTO

Usando campos do dicionário ABAP/4

· Geralmente, você define campos de tela usando atributos de campo de Dicionário ABAP/4 existentes.

· Você também pode usar atributos de campo armazenados no conjunto de módulo. Para fazer isto uma
versão gerada do conjunto de módulo deve existir.

Você pode copiar os textos de campo e os modelos de saída individualmente ou juntos.

Data : 06/10/10 CURSO DE ABAP/4 Página 115 de


131
TREINAMENTO

Atributos de campo

· Você também pode manter atributos de seus campos de tela do Screen Painter selecionando um
campo e escolhendo a função Attributes.

Data : 06/10/10 CURSO DE ABAP/4 Página 116 de


131
TREINAMENTO

Definindo o controle de fluxo

· O controle de fluxo contém suas declarações de MÓDULE.

Data : 06/10/10 CURSO DE ABAP/4 Página 117 de


131
TREINAMENTO

Criando telas em sequencia

· Para telas com uma estrutura semelhante., você pode copiar uma tela existente e, se necessário,
modificá-la (por exemplo layout, lógica de fluxo).

· para fazer isto você trabalha no ABAP/4 Development Workbench posicionando o cursor na tela que
você quer copiar (normalmente o objeto) e escolhe a função Copy.

· Quando você copiou a tela prosperamente, as exibições de sistema a tela como um sub-objeto novo
da piscina de módulo e você pode editar isto.

Data : 06/10/10 CURSO DE ABAP/4 Página 118 de


131
TREINAMENTO

Overview do Menu Painter

O menu Painter lhe permite definir funções em uma tela em um certo status e associá-las à
barra de menu apropriada, standard toolbar e application toolbar.

Em geral. você define uma barra de menu para cada programa de diálogo e associa isto a um
status. Para cada status, você define quais funções de menu serão active/inactive.

Os statuses de um programa de diálogo compõem a interface de usuário. Quando você adiciona


um status novo, você tem que re-gerar a interface.

Data : 06/10/10 CURSO DE ABAP/4 Página 119 de


131
TREINAMENTO

Título GUI

· Você pode criar e/ou manter um título da lista de objeto ou de um status GUI.

· Para fixar um título em um módulo de PBO., você usa a declaração SET TITLEBAR <code> WITH
<value 1> <value2> <valuen>. Os conteúdos de <code> podem ter até três caracteres. O sistema
substitui & assegura o lugar no título com os conteúdos de <value1>.... <valuen>.

· Uma vez que um título é fixo, ele permanece válido até que você fixe um título novo.

· O campo do sistema SY-TÍTLE contém o título da tela atual.

Data : 06/10/10 CURSO DE ABAP/4 Página 120 de


131
TREINAMENTO

Status GUI

Você pode definir um ou mais statuses para uma tela. Um status define quais funções o usuário
pode escolher e se eles podem ser selecionados pela barra de menu ou standard toolbar, ou
pressionando as teclas de função ou pushbuttons.

Para fixar um estado em um módulo de PBO, você usa a declaração SET PF-STATUS
<status>. Os conteúdos de <status> pode ter até oito caracteres.

Usando o parâmetro EXCLUDING com a declaração de SET PF-STATUS, você pode


desativar as funções do status atual que foram definidas como ativas no Menu Painter.

Uma vez que um status é fixo, este permanece válido até que você fixe um novo status.

O campo de sistema SY-PFKEY contém o status atual.

Escolhendo um tipo de status, você determina se o status se refere a uma tela normal ou uma
lista. O sistema oferece funções diferentes para cada tipo de status.

Data : 06/10/10 CURSO DE ABAP/4 Página 121 de


131
TREINAMENTO

Definindo a Interface I

· No request, o sistema propõe valores default para a barra de menu e a para a tecla de função, mas
você pode modificar estes valores.

· Barras de menu podem conter até oito menus. Você pode definir até seis menus; os menus System e
Help são adicionados automaticamente pelo sistema.

· Um menu simples pode conter até 15 entradas, inclusive as funções e suas descrições , nomes de sub-
menus e separadores de linha.

· Você deveria listar todas as funções na fixação de teclas de função, mesmo se elas já aparecem em
menus. Somente então o usuário terá uma lista completa das funções disponíveis quando clicar o
botão do mouse alternadamente (normalmente o botão da direita).

· Você também deveria especificar todas as funções que estão ativas em um status como ativo na barra
de menu (SAP padrão ergonômico).

Data : 06/10/10 CURSO DE ABAP/4 Página 122 de


131
TREINAMENTO

Definindo a interface II

Você ativa símbolos (botões) no standard toolbar associando a eles o código de função de uma função
ativa.

· O application toolbar deveria conter funções que o usuário freqüentemente requer em um certo status.
Para fazer isto, você associa os códigos de função codifica destas funções para pushbuttons.

· Você associa códigos de função para teclas de função, entrando com estes em Recommended function
key setting ou em Freely assigned function key.

Data : 06/10/10 CURSO DE ABAP/4 Página 123 de


131
TREINAMENTO

WBO e transporte

O Workbench Organizer suporta o desenvolvimento de software organizado.


O sistema de transporte executa e localiza transportes.

No início de um projeto de desenvolvimento, o líder de projeto cria um request de mudança e


associa os membros do time de projeto a isto. O Workbench Organizer associa um número de projeto
(<sid>K9 <nnnnn>, por exemplo C 11 K90000 1) para o request de mudança.

O Workbench Organizer (WBO) também cria uma tarefa para cada membro do time de projeto.
Se um membro do time de projeto associa um objeto de Repositório, para a request de mudança, o
objeto de Repositório é entrado naquela tarefa dos membros. A tarefa contém assim todo o objeto de
Repositório que um membor de time de projeto está processando no projeto de desenvolvimento.

Quando os membros de time de projeto terminam seu trabalho em um projeto de


desenvolvimento. eles atualizam suas tarefas. Os objetos das tarefas são passados então à request de
mudança. Quando todos os membros do time de projeto atualizaram suas tarefas, o líder de projeto
atualiza a request de mudança. Uma request de mudança contém assim todos os objetos de Repositório
que foram criados ou mudados dentro de um projeto de desenvolvimento.

Data : 06/10/10 CURSO DE ABAP/4 Página 124 de


131
TREINAMENTO

Funções de uma request de mudança

Em uma request de mudança, você determina quais desenvolvedores vão trabalhar em um


projeto. Membros do projeto são autorizados a acessar todos os objetos da request de mudança. O
WorkBench Organizer habilita aos membros do projeto assim a trabalhar em um time.

Desde que somente os membros de projeto estão autorizados a editer os objetos de uma request
de mudança, o acesso sem autorização é evitado.

Na documentação de request de mudança, você descreve o ímpeto para um projeto de


desenvolvimento e seu status. Esta documentação contém uma descrição completa da request e assim
lhe permite localizar todos os desenvolvimentos novos e mudanças nos objetos de Repositório.

Quando você atualiza uma request de mudança, uma versão completa para todos os objetos é
armazenada no banco de dados de versão. Se você edita novamente um objeto de Repositório, a versão
atual se torna a cópia completa e a diferença entre a versão antiga e a versão nova é armazenada no
banco de dados de versão. Exibindo e comparando versões lhe permitem determinar o status de uma
versão. Você pode restaurar versões antigas.

Data : 06/10/10 CURSO DE ABAP/4 Página 125 de


131
TREINAMENTO

Objetos locais – não são transportáveis

Em vez de associar uma classe de desenvolvimento de cliente a um objeto, você pode sinalizá-
los para uso local. Objetos locais não são controlados pelo Workbench Organizer e o sistema de
transporte.
Considerando que são criados objetos locais e são mudados sem ser associados a uma request
de mudança, nenhuma versão existe e eles não podem ser transportados.
A classe de desenvolvimento para objetos locais é $TMP.
Você pode associar um objeto local a outra classe de desenvolvimento em uma fase posterior.

Data : 06/10/10 CURSO DE ABAP/4 Página 126 de


131
TREINAMENTO

Original e cópias

Quando se cria objetos de Repositório, o Workbench Organizer automaticamente notifica o


sistema. O objeto de Repositório é considerado como o objeto original em um Sistema R/3.

Um objeto só é original em um sistema. Todos os outros sistemas contêm cópias dos objetos
originais.

O conceito de sistema original assegura que mudanças nos objetos de Repositório somente são
possíveis no sistema de integração. Considerando que você cria objetos no sistema de integração, todos
os originais estão neste sistema. Há uma localização central mudanças em objetos de Repositório.

Quando você transporta um objeto de Repositório para um sistema de consolidação, este existe
lá como uma cópia. Embora possam ser feitas mudanças para cópias em casos excepcionais, é
recomendado mudar o original no sistema de integração e então transportá-lo para outros sistemas.
Fazendo isto, você evita inconsistências em versões de desenvolvimento diferentes.

Transportes nunca sobrepõem objetos originais.

Data : 06/10/10 CURSO DE ABAP/4 Página 127 de


131
TREINAMENTO

Atributos de uma Tarefa

· O Workbench Organizer detecta automaticamente se você está mudando o original ou uma cópia.

· Dependendo do atributo de um objeto o Workbench Organizer associa os atributos de uma tarefa


Desenvolvimento / correção ou Conserto.

· O atributo de uma tarefa Desenvolvimento / correção é associada se você está criando um objeto ou
está mudando o original mas o Conserto do atributo de tarefa se aplica se você está mudando uma
cópia.

Data : 06/10/10 CURSO DE ABAP/4 Página 128 de


131
TREINAMENTO

Alterando e copiando

Se você precisa mudar uma cópia de cliente urgentemente que você pode executar um conserto.
Durante o conserto, o objeto consertado não pode ser escrito elaboradamente através de importações.

Você só faz consertos a cópias de cliente se você não pode usar um mais recente transporte
para resolver o problema.

Se você conserta que o cliente copia, você tem que fazer as mesmas mudanças no sistema
original e confirmar o conserto.

É considerado que Mudanças de · feitas SOLAPAR cópias são modificações. Modificações também
são consertos.

· However, modificações posam problemas muito mais que consertos para objetos de cliente porque os
clientes não estão em uma posição atualizar os originais nos sistemas de desenvolvimento de SAP.

· Se você importa uma versão nova de um objeto de SAP em seu sistema de cliente no contexto de uma
versão aperfeiçoada, você tem que ajustar seu objeto de SAP consertado para o objeto de SAP novo.

Data : 06/10/10 CURSO DE ABAP/4 Página 129 de


131
TREINAMENTO

Alterando os níveis – enhacements – tipos de


enchacements

Há quatro tipos de SAP ajustes De sistemas por satisfazer exigências de cliente:

Customizing: Isto envolve fixando parâmetros de sistemas que usam seu uma interface
especial. Mudanças são assim inadvance marcado e organizado. Customizing é obrigatório antes de
usar o sistema em um ambiente ao vivo.

Modificações: Modificações são mudanças cliente-específicas para SOLAPAR objetos de


Repositório. Quando são mudados objetos de SAP. a versão de cliente tem que ser modificada para
emparelhar a versão de SAP nova.

Encarecimento: Estes são o cliente muda para SOLAPAR objetos de Repositório sem
modificações.

Desenvolvimentos de cliente: Objetos cliente-específicos de acordo com as convenções


habituais.

Quando você faz encarecimento para SOLAPAR software, você evita o processo de
modificação convencional.

Neste caso, programadores de aplicação de SAP têm a pre-:leflne programa, cardápio sai e
saídas de tela como também CI inclui.

Data : 06/10/10 CURSO DE ABAP/4 Página 130 de


131
TREINAMENTO
O cliente pode usar quaisquer das opções seguintes:

Saída de programa: Esta saída é predefinida pelo programador de aplicação de SAP e permite
para o programador do cliente somar seções adicionais de código.

Saída de cardápio: Esta saída é predefinida pelo programador de aplicação de SAP e permite
para o programador do cliente somar opções de cardápio cliente-específicas para SOLAPAR
cardápios.
Saída de tela: Esta saída é predefinida pelo programador de aplicação de SAP e permite para o
programador do cliente definir um subscreen cliente-específico.
Saída de campo: Isto envolve se ramificando de um campo de tela com uma referência de
elemento de dados em um módulo de função. Estas filiais podem aplicar qualquer um globalmente
(por telas e módulo agrupa) ou localmente (para uma tela específica ou piscina de módulo).

· que UM desenvolvedor tem que pedir para uma chave nos 055 a ser registrados. O pedido é ativado
quando você cria ou muda um objeto de Repositório pela primeira vez. Os 055 nomeiam o dependendo
chave no número de cliente e o nome de usuário.

· para registrar como um desenvolvedor, proceda como segue:

· Log sobre os 055. Se você não tem um nome de usuário para os 055, contacte um colega que já tem
um 055 nome de usuário. Esta pessoa pode o registrar nos 055.

· Choose developm de Reg. O sistema então exibições a instalação tipo diálogo caixa. Escolha
instalação de Cliente e então Continua.
· Na instalação Externa Numeram caixa de diálogo, entram no número de instalação e escolhem
Continua. Descobrir o número de instalação, escolha Sistema -> Estado. Escolha o número de
instalação desejado clicando duas vezes na linha pertinente.

· Nas Pessoas de Contato dialogam caixa, escolha o nome desejado.

· Na Instalação Externa Numeram caixa de diálogo, escolha Continua.

· Na Desenvolvedor Inscrição diálogo caixa, entre em seu nome de usuário e escolhe Registro.

· O sistema então exibições uma 20-digit chave de desenvolvedor. Copie o usando chave o Corte e
função de Pasta ou entre na chave manualmente no R/3 Sistema quando pediu.

Data : 06/10/10 CURSO DE ABAP/4 Página 131 de


131

Potrebbero piacerti anche