Sie sind auf Seite 1von 136

INTRODUÇÃO

ABAP

Belo Horizonte

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


ÍNDICE

INTRODUÇÃO ...................................................................................................................2
NAVEGAÇÃO SAP ............................................................................................................7
ARQUITETURA SAP ERP .............................................................................................11
FERRAMENTAS DO ABAP WORKBENCH ...............................................................16
PRINCIPAIS TRANSAÇÕES .........................................................................................23
DICIONÁRIO DE DADOS ..............................................................................................25
LOCALIZAÇÃO DE INFORMAÇÕES NO AMBIENTE SAP ..................................36
CONHECIMENTO BÁSICO DE PROGRAMAS ABAP .............................................45
PRINCIPAIS COMANDOS SAP ABAP ........................................................................60
FLUXO DE PROCESSAMENTO E MODULARIZAÇÃO .........................................68
ACESSO AO BANCO DE DADOS .................................................................................72
PERFORMANCE .............................................................................................................77
DEPURAÇÃO ...................................................................................................................82
FUNÇÕES / GRUPOS DE FUNÇÃO .............................................................................87
USER EXITS E BADIS ....................................................................................................90
RELATÓRIOS (REPORTS, ALV, SAPSCRIPTS E SMARTFORMS) .....................96
AJUDAS DE PESQUISA................................................................................................104
INTERFACES .................................................................................................................107
SHDB E BATCH-INPUTS .............................................................................................108
BAPI’s ..............................................................................................................................123
DIÁLOGO DE ATUALIZAÇÃO (SM30) ....................................................................128
ABAP QUERY.................................................................................................................130

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


2

INTRODUÇÃO

O SAP ERP

O SAP ERP Enterprise Central Component (SAP ECC) é o componente de


software central do SAP ERP, caracterizando-se como o principal produto da empresa
alemã SAP. Atualmente, a sua versão mais recente é a 6.0. Caracteriza-se por ser um
sistema de gestão integrada com aplicações abrangentes que atendem aos principais
processos de negócio de uma empresa.

Breve histórico da SAP e do SAP ERP

O surgimento da empresa SAP remonta do ano de 1972, quando cinco ex-


empregados da IBM, Dietmar Hopp, Hans-Werner Hector, Hasso Plattner, Klaus Tschira
e Claus Wellenreuther, lançaram uma empresa chamada Systems Applications and
Products in Data Processing (Sistemas, Aplicativos e Produtos para Processamento de
Dados) em Mannheim, na Alemanha. Seu objetivo era desenvolver um software
aplicativo padrão para processos de negócios em tempo real.
Um ano depois de seu surgimento, o primeiro aplicativo de contabilidade foi
concluído, formando a base para o contínuo desenvolvimento de outros componentes de
outros componentes para aquele que ficou conhecido como o software SAP R/1. A letra
R de seu nome representava real-time data processing. Até o final da década de 1970, as
constantes evoluções, referentes a estudos do banco IBM e melhorias no sistema de
controle de diálogo, levaram ao nascimento do SAP R/2.
Na década de 1980, a empresa se mudou para o um prédio próprio num parque
industrial próximo à cidade de Walldorf. A carteira de clientes da SAP cresceu
consideravelmente e, nesta época, estatísticas apontam que cinquenta entre as cem
maiores empresas alemãs eram suas clientes. Na metade da década de 80, a SAP inaugura
na Áustria a sua primeira organização de vendas fora da Alemanha, situada na Áustria.
Em agosto de 1988, já com uma receita superior a cinquenta milhões de dólares, a SAP
se transforma em SAP AG. Em Novembro deste mesmo ano lança ações nas bolsas de
Frankfurt e Sttutgart. Ainda na década de 1980, a SAP realiza a abertura de subsidiárias
na Dinamarca, Suécia, Itália e Estados Unidos e sua expansão internacional ganha força.
Na década de 1990, o SAP R/3 é apresentado ao mercado. O conceito de cliente
servidor, a aparência uniforme de suas interfaces gráficas, o uso consistente de bancos de
dados relacionais e a capacidade de ser executado em computadores de diferentes
fornecedores resultam em uma grande aprovação pelo mercado. Já neste momento, a SAP
insere-se definitivamente na então nova geração de softwares empresariais - da
computação em mainframes à arquitetura de três camadas (banco de dados, aplicativos e
interfaces de usuário), que ainda predomina na indústria de software. Em 1996, a SAP
ganhou 1099 clientes do SAP R/3. No final deste ano, o SAP já estava instalado em mais
de nove mil sistemas em todo o mundo.
A grande evolução da SAP na década de 1990 pode ser explicada pelo contexto
que a indústria de software atravessava. Nesta época, o uso de softwares destinados à
gestão empresarial teve grande crescimento. O Brasil acompanhou este ritmo a partir de
1996.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


3

Na década de 2000, novas inovações ocorreram. Com o surgimento e


disseminação da internet, o usuário passou a ser o foco dos aplicativos. A SAP desenvolve
então o SAP Workplace e adota a idéia de construção de um portal corporativo e o acesso
à informação de acordo com o perfil do usuário. A partir desta idéia, o portfólio de
produtos da SAP cresceu consideravelmente. Este período marcou a transição anterior do
SAP Basis SAP, que suportava o sistema SAP R/3 para o SAP Web Application Server.
As novas tecnologias de internet e o suplemento a aplicações baseadas em Java marcam
o surgimento do SAP ERP Central Component. Desta forma, a partir da versão SAP ECC
5.1 pode-se dizer que houve uma substituição do SAP R/3 para o seu sucessor técnico, o
SAP ERP.

Os principais produtos do portfólio atual da SAP são:

• SAP Business One – solução ideal para pequenas empresas, que abrange seus
processos centrais, tais como finanças, vendas, serviço ao cliente e operações;
• SAP Business ByDesign – solução para pequenas e médias empresas que querem
utilizar uma solução por demanda para otimizar seus processos centrais;
• SAP Business All-in-One – solução para pequenas e médias empresas com
requisitos muito específicos. Pode ser planejado e graças aos cenários
empresariais pré-configurados e aos aceleradores de implementação, pode ser
implementado de forma rápida;
• SAP Business Suite – é um pacote completo de software empresarial que
desempenha uma função central na empresa na qual é instalado.

1.1. Principais módulos e componentes do SAP ERP

Entre os principais componentes e módulos do sistema SAP ERP, podem-se


destacar:

Contabilidade Financeira (FI) Aplica-se à contabilidade principal


automática e aos relatórios, à
contabilidade de clientes e de
fornecedores e à administração de outras
contas de ledger com planos de contas
definidos pelo usuário

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


4

Contabilidade de custos (CO) Abrange os movimentos de custos e


receitas da empresa
Contabilidade do Imobilizado (AM) Destina-se à administração e ao controle
dos aspectos do ativo imobilizado
Sistema de Projetos (PS) Destina-se ao apoio do planejamento,
controle e supervisão de projetos
complexos a longo prazo com objetivos
definidos

Workflow (WF) Liga os módulos de aplicação do SAP


ERP com as tecnologias, ferramentas e
serviços para otimização do fluxo de
processos no sistema
Soluções setoriais (IS) Liga os módulos de aplicação do SAP
ERP com funções adicionais específicas
do setor

Recursos humanos (HR) Planeja, registra e avalia todas as


informações relativas aos empregados
Manutenção (PM) Apoia o planejamento, o processamento e
a execução de tarefas de manutenção
Administração de qualidade (QM) Destina-se ao controle de qualidade e à
informação, apoiando o planejamento e
qualidade, controle de qualidade e o
controle de produção e do suprimento
Planejamento de produção (PP): Aplica-se ao planejamento e ao controle
das atividades de produção de uma
empresa

Administração de materiais (MM) Apoia as funções de suprimento e de


manutenção de estoques necessárias para
os processos empresariais diários
Vendas e distribuição (SD) Apoia a otimização de todas as tarefas e
atividades que ocorrem na venda, no
fornecimento e no faturamento

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


5

Fonte: SAP, 2000

Mais recentemente, o portfólio de soluções empresariais da SAP cresceu


consideravelmente, e foi introduzido o conceito e xApps, que constituem aplicações
compostas em pacote, que são pensadas para combinar sistemas heterogêneos existentes
e criar processos interempresariais. Alguns exemplos de aplicações são:

GRC Aplicações para governança, gerenciamento de riscos e


cumprimento e requisitos legais
(Governança corporativa)

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


6

Aplicações para SAP Strategy Management, SAP Business Planning


gerenciamento de Consolidation, SAP Profitability Management da
performance Acorn

SAP Enterprise Resources SAP ERP Human Capital Management; SAP ERP
Planning Financials; SAP ERP Operations, SAP ERP Corporate
Services

SAP CRM Aplicações para processos empresariais de ponta


orientados a clientes
(Sap Customer Relationship
Management)

SAP SRM Integração de processos de compras estratégicas como


qualificação de fornecedores, gerenciamento de
(SAP Supplier Relationship fornecedores, solicitações eletrônicas de cotação e
Management) leilões e gestão de contratos com outros processos
centrais da própria empresa ou processos de seus
fornecedores

(SAP SCM) SAP Supply Aplicações para o gerenciamento de toda a cadeia


Chain Management logística para sincronizar o suprimento e a demanda
além das fronteiras da empresa

SAP PLM (SAP Product Aplicações para a inclusão de parceiros externos e


Lifecycle Management) internos diretamente nos processos operacionais de
produção e desenvolvimento de produtos.

Aplicações do setor Aplicações específicas do setor industrial


industriais

1.2. O ABAP

O desenvolvimento dos produtos SAP R/1 e o SAP R/2, predecessores do SAP R/3
e do próprio SAP ERP, utilizava códigos em Assembler. Ainda na década de 1970, com
o crescimento da SAP e a necessidade de simplificar o processo de análise e agilizar os
desenvolvimentos, a SAP criou em meados de 1980 o ABAP/3, sigla que, em alemão,
designava Allgemeiner Berichts- und Aufbereitungsprozessor (em inglês: General
Reporting and Preparation Processor). Consistia de uma linguagem interpretada que
possibilitava a criação de programas de negócio e transações de diálogo facilmente. O
desenvolvimento do ABAP foi realizado de forma relativamente independente, apesar de
ter sido influenciado por outras linguagens de programação, como COBOL e Pascal.
Em 1992, com o surgimento do SAP R/3, foi lançado o ABAP/4 e a sua
designação passou a ser uma sigla de Advanced Business Application Programming.
Com o surgimento da versão 4.0 do SAP foi lançado o ABAP Objects, que é um suporte
da linguagem à programação orientada a objetos.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


7

NAVEGAÇÃO SAP

O acesso ao ambiente SAP pode ser realizado de diferentes formas. As mais


utilizadas são:

• SAP GUI para o ambiente Windows;


• SAP GUI para o ambiente Java;
• SAP GUI para HTML.

SAP GUI é uma abreviação para SAP Graphical User Interface e, em nosso curso
vamos trabalhar com o SAPGUI para Windows, que é uma ferramenta desenvolvida em
C ou C++ e suporta todas as transações em um sistema da SAP.
A forma de se acessar o SAPGUI para Windows é através do programa SAP
Logon, que deve estar configurado para acessar o sistema SAP desejado. Desta forma,
caso ele não esteja configurado, é necessário realizar os seguintes passos:

Acessar o SAP Logon através de ícone na área de trabalho:

Será exibida a tela inicial do SAP Logon, com os sistemas disponíveis para acesso.
Caso o sistema desejado não se encontre na lista de sistemas, deve-se clicar em “Novo”,
e criar uma conexão para acesso:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


8

Acionar a opção “Sistema específico do usuário” > avançar.


Serão solicitadas as seguintes informações:

Informar uma descrição, um servidor de aplicação, número da instância e ID do


sistema, e uma cadeia de SAProuter, caso se aplique.
Após a criação da entrada, dar um duplo clique sobre ela ou selecioná-la e acionar
o botão “Logon”.
Será aberta a tela de logon do SAP ERP:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


9

• Informar o mandante, usuário e senha (o idioma é opcional);


• Será aberta a tela do SAP Easy Access:

O usuário tem a opção de escolher o menu standard SAP, que representa as


aplicações hierarquicamente organizadas conforme padrão da SAP.
Pode ainda optar pelo menu específico de usuário, que é gerado pelo sistema com
base nas informações de seus perfis de acesso.
Se dispuser do código de transação desejado, pode ainda utilizar a barra de
transações / comando para acesso direto à transação.

Dica:

Caso necessite saber a entrada de menu onde se encontra um código de transação


específico, pode utilizar a transação SEARCH_SAP_MENU

A maioria das telas do SAP apresentam as seguintes seções:


• Barra de títulos – exibe informações da tela atual;
• Barra de ferramentas da aplicação – exibe os botões disponíveis na aplicação
atual;
• Barra de menus – exibe as funções disponíveis na aplicação atual sob a forma de
menus;
• Barra de status – exibe informações sobre o status do sistema atual, como
advertências e erros.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


10

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


11

ARQUITETURA SAP ERP

O SAP Netweaver é a plataforma de aplicação de um sistema SAP e permite


projetar, construir, implementar e executar aplicações de maneira rápida e flexível.
O SAP ERP Central Componente (SAP ECC) é o sucessor técnico do SAP R/3 e
a sua versão atual é a SAP ERP 6.0, que inclui um SAP ECC 6.0 e outros componentes,
que funcionam com base no SAP Netweaver AS 7.00. As ampliações funcionais são
disponibilizadas através de Enhancement Packages.

Configuração cliente / servidor para sistemas da SAP

Antes de discutirmos as configurações de cliente / servidor no contexto de


sistemas SAP, é necessário discutir os conceitos de cliente e servidor.

• Na visão orientada ao hardware, o termo servidor significa o servidor central em


uma rede que fornece dados, memória e recursos para as estações de trabalho
(clientes);
• Na visão orientada ao software, cliente e servidor são definidos em nível do
processo. Um serviço neste contexto é um serviço oferecido por um componente
de software. Os componentes de software que utilizam seus serviços podem ser
definidos como clientes e ele, por sua vez, pode ser definido como servidor, uma
vez que provê serviços e informações para os seus clientes.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


12

Os seguintes processos são utilizados frequentemente para a operação de software


de aplicação empresarial:

• Processos de apresentação – controla toda a parte de apresentação das atividades do


software. Exemplo: exibição de telas;
• Processos de aplicação – controla a maior parte das aplicações, como por exemplo,
a execução dos programas, enfileiramento de processamentos;
• Processos de banco de dados – controla a administração e organização de
informações no banco de dados;

Quando um sistema SAP é instalado e configurado, é necessário decidir sobre a


distribuição dos processos necessários ao seu funcionamento no hardware disponível.
Podem existir diferentes tipos de configuração:

• Um nível – em configurações de um único nível, todas as tarefas de


processamento são realizadas em um único computador. Um exemplo deste tipo
de aplicação é a configuração de um sistema baseado em mainframe. Esta forma
de configuração é utilizada principalmente em sistemas de demonstração ou para
apresentações;

• Dois níveis – configurações de dois níveis são normalmente implementadas por


meio de servidores de apresentação especiais, responsáveis exclusivamente pela
formatação da interface gráfica;

• Três níveis – em uma configuração de três níveis, cada camada é executada em


seu próprio host. Vários servidores de aplicação diferentes podem trabalhar
simultaneamente com os dados de um servidor de um banco de dados. É a forma
mais utilizada de configuração de um sistema SAP.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


13

Os servidores de aplicação num sistema SAP, dependendo da aplicação ou do


produto utilizado, admitem diferentes tipos de servidores de aplicação:

• Sistema AS ABAP: infraestrutura completa, na qual podem ser desenvolvidas e


utilizadas aplicações baseadas em ABAP;

• Sistemas AS Java: infraestrutura completa para o desenvolvimento e utilização


de aplicações baseadas em J2EE;

• AS ABAP + sistema Java: infraestrutura completa, na qual podem ser


desenvolvidas e utilizadas aplicações baseadas em ABAP e baseadas em J2EE.
Um sistema deste tipo só deve ser instalado caso seja explicitamente exigido pela
aplicação. Exemplos de aplicação deste tipo são o SAP Netweaver PI ou o SAP
Solution Manager.

Em um sistema do tipo AS ABAP, os processos são distribuídos da seguinte


forma:

• O escalonador distribui as solicitações pelos processos operacionais;


• Os processos operacionais de diálogos atendem todas as solicitações para etapas
de diálogo acionadas por um usuário ativo. Cada escalonador requer, pelo menos,
dois processos operacionais de diálogos;
• Os processos operacionais spool transferem fluxos de dados sequenciais para as
impressoras. É necessário pelo menos um processo operacional spool para cada
impressora definida num sistema SAP;
• Os processos operacionais de atualização executam ordens de atualização. Tal
como os processos operacionais spool, é necessário pelo menos um processo de
atualização para cada sistema SAP e podem ser configurados mais de um para
cada escalonador;

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


14

• Os processos operacionais em background executam programas que são


executados sem interagir com o usuário. São necessários pelo menos dois
processos de background para um sistema SAP;
• O processo operacional de enfileiramento administra a tabela de bloqueio na
memória compartilhada. Só é necessário um processo de enfileiramento para cada
sistema.

Além dos processos operacionais, o sistema de tempo de execução ABAP fornece


serviços adicionais para a comunicação e externa num sistema SAP:

• O servidor de mensagens trata da comunicação entre os escalonadores distribuídos


dentro do AS ABAP, permitindo a escalabilidade de vários servidores de
aplicação paralelos;
• O leitor gateway permite a comunicação entre os sistemas da SAP ou entre os
sistemas da SAP e sistema de aplicação externos. Existe um para cada
escalonador;
• O Internet Communication Manager permite a comunicação com o sistema da
SAP, utilizando protocolos da web como, por exemplo, o http.

Para o entendimento do funcionamento da arquitetura do SAP ERP é importante


