01-bc400 - introducao ao abap4

171
SAP R3 MÓDULO ABAP ABAP Treinamento

Upload: willianhazor3291

Post on 24-Jun-2015

822 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 01-BC400 - Introducao Ao ABAP4

SAP R3

MÓDULO ABAP

ABAP Treinamento

Page 2: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Data : 12/04/23 CURSO DE ABAP/4 Página 2 de 132

Page 3: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 3 de 132

Page 4: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 4 de 132

Page 5: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 5 de 132

Page 6: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 6 de 132

Page 7: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 7 de 132

Page 8: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Clients

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 : 12/04/23 CURSO DE ABAP/4 Página 8 de 132

client-especific

cross-client

Repository objects

cross-client customizing

Customizing data

Customizing data

Customizing data

application data

application data

application data

Client 100(delivery system)

Client 001(delivery system)

Client nnn(custumer system)

Page 9: 01-BC400 - Introducao Ao ABAP4

TREINAMENTOProduçã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 : 12/04/23 CURSO DE ABAP/4 Página 9 de 132

Page 10: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

LogonAtravé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.

Data : 12/04/23 CURSO DE ABAP/4 Página 10 de 132

Client onde se desenvolverá a atividade

Barra de Título

Barra de Ferramentas

Standard

Campo command

Área Screen

Barra de Status

Page 11: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

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

Data : 12/04/23 CURSO DE ABAP/4 Página 11 de 132

Clique nas bolinhas

coloridas e depois em

“Options...”.

Page 12: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

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

Data : 12/04/23 CURSO DE ABAP/4 Página 12 de 132

Page 13: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 13 de 132

Page 14: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

ABAP Programação GeralOs quatro processos do ABAP / Dialog Program

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 : 12/04/23 CURSO DE ABAP/4 Página 14 de 132

S C R E E N

layoutlayout

checkschecks

Flow logicFlow logic

modulepool

modulepool

externalsystem

externalsystem SAP

SAP

host1

host1 host

2

host2 reporting

reporting

ABAP

Dialog programming Batch Input

Host communication Sequential datasets

Page 15: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 15 de 132

Page 16: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Objetos de Programa

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 : 12/04/23 CURSO DE ABAP/4 Página 16 de 132

Development class

Dev. Class objects types

Dictionary objects

Programs

Function Groups

Includes

Transactions

Logical databases

Message classes

.

.

.

Program

Global data

PBO modules

PAI modules

Subroutines

Screens

GUI Status

Includes

Transactions

Page 17: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Arquivos Seqüenciais e Interfaces

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 : 12/04/23 CURSO DE ABAP/4 Página 17 de 132

Programa ABAP

READ DATASETTRANSFER

Série de arquivos

Page 18: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 18 de 132

Page 19: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Tipos de EditorCaminho: 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 : 12/04/23 CURSO DE ABAP/4 Página 19 de 132

Page 20: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Sintaxe

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 : 12/04/23 CURSO DE ABAP/4 Página 20 de 132

data counter type i.data name(20).

move 1 to counter.move ‘abc’to name.

write name.write counter.

data counter type i.data name(20).

move 1 to counter, ‘abc’to name.

write name, counter.

data: sum type p, “total counter type p.

*novo contador*inicializa o campo total

clear sum.

Page 21: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

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

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 : 12/04/23 CURSO DE ABAP/4 Página 21 de 132

Development envioronment

ABAP tolls

DATAModeler

ScreenPainter

Development envioronment

ABAP Interpreter

Diologcontrol

ScreenInterpreter

Interfaceprograms

ABAP Dictionary

Page 22: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Hierarquia de tabela

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 : 12/04/23 CURSO DE ABAP/4 Página 22 de 132

SCARR

Airline

mandt

carrid

carrname

...

SPFLI

Flight Schedule

mandt

carrid

connid

airfrom

airpto

deptime

...

SFLIGHT

Flight

mandt

carrid

connid

fldate

seatsmax

seatsocc

...

SBOOK

Flight

mandt

carrid

connid

fldate

bookid

customid

counter

agencynum

...

11001

Airline Carrier

11001

Flight Schedule

11001

Flight

11001

Bookings

H H H

H

Page 23: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Hierarquia de um campo

Table

table field

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 : 12/04/23 CURSO DE ABAP/4 Página 23 de 132

data element

domain

uses

uses

Page 24: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 24 de 132

Page 25: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 25 de 132

Page 26: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 26 de 132

Page 27: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Open SQL

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 : 12/04/23 CURSO DE ABAP/4 Página 27 de 132

Data

ABAP Programs

Data definition

Matching entries

Database

ABAPDictionary

select...

Page 28: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Overview - o que o comando select faz

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 : 12/04/23 CURSO DE ABAP/4 Página 28 de 132

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 lineSeveral lines