também o entendimento dos conceitos de client e instância.

Client É uma unidade independente no SAP


(Mandante) ERP, em termos comerciais,
organizacionais e técnicos. Possuem sua
própria configuração, dados de aplicação
e dados cadastrais. É identificado por um
número de 3 dígitos, o cliente. Ex: 100,
200, 300

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


15

Instância Pode ser definida como um ambiente que


agrupa um ou mais clientes, onde se
executa um determinado trabalho. É
identificado por um código de 3 dígitos
que identifica o sistema (instância) atual.
Exemplo: Desenvolvimento (DEV);
Qualidade (QAS); Produtivo (PRD)

A partir do entendimento conceito de client e instância, torna-se mais fácil


compreender o conceito de cliente dependente ou cliente independent.

Client independent Por um objeto ou uma operação que é client


(independente de mandante) dependent, compreende-se que é aquela que feita ou
aplicada num mandante, é automaticamente aplicada
e torna-se também disponível nos demais mandantes
da mesma instância. Exemplos de objetos /
informações independentes de mandante: programas
ABAP, grupos de funções, módulos de funções,
objetos de dicionário
Client dependent Por um objeto ou uma operação que é client
(dependente de mandante) dependent, compreende-se que é aquela que feita ou
aplicada num mandante, fica disponível apenas no
próprio mandante. Para estar disponível nos demais
mandantes da mesma instância ou de outras
instâncias, deve ser aplicada no mandante de destino
ou transportada através das ferramentas disponíveis.
Exemplos de objetos / informações dependentes de
mandante: SAPscript, dados de configuração, dados
transacionais (requisições de compras, pedidos,
ordens de venda)

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


16

FERRAMENTAS DO ABAP WORKBENCH

O repositório ABAP é consiste de todos os objetos desenvolvidos no ambiente


SAP. Alguns dos objetos de desenvolvimento são:

• Programas;
• Grupos de função;
• Tabelas;
• Componentes Web dynpro;
• Pacotes.

O repositório é armazenado na camada de banco de dados.

Os objetos de repositório são independentes de mandante e são armazenados de


acordo com a sua aplicação. Desta forma, é importante a introdução do conceito de
pacotes, ou classes de desenvolvimento.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


17

• Pacotes (ou classes de desenvolvimento) – armazenam conjunto de objetos de


repositório de acordo com a sua aplicação. Representam uma forma de
organização das objetos de acordo com a sua aplicação e direcionam a forma de
transporte com que eles serão transportado para as demais instâncias do sistema.
Quando um objeto de repositório é criado, é obrigatória a informação do pacote
no qual ele será criado e, caso este pacote precise ser posteriormente alterado,
pode-se realizar esta operação através da entrada de menu “Ir para > Entrada
catálogo objetos”.

Exemplo de definição de um pacote:

O ABAP Workbench constitui a plataforma de trabalho para desenvolvimentos


baseados em ABAP, e disponibiliza uma série de ferramentas. As principais estão
agrupadas abaixo:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


18

Object Navigator

O Object Navigator inclui todas as ferramentas necessárias para a criação, edição


e visualização dos objetos do repositório, tais como pacotes, programas, grupos de
funções, classes / interfaces, componentes Web Dynpro / interfaces, dentre outros.
Pode ser acessado da transação SE80 ou do caminho de menu Ferramentas >
ABAP Workbench > Síntese > Object Navigator.
A tela do Object Navigator é dividida em duas partes, sendo uma área de
navegação (à esquerda) e a área da ferramenta (na parte direita da tela). Em ambas está
disponível o menu de contexto (funções acionadas pelo botão direito do mouse).

Quando um objeto é selecionado através da área de navegação, automaticamente


o Object Navigator apresenta-o na ferramenta adequada na área direita da tela. A barra de
ferramentas é atualizada de acordo com a ferramenta selecionada.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


19

ABAP Dictionary

O ABAP Dictionary é a ferramenta utilizada para a criação das definições de


dados do SAP ERP, tais como tabelas, estruturas, elementos de dados, categorias de
tabelas, domínios e ajudas de pesquisa.
Pode ser acessado através da transação SE11, ou do caminho de menu
“Ferramentas > ABAP Workbench > Desenvolvimento > Dictionary”.

ABAP Editor

O ABAP Editor é utilizado para a criação, edição e visualização de programas e


seus demais componentes, tais como elementos de textos, variantes ou características
técnicas. Diferentemente da SE80, não apresenta os componentes de maneira hierárquica,
o que pode dificultar a navegação.
Pode ser acessado através da transação SE38, ou do caminho de menu
Ferramentas > ABAP Workbench > Desenvolvimento > Editor ABAP

Class Builder

O Class Builder é utilizado para a criação, edição ou visualização de classes e


interfaces do repositório (ABAP Objects), bem como os seus componentes (atributos,
métodos, parâmetros de métodos, exceções, dentre outros). As classes e interfaces
acessíveis através do Class Builder são apenas as globais, uma vez que as locais são
definidas via código ABAP diretamente no programa onde são utilizadas.
Pode ser acessado através da transação SE24, ou do caminho de menu
“Ferramentas > ABAP Workbench > Desenvolvimento > Class Builder”.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


20

Function Builder

O Function builder é utilizado para a criação, edição e visualização de módulos


de função. É possível também acessar os grupos de função, através da utilização da barra
de menus.
É acessado através da transação SE37, ou do caminho de menu “Ferramentas >
ABAP Workbench > Desenvolvimento > Function Builder”.

Screen Painter

O Screen Painter é utilizado para a criação, edição e visualização de telas ABAP.


Nele é possível visualizar os atributos da tela e de cada um de seus elementos, bem como
a sua lógica de processamento.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


21

A transação utilizada para o acesso ao Screen Painter é a SE51 e o caminho de


menu é Ferramentas > ABAP Workbench > Desenvolvimento > Interface > Screen
Painter.
Para a visualização de uma tela no Screen Painter é necessário informar o nome
do programa ao qual a tela pertence, bem como o seu número.

O Screen Painter permite a visualização em modo gráfico das telas do repositório,


se a opção “Screen Painter gráfico” estiver habilitada. Para habilitá-la, deve-se utilizar a
entrada de menu “Utilitários > Opções” – e acionar a aba Screen Painter.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


22

Menu Painter

O Menu Painter é utilizado para criar, editar ou visualizar status de telas, objetos
de interface, lista de status, barras de menu, listas de menu, definição de teclas de função,
lista de funções e lista de títulos. Os objetos criados através do Menu Painter são
utilizados para construir as interfaces para programas ABAP (menus, teclas de função,
barra de títulos, dentre outros).
Pode ser acessado através da transação SE41, ou do caminho de menu
Ferramentas > ABAP Workbench > Desenvolvimento > Interface > Menu Painter

Ambiente de Programação
Manutenção de elementos de textos
Manutenção de variantes
Editor de telas divididas

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


23

Manutenção de classes de mensagens

Ferramentas de teste no ABAP Workbench


ABAP Debbugger
Runtime Analisys
Performance Trace

Outras ferramentas
Manutenção de Menu de Área
Manutenção de transações

Modificações
Assistente de modificações

PRINCIPAIS TRANSAÇÕES

Abaixo estão relacionadas algumas transações que podem ser úteis no trabalho de
desenvolvimento.

BAPI BAPI Explorer


CMOD Ampliações
GS03 Exibir set
OY19 Customizing Cross System Viewer
SE09 Transport Organizer
SE10 Transport Organizer
SE11 ABAP Dictionary: atualização
SE14 Utlitários para tabelas Dictionary
SE15 Sistema info Dictionary
SE16 Data Browser
SE18 BADI Builder - definições
SE19 BADI Builder - implementações
SE24 Class Builder
SE30 Análise tempo execução objetos ABAP
SE32 ABAP/4 Atualização elementos texto
SE35 Módulos de diálogo ABAP/4
SE36 Logical Database Builder
SE37 Módulos de função ABAP/4
SE38 Editor ABAP
SE39 Editor de tela dividida (novo)
SE41 Menu Painter
SE43 Atualização de menu de área
SE51 Screen Painter
SE54 Geração visão de tabela
SE61 Documentação R/3
SE62 Utilitários setor industrial
SE63 1ª tela tradução

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


24

SE64 Terminology
SE71 Formulário SAPscript
SE72 Estilos SAPscript
SE80 Object Navigator
SE81 Hierarquia de aplicações
SE82 Hierarquia de aplicações
SE84 Sistema info Repository R/3
SE85 ABAP/4 Dictionary sistema info
SE91 Atualização de mensagem
SE92 Nova atual.mensags.SysLog a part.4
SE93 Atualização de códigos de.transação
SHD0 Variantes de transação e de tela
SM04 Lista de usuários
SM12 Exibir e eliminar bloqueios
SM13 Administrar registros de atualização
SM30 Chamada da atualização de visões
SM36 Escalonar job em background
SM37 Síntese da seleção de jobs
SM50 Síntese do processo operacional
SM51 Lista dos sistemas SAP
SM59 Destinos RFC (exib.e atualização)
SMARTFORMS SAP Smart Forms
SMOD Administração de ampliações SAP
SO10 SAPscript textos standard
SQ00 SAP Query: executar queries
SQ01 SAP Query: atualizar queries
SQ02 SAP Query: atualizar InfoSet
SQ03 SAP Query: atualização de grupos usuários
SQ07 SAP Query: ajuste de idiomas
ST05 Performance Trace
ST22 ABAP análise dump
SU20 Atualização dos campos autorização
SU21 Atualizar objetos de autorização
SU24 Verific.obj.autoriz.em transações
SU53 Análise da verificação autorização
SWO1 Business Object Builder

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


25

DICIONÁRIO DE DADOS

No dicionário de dados são representadas as definições de modelos de dados do


SAP ERP. É nele onde são realizadas as definições de tabelas, seus campos, bem como
as características técnicas e relacionadas ao negócio de cada um destes campos. É
importante salientar que no dicionário de dados é representada apenas representação
lógica das tabelas, uma vez que elas são criadas fisicamente no banco de dados que está
ligado ao ambiente.
Os principais componentes para a definição da modelagem de dados do SAP ERP
são os seguintes:

Domínios:

O domínio descreve a característica dos valores para um determinado campo no


SAP. Nele são definidos o seu tipo de dados, o seu tamanho, bem como algumas outras
características como rotinas de conversão, se o campo aceita letras maiúsculas ou não,
dentre outras informações. Os tipos admitidos de dados admitidos no SAP são os
seguintes:

ACCP Período contábil AAAAMM


CHAR Cadeia de caracteres
CLNT Mandante
CUKY Código da moeda, é referido por campos CURR
CURR Campo de moeda, arquivado como DEC
DATS Campo de data (AAAAMMDD), arquivado como CHAR (8)
DEC Campo de cálculo ou montante com vírgula e sinal +/-
FLTP Número em ponto flutuante com precisão de 8 bytes
INT1 Nº inteiro de 1 byte, nº inteiro <= 255
INT2 Nº inteiro de 2 bytes, só p/cpo.compr.antes de LCHR ou LRAW
INT4 Nº inteiro de 4 bytes, nº inteiro com sinal +/-
LANG Código de idioma
LCHR Seq.longa de caracteres, necessita campo INT2 anterior
LRAW Seq.longa de bytes, necessita campo INT2 anterior
NUMC Cadeia de caracteres só com algarismos
PREC Precisão de um campo QUAN
QUAN Campo quantidade, aponta p/campo de unidades de formato
UNIT
RAW Sequência de bytes não interpretada
RAWSTRING Seqüência de bytes de comprimento variável
SSTRING Cadeia de caracteres de comprimento variável
TIMS Campo da hora (hhmmss), arquivado como campo de texto (6)
VARC Cad.longa caracteres, já não suport.a partir do release 3.0
UNIT Código de unidades para campos QUAN

No domínio podem estar definidas algumas características adicionais importantes,


como um conjunto de valores fixos aceitos para o domínio, tabelas de verificação, na qual
estão contidos os valores que podem ser aceitos para este domínio.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


26

Algumas outras características importantes podem estar associadas diretamente


ao domínio, como rotinas de conversão (que são executadas a cada vez que um campo
com referência ao domínio são impressos ou exibidos numa tela), informação se o campo
aceita valores negativos, no caso de campos numéricos, ou se aceitam caracteres
maiúsculos e minúsculos, no caso de textos.

Elementos de dados:

Os elementos de dados descrevem o significado de um campo no SAP. Nele são


armazenados os textos descritivos do campo e ele pode ou não estar relacionado a um
domínio.

Caso o elemento de dados esteja relacionado a um domínio, o campo assume as


suas características técnicas. Uma outra opção de definição de domínio é a sua criação
com um tipo incorporado, ou seja, as definições técnicas do campo, como o seu tipo ou
tamanho são definidas diretamente no elemento de dados.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


27

Algumas características podem estar associadas ao elemento de dados, a saber:

• Ajuda de pesquisa – associa uma ajuda de pesquisa diretamente ao elemento de dados,


que fica disponível todas as vezes em que ele for utilizado na criação de um campo;
• ID de parâmetro – associa um ID de parâmetro ao elemento de dados, que armazena
valores previamente informados para o campo, trazendo-os como valor default;
• Nome do componente default – identificação do campo no sistema SAP. Esta
informação pode ser útil para a localização de campos numa BAPI;
• Documentos de modificação – informa que o campo associado ao elemento de dados
deve fazer parte do controle de modificações standard do SAP.

Além disso, o elemento de dados possui uma seção específica para os textos que
o identificam no sistema SAP:

• Texto breve: texto de 10 posições;


• Texto médio: texto de 20 posições;
• Texto longo: texto de 40 posições;
• Título: título de 55 posições.

Tabelas transparentes

As tabelas transparentes são as tabelas que existem fisicamente no banco de dados


e que efetivamente armazenam as informações num sistema SAP. Na sua definição estão
relacionados os campos e os seus respectivos elementos de dados, bem como as
informações de chave primária.
É importante ressaltar que a maioria das tabelas transparentes apresentam como o
primeiro campo o mandante, que é representado pelo elemento de dados MANDT. Esta
característica é importante uma vez que o banco de dados é único para uma determinada
instância, o que significa que cada tabela armazena as informações de todos os mandantes
existentes na instância. Quando este campo não é definido, diz-se que a tabela é
independente de mandante e, neste caso, uma atualização em qualquer um dos mandantes
refletirá em todos os outros da instância.
Uma vez que uma tabela transparente é definida no dicionário de dados ela é
automaticamente criada no banco de dados vinculado ao SAP e torna-se disponível para
utilização em todo o ambiente SAP, podendo ser acessada por qualquer programa,
módulo de função, classe, etc.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


28

As definições de tabelas transparentes possuem uma seção com informações de


entrega e atualização, onde podem ser definidos:

• Classe de entrega: indica a classe de informações que uma tabela armazena. As


principais classes são:

• Data browser / atualização visão tabs. – indica se para a tabela podem ser criados
diálogos de atualização automática para o seu conteúdo.

Além disso, é obrigatório durante a definição de uma tabela transparente, o


preenchimento da seção de configurações técnicas da tabela, cujos principais
componentes são:

• Categoria de dados: informa a característica das informações armazenadas na


tabela, descritas a seguir:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


29

• Categoria de tamanho: armazena o tamanho da tabela, para fins de alocação de


espaço no banco de dados.

Categoria Número de registros esperados


0 0 até 190
1 190 até 810
2 810 até 3.200
3 3.200 até 13.000
4 13.000 até 52.000
5 52.000 até 100.000
6 100.000 até 210.000
7 210.000 até 420.000
8 420.000 até 840.000
9 840.000 até 33.000.000

• Informações de armazenamento em buffer;


• Informações de armazenamento em documentos de modificação.

Uma tabela pode conter ainda declarações do tipo INCLUDE e do tipo APPEND,
que são estruturas que são incorporadas à definição da tabela e representam campos
criados no banco de dados. É desta forma que a SAP disponibiliza possibilidades para
ampliação de tabelas standard.
Além das tabelas do tipo transparente, podem existir tabelas do tipo pool ou
cluster. As tabelas do tipo pool são utilizadas para armazenar um grande número de
tabelas não relacionadas numa única tabela física. Uma tabela do tipo cluster pode

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


30

armazenar informações de diferentes tabelas numa única tabela. As chaves das diferentes
tabelas utilizadas num cluster devem ser a mesma

Estruturas

As estruturas são representações lógicas de dados no banco de dados que estão


disponíveis em todo o ambiente SAP. Apesar de sua definição ser bastante semelhante à
de uma tabela transparente, com a presença de campos, elementos de dados e uma
descrição, a principal diferença entre uma estrutura e uma tabela transparente é que a
estrutura não é criada ao nível de banco de dados, ou seja, ela não possui nenhum tipo de
conteúdo, mas apenas uma definição lógica de um agrupamento de informações.
As estruturas são utilizadas principalmente para definições centrais ao nível do
ambiente SAP que servem para transitar informações entre diferentes programas,
módulos de função ou para agrupar informações presentes em uma tela ou outro objeto
do SAP.

Categoria de tabela

As categorias de tabela caracterizam-se por ser representações lógicas no


dicionário de dados que não são criadas no banco de dados. Possuem uma estrutura
associada e diferem destas pelo fato de poderem apresentar mais de um registro. São
utilizadas principalmente como referência em definições de dados em programas e como
parâmetros em funções ou classes.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


31

Visões

As visões são representações de relacionamentos entre tabelas do banco de dados.


Desta forma, uma visão pode utilizar informações de uma ou mais tabelas, mas ela, por
si só, não possui nenhum conteúdo, apenas refletindo as informações que estão
armazenadas nas tabelas transparentes que ela utiliza.

Há diferentes tipos de visões, a saber:

• Visões de banco de dados: visões de banco de dados são definidas dentro do


banco de dados, através do ABAP Dictionary e podem acessar informações de
uma ou mais tabelas.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


32

Possuem uma seção na qual são definidos os relacionamentos, ou joins


entre tabelas, uma seção onde são armazenados os campos que farão parte da visão
uma seção onde são definidas as condições de seleção.
No exemplo, observa-se a visão LFA1M1, que relaciona informações da
tabela LFA1 e LFM1.

• Visões de projeção: visões de projeção são utilizadas para ocultar campos de uma
tabela de banco de dados. Desta forma, quando uma visão de projeção é criada,
ela é associada a uma tabela transparente e os campos que não desnecessários
podem ser omitidos, o que simplifica a interface.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


33

• Visões de ajuda: utilizada para a criação de métodos de seleção em ajudas de


pesquisa. Desta forma, quando uma ajuda de pesquisa é criada para um
determinado campo, a visão de ajuda é acionada para a seleção das informações a
serem exibidas.

• Visões de manutenção: são visões que utilizam uma ou mais tabelas dentro de
uma unidade lógica e podem ser utilizadas para criar, modificar ou exibir
informações deste agrupamento de informações. A maior diferença das visões de
banco de dados para as visões de manutenção é que estas últimas permitem a
edição das informações das tabelas. Este tipo de visão é amplamente utilizado para
a manutenção de informações de tabelas de configuração e podem ser também
utilizadas para a manutenção de informações em tabelas criadas (SM30).

Ajudas de pesquisa

São elementos do dicionário criados para apresentar as entradas possíveis para um


determinado campo. Podem possuir parâmetros de importação e parâmetros de
exportação, que são utilizados como chaves para obter as informações no banco de dados
disponibilizando, desta forma, os valores possíveis.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


34

Objetos de bloqueio

Os objetos de bloqueio são elementos criados no dicionário ABAP utilizado para


realizar controle de bloqueio, ou lock, em registros de tabelas do SAP. Quando um objeto
de bloqueio é criado no SAP, dois módulos de função são automaticamente
disponibilizados, um para bloquear e outro para desbloquear os registros.

O parâmetro de bloqueio é geralmente a chave da tabela para o qual o bloqueio


foi criado:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


35

No caso do objeto de bloqueio EXLFA1, os módulos de função disponibilizados


para controlar o bloqueio são:

• ENQUEUE_EXLFA1 – realiza o bloqueio do registro;


• DEQUEUE_EXLFA1 – realiza o desbloqueio do registro.

Quando um registro é bloqueado através da função ENQUEUE, é criado um


registro lógico em todo o sistema SAP, que pode ser visualizado e administrado através
da transação SM12:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


36

LOCALIZAÇÃO DE INFORMAÇÕES NO AMBIENTE SAP

• Na maior parte das telas do SAP ERP está disponível a opção de menu “Sistema >
Status”, que apresenta uma tela conforme a seguinte:

• A partir de qualquer objeto do repositório (programas, tabelas, estruturas, transações),


é possível criar uma lista de utilizações, e obter uma lista de onde o objeto é utilizado:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


37

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


38

• A partir de uma tela SAP, pode-se acionar a ajuda para o campo e obter o nome do
campo onde se encontra a informação no sistema. Quando a informação apresentada
for parte de uma estrutura, é possível, através da navegação SAP, chegar à tabela
transparente em que o campo ocorre, através de pesquisa pelo elemento de dados:

F1 para o campo

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


39

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


40

Lista de tabelas transparentes em que o campo ocorre:

• Quando uma mensagem de erro ocorre numa transação SAP, é possível obter o
número da mensagem gerada e navegar até os programas onde a mensagem é prevista:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


41

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


42

Lista de programas onde a mensagem é utilizada:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


43

• Através do elemento de dados de um campo standard SAP (que seja chave de um


objeto de negócios), é possível utilizar o nome do componente default para chegar às
BAPIs existentes para o campo:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


44

• Conhecendo-se o pacote de desenvolvimento, é possível obter uma lista de todos os


objetos a ele relacionados através do Object Navigator:

• Através da transação SE84, é possível navegar por todos os objetos do repositório:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


45

CONHECIMENTO BÁSICO DE PROGRAMAS ABAP

Principais tipos de programa

Há diferentes tipos de programas ABAP. Cada um deles tem uma finalidade e


aplicação específicas, que são detalhadas no quadro abaixo:

Programas executáveis Os programas executáveis podem conter


(reports) todos os blocos de processamento
possíveis em ABAP, com exceção de
módulos de função.
São iniciados com o comando REPORT
e podem ser chamados a partir de outros
programas a partir do comando SUBMIT.
Podem ser criados códigos de transações
para associação a um programa do tipo
executável. Neste caso, não é necessário
informar o nome do programa para
execução.
Num programa do tipo executável, não é
obrigatória a criação de diálogos com o
usuário
Pool de módulos São iniciados através do comando
PROGRAM. Com exceção dos blocos de
eventos e de módulos de função, podem
conter todos os blocos de processamento
suportados pelo ABAP.
Um programa do tipo pool de módulos é
também conhecido como um programa
online, uma vez que são utilizados para a
criação de diálogos com o usuário.
A característica principal de um programa
do tipo pool de módulos é a presença de
uma telas, com suas respectivas lógicas de
processamento. Só podem ser iniciados a
partir de um código de transação, e este
código de transação necessariamente deve
estar associado a um número de tela.
Grupos de funções São introduzidos com o comando
FUNCTION-POOL e neste tipo de
programa é permitida a existência de
módulos de função. Este tipo de programa
será detalhado mais adiante.
Pool de classes Pools de classes não podem conter
nenhuma tela nem blocos de
processamento. São utilizados para a
criação de métodos (ABAP Objects). O
Class Builder (transação SE24) é utilizado

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


46

para a criação de programas do tipo pool


de classes.
Pool de interfaces São introduzidos com o comando
INTERFACE-POOL e são utilizados
unicamente para a criação de interfaces
globais. Sua criação é realizada através do
Class Builder (transação SE24)
Pool de subrotinas São criados através da introdução do
comando PROGRAM, e não podem
conter telas e com exceção do evento
LOAD-OF-PROGRAM, podem conter
apenas subrotinas.
Pool de tipos São criados através da ferramenta
específica no dicionário de dados ABAP
(transação SE11). Não podem conter telas
ou nenhum tipo de bloco de
processamento. São usados
exclusivamente para a criação de tipos
globais que podem ser utilizados em
qualquer programa ABAP através da
instrução TYPE-POOLS
Programas include Ao contrário dos demais tipos de
programa, os programas do tipo include
não podem ser compilados
separadamente. Funcionam unicamente
como um repositório de código fonte
ABAP e ajudam na organização e
modularização dos demais tipos de
programa.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


47

Considerações gerais sobre o SAP ABAP

• Todo comando ABAP termina com um ponto;


• Toda instrução ABAP pode ser utilizada para mais de um comando. Para isso,
deve ser sucedida por um “:”. Cada comando deve ser separado por uma “,”, sendo
que o último comando do grupo de comandos deve ser finalizado por um ponto;
• As linhas de comentário são iniciadas com o caractere “*” (asterisco). Neste caso,
toda a linha do código é desconsiderada no momento da execução do programa;
• Caso seja necessário incluir um comentário a partir de um determinado ponto da
linha, utiliza-se o caractere “”” (aspas duplas). A partir deste caractere, todo o
restante da linha é considerado comentário e não é executado;
• Aspas simples são utilizadas para a definição de valores fixos e literais dentro de
um programa ABAP;
• Todos os programas ABAP devem ser ativados antes de serem executados;
• A não observância dos padrões de sintaxe geram um erro que impedem a ativação
do programa.

Estruturação básica de um programa ABAP

Um programa ABAP é basicamente constituído por uma seção onde definição de


dados, onde estão contidas as definições de variáveis que serão utilizadas no seu
processamento, sua seção principal, onde está contida a lógica de processamento. A lógica
principal é a seção do programa onde estão contidas as instruções principais do programa,
tais como acessos ao banco de dados, tratamento das informações, gravação de arquivos,
chamada de funções de atualização, saídas de lista ou mensagens de informação ao
usuário. O programa pode ou não possuir uma saída de lista, ou conter uma interação com
o usuário sob a forma de telas.
Além disso, todo programa ABAP possui algumas seções adicionais que merecem
consideração, conforme descrito abaixo:

• Características: seção onde estão contidos o título do programa ABAP, a data e


o responsável pela criação, bem como pela última modificação, o tipo de
programa, o pacote ao qual ele pertence, a sua aplicação, um grupo de
autorizações (caso ele utilize), o pacote, o banco de dados lógico, caso seja
utilizado. Além disso, estão disponíveis algumas opções avançadas, como
“Bloqueio do editor”, “Operações aritméticas em ponto fixo”, “Verificações
unicode ativas” e “Início via variante”;

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


48

• Elementos de texto: nesta seção, podem ser definidos elementos de texto


traduzíveis do programa, bem como textos para os parâmetros de seleção, bem
como barras de título;

Conceitos específicos de programação ABAP

É importante a introdução de alguns conceitos e a abordagem de algumas


características relacionadas à linguagem ABAP.

Telas de Seleção

Uma tela de seleção é uma tela criada via código ABAP, e é utilizada basicamente
como a primeira tela de um programa, para a entrada de informações iniciais,
particularmente nos programas do tipo report.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


49

Quando a definição de uma tela de seleção é incluída num programa ABAP, a tela
é automaticamente renderizada no momento da execução e exibida no momento da
chamada do programa.
De forma geral, é definida apenas uma tela de seleção, utilizada para possibilitar
a passagem dos parâmetros iniciais do programa, mas é possível incluir mais de um nível
de telas de seleção:
Os principais comandos utilizados para a criação de telas de seleção são:

Comando Descrição
SELECTION-SCREEN Utilizado para opções de formatação de layout numa
tela de seleção, tais como blocos, frame, linhas
divisórias, linhas de comentário, linhas em branco,
entre outros.
Pode ser utilizado também para definir telas de
seleção em programas do tipo pool de módulos.
Neste caso o número da tela deve ser explicitamente
declarado.
Para mais detalhes, consultar a documentação em
http://help.sap.com/saphelp_45b/helpdata/en/34/8e7
3f26df74873e10000009b38f9b8/content.htm
PARAMETERS Declara um campo do tipo parâmetro que recebe um
valor único na tela.
Tem algumas opções de formatação, tais como:
• Referência direta a um tipo ABAP;
• Referência a um campo de tabela ou estrutura
do dicionário;
• Saída do tipo checkbox;
• Saída do tipo radiobutton
SELECT-OPTIONS Declara um campo do tipo parâmetro que pode
receber valores múltiplos. O campo utilizado como
referência no SELECT-OPTIONS deve estar
declarado no programa ABAP (instruções TABLES
ou DATA)

Saída de PARAMETERS:

SELECTION-SCREEN BEGIN OF BLOCK bloco1 WITH FRAME.


PARAMETERS p_lifnr TYPE lfa1-lifnr.
SELECTION-SCREEN END OF BLOCK bloco1.

Saída de SELECT-OPTIONS:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


50

TABLES lfa1.

SELECTION-SCREEN BEGIN OF BLOCK bloco2 WITH FRAME.


SELECT-OPTIONS s_lifnr FOR lfa1-lifnr.
SELECTION-SCREEN END OF BLOCK bloco2.

Tipos de dados

O ABAP possui um conjunto de tipos de dados elementares, que são utilizados na


definição das informações que serão utilizadas pelo programa.

Tipo de Tamanho Tamanhos Valor Inicial Significado


Dados inicial do válidos
campo para o
tipo de
campos
Tipos numéricos
I 4 4 0 Número inteiro
F 8 8 0 Número ponto flutuante
P 8 1 - 16 0 Número compactado
Tipos alfanuméricos
C 1 1 - 65535 '…' Campo de texto (alfanumérico)
D 8 8 '00000000' Campo data
(Formato: YYYYMMDD)
N 1 1 - 65535 '0 … 0' Caracteres numéricos
T 6 6 '000000' Campo hora
(formato: HHMMSS)
Hexadecimal
X 1 1 - 65535 X'0 … 0' Campo hexadecimal

Além do tipos de dados elementares, existem outras formas para a declaração de


informações num programa ABAP. As principais são:

• Referência direta a um elemento de dados


• Referência a um campo de tabela ou estrutura
• Referência a uma outra variável do próprio programa.

Definições de tipos

Além dos tipos elementares, tipos complementares podem ser definidos dentro de
um programa ABAP. Estas definições são realizadas através da instruções TYPES. Os

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


51

tipos declarados dentro de um programa somente podem ser utilizado dentro do próprio
programa. As definições de tipos são utilizadas principalmente para a criação de tipos de
dados complexos que não precisam ser definidos sucessivas vezes dentro de um programa
e podem ser utilizados na definição de diferentes variáveis e / ou tabelas internas.

TYPES: BEGIN OF ty_lfa1,


lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1.
TYPES: END OF ty_lfa1.

Variáveis

As variáveis são definições utilizadas num programa ABAP para a criação de uma
área de memória identificada que pode ser utilizada para o tratamento de informações em
tempo de execução. Quando um programa ABAP é executado, as variáveis definidas são
criadas pelo interpretador ABAP em tempo de execução e podem ser utilizadas para
receber e tratar valores que o programa recebe, acessa ou calcula.
São definidas através da instrução DATA e devem ter um tipo associado. Caso a
informação do tipo seja omitida na definição de uma variável, o interpretador ABAP
criará automaticamente uma variável do tipo C de uma posição.
Exemplos de definições de variáveis:

DATA: v_char(20) TYPE c,


v_number_int TYPE i,
v_lifnr TYPE lfa1-lifnr,
v_name1 TYPE lfa1-name1.

Variáveis complexas

Além das variáveis simples, que representam uma área de memória unicamente
identificada no tempo de execução de um programa, podem ser definidas também
variáveis complexas, que caracterizam-se principalmente pela existência de mais de um
campo com uma identificação em comum.
Seguem alguns exemplos de definições de variáveis complexas num código
ABAP:

1. Definições a partir de tipos definidos no programa

TYPES: BEGIN OF ty_lfa1,


lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1.
TYPES: END OF ty_lfa1.

DATA wa_lfa1 TYPE ty_lifnr.

2. Definições através do comando DATA:

DATA: BEGIN OF wa_lfa1,


lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1.
DATA: END OF wa_lfa1.

3. Definições a partir de estruturas do dicionário

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


52

DATA wa_lfa1 TYPE lifnr.

Tabelas internas

Além das variáveis planas, conceituadas previamente, podem ser definidas


também tabelas internas num programa ABAP. As tabelas internas caracterizam-se pelo
fato de, ao contrário das variáveis planas, poderem receber várias linhas de características
semelhantes. Isto significa que, quando uma tabela interna é definida dentro de um
programa, a área de memória criada pode receber n registros.
Há diferentes tipos de tabelas internas que podem ser definidos em um programa:

Standard É o tipo mais elementar de tabela interna


e também o mais utilizado. Este tipo de
tabela permite a criação de vários registros
e as operações nestes registros são
realizadas através de operações de índice
Sorted Uma tabela do tipo SORTED caracteriza-
se por possuir uma chave, e os registros
são automaticamente ordenados quando
criados na tabela através desta chave
Hashed Uma tabela do tipo HASHED caracteriza-
se por também possuir uma chave e pelo
fato de que todas os seus registros
deverem possuir uma chave única. Ou
seja, este tipo de tabela não permite a
existência de existir mais de um registro
com chaves repetidas.

Uma tabela interna pode ou não possuir uma linha de cabeçalho. Quando a tabela
interna é definida com cabeçalho, as operações de leitura, modificação de informações ou
criação de linhas são realizadas através de sua linha de cabeçalho. Quando a tabela interna
é definida sem uma linha de cabeçalho, é necessário definir uma área de trabalho
separadamente para que se possa trabalhar com as informações da tabela interna.

Há diversas maneiras de se declarar uma tabela num programa ABAP. As


principais são:

1. Definição de uma tabela interna a partir de um tipo:

TYPES: BEGIN OF ty_lfa1,


lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1.
TYPES: END OF ty_lfa1.

DATA: it_lfa1 TYPE TABLE OF ty_lifnr,


wa_lfa1 TYPE ty_lifnr.

A tabela interna IT_LFA1 é criada sem uma linha de cabeçalho e, neste caso, é
necessária a declaração de WA_LFA1 para que se possa trabalhar com o seu conteúdo.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


53

2. Definição de uma tabela interna com os seus campos através do comando DATA
e suplemento OCCURS:

DATA: BEGIN OF it_lfa1 OCCURS 0,


lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1.
DATA: END OF it_lfa1.

Quando se utiliza o suplemento OCCURS na declaração de uma tabela interna, uma


linha de cabeçalho é automaticamente criada.

3. Definição de uma tabela interna a partir de uma estrutura:

DATA: it_lfa1 TYPE TABLE OF lfa1,


wa_lfa1 TYPE lfa1.

Neste caso, a tabela é criada sem uma linha de cabeçalho, sendo necessário a
declaração de uma estrutura auxiliar para se trabalhar com as informações do conteúdo
da tabela.

4. Definição de uma tabela interna utilizando o comando INCLUDE


STRUCTURE:

DATA: BEGIN OF it_lfa1 OCCURS 0.


INCLUDE STRUCTURE lfa1.
DATA: END OF it_lfa1.

5. Definição de uma tabela interna a partir de uma categoria de tabela:

DATA it_lfa1 TYPE bbp_lfa1_t.

Neste caso, a tabela é criada a partir de uma categoria de tabela do dicionário de


dados, não sendo necessária o suplemento OCCURS, uma vez que o interpretador ABAP
já compreende que trata-se de uma tabela interna. Neste caso, também é necessário definir
uma estrutura auxiliar, uma vez que a tabela é criada sem uma linha de cabeçalho.

6. Definição de tabelas internas com linha de cabeçalho:

DATA it_lfa1 TYPE bbp_lfa1_t WITH HEADER LINE.


DATA: it_lfa1 TYPE TABLE OF lifnr WITH HEADER LINE.

TYPES: BEGIN OF ty_lfa1,


lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1.
TYPES: END OF ty_lfa1.

DATA: it_lfa1 TYPE TABLE OF lifnr. WITH HEADER LINE.

Constantes

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


54

Uma constante é um tipo de variável que possui um único valor durante todo o
tempo de execução do programa. Este valor não pode ser alterado pela lógica de
programa. A sua definição é realizada através da instrução CONSTANTS.
Na definição de uma constante, o suplemento VALUE é obrigatório.
CONSTANTS: c_pi TYPE p DECIMALS 10 VALUE '3.1415926536'.

CONSTANTS: BEGIN OF myaddress,


name TYPE c LENGTH 20 VALUE 'Korun Education',
street TYPE c LENGTH 20 VALUE 'Av. Getúlio Vargas',
number TYPE p VALUE 446,
postcode TYPE c LENGTH 9 VALUE '30112-020',
city TYPE c LENGTH 20 VALUE 'Belo Horizonte',
END OF myaddress.

Tabela SYST
O ambiente SAP disponibiliza em tempo de execução a tabela SYST, que contém
informações de sistema que podem auxiliar no desenvolvimento. Pode ser mapeada
também através da nomenclatura SY + “-“ + nome do campo. Algumas das informações
disponíveis são:

• Usuário corrente (SY-UNAME);


• Data do sistema (SY-DATUM);
• Hora do sistema (SY-UZEIT);
• Idioma de logon (SY-LANGU).
Uma lista mais abrangente dos campos de sistema disponíveis através da tabela
SYST pode ser visualizada abaixo:

Type Content
Name

Contains the Latin alphabet. Can be used to access individual letters


sy-abcde c(26)
directly by specifying the offset/length, regardless of the code page.

Set to "X" in an ABAP program that runs in the background, otherwise


sy-batch c(1)
initial.

Set to "X" during processing of batch input sessions, and in ABAP


sy-binpt c(1)
programs called using CALL TRANSACTION USING. Otherwise initial.

Contains a blank character in the first program in a call sequence,


otherwise contains the value "X". Is set to "X" after calls using CALL
TRANSACTION, CALL DIALOG, or SUBMIT ... AND RETURN.
sy-calld c(1)
Empty if the program was started using LEAVE TO TRANSACTION or a
transaction from the screen. A call using SUBMIT (without AND
RETURN) assumes the value of the calling program.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


55

When printing lists, contains a value that displays where printing was
sy-callr c(8) started - for example, NEW-PAGE for program-controlled printing, or
RSDBRUNT for printing from the selection screen.

Current position during creation of a list in the list buffer. Counting begins
at 1. In non- Unicode systems, this position also corresponds to the
column in the displayed list. In Unicode systems, this is only guaranteed for
sy-colno i
the lower and upper output limits applicable to each output, as one
character may take up more columns in the list than positions in the list
buffer.

Page number of the page displayed at the top of the list for which a list
sy-cpage i
event was triggered. Counting begins at 1.

In procedures called externally, the name of the calling program,


Otherwise the name of the current program. If a procedure called
sy-cprog c(40) externally calls another external procedure, sy-cprog contains the name
of the framework program, and is not set to the name of the framework
program of the subsequent calling program.

Horizontal cursor position in the display on a screen. Counting begins at


sy-cucol i
column 2.

Vertical cursor position on the screen display of a screen. Counting begins


sy-curow i
at line 1.

At PAI, contains "X" if at least one input field of a screen has been changed
sy-datar c(1)
by a user or by further data transfer, otherwise initial.

Local date of the user - for example, "19990723". Can be set using GET
sy-datlo d
TIME.

sy-datum d Local date of the ABAP system. Can be set using GET TIME.

sy-dayst c(1) "X" during summertime, otherwise initial.

SQL statements set the content of sy-dbcnt to the number of processed


sy-dbcnt i
table lines.

sy-dbnam c(20) In executable programs, the linked logical database.

sy-dbsys c(10) Central database system - for example, "ORACLE", "INFORMIX".

Screen group of the current screen. In the Screen Painter, several screens
sy-dyngr c(4) can be assigned to a common screen group, which can be used, for
example, for making modifications to all screens in the group at once.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


56

Number of the current screen. During selection screen processing, this is


the current selection screen. During list processing, the number of the
sy-dynnr c(4)
subscreen container. During processing of a subscreen screen (including
in tabstrips), this screen number.

sy-fdayw b Factory calendar weekday, Monday = 1, ..., Friday = 5.

sy-fdpos i Found location for search in byte-type and character-type data objects.

Network name of the computer on which the current application server


sy-host c(32)
is instantiated - for example, "KSAP0001", "HS01234".

Loop index. In DO and WHILE loops, contains the number of the loop
sy-index i
passes including the current pass.

Single-character language key - for example, "D", "E", "F" - for the current
sy-langu c(1) text environment. Set according to the logon language of the user or by
using the statement SET LOCALE.

In executable programs, the database program of the linked logical


sy-ldbpg c(40)
database.

List line for which a list event was triggered. Counting begins at 1 and
sy-lilli i
includes the page header.

Page length of the current list during list creation. sy-linct is 0 for a
sy-linct i standard list of any length, and has a value that is not 0 for lists with a
defined page length.

Current list line during list creation. Counting begins at 1 and includes the
sy-linno i
page header.

sy-linsz i Line width of the current list in the list buffer during list creation.

Content of the list line in the list buffer, on which the cursor was
sy-lisel c(255)
positioned while a list event was triggered (restricted to the first 255 lines).

sy-listi i List level of the list for which a list event was triggered.

sy-loopc i Number of lines currently displayed in a table control.

List level of the list that is currently being created (basic list: 0, details lists:
greater than 0). For every interactive list event, sy-lsind is
sy-lsind i
automatically increased by an increment of 1. sy-lsind can only be
changed in ABAP programs for navigating between details lists.

sy-macol i When printing lists, contains the number of columns on the left edge.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


57

client identifier with which the user has logged on - for example, "401",
sy-mandt c(3)
"800".

sy-marow i When printing lists, contains the number of lines on the top margin.

Indexing of external sessions. Contains the value 0 in the first session. In


new sessions that are opened using the Create Session function or by
sy-modno i
calling a transaction with /o in the input field of the standard toolbar,
this value is increased by 1.

sy-msgid c(20) After the statement MESSAGE, contains the message class.

sy-msgno n(3) After the statement MESSAGE, contains the message number.

sy-msgty c(1) After the statement MESSAGE, contains the message type.

sy-msgv1
After the statement MESSAGE, contain the contents of the fields that
... sy- c(50)
msgv4 were used as placeholders in the message.

Operating system of the current application server - for example,


sy-opsys c(10)
"SOLARIS", "HP-UX".

sy-pagno i Current page in list creation.

sy-pfkey c(20) GUI status of the current screen.

sy-prdsn c(6) When printing lists, contains the name of the spool file.

Name of the current ABAP program. For procedures called externally,


name of the framework program of the procedure. sy-repid when
transferring actual parameters to an external procedure, before release
sy-repid c(40)
6.10, the formal parameter was not set to the name of the caller, but to
the name of the procedure instead. As of release 6.10, sy-repid can be
transferred to procedures without help fields.

sy-saprl c(4) Release status of the ABAP system - for example, "46D", "610".

sy-scols i Number of columns of the current screen.

sy-slset c(14) Variant that was used for filling a selection screen.

sy-spono n(10) When printing lists, contains the name of the spool number.

sy-srows i Number of lines of the current screen.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


58

Number of the first column displayed in the list for which a list event has
sy-staco i
been triggered. Counting begins at 1.

Number of the list line displayed at the top of the page at the top of the
sy-staro i list, for which a list event was triggered. Counting begins at 1 and does not
include the page header.

sy-stepl i Index of the current line in a table control. This is set for every loop pass.

Return value that is set by many ABAP statements. In general, the value 0
means that the statement was executed with no problems. Depending on
sy-subrc i
which statement was used to set sy-subrc, the cause of any errors can
be derived from the corresponding value.

sy-sysid c(8) Name of the ABAP system - for example, "S01", "K99".

Table index. Last addressed line of a standard table or sorted table. Is


sy-tabix i
set to 0 if hashed table is accessed.

Name of the current transaction code. Initial in background processing,


sy-tcode c(20)
unless a transation was called during background processing.

In the statements DESCRIBE TABLE, LOOP AT, and READ TABLE,


sy-tfill i sy-tfill is filled with the number of lines in the internal table that has
been addressed.

sy-timlo t Local time of the user, for example "152557". Can be set using GET TIME.

sy-title c(70) Text that appears in the title bar of the screen.

In the statements DESCRIBE TABLE, LOOP AT, and READ TABLE,


sy-tleng i sy-tleng is filled with the line size of the internal table that is being
addressed.

These system fields can be assigned values in the program. At the event
sy-tvar0
TOP-OF-PAGE, the content of sy-tvar0 to sy-tvar9 replaces the
... sy- c(20)
placeholders "&0" to "&9" in the list and column headers of the text
tvar9
elements of the program.

Time difference to the UTC reference time in seconds - for example,


sy-tzone i
"3600", "10800".

sy-ucomm c(70) Function code that triggered the event PAI.

sy-uline c(255) Contains a horizontal line of length 255 for displaying in lists.

sy-uname c(12) User's logon name - for example, "KELLERH".

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


59

sy-uzeit t Local time of the ABAP system. Can be set using GET TIME.

sy-vline c(1) Contains a vertical line (|) for displaying in lists.

In the statements REPORT, PROGRAM, and FUNCTION-POOL, set to "N"


sy-wtitl c(1) if the addition NO STANDARD PAGE HEADING is used, otherwise
initial.

sy-zonlo c(6) Time zone of the user - for example, "CET", "PST".

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


60

PRINCIPAIS COMANDOS SAP ABAP

Operações aritméticas / matemáticas

São comandos utilizados para a realização de operações aritméticas em ABAP.


As principais variações são:

[COMPUTE] result = arith_exp.

ADD dobj1 TO dobj2.

SUBTRACT dobj1 FROM dobj2.

MULTIPLY dobj1 BY dobj2.

DIVIDE dobj1 BY dobj2.

A cláusula COMPUTE pode ser omitida, conforme exemplo abaixo:

DATA:
res TYPE x LENGTH 1,
p1 TYPE x LENGTH 1 VALUE '5B', "01011011
p2 TYPE x LENGTH 1 VALUE '13', "00010011
p3 TYPE x LENGTH 1 VALUE 'A5'. "10100101

res = p1 BIT-AND p2 BIT-AND p3. "00000001

Existem outras operações aritméticas além das elementares suportadas pelo


ABAP. A saber:

Operações condicionais

O comando IF contém uma estrutura que pode conter sequencias de comandos


que serão executadas de acordo com uma condição. Pode conter ELSE’s e ELSEIF’s.

IF log_exp1.
[statement_block1]
[ELSEIF log_exp2.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


61

[statement_block2]]
...
[ELSE.
[statement_blockn]]
ENDIF.

O comando CASE tem uma finalidade semelhante ao comando IF, com a


diferença que contém um operador único e uma sequencia de operações definida para
cada um dos valores previstos através da cláusula WHEN.
CASE operand.
[WHEN operand1 [OR operand2 [OR operand3 [...]]].
[statement_block1]]
...
[WHEN OTHERS.
[statement_blockn]]
ENDCASE.

O comando CHECK contém uma operação condicional, e o código seguinte


somente é executado se a operação for atendida.

CHECK log_exp.

Operadores condicionais suportados pelo ABAP:

EQ ou = Igual
NE ou <> Diferente
GT ou > Maior que
LT ou < Menor que
GE ou >= Maior ou igual a
LE ou <= Menor ou igual a
CO Contains only
CN Contais not any
CA Contains any
NA Contains not any
CS Contains string
NS Contains no string
CP Cotains pattern
CL Contains no pattern

Operações com tabelas internas

O comando LOOP percorre todas as linhas de uma tabela interna e executa a


sequência de comandos contida entre as cláusulas LOOP e ENDLOOP. Pode conter o
suplemento WHERE, que contém uma condição para que o passo corrente seja executado.
LOOP.
...
ENDLOOP.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


62

O comando READ realiza a leitura de apenas uma linha da tabela interna


informada, de acordo com um índice ou a partir de uma chave.

READ TABLE itab { table_key


| free_key
| index } result.

O comando APPEND cria uma linha na última posição da tabela interna.


APPEND line_spec TO itab [SORTED BY comp] [result].

O comando INSERT cria numa posição específica de uma tabela interna.


INSERT line_spec INTO itab_position [result].

O comando COLLECT considera um campo do tipo texto para definir a chave da


tabela, criando um novo registro a cada vez que ela é alterada, e somando os valores dos
campos numéricos.

COLLECT wa INTO itab [result].

O comando DELETE elimina uma ou mais linhas de uma tabela interna a partir
de uma condição.

DELETE { itab_line | itab_lines | duplicates }.

O comando SORT realiza a classificação dos registros de uma tabela interna a


partir – pode ser ascendente ou descendente e considerar qualquer número de colunas.

SORT itab [STABLE]


{ { [ASCENDING|DESCENDING]
[AS TEXT]
[BY {comp1 [ASCENDING|DESCENDING] [AS TEXT]}
{comp2 [ASCENDING|DESCENDING] [AS TEXT]}
... ] }
| { [BY (otab)] } }.

O comando DESCRIBE fornece informações de uma tabela interna, tais como o


número de linhas, por exemplo.

DESCRIBE TABLE ...

Comandos de continuidade

O comando WHILE executa sucessivas vezes as instruções contidas entre WHILE


e ENDWHILE enquanto a operação lógica a ele associada seja atendida.

WHILE log_exp [vary]


[statement_block]
ENDWHILE.

O comando DO executa sucessivas vezes as instruções contidas entre DO e


ENDDO enquanto a operação lógica a ele associada seja atendida. A determinação do

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


63

número de vezes em que o DO será executado é opcional e, caso esta cláusula seja
emitida, o DO executa até que um comando EXIT seja executado.

DO [n TIMES] [varying].
[statement_block]
ENDDO.

Comandos de controle de fluxo

O comando STOP somente pode ser executado em programas do tipo executável


e passa imediatamente para o evento END-OF-SELECTION do programa, caso ele esteja
definido. Caso este evento não esteja definido, interrompe o processamento do programa
do ponto onde é chamado.

STOP.

O comando CONTINUE, quando dentro de um DO – ENDDO, LOOP –


ENDLOOP ou WHILE – ENDWHILE, despreza o passo corrente da sequência de
execuções e passa para o passo seguinte.

CONTINUE.

O comando EXIT finaliza uma sequência de processamento, quando dentro de um


DO – ENDDO, LOOP – ENDLOOP ou WHILE – ENDWHILE.
Se utilizado dentro de uma subrotina ou módulo de função, sai do bloco de
processamento processando o comando imediatamente seguinte.
EXIT.

Exemplo de utilização de EXIT:

DATA limit TYPE i VALUE 10.


DO.
IF sy-index > limit.
EXIT.
ENDIF.
WRITE / sy-index.
ENDDO.

O comando LEAVE é utilizado para o encerramento de programas.

LEAVE PROGRAM.

Comandos de reinicialização

O comando CLEAR reinicializa o valor de uma área de memória, atribuindo a ela


o valor inicial correspondente ao tipo de dados em que ela foi definida.

CLEAR dobj.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


64

O comando REFRESH é utilizado para tabelas internas e elimina todo o conteúdo


de uma tabela interna quando executado.

REFRESH itab.

O comando FREE tem o medo efeito do comando CLEAR, reinicializando o valor


da área de trabalho.
Quando executado para uma tabela interna, o comando FREE tem o mesmo efeito
do comando REFRESH, com a diferença que desaloca o espaço de memória ocupado
previamente pela tabela.

FREE dobj.

Comandos de atribuição

O comando MOVE transfere o valor do campo de origem para o campo de destino.


Atribuições diretas entre variáveis, sem a utilização da cláusula MOVE também são
suportadas pelo ABAP.

MOVE source TO destination.

destination = source.

O comando MOVE-CORRESPONDING transfere o valor dos campos da


estrutura 1 para os campos da estrutura 2. São utilizados principalmente para
movimentação de valores entre variáveis complexas.

MOVE-CORRESPONDING struc1 TO struc2.

Chamadas de outros programas

O comando CALL FUNCTION é utilizada para a chamada de módulos de função


a partir de um programa ABAP. Deve conter os parâmetros de importação e exportação
do módulo de função a ser chamado.

CALL FUNCTION func { parameter_list


| parameter_tables }.

O comando CALL METHOD é utilizado para a chamada de métodos de uma


classe a partir de um programa ABAP. Deve conter a assinatura (parâmetros) do método.

CALL METHOD static_meth parameter_list.

O comando SUBMIT é utilizado para a chamada de programas do tipo executável


a partir de um programa ABAP.

SUBMIT {rep|(name)} [selscreen_options]


[list_options]
[job_options]
[AND RETURN].

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


65

Passagem de informações entre programas

Os comandos SET / GET PARAMETER são utilizados para exportar ou importar


valores de campo para um ID de parâmetro (cadastrados na tabela TPARA).

SET PARAMETER ID pid FIELD dobj.

GET PARAMETER ID pid FIELD dobj.

Os comandos EXPORT TO MEMORY e IMPORT FROM MEMORY são


utilizados para exportar ou importar informações para a memória.

TYPES:
BEGIN OF tab_type,
para TYPE string,
dobj TYPE string,
END OF tab_type.

DATA:
id TYPE c LENGTH 10 VALUE 'TEXTS',
text1 TYPE string VALUE `IKE`,
text2 TYPE string VALUE `TINA`,
line TYPE tab_type,
itab TYPE STANDARD TABLE OF tab_type.