Particularcolumn

Page 29: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Select com where

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

Select por colunas de uma tabela, você apenas seleciona alguns campos de uma tabela, de forma que sua performance será muito mais rápida.

Data : 12/04/23 CURSO DE ABAP/4 Página 29 de 132

...tables: sbook.

select * from sbook where carrid = ‘lh ‘....endselect....

...tables: spfli.

select single * from spfli where carrid = ‘LH’ and connid = ‘0400’....

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

Page 30: 01-BC400 - Introducao Ao ABAP4

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.

Data : 12/04/23 CURSO DE ABAP/4 Página 30 de 132

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

Page 31: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 31 de 132

Page 32: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Startando um ReportCaminho: 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.

Data : 12/04/23 CURSO DE ABAP/4 Página 32 de 132

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”

Page 33: 01-BC400 - Introducao Ao ABAP4

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.

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 : 12/04/23 CURSO DE ABAP/4 Página 33 de 132

Descrição Simples

Tipo de programa

Área de aplicação do programa

Page 34: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 34 de 132

Page 35: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

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 : 12/04/23 CURSO DE ABAP/4 Página 35 de 132

TeclaWhere-used list

Page 36: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Copiando Programas

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 : 12/04/23 CURSO DE ABAP/4 Página 36 de 132

Select

Insert from buffer

Copy to buffer

Page 37: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

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

Data type Meaning Initial Value

Default leng

Permitted length

packed number

Integer

Floating point nº

0

0

0.000...

8

4

8

1-16

4

8

Numeric text

Text

Date (YYYYMMDD)

Time (HHMMSS)

hexadeciamal

00...0

blank

00000000

000000

x ‘00’

1

1

8

6

1

1-max.

1-max.

8

6

1-max.

São oito tipos de dados predefinidos em ABAP .

Tipos de propriedade valor de alcance satisfatório paraI inteiro -231 para +231 contadores, quantidades, índices,

cronometrar períodosP nº. com lugar para decimal

2 caráter por quantias de byte dinheiro, tamanho, pesos,

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 : 12/04/23 CURSO DE ABAP/4 Página 37 de 132

P

I

F

N

C

D

T

X

Page 38: 01-BC400 - Introducao Ao ABAP4

TREINAMENTOEm 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 : 12/04/23 CURSO DE ABAP/4 Página 38 de 132

Page 39: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Data Declaration – definir o elemento data: c/ type, like, value

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 : 12/04/23 CURSO DE ABAP/4 Página 39 de 132

clear <data object>.

report zexemplo.

data: name1 (25) type c, first_line type i value 4, flighttime type t,clear: name1, first_line, flightime.

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

Page 40: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Type Declaration – defenindo o comando type, type c/ tabela interna

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 : 12/04/23 CURSO DE ABAP/4 Página 40 de 132

type <type2> [(<lenght>)] type <type1> [occurs 0].type <type> like <data object1> [occurs 0].Types:begin of <typ>,

... ,end of <typ>.

Page 41: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Definindo valores para declarações – move, add, compute, igualando os campos

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 : 12/04/23 CURSO DE ABAP/4 Página 41 de 132

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

Page 42: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 42 de 132

Page 43: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Parameters e Table – os dois comandos com um exemplo

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 : 12/04/23 CURSO DE ABAP/4 Página 43 de 132

table <table>.parameters <field>.

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

Page 44: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 44 de 132

Page 45: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Inicializando os dados – clear

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

Data : 12/04/23 CURSO DE ABAP/4 Página 45 de 132

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

Page 46: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Expressões Aritméticas – compute, sum

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 : 12/04/23 CURSO DE ABAP/4 Página 46 de 132

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

Page 47: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Sub-fields

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 : 12/04/23 CURSO DE ABAP/4 Página 47 de 132

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.

Page 48: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

String Operations – Concatenate, Split

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 suficientesSY-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 : 12/04/23 CURSO DE ABAP/4 Página 48 de 132

concatenate f1 f2 f3 into g

Report zexemploData: 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.

split g at space into fi f2 f3

Page 49: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Cálculo de Datas

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 : 12/04/23 CURSO DE ABAP/4 Página 49 de 132

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.

Page 50: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Operadores de comparação

eq = Igualne <> >< Diferentegt > Maiorge >= => Maior ou iguallt < Menorle <= =< Menor ou igual

between Intervalois 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 : 12/04/23 CURSO DE ABAP/4 Página 50 de 132

Page 51: 01-BC400 - Introducao Ao ABAP4

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.

Data : 12/04/23 CURSO DE ABAP/4 Página 51 de 132

if <logical expression>.

endif.

if <logical expression>.

else.

endif.

if <logical expression>.

elseif <logical expression>.

elseif <logical expression>..

else.

endif.

statementsstatements