line-para = 'P1'.
line-dobj = 'TEXT1'.
APPEND line TO itab.

line-para = 'P2'.
line-dobj = 'TEXT2'.
APPEND line TO itab.

EXPORT (itab) TO MEMORY ID id.


IMPORT p1 = text2
p2 = text1 FROM MEMORY ID id.

Comandos de saída de lista e mensagens

O comando WRITE é utilizado para saída de informações em listas.

WRITE {[AT] [/][pos][(len|*|**)]} dobj


[int_format_options]
[ext_format_options]
[list_elements]
[QUICKINFO info].

O comando ULINE é utilizado para impressão de uma linha na lista ABAP.

ULINE.

O comando SKIP é utilizado para a impressão de uma linha em branco numa lista
ABAP.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


66

SKIP.

O comando MESSAGE é utilizado para saída de mensagens numa tela ABAP.

MESSAGE { msg | txt } [message_options].

Comandos para operações em telas

O comando CALL SCREEN é utilizado para realizar chamadas de telas.

CALL SCREEN dynnr


[STARTING AT col1 lin1
[ENDING AT col2 lin2]].

O comando SET PF-STATUS é utilizado para definir uma barra de status em uma
tela ABAP.

SET PF-STATUS status [OF PROGRAM prog] [EXCLUDING fcode].

O comando SET TITLEBAR é utilizado para definir uma barra de títulos em uma
tela ABAP.

SET TITLEBAR title [OF PROGRAM prog]


[WITH text1 ... text9].

O comando LOOP AT SCREEN é utilizado para percorrer todos os elementos de


tela da tela corrente.

LOOP AT SCREEN [INTO wa].


...
ENDLOOP.

O comando MODIFY SCREEN é utilizado para modificar propriedades de um


elemento de tela dentro de um LOOP AT SCREEN.
Os elementos de tela disponíveis para alteração ou para visualização são:

Component Length Type Attribute Description


name 132 c Name Name
group1 3 c Group1 Modification group
group2 3 c Group2 Modification group
group3 3 c Group3 Modification group
group4 3 c Group4 Modification group
required 1 c Required-entry field Mandatory field
input 1 c Input input-enabled field
output 1 c Output display field
intensified 1 c Intensified intensified field

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


67

invisible 1 c Invisible invisible element


length 1 x visLength Field length
active 1 c Input/Output/Invisible active field
display_3d 1 c Two-dimensional Box
value_help 1 c Input help Input help key
request 1 c - Input exists
values_in_combo 1 c Dropdown listbox Value help exists

MODIFY SCREEN [FROM wa].

O comando SET CURSOR é utilizado para posicionar o cursor num numa


determinada posição ou elemento da tela corrente.

SET CURSOR { { FIELD field [LINE line] [[DISPLAY] OFFSET off] }


| { col lin } }.

O comando GET CURSOR é utilizado obter informações sobre a posição do


cursor na tela corrente.

GET CURSOR { { FIELD field [field_properties] }


| { LINE line } }.

O comando SET SCREEN é utilizado para determinar o número da tela a ser


processado dentro de uma sequência de diálogo.

SET SCREEN dynnr.

O comando LEAVE sai da tela corrent e vai para a próxima. Pode ser utilizado
com o número da próxima tela declarado de forma explícita.

LEAVE { SCREEN | {TO SCREEN dynnr} }.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


68

FLUXO DE PROCESSAMENTO E MODULARIZAÇÃO

Um programa ABAP do tipo executável possui algumas possui uma sequência


lógica de processamento que é definida de acordo com a definição de alguns eventos.
A sequência de comandos contida no evento determina a ordem em que ele será
executado pelo processador ABAP. Alguns dos principais eventos são:

INITIALIZATION O evento INITIALIZATION é executado


logo após a execução do evento LOAD-
OF-PROGRAM e antes da exibição da
tela de seleção, caso ela exista.
Pode ser utilizado para definir valores
iniciais para parâmetros.
AT SELECTION-SCREEN O evento AT SELECTION-SCREEN é
relacionado ao processamento da tela de
seleção do programa, e pode ser executado
em diferentes momentos ou ações do
usuário. Algumas de suas variações são:
AT SELECTION-SCREEN OUTPUT:
executado no momento em que a tela está
sendo construída
AT SELECTION-SCREEN ON:
executado no momento em que há alguma
ação associada ao elemento de tela
relacionado ao suplemento ON
AT SELECTION-SCREN ON
VALUE-REQUEST HELP-REQUEST
FOR: relacionado à ação do usuário
(ajuda para pesquisa ou ajuda para o
campo) relacionada ao campo associado
ao suplemento FOR
AT SELECTION-SCREEN: executado
em toda e qualquer operação na tela
START-OF-SELECTION O evento START-OF-SELECTION é
executado imediatamente após a tela de
seleção e geralmente contém as instruções
principais de um programa ABAP
END-OF-SELECTION O evento END-OF-SELETION é
executado imediatamente após a execução
do START-OF-SELECTION. No caso
dos programas definidos com bancos de
dados lógicos, somente é executado após
a finalização das atividades de seleção.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


69

Além dos eventos anteriormente descritos, existem alguns outros, a saber

LOAD-OF-PROGRAM O evento LOAD-OF-PROGRAM é o


primeiro bloco de comandos que
executado quando um programa ABAP é
iniciado.
Pode ser utilizado para carregar
informações em memória ou executar
tarefas de inicialização do programa.
Ao contrário dos demais, pode ser
definido também em programas do tipo
module pool ou em grupos de função,
sendo executado no momento em que o
programa principal é carregado na
memória.
TOP-OF-PAGE Executado para cada início de página num
programa onde há a saída de lista. Sua
aplicação principal é a construção de
cabeçalhos de listas
END-OF-PAGE Executado para cada fim de página num
programa onde há a saída de lista. Sua
aplicação principal é a construção de
rodapés de listas
AT USER-COMMAND Executado quando alguma ação da tela
relacionada a um botão é executada
AT LINE-SELECTION Executado quando uma linha da lista da
tela é selecionada

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


70

Além dos blocos de processamento básicos, um programa ABAP pode conter uma
ou mais subrotinas. As subrotinas são blocos de processamento que tem a finalidade de
proporcionar uma modularização do código ABAP bem como proporcionar a sua
reutilização dentro do próprio programa ou em programas externos.
As subrotinas são definidas conforme os exemplos abaixo:

FORM subr [TABLES table_parameters]


[USING parameters]
[CHANGING parameters]
[RAISING exc1 exc2 ... ].
...
ENDFORM.

Um programa pode conter quantas subrotinas quanto forem necessárias. A


chamada das surotinas é realizada mediante o comando PERFORM. Segue exemplo de
um código com utilização de subrotinas:

*&--------------------------------------------------------------------
-*
*& Report ZAB_BI_00
*& Curso ABAP para funcionais - Korun
*& Subrotinas
*&--------------------------------------------------------------------
-*
*& Desenvolvido por: Alan Campos de Oliveira
*&--------------------------------------------------------------------
-*
REPORT zaf_su_00.

DATA: d_sum TYPE i,


d_num1 TYPE i,
d_num2 TYPE i.

d_num1 = 5.
d_num2 = 10.

PERFORM pass_ref USING d_num1


d_num2.

WRITE:/ d_sum, d_num1, d_num2.

*&--------------------------------------------------------------------
-*
*& Form pass_ref
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* -->P_D_NUM1 text
* -->P_D_NUM2 text
*---------------------------------------------------------------------
-*
FORM pass_ref USING p_d_num1
p_d_num2.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


71

p_d_num1 = 100.
p_d_num2 = 200.

ENDFORM. " pass_ref

Note que uma subrotina pode conter a definição de parâmetros, que são
informações passadas a cada chamada via PERFORM. Há duas formas principais de
passagem de parâmetros:

• Parâmetros por valor – quando uma subrotina recebe um parâmetro por valor, o
parâmetro não é alterado por ela, mas é realizada uma cópia, que serve para utilização
no processamento. A passagem por valor deve ser declarada explicitamente através
da cláusula VALUE;
• Parâmetros por referência – quando uma subrotina recebe um parâmetro por
referência, a própria área de memória que foi passada durante o PERFORM é
acessada por ela, e qualquer alteração em seu conteúdo é imediatamente refletida na
área de memória original.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


72

ACESSO AO BANCO DE DADOS

O ABAP Open SQL consiste num conjunto de comandos que possibilitam


operações de banco de dados no sistema SAP. Os resultados das operações e os
tratamentos de erros são independentes do sistema gerenciador de banco de dados
utilizado.
As principais palavras-chave contida no ABAP Open SQL são:

Palavra-chave Função
SELECT Realiza leitura de informações no banco de dados
INSERT Realiza inclusão de registros em tabelas do banco de dados
UPDATE Realiza modificação em conteúdo de tabelas do banco de dados
MODIFY Insere ou modifica registros em tabelas do banco de dados
DELETE Elimina registros de tabelas do banco de dados
OPEN CURSOR, Realiza leitura de informações no banco de dados utilizando o
FETCH, cursor
CLOSE CURSOR

Serão descritas a seguir as principais operações de leitura de tabelas de bancos de


dados utilizando o ABAP Open SQL.

Sintaxe básica

SELECT result
FROM source
INTO|APPENDING target
[[FOR ALL ENTRIES IN itab] WHERE sql_cond]
[GROUP BY group] [HAVING group_cond]
[ORDER BY sort_key].
...
[ENDSELECT].

Acesso a um registro individual

O SELECT SINGLE obtém como resultado um único registro do banco de dados.


Para isso, deve ser utilizada, na cláusula WHERE, a chave completa da tabela.

PARAMETERS: p_lifnr LIKE lfa-lifnr.

SELECT SINGLE *
FROM lfa1
WHERE lifnr = p_lifnr.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


73
Processamento em blocos sem cláusula de restrição

O SELECT sem cláusula WHERE recupera todos os registros da tabela e executa o bloco de
comando contido entre SELECT e ENDSELECT a cada registro obtido do banco de dados.

DATA: BEGIN OF it_lfa1 OCCURS 0.


INCLUDE STRUCTURE lfa1.
DATA: END OF it_lfa1.

SELECT *
FROM lfa1.
APPEND it_lfa1.
ENDSELECT.

Processamento de blocos de registros com cláusula de restrição

O SELECT com cláusula WHERE recupera todos os registros que correspondam


à condição informada, e executa o bloco de comando contido entre SELECT e
ENDSELECT a cada registro obtido do banco de dados.

DATA: BEGIN OF it_lfa1 OCCURS 0.


INCLUDE STRUCTURE lfa1.
DATA: END OF it_lfa1.

SELECT *
FROM lfa1
WHERE lifnr BETWEEN 1000 AND 2000.
APPEND it_lfa1.
ENDSELECT.

Preenchimento de tabelas internas com busca de array


O SELECT com busca de array recupera da tabela todos os registros que atendam
à cláusula WHERE, caso ela esteja declarada e armazena o resultado da seleção na tabela
interna informada através da cláusula INTO TABLE.
• Leitura de todos os campos da tabela:

DATA: BEGIN OF it_lfa1 OCCURS 0.


INCLUDE STRUCTURE lfa1.
DATA: END OF it_lfa1.

SELECT *
INTO TABLE it_lfa1
FROM lfa1.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


74
• Leitura de campos específicos da tabela e utilização de INTO CORRESPONDING
FIELDS:
DATA: BEGIN OF it_lfa1 OCCURS 0,
lifnr type lfa1-lifnr,
name1 type lfa1-name1.
DATA: END OF it_lfa1.

SELECT lifnr name1


INTO CORRESPONDING FIELDS OF TABLE it_lfa1
FROM lfa1
WHERE lifnr BETWEEN 1000 AND 2000.

Select FOR ALL ENTRIES


O SELECT FOR ALL ENTRIES recupera da tabela todos os registros que
atendam à cláusula WHERE, para cada um dos registros da tabela interna declarados na
cláusula FOR ALL ENTRIES armazenando o resultado da seleção na tabela interna
informada através da cláusula INTO TABLE.

DATA: BEGIN OF it_lfa1 OCCURS 0.


INCLUDE STRUCTURE lfa1.
DATA: END OF it_lfa1.

DATA: BEGIN OF it_lfm1 OCCURS 0.


INCLUDE STRUCTURE lfm1.
DATA: END OF it_lfm1.

SELECT *
INTO TABLE it_lfa1
FROM lfa1.

IF sy-subrc IS INITIAL.

SELECT *
INTO TABLE it_lfm1
FROM lfm1
FOR ALL ENTRIES IN it_lfa1
WHERE lifnr = it_lfa1-lifnr.

ENDIF.

Utilização de UP to N rows
O SELECT UP TO n ROWS recupera os registros da tabela até que se atinja o
número de registros declarados através da cláusula UP TO n ROWS.

SELECT *
FROM lfa1
UP TO 10 ROWS
WHERE lifnr BETWEEN 1000 AND 2000.
APPEND it_lfa1.
ENDSELECT.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


75
Utilização de joins

É possível a utilização de joins para seleção de informação de mais de uma tabela


do banco de dados.

SELECT t1~lifnr t1~name1 t2~ekorg


INTO TABLE it_tab
FROM lfa1 AS t1
INNER JOIN lfm1 AS t2
ON t1~lifnr = t2~lifnr
WHERE t1~lifnr BETWEEN 1000 AND 2000.

Há diferentes tipos de join, a saber:

• INNER JOIN: os resultados somente são apresentados caso existam em todas as


tabelas relacionadas no SELECT;
• OUTTER JOIN: os resultados são apresentados desde que estejam presentes em
pelo menos uma das tabelas relacionadas no SELECT.

Funções adicionais

SELECT MAX (campo)


MIN (campo)
AVG (campo)
SUM (campo)
COUNT (*)
FROM <tabela> INTO (... , … , … , …)
WHERE … .

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


76
MAX Seleciona o valor máximo do campo na seleção. Somente para
valores numéricos
MIN Seleciona o valor mínimo do campo na seleção. Somente para
valores numéricos
AVG Retorna o valor médio para o campo informado. Somente para
valores numéricos
SUM Realiza soma do campo informado. Somente para campos
numérico. Somente para valores numéricos
COUNT Retorna o número de valores diferentes para o campo informado.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


77
PERFORMANCE

1. Utilização de chave completa para busca de informações

Sempre que os campos da chave da tabela estiver disponível para a realização da


busca via SELECT ela deve ser utilizada de forma completa, uma vez que, quando o
acesso é feito sem a sua utilização, o acesso via banco de dados é feito via leitura
sequencial, ou seja, todos os registros da tabela são lidos para identificar quais são os que
atendem à cláusula WHERE.

2. Utilização de índices secundários

Quando a utilização da chave não for possível, uma alternativa eficiente é a


utilização de índices secundários.
Os índices secundários são definidos no dicionário de dados para as tabelas
transparentes e, de acordo com a necessidade, novos índices podem ser criados. Para
verificar os índices de uma tabela, deve-se utilizar a opção abaixo:

Serão exibidos todos os índices disponíveis e os seus respectivos campos:

Detalhe do índice 001 da tabela LFA1:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


78

3. Evitar encadeamento de SELECTs

Apesar do encadeamento de SELECTs (abaixo) ser sintaticamente possível, para


otimização de performance não é interessante utilizá-los, uma vez que a sua utilização
utiliza recursos na camada de processamento do banco de dados.

DATA: BEGIN OF it_lfa1 OCCURS 0.


INCLUDE STRUCTURE lfa1.
DATA: END OF it_lfa1.

DATA: BEGIN OF it_lfm1 OCCURS 0.


INCLUDE STRUCTURE lfm1.
DATA: END OF it_lfm1.

SELECT *
FROM lfa1.

SELECT *
FROM lfm1
FOR ALL ENTRIES IN it_lfa1
WHERE lifnr = it_lfa1-lifnr.

it_lfa1 = lfa1.
APPEND it_lfa1.

it_lfm1 = lfm1.
APPEND it_lfm1.

ENDSELECT.

ENDSELECT.

Uma opção mais eficiente neste caso seria a utilização de busca de array e um
FOR ALL ENTRIES para seleção das informações da segunda tabela. Este acesso é mais
eficiente uma vez que a busca das informações é realizada de uma única vez em cada
SELECT.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


79

DATA: BEGIN OF it_lfa1 OCCURS 0.


INCLUDE STRUCTURE lfa1.
DATA: END OF it_lfa1.

DATA: BEGIN OF it_lfm1 OCCURS 0.


INCLUDE STRUCTURE lfm1.
DATA: END OF it_lfm1.

SELECT *
INTO TABLE it_lfa1
FROM lfa1.

IF sy-subrc IS INITIAL.

SELECT *
INTO TABLE it_lfm1
FROM lfm1
FOR ALL ENTRIES IN it_lfa1
WHERE lifnr = it_lfa1-lifnr.

ENDIF.

4. Evitar SELECTs dentro de LOOPs

Deve-se evitar a utilização de comandos SELECT dentro de LOOPs em tabelas


internas. A leitura via array fetch e o posterior tratamento das informações quase sempre
é mais eficiente, uma vez que a cada novo SELECT, são realizadas novas operações de
OPEN, FECH e CLOSE no banco de dados, o que consome tempo e recursos.

Exemplo 1:
DATA: BEGIN OF it_lfm1 OCCURS 0,
lifnr type lfm1-lifnr,
ekorg type lfm1-ekorg,
name1 type lfa1-name1.
DATA: END OF it_lfm1.

SELECT lifnr ekorg


INTO TABLE it_lfm1
FROM lfm1
WHERE lifnr BETWEEN 1000 AND 1500.

LOOP AT it_lfm1.

SELECT SINGLE name1 INTO it_lfm1-name1


FROM lfa1
WHERE lifnr = it_lfm1-lifnr.
CHECK sy-subrc IS INITIAL.

MODIFY it_lfm1.

ENDLOOP.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