statementsstatements

statementsstatements

statementsstatements

statementsstatements

statementsstatements

statementsstatements

Page 52: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

CASE

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

Data : 12/04/23 CURSO DE ABAP/4 Página 52 de 132

case <field1>.

when <value1>

when <value2>

when <value3> or <value4>.

when others.

endcase.

statementsstatements

statementsstatements

statementsstatements

statementsstatements

Page 53: 01-BC400 - Introducao Ao ABAP4

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.

Data : 12/04/23 CURSO DE ABAP/4 Página 53 de 132

do <n> times.

enddo.

statementsstatements

Page 54: 01-BC400 - Introducao Ao ABAP4

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.

Data : 12/04/23 CURSO DE ABAP/4 Página 54 de 132

While counter > 0....subtract 1 from counter.endwhile.

while <logical expression>.

endwhile.

statementsstatements

sy-index loop index

Page 55: 01-BC400 - Introducao Ao ABAP4

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.

Data : 12/04/23 CURSO DE ABAP/4 Página 55 de 132

continue. check <logical expression>.

while counter gt 0.

if f1= f2.continue.endif.

endwhile.

statementsstatements

statementsstatements

while counter gt 0.

check flag ne space.

endwhile.

statementsstatements

statementsstatements

check <condition>.

statementsstatements

statementsstatements

dentro de uma estrutura loop

fora de uma estrutura loop

Page 56: 01-BC400 - Introducao Ao ABAP4

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.

Data : 12/04/23 CURSO DE ABAP/4 Página 56 de 132

if ... .exit.

endif.

exit.

do

if counter ge 100. exit.endif.

enddo.

statementsstatements

statementsstatements

exit within a loop structure.

exit outside a loop structure.

statementsstatements

statementsstatements

Page 57: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 57 de 132

Page 58: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 58 de 132

Page 59: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

As funções mais importantes do Debugg

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 : 12/04/23 CURSO DE ABAP/4 Página 59 de 132

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.

Replace Permite que você mude os dados no debugging.

Table Apresenta o conteúdo das tabelas internas.

Hexadecimal Display Apresenta os dados em formato hexadecimal.

Editor Dirige-se para o ABAP Editor.

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

Page 60: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 60 de 132

Page 61: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Tabelas Internas

Internal table <itab>

CARRID CONIDAA 0010LH 0400LH 0450LH 0460SQ 0005UA 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 : 12/04/23 CURSO DE ABAP/4 Página 61 de 132

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

Page 62: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

WA e Tabela interna, tipos de tabelas internasEm 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

término da tabela internaappend...<itab>.

COLLECT Inserções dos conteúdos cumulativos da área de trabalho na tabela interna

collect...<itab>.

INSERT Inserções os conteúdos da área de trabalho em uma entrada de tabela particular

insert...<itab>.

MODIFY Escreve elaboradamente uma entrada de tabela particular com o conteúdo da área de trabalho

modify <itab>... .

DELETE Apaga uma entrada especificada da tabela interna

delete <itab>... .

LOOP AT Identifica individualmente as entradas de uma tabela interna em um trabalho área uma de cada vez

loop at <itab>...

endloop.

READ TABLE Identifica uma única entrada de tabela interna em uma área de trabalho

read table <itab>... .

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 : 12/04/23 CURSO DE ABAP/4 Página 62 de 132

Page 63: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Tabelas internas

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

Data : 12/04/23 CURSO DE ABAP/4 Página 63 de 132

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

Page 64: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Declarando tabelas

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 : 12/04/23 CURSO DE ABAP/4 Página 64 de 132

append <itab>.modify <itab> index <n>.

loop at <itab>.write <itab>-<field>.endloop.

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

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

loop at <itab> into <wa>.write <wa>-<field>.endloop.

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

Header Line <itab> Work area <itab>

Page 65: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Preenchendo uma tabela interna

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 : 12/04/23 CURSO DE ABAP/4 Página 65 de 132

append [<wa> to] <itab>.

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

select * from sflight. append sflight to flightinfo_list.endselect.

Page 66: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Transportando valores para uma tabela interna – move corresponding

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 : 12/04/23 CURSO DE ABAP/4 Página 66 de 132

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.

Page 67: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Fazendo um Sort numa tabela interna

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 : 12/04/23 CURSO DE ABAP/4 Página 67 de 132

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.

Page 68: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Processo de LOOP numa tabela interna

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 : 12/04/23 CURSO DE ABAP/4 Página 68 de 132

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.

Page 69: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Lendo uma tabela interna

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 : 12/04/23 CURSO DE ABAP/4 Página 69 de 132

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.

Page 70: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Modificando uma tabela interna – insert, modify e delete

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 : 12/04/23 CURSO DE ABAP/4 Página 70 de 132

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 indexif sy-subrc ne 0 ... endif.

Page 71: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 71 de 132

Page 72: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Limpando uma tabela – clear e refresh

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 : 12/04/23 CURSO DE ABAP/4 Página 72 de 132

clear <wa>.

clear <itab>.refresh <itab>.

clear <itab>.

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

Page 73: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Informações de uma tabela interna – describe

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 : 12/04/23 CURSO DE ABAP/4 Página 73 de 132

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.

Page 74: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Selection screenVocê 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 : 12/04/23 CURSO DE ABAP/4 Página 74 de 132

Page 75: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

ParametersEste 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 zexemploparameters aircom like spfli-carrid.

Resultado:

Data : 12/04/23 CURSO DE ABAP/4 Página 75 de 132

Page 76: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Select-optionsO 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 queNE Não igual BT EntreLE Menor ou igual NB Não entreLT Menor que CP Contêm padrãoGE Maior ou igual NP igual Nenhum padrão

Data : 12/04/23 CURSO DE ABAP/4 Página 76 de 132

Page 77: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Selection- textAtravé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 : 12/04/23 CURSO DE ABAP/4 Página 77 de 132

Page 78: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 78 de 132

Page 79: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 79 de 132

Page 80: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 80 de 132

Page 81: 01-BC400 - Introducao Ao ABAP4

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.

Data : 12/04/23 CURSO DE ABAP/4 Página 81 de 132

...

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

Page 82: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Modularização e Estrututura de Programa

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

evitar redundânciaSe 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.

Data : 12/04/23 CURSO DE ABAP/4 Página 82 de 132

Page 83: 01-BC400 - Introducao Ao ABAP4

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

Data : 12/04/23 CURSO DE ABAP/4 Página 83 de 132

Page 84: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 84 de 132

Page 85: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 85 de 132

Page 86: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 86 de 132

Page 87: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 87 de 132

Page 88: 01-BC400 - Introducao Ao ABAP4

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ênciaVocê 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 : 12/04/23 CURSO DE ABAP/4 Página 88 de 132

Page 89: 01-BC400 - Introducao Ao ABAP4

TREINAMENTOsubrotina. 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 : 12/04/23 CURSO DE ABAP/4 Página 89 de 132

Page 90: 01-BC400 - Introducao Ao ABAP4

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.

Data : 12/04/23 CURSO DE ABAP/4 Página 90 de 132

report zexemplo.tables: sflightdata: ......perform write_sflight1 using sflight.perform write_sflight2 using sflight....

form write_sflight1 using rec.write: / recendform.

form write_sflight1 using rec like sflight.write: / rec-carrid, rec-connid, rec-fldate.endform.

Page 91: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Autorizando tabelas internas como parâmetros

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 : 12/04/23 CURSO DE ABAP/4 Página 91 de 132

report zexemplo.

data: tab like sflght occurs 50 with header line....perform calc_write1 using tab[].perform calc_write2 tables tab....

form calc_write1 using tabbody like tab [].data: itab_line like sflight. loop at tabbody into itab_line. write: / itab_line-carrid. endloop.endform.

form calc_write2 tables itab structure tab. loop at itab. write: / itab-carrid. endloop.endform.

Page 92: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 92 de 132

Page 93: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 93 de 132

Page 94: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 94 de 132

Page 95: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 95 de 132

Page 96: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 96 de 132

Page 97: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 97 de 132

Page 98: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 98 de 132

Page 99: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 99 de 132

Page 100: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 100 de 132

Page 101: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 101 de 132

Page 102: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 102 de 132

Page 103: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 103 de 132

Page 104: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 104 de 132

Page 105: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 105 de 132

Page 106: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 106 de 132

Page 107: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 107 de 132

Page 108: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 108 de 132

Page 109: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 109 de 132

Page 110: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 110 de 132

Page 111: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 111 de 132

Page 112: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 112 de 132

Page 113: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 113 de 132

Page 114: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 114 de 132

Page 115: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 115 de 132

Page 116: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 116 de 132

Page 117: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 117 de 132

Page 118: 01-BC400 - Introducao Ao ABAP4

TREINAMENTO

Definindo o controle de fluxo

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

Data : 12/04/23 CURSO DE ABAP/4 Página 118 de 132

Page 119: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 119 de 132

Page 120: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 120 de 132

Page 121: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 121 de 132

Page 122: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 122 de 132

Page 123: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 123 de 132

Page 124: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 124 de 132

Page 125: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 125 de 132

Page 126: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 126 de 132

Page 127: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 127 de 132

Page 128: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 128 de 132

Page 129: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 129 de 132

Page 130: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 130 de 132

Page 131: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 131 de 132

Page 132: 01-BC400 - Introducao Ao ABAP4

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 : 12/04/23 CURSO DE ABAP/4 Página 132 de 132