80

Exemplo 2:

DATA: BEGIN OF it_lfm1 OCCURS 0,


lifnr TYPE lfm1-lifnr,
ekorg TYPE lfm1-ekorg,
name1 TYPE lfa1-name1.
DATA: END OF it_lfm1.

DATA: BEGIN OF it_lfa1 OCCURS 0,


lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1.
DATA: END OF it_lfa1.

SELECT lifnr ekorg


INTO TABLE it_lfm1
FROM lfm1
WHERE lifnr BETWEEN 1000 AND 1500.

IF sy-subrc IS INITIAL.
SELECT lifnr name1
INTO TABLE it_lfa1
FROM lfa1
FOR ALL ENTRIES IN it_lfm1
WHERE lifnr = it_lfm1-lifnr.
ENDIF.

SORT it_lfa1 BY lifnr.

LOOP AT it_lfm1.

READ TABLE it_lfa1 WITH KEY lifnr = it_lfm1-name1 BINARY SEARCH.


CHECK sy-subrc IS INITIAL.

it_lfm1-name1 = it_lfa1-name1.

MODIFY it_lfm1.

ENDLOOP.

5. Informar todos os campos necessários para leitura no banco de dados

É sempre preferível informar todos os campos necessários nas seleções de banco


de dados, uma vez que a operação FETCH (busca) dos registros é menos onerosa e,
portanto, mais rápida. Desta forma, deve-se substituir a cláusula “*” pela identificação de
cada um dos campos necessários, conforme o exemplo abaixo:

Exemplo 1: SELECT sem informação dos campos

DATA: BEGIN OF it_lfa1 OCCURS 0.


INCLUDE STRUCTURE lfa1.
DATA: END OF it_lfa1.

SELECT *
INTO TABLE it_lfa1
FROM lfa1.

Exemplo 2: SELECT com a identificação dos campos necessários

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


81
DATA: BEGIN OF it_lfa1 OCCURS 0.
INCLUDE STRUCTURE lfa1.
DATA: END OF it_lfa1.

SELECT lifnr land1 name1


name2 name3 name4
INTO TABLE it_lfa1
FROM lfa1.

6. Utilização da memória para armazenamento de informações

Na maior parte das vezes, é preferível trabalhar com processamentos a nível de


aplicação do que a nível de banco de dados. Desta forma, é interessante armazenar todo
o conteúdo lido do banco de dados em tabelas internas e acessá-las internamente para o
tratamento das informações.

7. Utilização de buffer (memória) SAP

Uma opção disponível para otimizar a seleção de determinadas informações, é


ativar o buffer para tabelas transparentes. Esta opção é mais indicada para tabelas centrais
do sistema SAP, que representam grande número de acessos, uma vez que as informações
de tabelas bufferizadas ficam armazenadas em memória no nível de aplicação, e o ABAP
Open SQL consegue interpretar esta informação. É importante avaliar o volume de
atualização da tabela a ser bufferizada, uma vez que tabelas que quanto menos uma tabela
for atualizada, mais vantajoso é a sua bufferização, já que o buffer tem de ser atualizado
periodicamente.

8. Utilização de busca binária

Quando se trabalha com tabelas internas e realiza-se leituras internas de seus


registros, deve-se utilizar a busca binária para melhorar a performance.

Exemplo 1: leitura sem busca binária

READ TABLE it_lfa1 WITH KEY sortl = 'ABC'.

Exemplo 2: leitura com busca binária

READ TABLE it_lfa1 WITH KEY sortl = 'ABC' BINARY SEARCH.

Nota: Para leitura de tabelas internas via busca binária, ela deve ter sido ordenada
previamente pela chave de busca através do comando SORT. No exemplo acima:

SORT it_lfa1 BY sortl.

Transações úteis para verificação de performance

Transação Utilização
ST05 Trace BD
SE30 Análise de tempo de execução de objetos ABAP

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


82
DEPURAÇÃO

O Depurador ABAP(Debug) é uma ferramenta integrada de teste do ABAP


Workbench.
No Depurador, podemos executar o código fonte passo a passo, permitindo que
se verifique o processo lógico e o resultado individual dos comandos.
Existem duas estratégias para inicializar o Depurador no ABAP Workbench:
• Definindo pontos de paradas (breakpoints).
• Rodando o programa em modo depurador.

Executando em Modo Depurador


Podemos inicializar o Depurador das seguintes formas:
• Através da transação SE38 ou qualquer tela. Selecione o programa e clique no
menu: Sistema/Utilitários/Depuração.
• A partir de qualquer tela, digitando "/h" + ENTER no campo de comando
antes de clicar em algum botão.

Processamento de Programas
Campos:
• Mostra o conteúdo de até oito campos.
• Dependendo da configuração do sistema, é possível modificar o conteúdo de
uma variável.
• Na tela de depuração existe uma barra de menu principal.

Clicando no botão “Campos” é possível visualizar os nomes das variáveis do programa ou do


sistema a esquerda e o conteúdo a direita.
Para mudar o valor de uma variável, caso o usuário logado tenha permissão, basta mudar o valor
do conteúdo e clicar no botão “lápis”.

Tabela Interna:
Exibe o conteúdo de uma tabela interna.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


83

No conteúdo da tabela interna existe o desenho de chapéu que é o cabeçalho da


tabela, ou seja, é o registro que está sendo utilizado pela memória. Abaixo temos
números que representam as linhas da tabela. Ex: Em um dado momento, caso o
programa precise lerler um registro da linha 4 desta tabela interna, a mesma irá aparecer no
cabeçalho.

Pontos de Parada:
Exibe uma tela contend
contendo todos os breakpoints.

Exibe todos os pontos de parada definidos e suas respectivas linhas do código.


Existem 2 formas de ativar o debug no modo de depuração: através do Menu
(Ponto
Ponto de parada -> -> Criar/eliminar) ou clicando 2 vezes em cima da linha do código.
Aparecerá um ícone “STOP”
“STOP” indicando a linha selecionada.
Caso queira acrescentar um ponto de parada no momento que exib exibir
ir uma
mensagem de erro, basta: Executar no menu “Ponto de parade -> > Ponto de parade em -> >
Instrução”
Instrução”,, escrever o comando que deseja que o depurador pare
pare. Ex: message.
message. No rodapé
aparecerá a mensagem “Ponto de Parada Definido”
É possível criar um ponto de parade antes de executar o programa. EEntrar
ntrar na
SE38, clicar na linha do código desejada, clicar no botão “STOP”
“STOP”. A linha selecionada
ficará marcada em amarelo e o sistema emitirá a mensagem “Ponto de Parada
Definido”. Basta executar o programa que o mesmo entrará automaticamente no
depurador parando na linha selecionada
selecionada.

Watchpoints:
Pode-se
se criar watchpoints para campos. Desta forma o programa é interrompido

Introduçã
ção ABAP Esse material é da LPJ Consultoria e Treinamento ltda.
84
quando o valor do campo mudar para o valor definido.
Para criar um watchpoint, a qualquer momento, basta clicar neste botão.
É preciso definir o nome do programa, nome do campo desejado, operador
relacional e o conteúdo do campo, conforme exemplo acima.

Chamadas:
Mostra a seqüência corrente dos eventos.
A última chamada ativa é mostrada no topo da lista.
Quando um evento (por exemplo, START-OF-SELECTION) é concluído, o
mesmo é excluído da tela.

Na figura acima é mostrado o número do evento na ordem seqüencial do código,


o nome do programa onde o evento se encontra, o tipo de evento e o nome do evento
respectivamente.

Síntese:
Exibe a estrutura do programa. Lista seus eventos, sub-rotinas, módulos e a seção
em processamento.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


85

Diferente das chamadas, aqui é listado todos os eventos em ordem sem apagá-los
de acordo durante a execução.

Opções:

Mostra as opções do Debugger.


Geralmente não é necessário configurar esta tela.

Tipos de Execução:

• Etapa Individual: Botão ou F5.


Permite que o programa seja executado passo a passo, inclusive acessando as
subrotinas e modulos de função.

• Executar: Botão ou F6
Permite que o programa seja executado passo a passo, porém neste caso, sub-rotinas

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


86
e módulos de função não são acessadas, ou seja, todo o processamento destas sub-
rotinas ou funções é executado de uma só vez.

• Retorno: Botão ou F7
É feita a execução completa da sub-rotina ou função, ou seja, retorna ao ponto onde
foi originada a chamada desta sub-rotina ou função.

• Avançar (até o cursor): Botão ou F8


Use essa opção para processar o programa até o próximo breakpoint. Se não existir
mais breakpoints no programa e nenhum cursor for definido o sistema sai do modo
depuração e executa o resto do programa normalmente.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


87
FUNÇÕES / GRUPOS DE FUNÇÃO

Módulos de Função

Módulos de função são tipos especiais de programas ABAP que podem ser
chamados a partir de outros programas ABAP. Sua finalidade principal é o
encapsulamento de código de funções globais no sistema SAP.
Possuem uma interface, na qual é possível definir parâmetros que realizam a
comunicação entre o módulo e os programas que o utilizam. São possíveis os seguintes
tipos de parâmetros:
• Importação – parâmetros de importação do módulo de função, que servem para
receber os dados dos programas de chamada;
• Exportação – parâmetros que são exportados durante o processamento do módulo
de função, e servem para disponibilizar informações ou resultados de
processamentos;
• Modificação – parâmetros que podem ser modificados durante o processamento
do módulo de função;
• Tabelas – parâmetros que podem receber mais de um registro, e servem tanto
como para a importação, como para exportação de informações pelo módulo de
função.

Exemplo de definição de módulo de função:

É possível definir exceções para o módulo de função, que são utilizadas para
indicar a ocorrência de algum erro no módulo de função pelo programa de chamada.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


88

Os módulos de função contém uma seção de texto fonte, onde são definidos os
processamentos do código ABAP.

Texto fonte de um módulo de função

A chamada de um módulo de função é realizada por um programa ABAP através


do comando CALL FUNCTION, cuja sintaxe é exemplificada abaixo.

*&-------------------------------------------------------------------*
*& Report ZAB_MF_00
*& Curso ABAP para funcionais - Korun
*& Chamada de módulos de função
*&-------------------------------------------------------------------*
*& Desenvolvido por: Alan Campos de Oliveira
*&-------------------------------------------------------------------*
REPORT zaf_mf_00 NO STANDARD PAGE HEADING.

DATA wa_lfa1 TYPE lfa1.

PARAMETERS p_lifnr TYPE lfa1-lifnr.

CALL FUNCTION 'Z_LEITURA_LFA1'


EXPORTING
i_lifnr = p_lifnr
IMPORTING
e_lfa1 = wa_lfa1
EXCEPTIONS
no_data = 1
OTHERS = 2.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


89

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

Grupos de Função

Um grupo de funções é um programa que pode agrupar um ou mais módulos de


função. É um programa que inicia-se com a extensão “SAPL” e contém uma seção de
dados globais, única para todos os módulos de função, e podem conter includes ou telas.
Exemplo de estruturação de grupo de funções:

Programa ABAP gerado automaticamente pela criação do grupo de funções:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


90

USER EXITS E BADIS

O sistema SAP disponibiliza possibilidades de ampliação no código e nos


processos standard. As principais ferramentas disponíveis para este tipo de ampliação
estão descritas abaixo.

Userexits

As USEREXITs constituem subrotinas previstas pela SAP em pontos específicos


de programas standard que podem receber código de cliente.
São utilizadas para ampliações no módulo de SD e geralmente disponibilizam um
include que armazenam todas as subrotinas previstas. Alguns exemplos de user exits são:

Programa Objetivo
MV45AFZZ For entering installation-specific FORM routines and for using user
exits, which may be required and can be used if necessary.
MV45ATZZ For entering metadata for sales document processing. User-specific
metadata must start with "ZZ".
MV45AOZZ For entering additional installation-specific modules for sales
document processing which are called up by the screen and run
under PBO (Process Before Output) prior to output of the screen.
The modules must start with "ZZ".
MV45AIZZ For entering additional installation-specific modules for sales
document processing. These are called up by the screen and run
under PAI (Process After Input) after data input (for example, data
validation). The modules must start with "ZZ".
MV45EFZ1 For entering installation-specific FORM routines and for using user
exits, which may be required and can be used if necessary.

O include é aberto para modificações pelo cliente e o código contido nas


subrotinas é chamado em momentos específicos de acordo com a sua aplicação.

Nota: Para mais informações, consulte


http://help.sap.com/saphelp_46c/helpdata/en/1c/f62c7dd435d1118b3f0060b03ca329/co
ntent.htm

Exits de cliente

Exits de cliente são ampliações disponibilizadas sob a forma de grupos de função,


disponível para um grande número de aplicações standard.
As exits de cliente são reunidas em projetos de ampliação, que possuem
componentes associadas. Para visualizar os projetos ampliações disponíveis, utiliza-se a
transação SMOD.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


91

Os projetos de ampliação, que contém as exits de cliente, podem conter alguns


tipos de componentes associados, a saber:
• Exits de programa – utilizadas para a inclusão de código ABAP em momentos
específicos de aplicações standard. Geralmente são nomeadas utilizando o padrão
“EXIT” + nome do programa standard a que se aplicam + sequencial numérico
dentro do grupo de funções. As exits de programa podem ser visualizadas através
da transação SE37 e são chamadas no código standard através da instrução CALL
CUSTOMER FUNCION.
• Exits de menu – utilizada para a inclusão de funções específicas do cliente em
menus da SAP.
• Exits de tela – também conhecidas como screen exits, disponibilizam uma área
de tela chamada pela aplicação standard na qual é possível incluir campos
específicos do cliente.
• Ampliações em tabelas – podem ser disponibilizados customer includes para a
inclusão de campos específicos do cliente em tabelas standard.
Quando se opta pela implementação de um projeto de ampliação, deve-se realizá-
la através da transação CMOD. Para isso, é necessário atribuir um nome dentro do
conjunto de nomes admitido pelo cliente e realizar a ativação. A partir da ativação, o
código e as alterações pelo cliente tornam-se disponíveis no sistema SAP e são chamadas
nos pontos específicos do programa standard.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


92

Businnes Add Ins

Mais recentemente a SAP ampliou o conceito de modificações em seu código e,


neste contexto, surgiram as Business Add Ins, ou BADIS.
A principal diferença das BADIs em relação às suas predecessoras é que elas são
implementadas no conceito de orientação a objetos e permitem a reutilização de
ampliações. Desta forma, se a BADI aceitar implementações múltiplas, pode-se criar uma
implementação para cada aplicação específica, o que torna mais organizada a
implementação de códigos de ampliação.
As definições de BADIs disponíveis no sistema SAP estão relacionadas através
da transação SE18. Para implementá-las, deve-se utilizar a transação SE19.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


93

A exemplo das exits de programa, as definições de BADI podem disponibilizar:

• Ampliações de programas;
• Ampliações de menu;
• Ampliações de tela.

Quando se utiliza uma definição de BADI, o sistema cria automaticamente uma


classe, que contém uma interface (atributos, métodos, parâmetros), conforme
disponibilizado em sua definição. O código ABAP é inserido nos métodos previstos
na classe. Quando a BADI é ativada, o código inserido é chamado pelas aplicação
standard na qual ela é prevista.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


94

Field exits

Field exits são ampliações utilizadas para validações em campos de tela standard.
São criadas com referência ao elemento de dados e podem ser realizadas para qualquer
campo de tela presente numa tela SAP.
Para a ativação, é necessário acessar a transação CMOD. Em seguida, deve-se
digitar na tela de comandos o código “PRFB”. Após estes passos, é exibida uma lista de
todas as field exits criadas no sistema:

Para todas as field exits criadas, existe um módulo de função associado, nomeada
através do padrão “FIELD_EXIT” + descritivo, onde o código de validação para o campo
pode ser inserido.
Uma restrição em field exits é que apenas mensagens de erro podem ser utilizadas.
Mensagens de informação ou aviso não são processadas.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


90

Ampliações em objetos do dicionário

Além das CI includes, previstas nas tabelas standard SAP, e geralmente


disponibilizadas via projetos de ampliação, existe a possibilidade de criação de APPEND
structures em tabelas transparentes da SAP.
Nesta forma de implementação, quando uma APPEND structure é criada, os
campos nela previstos são automaticamente incorporados à tabela standard ao nível de
banco de dados.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


91

Enhancements

A partir do SAP ECC 6.0 a SAP disponibilizou uma nova forma de ampliação em
programas standard, os enhancements. Esta modalidade de implementação tornou mais
flexível e ampliou as possibilidades de criação de código do cliente nos códigos standard
da SAP.
Entre os enhancements, podem-se distinguir os pontos de ampliação explícitos e
os pontos de ampliação implícitos.
Os pontos de ampliação explícitos são pontos de ampliação previstos pela SAP,
que podem estar presentes em qualquer parte do código de um programa standard:

Nos pontos de ampliação implícitos, determinadas seções da maior parte dos


programas standard da SAP estão preparadas para receber um enhancement, que podem
ser utilizados pelo desenvolvedor. Os principais pontos de ampliação implícito previstos
são:
• Após o final de linhas de código em programas executáveis, grupos de função,
module pools, pools de subrotinas e programas include;
• Antes da primeira e depois da última linha em subrotinas;
• Antes da primeira e depois da última linha em módulos de função;
• No final de declarações de classes locais;
• No final de declarações de dados em programas, antes da cláusula END.

Para uma visualização completa dos pontos de ampliação existentes no código,


deve-se acionar a opção de menu “Programa > Ampliar” e em seguida “Processar >
operações de ampliação > Visualizar pontos de ampliação implícitos”.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


92

MANUAL RÁPIDO PARA A IMPLEMENTAÇÃO DE UM ENHANCEMENT

Pesquisando enhancement point

Informar programa que deseja pesquisar para implementar o código “Z”

Para pesquisar enhancement point no programa menu:

Processar->Operações de ampliação->Visualizar pontos ampliação implícitos

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


93

Cada ponto pontilhado representa um enhancement point:

Criando enhancement Point

Apertar SHIFT + F4 ou a opção de menu “Programa > Ampliar” para realizar a criação
do ponto.

Selecionar o ponto enhancemnt e clicar em Operações de ampliação-> Criar

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


94

Clicar no botão (Create enhancement Implementation)

Inserir
Composite

Criar Request

Selecionar o enhancement criado

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


95

Implementar o código Z

Ativando Implementação

Cancelando implementação

Selecionar a parte do código que foi implementada e selecionar no menu: Operações de


ampliação-> Anular.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


96

RELATÓRIOS (REPORTS, ALV, SAPSCRIPTS E SMARTFORMS)

Para a saída de relatórios e listas no SAP ERP, as principais opções disponíveis


são os relatórios – reports - (que utilizar ALV ou listas), os sapscripts e, mais
recentemente, os smartforms.

Relatórios

A opção mais básica para saída de relatórios é utilizando o report via comando
WRITE. As opções de saída via comando WRITE são as seguintes:

WRITE {[AT] [/][pos][(len|*|**)]} dobj


[int_format_options]
[ext_format_options]
[list_elements]
[QUICKINFO info].

... [LEFT-JUSTIFIED|CENTERED|RIGHT-JUSTIFIED]
[NO-GAP]
[UNDER other_dobj]
{ { [EXPONENT exp]
[NO-GROUPING]
[NO-SIGN]
[NO-ZERO]
[CURRENCY cur]
{ { [DECIMALS dec]
[ROUND scale] }
| [UNIT unit] } }
| { [ENVIRONMENT TIME FORMAT]
[TIME ZONE tz] } }
[USING { {NO EDIT MASK}|{EDIT MASK mask} }]
[ DD/MM/YY | MM/DD/YY
| DD/MM/YYYY | MM/DD/YYYY
| DDMMYY | MMDDYY
| YYMMDD ] ... .

Exemplo de saídas de lista simples

*&-------------------------------------------------------------------*
*& Report ZAB_BI_00
*& Curso ABAP para funcionais - Korun
*& Saída de listas via WRITE
*&-------------------------------------------------------------------*
*& Desenvolvido por: Alan Campos de Oliveira
*&-------------------------------------------------------------------*
REPORT zaf_wr_00 NO STANDARD PAGE HEADING.

WRITE: 'Hello word'.

Resultado:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


97

ALV (ABAP List View)

Desenvolver relatórios em ABAP com um bom visual não é uma tarefa simples.
Caso seja necessário ampliar as opções de saída, de forma a incluir cores, cabeçalho, linha
de totais, nomes e separadores de colunas a complexidade aumenta ainda mais. Se forem
solicitados recursos como a classificação por colunas, possibilidade de aumento ou
diminuição de tamanho de colunas, ocultação ou exportação para outras ferramentas,
torna-se uma tarefa praticamente impossível com o uso do recurso de listas do ABAP.
Para isso foi disponibilizado o ALV, ou ABAP List View, que faz parte de um
framework da SAP chamado Control Framework. A idéia central é uma separação da
parte visual da parte de controle do negócio. Desta forma, o desenvolvedor não precisa
se preocupar com a apresentação dos dados, concentrando os seus esforços em atividades
como seleção dos dados, tratamento das informações.

Exemplo de implementação de relatório utilizando ABAP (lista):

A apresentação das informações utilizando os recursos ALV é realizada na forma


de uma tabela, com linhas e colunas, semelhante à uma planilha do Excel. São
apresentados numa lista do tipo ALV uma série de botões pré-definidos, que oferecem
funções como ordenação, sumarização, filtros, busca, exportação, entre outras.
As colunas são definidas no código ABAP, bem como o seu conteúdo. A
ferramenta ALV encarrega-se da parte da apresentação, controlando o layout, a largura
das colunas, sua ordenação.

Exemplo de implementação de relatório utilizando o ALV:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


98

O ALV é entregue pela SAP através de uma classe global, chamada


CL_GUI_ALV_GRID e existem algumas formas para a sua implementação:

• Através da implementação dos módulos de função REUSE_ALV_LIST_DISPLAY


ou REUSE_ALV_GRID_DISPLAY;
• Chamada direta à classe CL_GUI_ALV_GRID e os seus respectivos métodos.

Implementação simples utilizando a função REUSE_ALV_GRID_DISPLAY

*&--------------------------------------------------------------------
-*
*& Report ZAB_BI_00
*& Curso ABAP para funcionais - Korun
*& Utilização de ALV
*&--------------------------------------------------------------------
-*
*& Desenvolvido por: Alan Campos de Oliveira
*&--------------------------------------------------------------------
-*
REPORT zaf_al_00.

* Grupos de tipos
TYPE-POOLS: kkblo,
slis.

DATA: BEGIN OF it_lfa1 OCCURS 0,


lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1,
name2 TYPE lfa1-name2,
name3 TYPE lfa1-name3,
name4 TYPE lfa1-name4.
DATA: END OF it_lfa1.

* Tabelas/Estruturas ALV
DATA: v_layout TYPE slis_layout_alv,
v_variant LIKE disvariant,

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


99

t_fieldcat TYPE slis_t_fieldcat_alv,


t_sort TYPE slis_t_sortinfo_alv.

* Variáveis auxiliares
DATA v_cprog TYPE sy-cprog.

START-OF-SELECTION.

PERFORM selecao_principal.
PERFORM relatorio.

*&--------------------------------------------------------------------
-*
*& Form selecao_principal
*&--------------------------------------------------------------------
-*
* Seleção principal das informações
*---------------------------------------------------------------------
-*
FORM selecao_principal.

SELECT lifnr name1 name2 name3 name4


INTO TABLE it_lfa1
FROM lfa1
UP TO 100 ROWS.

ENDFORM. "selecao_principal

*&--------------------------------------------------------------------
-*
*& Form relatorio
*&--------------------------------------------------------------------
-*
* Relatório
*---------------------------------------------------------------------
-*
FORM relatorio.

REFRESH t_fieldcat.

PERFORM monta_fieldcat USING: 'IT_LFA1'


'LIFNR'
'LFA1'
'LIFNR'
'Cod. Fornecedor'
0
space.

PERFORM monta_fieldcat USING: 'IT_LFA1'


'NAME1'
'LFA1'
'NAME1'
'Nome 1'
0
space.

PERFORM monta_fieldcat USING: 'IT_LFA1'


'NAME2'
'LFA1'
'NAME2'
'Nome 2'

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


100

0
space.

PERFORM monta_fieldcat USING: 'IT_LFA1'


'NAME3'
'LFA1'
'NAME3'
'Nome 3'
0
space.

PERFORM monta_fieldcat USING: 'IT_LFA1'


'NAME4'
'LFA1'
'NAME4'
'Nome 4'
0
space.

v_cprog = sy-cprog.
v_layout-colwidth_optimize = 'X'.
v_layout-zebra = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
i_callback_program = v_cprog
is_layout = v_layout
it_fieldcat = t_fieldcat
it_sort = t_sort
i_save = 'A'
is_variant = v_variant
TABLES
t_outtab = it_lfa1
EXCEPTIONS
program_error = 1
OTHERS = 2. "#EC *

ENDFORM. "relatorio

*&--------------------------------------------------------------------
-*
*& form monta_fieldcat
*&--------------------------------------------------------------------
-*
* Monta fieldcat
*---------------------------------------------------------------------
-*
FORM monta_fieldcat USING p_tabname TYPE slis_tabname
p_fieldname TYPE slis_fieldname
p_ref_tabname TYPE dd03p-tabname
p_ref_fieldname TYPE dd03p-fieldname
p_text TYPE dd03p-scrtext_l
p_len TYPE i
p_noout TYPE c.

* variáveis locais
DATA l_fieldcat TYPE slis_fieldcat_alv.

l_fieldcat-tabname = p_tabname.
l_fieldcat-fieldname = p_fieldname.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


101

l_fieldcat-seltext_l = p_text.
l_fieldcat-seltext_m = p_text.
l_fieldcat-seltext_s = p_text.
l_fieldcat-no_out = p_noout.

IF NOT p_ref_tabname IS INITIAL.


l_fieldcat-ref_tabname = p_ref_tabname.
ENDIF.

IF NOT p_ref_fieldname IS INITIAL.


l_fieldcat-ref_fieldname = p_ref_fieldname.
ENDIF.

APPEND l_fieldcat TO t_fieldcat.

ENDFORM. "monta_fieldcat

Nota: Para maiores detalhes a respeito de opções de formatação ALV, consultar:


http://wiki.sdn.sap.com/wiki/display/ABAP/Field+Catalog+Options+In+ALV
http://help.sap.com/saphelp_470/helpdata/pt/66/bc7aab43c211d182b30000e829fbfe/fra
meset.htm

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


102

SAPscripts

SAPscripts é uma ferramenta de processamento de textos disponibilizada pelo


SAP que tem a finalidade de realizar saída de informações em layouts elaborados. Podem
ser utilizadas para a saída de textos em formulários pré-impressos e também para saída
de informações em formato gráfico.
Os SAPscripts podem ser criados através da transação SE71 e, para a sua
execução, necessitam de um programa de impressão, que realizam a seleção das
informações e acionam os eventos de impressão definidos dentro do formulário.
Os componentes principais de um programa SAPscript são:

• Cabeçalho: armazena informações de controle do SAPscript e definições gerais


de impressão;
• Parágrafos e formatos de caracteres: local onde são definidas as características
das fontes e parágrafos, bem como alinhamento, espaçamento, entre outros;
• Janelas e elementos de textos: são as áreas de texto do formulário, onde são
armazenados os textos a serem impressos e os comandos de controle do
SAPscript;
• Páginas: são definições individuais de páginas de um formulário e informações;
• Janelas de páginas: informação sobre a distribuição das janelas dentro da página,
que ajuda a determinar o layout de saída do formulário.

O programa de impressão do formulário utiliza as funções OPEN_FORM,


WRITE_FORM e CLOSE_FORM para realizar a impressão do SAPscript, e as
informações entre o formulário e as variáveis e tabelas internas globais definidas no
SAPscript são visíveis no formulário para utilização na impressão.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


103

Smartforms

Os smartforms foram introduzidos no SAP a partir da versão 4.6 C como os


sucessores dos SAPscripts. Eles provém uma interface gráfica amigável para a criação de
programas que necessitam efetuar saídas de relatórios elaborados. Esta ferramenta possui
algumas vantagens em relação à sua predecessora:

• Criação mais rápida de relatórios;


• Adaptação de relatórios sem a exigência de conhecimento de programação
baseada numa interface gráfica com o usuário;
• Presença de relatórios previamente disponibilizados pela SAP.

Os smartforms são disponíveis através da transação de mesmo nome,


SMARTFORMS.

Ao contrário dos SAPscripts, em que a sequência e o fluxo de processamento do


formulário é determinado pelo programa de impressão, os smartforms recebem os
parâmetros do programa de chamada através de uma interface e trabalham as informações
internamente para a saída mais adequada do layout.
São sempre associados a um estilo, onde estão definidas as informações de
parágrafos (tamanho de fonte, alinhamento).

Exemplo de definição de smartform:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


104

AJUDAS DE PESQUISA
As ajudas de pesquisa são elementos do dicionário de dados utilizados para
proporcionar a um determinado campo uma janela onde é possível selecionar os valores
possíveis para entrada.
É possível criar ajudas de pesquisa para qualquer elemento de dados do SAP, e
eles podem ser associados aos campos de diversas formas:

• Elemento de dados – quando associada ao elemento de dados, a ajuda de pesquisa


é acionada a cada vez que o usuário acionar a opção de entradas possíveis para o
campo;
• Campos de tabelas – quando associada ao campo da tabela, a ajuda de pesquisa é
acionada sempre que uma referência campo da tabela for incluída numa tela ou
utilizada num programa ABAP;
• Telas – quando associadas a um campo de tela, a ajuda de pesquisa apenas ocorre
na tela em que foi definida;
• Código ABAP – é possível associar uma ajuda de pesquisa a um campo via código
ABAP. Este tipo de utilização é bastante utilizada em parâmetros de telas de
seleção, através da cláusula MATCHCODE ID.

A criação de ajudas de pesquisa elementar é uma operação relativamente simples,


e pode ser realizada conforme os passos abaixo:
1. Escolher um nome dentro do conjunto de nomes do cliente para a criação do elemento
de dados:

2. Escolher a opção de “Ajuda de pesquisa elementar”:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


105

3. Informar um método de seleção, que pode ser uma tabela SAP, ou uma exit para ajuda
de pesquisas, caso seja necessário implementar alguma lógica adicional e informar os
parâmetros (importação e exportação):

4. Ativar e testar. A ajuda de pesquisa já está disponível para utilização:

Introduçã
ção ABAP Esse material é da LPJ Consultoria e Treinamento ltda.
106

As ajudas de pesquisa elementares podem ser agrupadas em ajudas de pesquisa


coletivas, aumentando as opções de critérios de seleção disponíveis para um determinado
campo de tela.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


107

INTERFACES

O SAP ERP disponibiliza diversas tecnologias para integração com outras


aplicações.

As mais comuns são:

• RFCs (remote function call) - são módulos de função que permitem acesso
remoto;

• IDOC (intermediate Document) - proporcionam conexão entre aplicações de


diferentes aplicações usando um sistema de informações baseadas em mensagens;

• Webservices – interfaces implementadas sob a forma de serviços, que suportam


os padrões XML (eXtensible Markup Language), SOAP (Simple Object Access
Protocol); Web Service Definition Language (WSDL) e Universal Description,
Discovery, and Integration (UDDI);

• ALE (Application Link Enabling) -possibilita a criação e operação de


aplicações distribuídas entre sistemas SAP;

• Interfaces inbound e outbound via transferência de arquivos;

• BAPIs – APIs standard SAP implementadas sob a forma de RFC que podem ser
utilizadas para comunicação entre o SAP e outros sistemas.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


108

SHDB E BATCH-INPUTS

O SAP ABAP disponibiliza algumas ferramentas de migração de dados de


sistemas legados (sistemas não SAP) para sistemas SAP. Uma destas ferramentas é o
método BDC (Batch Data Comunication).
Esta ferramenta trabalha, geralmente, realizando uma leitura das informações a
serem migradas para uma determinada transação SAP a partir de um arquivo de texto ou
em formato de planilha e realizando a sua entrada no SAP através do processo BDC. Este
processo nada mais representa do que a emulação de uma transação SAP.
Para realizar um processo BDC é necessário realizar a gravação do mapeamento
dos processos (transações) a serem utilizados. Esta gravação pode ser realizadas através
da transação SHDB, conforme o exemplo abaixo:

Necessidade: construir um programa do tipo batch-input para o cadastro de fornecedores


através da transação XK01;

• Passo 1: Execução da transação SDHB para mapeamento das informações da


transação:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


109

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


110

Introduçã
ção ABAP Esse material é da LPJ Consultoria e Treinamento ltda.
111

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


112

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


113

0 T XK01
SAPMF02K 100 X
0 BDC_CURSOR RF02K-REF_LIFNR
0 BDC_OKCODE /00
0 RF02K-BUKRS 1000
0 RF02K-EKORG 1
0 RF02K-KTOKK KRED
SAPMF02K 110 X
0 BDC_CURSOR LFA1-LAND1
0 BDC_OKCODE /00
0 LFA1-ANRED Sr.
0 LFA1-NAME1 Alan Campos de Oliveira

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


114

0 LFA1-SORTL ALAN
0 LFA1-LAND1 BR
SAPMF02K 120 X
0 BDC_CURSOR LFA1-BBBNR
0 BDC_OKCODE /00
0 LFA1-KUNNR
SAPMF02K 1099ARI-
0 BDC_SUBSCR ST
SAPMF02K 1099ARI-
0 BDC_SUBSCR 01
SAPMF02K 1099ARI-
0 BDC_SUBSCR 02
SAPMF02K 1099ARI-
0 BDC_SUBSCR 03
SAPMF02K 1099ARI-
0 BDC_SUBSCR 04
SAPMF02K 1099ARI-
0 BDC_SUBSCR 05
SAPMF02K 1099ARI-
0 BDC_SUBSCR 06
SAPMF02K 130 X
0 BDC_CURSOR LFBK-BANKS(01)
0 BDC_OKCODE =ENTR
SAPMF02K 380 X
0 BDC_CURSOR KNVK-NAMEV(01)
0 BDC_OKCODE =ENTR
SAPMF02K 210 X
0 BDC_CURSOR LFB1-FDGRV
0 BDC_OKCODE /00
0 LFB1-AKONT 160000
0 LFB1-FDGRV A1
SAPMF02K 215 X
0 BDC_CURSOR LFB1-ZTERM
0 BDC_OKCODE /00
SAPMF02K 220 X
0 BDC_CURSOR LFB5-MAHNA
0 BDC_OKCODE /00
SAPMF02K 310 X
0 BDC_CURSOR LFM1-WAERS
0 BDC_OKCODE =UPDA
0 LFM1-WAERS BRL

O registro armazena o nome da tela, o número, bem como o nome do campo e o


valor entrado para o campo. Além disso, são reproduzidos os valores para dois campos
de sistema, que controlam o fluxo do SHDB:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


115

BDC_CURSOR Posição inicial do cursor


BDC_OKCODE Ação do cursor (enter, gravação, etc)

Caso a opção de gravação seja acionada, o registro SHDB fica armazenado e pode
ser posteriormente acessado:

Há algumas opções para a utilização construção de um programa utilizando BDC:

• Utilização do comando CALL TRANSACTION, cuja sintaxe descreve-se abaixo:

Exemplo de código ABAP com utilização de CALL TRANSACTION:

*&---------------------------------------------------------------------*
*& Report ZAB_BI_00
*& Curso ABAP para funcionais - Korun
*& Exemplo de CALL TRANSACTION
*&---------------------------------------------------------------------*
*& Desenvolvido por: Alan Campos de Oliveira
*&---------------------------------------------------------------------*
REPORT zaf_ct_00.

* Tabela interna que receberá as informações do arquivo


DATA: BEGIN OF it_input_file OCCURS 0,
line(256) TYPE c.
DATA: END OF it_input_file.

* Tabela interna que armazenará os campos do arquivo separadamente


DATA: BEGIN OF it_file OCCURS 0,
bukrs TYPE rf02k-bukrs,
ekorg TYPE rf02k-ekorg,
ktokk TYPE rf02k-ktokk,
anred TYPE lfa1-anred,
name1 TYPE lfa1-name1,
sortl TYPE lfa1-sortl,
land1 TYPE lfa1-land1,
akont TYPE lfb1-akont,
fdgrv TYPE lfb1-fdgrv,
waers TYPE lfm1-waers.
DATA: END OF it_file.

* Tabelas internas utilizadas no BDC


DATA: it_bdc TYPE TABLE OF bdcdata,
wa_bdc TYPE bdcdata.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


116

* Tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK bloco1 WITH FRAME.
PARAMETERS: p_file TYPE rlgrap-filename OBLIGATORY,
p_mode TYPE c OBLIGATORY.
SELECTION-SCREEN END OF BLOCK bloco1.

START-OF-SELECTION.

PERFORM leitura_arquivo.
PERFORM preenche_bdc.

*----------------------------------------------------------------------*
* AT SELECTION-SCREEN ON VALUE-REQUEST *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

* Função para seleção do nome do arquivo


CALL FUNCTION 'F4_FILENAME'
IMPORTING
file_name = p_file.

*&---------------------------------------------------------------------*
*& Form leitura_arquivo
*&---------------------------------------------------------------------*
* Leitura do arquivo
*----------------------------------------------------------------------*
FORM leitura_arquivo.

DATA: vl_filename TYPE string.

vl_filename = p_file.

* Função para leitura de arquivo


CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = vl_filename
TABLES
data_tab = it_input_file
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.

IF sy-subrc <> 0.
* Mensagem em caso de erro na leitura do arquivo
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

* Percorre todas as linhas do arquivo


LOOP AT it_input_file.

CLEAR it_file.

* Separação da linha do arquivo em campos


SPLIT it_input_file-line AT ';' INTO: it_file-bukrs
it_file-ekorg
it_file-ktokk
it_file-anred
it_file-name1

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


117

it_file-sortl
it_file-land1
it_file-akont
it_file-fdgrv
it_file-waers.
APPEND it_file.

ENDLOOP.

ENDIF.

ENDFORM. "leitura_arquivo

*&---------------------------------------------------------------------*
*& Form preenche_bdc
*&---------------------------------------------------------------------*
* Criação da seção BDC e chamada do CALL TRANSACTION
*----------------------------------------------------------------------*
FORM preenche_bdc.

LOOP AT it_input_file.

REFRESH it_bdc.

* Monta os dados BDC


PERFORM bdc_dynpro USING: 'SAPMF02K' '0100'.
PERFORM bdc_field USING: 'RF02K-BUKRS' it_file-bukrs.
PERFORM bdc_field USING: 'RF02K-EKORG' it_file-ekorg.
PERFORM bdc_field USING: 'RF02K-KTOKK' it_file-ktokk.
PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING: 'SAPMF02K' '0110'.


PERFORM bdc_field USING: 'LFA1-ANRED' it_file-anred.
PERFORM bdc_field USING: 'LFA1-NAME1' it_file-name1.
PERFORM bdc_field USING: 'LFA1-SORTL' it_file-sortl.
PERFORM bdc_field USING: 'LFA1-LAND1' it_file-land1.
PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING: 'SAPMF02K' '0120'.


PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING: 'SAPMF02K' '0130'.


PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING: 'SAPMF02K' '0380'.


PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING: 'SAPMF02K' '0210'.


PERFORM bdc_field USING: 'LFB1-AKONT' it_file-akont.
PERFORM bdc_field USING: 'LFB1-FDGRV' it_file-fdgrv.
PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING: 'SAPMF02K' '0215'.


PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING: 'SAPMF02K' '0220'.


PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING: 'SAPMF02K' '0310'.


PERFORM bdc_field USING: 'LFM1-WAERS' it_file-waers.
PERFORM bdc_field USING: 'BDC_OKCODE' '=UPDA'.

CALL TRANSACTION 'FB01'


USING it_bdc
MODE p_mode
UPDATE 'S'.

ENDLOOP.

ENDFORM. "preenche_bdc

*&---------------------------------------------------------------------*
*& Form bdc_dynpro
*&---------------------------------------------------------------------*
* Monta telas do BDC
*----------------------------------------------------------------------*

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


118

* -->PROGRAM
* -->DYNPRO
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program TYPE bdcdata-program
dynpro TYPE bdcdata-dynpro.

CLEAR wa_bdc.
wa_bdc-program = program.
wa_bdc-dynpro = dynpro.
wa_bdc-dynbegin = 'X'.
APPEND wa_bdc TO it_bdc.

ENDFORM. " bdc_dynpro

*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
* Monta campos BDC
*----------------------------------------------------------------------*
FORM bdc_field USING fnam TYPE bdcdata-fnam
fval TYPE any.

CLEAR wa_bdc.
wa_bdc-fnam = fnam.
wa_bdc-fval = fval.
APPEND wa_bdc TO it_bdc.

ENDFORM. " bdc_field

• Gravação de uma pasta de batch-input, que deverá posteriormente ser executada


através da transação SM35. A gravação de pastas de batch-input é realizada através
da chamada das seguintes funções:

BDC_OPEN_GROUP: abertura da pasta de batch-input;

BDC_INSERT: Inserção dos registros de batch-input na pasta


criada. Deve ser chamada para cada execução da
transação.

BDC_CLOSE_GROUP: fechamento da pasta de batch-input.

Exemplo de código ABAP para gravação de batch-input:

*&---------------------------------------------------------------------*
*& Report ZAB_BI_00
*& Curso ABAP para funcionais - Korun
*& Exemplo de criação de Batch-input
*&---------------------------------------------------------------------*
*& Desenvolvido por: Alan Campos de Oliveira
*&---------------------------------------------------------------------*
REPORT zaf_bi_00.

* Tabela interna que receberá as informações do arquivo


DATA: BEGIN OF it_input_file OCCURS 0,
line(256) TYPE c.
DATA: END OF it_input_file.

* Tabela interna que armazenará os campos do arquivo separadamente


DATA: BEGIN OF it_file OCCURS 0,
bukrs TYPE rf02k-bukrs,
ekorg TYPE rf02k-ekorg,
ktokk TYPE rf02k-ktokk,
anred TYPE lfa1-anred,
name1 TYPE lfa1-name1,

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


119

sortl TYPE lfa1-sortl,


land1 TYPE lfa1-land1,
akont TYPE lfb1-akont,
fdgrv TYPE lfb1-fdgrv,
waers TYPE lfm1-waers.
DATA: END OF it_file.

* Tabelas internas utilizadas no BDC


DATA: it_bdc TYPE TABLE OF bdcdata,
wa_bdc TYPE bdcdata.

* Tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK bloco1 WITH FRAME.
PARAMETERS: p_file TYPE rlgrap-filename OBLIGATORY,
p_group TYPE apqi-groupid OBLIGATORY.
SELECTION-SCREEN END OF BLOCK bloco1.

START-OF-SELECTION.

PERFORM leitura_arquivo.
PERFORM preenche_bdc.

*----------------------------------------------------------------------*
* AT SELECTION-SCREEN ON VALUE-REQUEST *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

* Função para seleção do nome do arquivo


CALL FUNCTION 'F4_FILENAME'
IMPORTING
file_name = p_file.

*&---------------------------------------------------------------------*
*& Form leitura_arquivo
*&---------------------------------------------------------------------*
* Leitura do arquivo
*----------------------------------------------------------------------*
FORM leitura_arquivo.

DATA: vl_filename TYPE string.

vl_filename = p_file.

* Função para leitura de arquivo


CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = vl_filename
TABLES
data_tab = it_input_file
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


120

OTHERS = 17.

IF sy-subrc <> 0.
* Mensagem em caso de erro na leitura do arquivo
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

* Percorre todas as linhas do arquivo


LOOP AT it_input_file.

CLEAR it_file.

* Separação da linha do arquivo em campos


SPLIT it_input_file-line AT ';' INTO: it_file-bukrs
it_file-ekorg
it_file-ktokk
it_file-anred
it_file-name1
it_file-sortl
it_file-land1
it_file-akont
it_file-fdgrv
it_file-waers.
APPEND it_file.

ENDLOOP.

ENDIF.

ENDFORM. "leitura_arquivo

*&---------------------------------------------------------------------*
*& Form preenche_bdc
*&---------------------------------------------------------------------*
* Criação da seção BDC
*----------------------------------------------------------------------*
FORM preenche_bdc.

* Cria a pasta de batch-input


CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
group = p_group
user = sy-uname
EXCEPTIONS
client_invalid = 1
destination_invalid = 2
group_invalid = 3
group_is_locked = 4
holddate_invalid = 5
internal_error = 6
queue_error = 7
running = 8
system_lock_error = 9
user_invalid = 10
OTHERS = 11.

LOOP AT it_input_file.

REFRESH it_bdc.

* Monta os dados BDC


PERFORM bdc_dynpro USING: 'SAPMF02K' '0100'.
PERFORM bdc_field USING: 'RF02K-BUKRS' it_file-bukrs.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


121

PERFORM bdc_field USING: 'RF02K-EKORG' it_file-ekorg.


PERFORM bdc_field USING: 'RF02K-KTOKK' it_file-ktokk.
PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING: 'SAPMF02K' '0110'.


PERFORM bdc_field USING: 'LFA1-ANRED' it_file-anred.
PERFORM bdc_field USING: 'LFA1-NAME1' it_file-name1.
PERFORM bdc_field USING: 'LFA1-SORTL' it_file-sortl.
PERFORM bdc_field USING: 'LFA1-LAND1' it_file-land1.
PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING: 'SAPMF02K' '0120'.


PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING: 'SAPMF02K' '0130'.


PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING: 'SAPMF02K' '0380'.


PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING: 'SAPMF02K' '0210'.


PERFORM bdc_field USING: 'LFB1-AKONT' it_file-akont.
PERFORM bdc_field USING: 'LFB1-FDGRV' it_file-fdgrv.
PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING: 'SAPMF02K' '0215'.


PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING: 'SAPMF02K' '0220'.


PERFORM bdc_field USING: 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING: 'SAPMF02K' '0310'.


PERFORM bdc_field USING: 'LFM1-WAERS' it_file-waers.
PERFORM bdc_field USING: 'BDC_OKCODE' '=UPDA'.

* Insere dados BDC na pasta


CALL FUNCTION 'BDC_INSERT'
exporting
tcode = 'XK01'
TABLES
dynprotab = it_bdc.

ENDLOOP.

* Encerra pasta te batch-input


CALL FUNCTION 'BDC_CLOSE_GROUP'.

ENDFORM. "preenche_bdc

*&---------------------------------------------------------------------*
*& Form bdc_dynpro
*&---------------------------------------------------------------------*
* Monta telas do BDC
*----------------------------------------------------------------------*
* -->PROGRAM
* -->DYNPRO
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program TYPE bdcdata-program
dynpro TYPE bdcdata-dynpro.

CLEAR wa_bdc.
wa_bdc-program = program.
wa_bdc-dynpro = dynpro.
wa_bdc-dynbegin = 'X'.
APPEND wa_bdc TO it_bdc.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


122

ENDFORM. " bdc_dynpro

*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
* Monta campos BDC
*----------------------------------------------------------------------*
FORM bdc_field USING fnam TYPE bdcdata-fnam
fval TYPE any.

CLEAR wa_bdc.
wa_bdc-fnam = fnam.
wa_bdc-fval = fval.
APPEND wa_bdc TO it_bdc.

ENDFORM. " bdc_field

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


123

BAPI’s

BAPIs, abreviações de Businness Application Programming Interface, são


módulos de função standard que possuem proporcionam processamentos específicos para
diversos processos do SAP ERP.
São implementados como métodos API de objetos de negócio relacionados a um
determinado cenário de negócio e implementadas sob a forma de módulos de função, que
podem ser acessados via SE37.
Foram disponibilizadas pela SAP desde o release 4.5 A e podem ser utilizadas
para a criação de interfaces, uma vez que os módulos de função que implementam as
BAPIs são do tipo RFC.
As BAPIs, quando utilizadas para processamento de informações (carga de dados)
possuem algumas vantagens em relação aos processos BDC:

• Não é necessário o mapeamento de telas, uma vez que os parâmetros da BAPI são
informados através dos parâmetros do módulo de função;
• O tratamento de erros e feito de forma automática, e retorna sob a forma de uma
tabela, nomeada RETURN para o programa de chamada;
• BAPIs costumam ter performance superior aos processos BDC, uma vez que os
processamentos são realizados internamente, e não através da emulação de telas.

Para obter uma lista das BAPIs disponíveis, deve-se utilizar a transação BAPI:

A navegação pode ser realizada através da hierarquia de aplicações SAP ou em


ordem alfabética pelo nome do objeto de negócios.
Quando o objeto de negócio referente à aplicação desejada é localizado, uma lista
dos métodos disponíveis para o objeto pode ser obtida. Cada um dos métodos existentes
geralmente representa uma BAPI, e toda a documentação para o método pode ser obtida.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


124

Seção de documentação da BAPI_PO_CREATE1(utilizar idioma Inglês para logon)

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


125

As BAPIs podem ser previamente testadas no ambiente de testes do Function


Builder (transação SE37), e se o resultado esperado for o que a BAPI realiza, podem ser
implementadas no código ABAP via chamada através de CALL FUNCTION.

Teste de BAPI via Function Builder

Resultado do processamento da BAPI

É possível a visualização de cada campo das variáveis retornadas nos parâmetros via
metadados:

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


126

Exemplo de código ABAP utilizando chamada de BAPI:

*&-------------------------------------------------------------------*
*& Report ZAB_BI_00
*& Curso ABAP para funcionais - Korun
*& Utilização de BAPIs
*&-------------------------------------------------------------------*
*& Desenvolvido por: Alan Campos de Oliveira
*&-------------------------------------------------------------------*
REPORT zaf_ba_00.

* Parâmetros de retorno da BAPI


DATA: wa_generaldetail TYPE bapivendor_04,
wa_companydetail TYPE bapivendor_05,
wa_return TYPE bapiret1,
it_bankdetail TYPE TABLE OF bapivendor_06,
v_companycode TYPE bapivendor_01-comp_code.

PARAMETERS: p_lifnr TYPE lfa1-lifnr.

START-OF-SELECTION.

CALL FUNCTION 'BAPI_VENDOR_GETDETAIL'


EXPORTING
vendorno = p_lifnr
companycode = v_companycode
IMPORTING
generaldetail = wa_generaldetail
companydetail = wa_companydetail
return = wa_return
TABLES
bankdetail = it_bankdetail.

IF wa_return IS INITIAL.
WRITE: wa_generaldetail-vendor,
wa_generaldetail-name,
wa_generaldetail-name_2,
wa_generaldetail-name_3,
wa_generaldetail-name_4.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


127

ELSE.
WRITE wa_return-message.
ENDIF.

As BAPIS, quando utilizadas para operações de modificação, devem ser sucedidas


pelo comando COMMIT, ou pela BAPI_TRANSACTION_COMMIT, para efetivação
das operações realizadas.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


128

DIÁLOGO DE ATUALIZAÇÃO (SM30)

O SAP ABAP disponibiliza uma ferramenta de automatização de criação de


diálogos para atualização de tabelas do cliente. Esta opção está disponível através do
dicionário de dados, através da opção “Utilitários > Gerador de atualização de tabelas”,
ou através da transação SE54.

Quando se opta pela criação, uma tela adicional é exibida e devem ser informados,
obrigatoriamente:

• O grupo de atualizações do diálogo de manutenção;


• Um grupo de funções para a criação da tela;
• Se a atualização será realizado em nível único (apenas uma tela), ou em dois níveis
(duas telas de manutenção);
• O número das telas de manutenção a serem criadas.

Após informação os campos necessários e o botão novo, o sistema


automaticamente gera um diálogo de manutenção para a tabela, que pode ser utilizado
através da transação SM30.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


129

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.


130

ABAP QUERY

• ABAP Query ( Transação SQVI ) é uma ferramenta simples para desenvolver


relatórios, que permite selecionar dados de uma ou mais tabelas do Banco de
Dados do SAP em forma de lista ou tabela. Com essa ferramenta os dados são
extraídos de qualquer tabela do sistema R/3.
• Um dos pontos fortes do ABAP Query é que ele pode ser usado para acessar
qualquer dado no banco de dados. Várias áreas de aplicação do R/3 fornecem
bancos de dados lógicos pré-definidos para facilitar a extração de informações via
ABAP Query.
• Usuários não precisam ter background em ABAP para usar a ferramenta, mas
precisam ter conhecnimento no Dicionário de dados do sistema e ter noções de
programação.

O ABAP Query possui três componentes principais:


• Grupo de Usuários ( Transação SQ03 )
Cada usuário pertencerá a um Grupo de Usuários que será definido previamente.
• Área Funcional ( Transação SQ01 )
Define as tabelas e campos a serem usados. Cada Área Funcional criada deve estar
relacionada a pelo menos um Grupo de Usuários.
As informações das Áreas Funcionais podem ser extraídas de banco de dados
lógicos ou diretamente das tabelas.
• Queries ( Transação SQ02 )
São os tipos de relatórios. Existem três tipos de relatórios: Basico, estatistico, e
ranked lists.

Introdução ABAP Esse material é da LPJ Consultoria e Treinamento ltda.