Você está na página 1de 41

Workshop ABAP

para consultores funcionais

SUMÁRIO
1. INTRODUÇÃO AO ABAP __________________________________________________ 2
1.1 Tipos de Programas ________________________________________________________ 3
1.2 Módulos/Formas de Programas ABAP _________________________________________ 5

2. ENHACEMENTS TO THE SAP STANDARD ____________________________________ 21


2.1 Field Exit ________________________________________________________________ 21
2.2 Screen Exit ______________________________________________________________ 22
2.3 User Exit ________________________________________________________________ 23
2.4 Customer Exit ____________________________________________________________ 25
2.5 Business Add-ins(BADI) ____________________________________________________ 26
2.6 Enhancement Point (Pontos Implicitos) _______________________________________ 29
2.7 Regras de Substituição (Substitution Maintenance) _____________________________ 29

3. SAP NOTES ___________________________________________________________ 31


4. DICIONÁRIO DE DADOS (ABAP DICTIONARY) ________________________________ 34
5. PRATICANDO ABAP ____________________________________________________ 35
5.1 Principais comandos ______________________________________________________ 35
5.2 Variáveis de sistema ______________________________________________________ 36
5.3 Debug básico ____________________________________________________________ 36
5.4 Exercícios _______________________________________________________________ 39

6. Referencias bibliográficas _______________________________________________ 41

1. INTRODUÇÃO AO ABAP

ABAP (Advanced Business Application Programming) é uma linguagem de


programação de alto nível desenvolvida pela empresa de software SAP. É a principal

2
linguagem utilizada no produto mais conhecido desta empresa, o SAP R/3, um software ERP.
O ABAP tem uma sintaxe semelhante ao COBOL.
O ABAP é uma linguagem de programação dentro da categoria das linguagens de
quarta geração desenvolvidas nos anos 80. Foi originalmente concebida como uma
linguagem para construção de relatórios para o SAP R/2 (o significado original de ABAP é
Allgemeiner Berichts Aufbereitungs Prozessor, que em alemão significa processador genérico
para preparação de relatórios). O objetivo original da linguagem era ser uma ferramenta de
programação suficientemente simples para ser usada pelos utilizadores finais. No entanto, o
ABAP é uma linguagem que necessita de conhecimentos avançados de programação e é
principalmente utilizada pelos programadores da SAP que desenvolvem o software e por
consultores que adaptam o software às necessidades dos clientes.

1.1 Tipos de Programas

Cada programa ABAP possui um tipo de programa que deve ser determinada nos
atributos do programa no momento da criação, conforme figura abaixo:

Existem sete tipos de programas, na qual podemos escolher: programa executável,


grupo de funções, programa include, pool de interface, pool de classes, pool de módulos
e pool de sub-rotinas.
Quando iniciado um programa ABAP, o ambiente de execução inicia um processador
(dependente do tipo de programa), que chama o primeiro bloco de processamento
ABAP. Abaixo uma breve descrição de cada tipo:

Obs.: os tipos de programas são geralmente vistos em aplicação de notas que veremos
nos próximos passos.

• 1 - Programa Executável
Você cria programas executáveis diretamente usando a ferramenta chamada
ABAP Editor(SE38). Programas executáveis podem conter todos os blocos de
transformação apoiada em ABAP, com exceção de módulos de função, e como
muitas classes locais, conforme necessário. Programas executáveis são sempre
iniciados com a instrução SUBMIT.

• F - Grupo de Funções
Grupos de funções são introduzidos com a função de declaração de pool e são os
únicos programas que têm permissão para conter módulos funcionais (que são

3
procedimentos especiais que podem ser chamadas de dentro de todos os outros
programas ABAP). Eles podem ser executados usando códigos de transações,
mas normalmente são carregados pela sua função módulos a serem chamados.
Com exceção dos relatórios de blocos de eventos, grupos de funções podem
conter todos os blocos de transformação apoiada em ABAP e como muitas
classes locais, conforme necessário.

• I - Programa Include
Eles servem apenas como uma biblioteca para ABAP código-fonte. Eles são
utilizados exclusivamente para organizar textos programa em pequenas
unidades editável que pode ser inserido em qualquer lugar em outros programas
ABAP utilizando a instrução INCLUDE. Não há relação técnica entre include
programas e módulos de processamento. Includes são mais adequados para as
unidades de lógica de programação, como as declarações de dados, ou conjuntos
de blocos de processamento semelhante.

• J - Pool de interface
Não pode conter todas as telas de seus próprios ou blocos de processamento.
Elas são introduzidas com a interface declaração de pool e são utilizados
exclusivamente como um recipiente para uma interface global que possa ser
aplicado em qualquer classe global ou local. Eles são carregados por meio da
interface. Como associações de classe, você cria piscinas interface no construtor
de classe do Workbench ABAP.

• K - Pool de classes
Pool de classes não podem conter todas as telas de suas próprias quadras ou em
qualquer tratamento, exceto métodos. Elas são introduzidas com a classe
declaração de pool e são utilizados exclusivamente como um recipiente para
exatamente uma classe global e como muitas classes locais, conforme
necessário. Associações de classe são carregadas usando sua classe mundial. Na
versão 6.10, você também pode ligar os códigos de transação para os métodos
de classe mundial para que um objeto da classe é criado implicitamente quando
eles são usados.

O construtor de classe é uma ferramenta na bancada de ABAP que você pode


usar para criar associações de classe.

• M - Pool de módulos
São diretamente criados utilizando o Editor ABAP e são apresentados com a
declaração PROGRAM. Com exceção dos blocos de informação de eventos e
módulos de função, pool de módulos pode conter todos os blocos de

4
transformação apoiada em ABAP e como muitas classes locais, conforme
necessário. Enquanto eles são executados, todos os eventos do ambiente de
execução ABAP podem ser desencadeados. O atributo mais importante técnica
de um pool de módulos é que ele só pode ser controlado através de uma lógica
de fluxo de tela. Você deve iniciá-los usando um código de transação, que está
ligado ao programa e uma de suas telas (tela inicial). Outra característica desses
programas é que você deve definir suas próprias telas no Screen Painter (embora
a tela inicial possa ser uma tela de seleção).

• S - Pool de rotinas
São criados utilizando o Editor ABAP e são apresentados com a declaração
PROGRAM. Eles podem não conter todas as telas de seus próprios, e com
exceção do LOAD-OF-PROGRAM programação do evento que eles só podem
utilizar sub-rotinas como blocos de processamento. Pools de rotinas são
carregados externamente chamando suas sub-rotinas dentro de outros
programas ABAP.

Obs.: os tipos de programas, são muito usados em aplicação de notas que muitas
vezes criam novos programas, tabelas, classe como um recente exemplo, são as notas
de SPEDs e NFE.

1.2 Módulos/Formas de Programas ABAP

• ALV List Viewer

5
Se grandes quantidades de dados devem ser apresentadas de forma clara, eles
podem ser agrupados em listas, que são estruturas criadas como tabelas
composta de colunas e linhas. As listas são freqüentemente utilizadas para exibir
dados que é organizado em hierarquias. No sistema SAP, ALV List Viewer são
usados nas seguintes informações: Relatório de análises, Resultados, possíveis
valores de entrada (em alguns casos) e existem 3 formas de utilização dos ALV Lis
Viewer, são elas:

List View (layout simples e pode ser gerado/processado em background)


Exemplo 01

Exemplo 02

Grid Control (layout agradável e com vários recursos de agrupamento, quebra,


ordenação de fácil uso)

6
Alv Tree (layout e recursos avançado, exige maior conhecimento de
programação)

Todas as 03 formas são muito usadas nas transações Standard como em


relatórios específicos para o cliente. Um exemplo de transação standard é a
FBL1N (Partidas indiv.fornecedores)

7
Para visualizarem outros exemplos de programas ALV List Viewer, acessar
transação SE38 e procurar por BCALV_* com abaixo:

Irão aparecer inúmeros exemplos, para ALV List, Grid e Tree Viewer:

8
Basta selecionar uma opção e executa-lo.

• Sapscript
SAPscript é a ferramenta do SAP para criação de relatórios mais elaborados,
chamados de formulários. A opção pela utilização da ferramenta geralmente se
dá pela necessidade de alguns recursos que não podem ser obtidos através de
código ABAP comum, como nos chamados “reports”, tais como inserção de
logotipos, fontes de tamanhos ou tipos diferentes, et... Muitas vezes, também,
dependendo da necessidade do relatório, pode compensar mais utilizar o
desenvolvimento de um relatório convencional sobre um formulário pré-
impresso, que já contenha o layout e logotipo desejados. Embora seja a
ferramenta de geração de formulários mais poderosa do SAP, o SAPscript ainda
apresenta uma série de limitações, principalmente no que diz respeito a
verificação de erros e análise de debug. Um comando escrito na grafia errada
dentro do formulário, jamais será detectado pelo mesmo. Somente a não
funciopnalidade esperada do comando poderá levar ao programador descobrir
se próprio erro. O modo debug no ambiente de SAPscript pode ser ativado na
transação SE71 (Ferramentas -> Processamento de Texto -> Layout Set), através
do menu Utilitátios -> Ativar Debug. O método correto consiste em se preencher
o nome do formulário e idioma nos campos da tela, antes de percorrer o
caminho do menu. Algumas vezes, no entanto, principalmente para um
processamento em background, o formulário não permite ser debugado, embora
percorrendo o caminho acima citado, nenhuma mensagem de impossibilidade
seja exibida. Simplesmente, nenhuma tentativa de debug funciona. Nesses casos,
o programador deve utilizar de artifícios como imprimir o conteúdo dos campos

9
a serem checados em pontos estratégicos do formulário, para observar seu
comportamento.

• Smart Forms
Usamos Smart Forms para criar formulários de impressão em massa. Smart
Forms é a evolução do Sapscript, porem de forma mais amigável e consumo de
horas em desenvolvimento menor pela facilidade nos recursos que são
totalmente gráficos não exigindo conhecimento de programação. Smart Forms
permite que você execute simples modificações na forma e na lógica de forma
simples, utilizando ferramentas gráficas; em 90% dos casos, isso não irá incluir
qualquer esforço de programação. Assim, um usuário que esteja familiarizado
com a ferramenta, mas tem apenas conhecimento de programação rudimentar
pode configurar formulários com dados de um sistema SAP para os processos de
negócio relevantes. O resultado do desenvolvimento de formulários é uma forma
inteligente. Depois que ele for ativado, o Formulário de Smart é semelhante a
um módulo de função que pode ser chamado no sistema SAP. Um exemplo
recentemente muito usado nos projetos é o documento DANFE.

10
• Module Pool / On-Line
São tipos de programas que, como o próprio nome indica, funcionam online, ou
seja, instantaneamente. Por isso, eles são dotados de uma maior capacidade de
customização das telas e maior flexibilidade para criarem uma interface mais
amigável com o usuário. Eles são especialmente úteis na criação de aplicações
que necessitem de subtelas ou quando é necessário fornecer informações aos
usuários de outra maneira que não um relatório. Na maioria dos casos, os
programas standard funcionam assim. Vejam a estrutura:

Screen
Desenho da Tela (Definição dos Campos)
Lista de campos para tratamento de erros
Definição dos módulos PBO e PAI relacionados com a tela

GUI Status e GUI Title


Definição dos comandos de botão e menus disponíveis:
Definição do título de tela
Habilitação dos comandos standards existentes
Criação de novos comandos necessários

Evento PBO

11
Evento executado antes da exibição da tela para o usuário:
Definição do GUI Status e GUI Title para a tela correspondente
Seleção inicial de dados e atribuição de valores a serem exibidos na tela

Evento PAI
Evento executado após um comando do usuário (enter, click de um botão, etc...)
Verificação do código de comando executado (definido no GUI Status)
Código ABAP para execução da lógica do comando

A transação SE80 é a mais adequada para se desenvolver um module pool, pois


possibilita acesso dinâmico a qualquer elemento do programa, bem como as
struturas GUI, includes, modules e telas.
Um ótimo exemplo de Module Pool / On-line é transação ME23N(Exibir pedido
de compra), pois ela possui todos os recursos de um pool de módulos, vejam:

• Carga/Migração de Dados

12
São as formas de inserir/migrar dados do/para o R/3 sem acessar base dados
direto, utilizando recursos de programação ABAP. Há outras formas de
carga/migração de dados que não há necessidade de programação ABAP, tais
como as ferramentas LSMW e CATT que não serão abordadas neste workshop.

BATCH INPUT X CALL TRANSACTION

13
CALL TRANSACTION

14
BATCH INPUT

BAPI

15
Business Application Programming Interface (BAPI) é uma interface definido com
precisão o acesso a processos e dados em sistemas de aplicativos de negócios do
R/3. BAPIs são definidos como métodos da API de tipos de objetos de negócios
SAP. Estes tipos de objetos de negócios e seus BAPIs são descritos e
armazenados na Business Object Repository (BOR). A BAPI é implementado
como um módulo de função, que é armazenado e descrito no Construtor de
Função. Para visualizar as BAPIS, basta acessar a transação BAPI como mostra
abaixo:

Exemplo de utilização através de teste na transação SE37


BAPI - BAPI_COMPANYCODE_GETDETAIL

Escolha opção executar/testar.

16
Company Code = 1000 e clique em executar

Veja o resultado

*** ATENÇÃO: As BAPIS com características de criação ou modificação de dados,


por exemplo criar pedido de compras ou modificar pedido de compras, deve ser
executado na sequência a atualização do banco de dados através da BAPI -
BAPI_TRANSACTION_COMMIT

17
Veja, no código de exemplo abaixo:

BAPI – BAPI_SALESORDER_CREATEFROMDAT2 (Criação de Ordem de vendas)

Em um momento de análise e testes para mapeamento de uma BAPI deste


modelo, na transação SE37 para fazer a chamada das 2 BAPIs em sequência
(representando um teste real), faça os seguintes passos:

18
Determine quais BAPIS deverão ser executadas e chamar sequência.

19
ESPECIFICAÇÃO FUNCIONAL
A Especificação Funcional apresenta a descrição do ponto de vista dos
clientes/usuário do sistema/programa a ser desenvolvido. Independente do
tamanho do seu cliente (não tamanho físico, mas sim corporativo) ele está
pagando por um desejo e você recebendo para realizá-lo. Se você não entende
perfeitamente este desejo, provavelmente não entregará a solução correta ou
pelo menos completa. E convenhamos, se isto acontecer você realmente está
encrencado, pois qualquer que seja sua solução para este problema, será um
prejuízo. Seja seu (mais provável), seja do cliente.
Alguns pontos que devem conter nas especificações
• Módulo
Ex.: MM, SD, FI, CO, PP, WM...
• Assunto
Ex.: Desenvolvimento Sapscript de Nota Fiscal, Melhoria EXIT no controle
de cópia(SD)
• Usuário Responsável
Ex.: Bruno Lima
• Funcional Responsável
Ex.: Bruno Cantão
• Data de Documento
Ex.: 07.09.2009
• Tipo de Programa
Ex.: Formulário Sapscript
• Resumo do Desenvolvimento
Ex.: Para o cliente ABC será necessário criar o Formulário Sapscript para
impressão de nota, transação J1B3N .
• Detalhamento do Desenvolvimento
Ex.: O layout de impressão deverá ser paisagem e controle de logotipo
deverá consistir conforme empresa(BUKRS) do programa de impressão.
Para os casos que o campo BUKRS da tabela J_1BNFDOC for igual a 0001
imprimir o logotipo SAP A.G(em anexo a especificação), para os demais
casos imprimir o logotipo LETNIS Consultoria (em anexo a especificação)
• Script de testes
Ex.: Criação de Notas de MM, SD e Writer, impressão das Notas simples
com apenas 1 item e com vários itens.

*** ATENÇÃO: lembre-se do workshop de análise de sistemas, no tópico em que tratamos


Entrada, Processamento e Saída.

20
2. ENHACEMENTS TO THE SAP STANDARD

2.1 Field Exit


Field Exits são utilizadas geralmente para consistir campo de tela. Para isso, o campo
deve ter referência no Dicionário ABAP (elemento de dados). Cria-se um módulo de
função com a nomenclatura “FIELD_EXIT_” e efetua-se sua chamada no PAI do sistema.
Podem ser globais ou locais. As locais estão amarradas a determinado programa e tela.
Essa configuração é feita na criação ou pela transação CMOD. As globais funcionam para
todas as telas que tenham o elemento de dados. Nas funções Field Exit, não é possível
executarmos as seguintes instruções ABAP:
• BREAK-POINT
• CALL SCREEN, CALL DIALOGUE, CALL TRANSACTION, CALL FUNCTION
• SUBMIT
• COMMIT WORK, ROLLBACK WORK
• EXIT FROM STEP-LOOP
• COMMUNICATION RECEIVE
• MESSAGE I, MESSAGE W
• EXTERNAL PERFORM
Obs: Não é possível executar Field Exits pelo depurador. Para depurarmos, utilizamos a
transação SE37.
Para visualizar as Field Exits, basta entrar na Transação CMOD, e na barra de ações
colocar o comando =PRFB.

21
2.2 Screen Exit
As Screen Exits são usadas para inclusão de campos em tela, porem não são todas as
transações que disponibilizam uma screen exit. Para encontrar uma screen exit, basta
seguir os passos:
Transação.: CMOD
Menu Utilitários -> Ampliações SAP

Clique no botão “Todas as Seleções”


Marque apenas Áreas de tela e pressione F8

22
Verifique o resultado e escolha a screen exit que se faz necessário e crie um projeto para
está ampliação(nome da screen exit):

2.3 User Exit


As User Exits foram desenvolvidas originalmente para o Módulo SD, com o propósito de
permitir ao usuário modificar o sistema sem, no entanto, modificar o código fonte.
Consistem basicamente de sub-rotinas (rotinas FORM) em includes especiais, criados em
um Pool de Módulo ou Grupo de Função, onde chamará essas sub-rotinas nos pontos do
programa no qual será permitida alteração pelo usuário. Essas sub-rotinas devem
satisfazer a nomenclatura: USEREXIT_<nome>, SAP nunca altera os includes, Se novas
User Exits são adicionadas em uma nova versão, elas são colocadas em um novo
programa include. A chamada da sub-rotina já está implementada nos programas dos
módulos Standard (SD, MM, FI, etc.). Normalmente, sub-rotinas desse tipo só trabalham
com variáveis globais. Como exemplo, podemos verificar os includes MV45AFZB e
MV45AFZZ, referente ao programa SAPMV45A. Para maior facilidade no encontro de
User Exit, acessar a transação SPRO -> Vendas e Distribuição -> Adaptação do Sistema ->
User Exits

23
Dentro de cada item terá a descrição da exit, como o que faz ou quem momento passa a
exit e também o nome do perform e do programa/exit, conforme imagem abaixo:

24
2.4 Customer Exit
As customer exits são chamadas dentro de programas através do comando call
customer-function, como no exemplo abaixo, uma chamada no programa da transação
QS33 de QM:

Uma característica das customer exits é que sempre possuem a seguinte nomeclatura
EXIT_<programa>_<numeroexit> e tambem todas com um INCLUDE Z para
customização, duplo clique sobre o ‘004’ deste exemplo, para facilitar a visualização:

Desta forma para encontrar customer-exits, apenas procurar na transação por


“customer-function” e terá os pontos para customização.

25
2.5 Business Add-ins(BADI)
Business Add-Ins ou resumidamente BADI, é uma nova técnica de enhancement de
programas ABAP que surgiu junto com o ABAP Objects. Ao contrário das customer-exits,
onde somente a SAP podia criar os pontos de modificação, BADIs podem ser criadas por
outras empresas de desenvolvimento ABAP para serem utilizadas nos programas
desenvolvidos por elas. As BADIs podem ser definidas como dependentes de filtros. Isso
permite, por exemplo, a criação de uma implementação diferente para cada país. A SAP
garante a compatibilidade de todas as interfaces BADIs em futuros releases. Upgrades
não irão afetar as implementações atuais.
Para encontrar uma badi entre na transação SE24 na classe CL_EXITHANDLER

Duplo clique no método GET_INSTANCE

Coloque um ponto de parada no CALL METHOD .

26
Em uma nova janela abre transação desejada que irá parar nos pontos de BADI.
Ex.: Transação MM02

27
Acesse a transação SE18 e veja a definição da BADI

Métodos da BADI

28
2.6 Enhancement Point (Pontos Implicitos)

Os pontos de melhoria implícitas são basicamente de pontos dentro código ABAP onde
realce ponto está implícito, e nesse caso, pode ser criado. Exemplos de pontos de
melhoria são implícitos no início e no final da forma de, no final de um programa, ou
módulos de função incluem etc. Abaixo está um passo a passo de demonstração de como
criar e ponto de realce implícito.

Para pesquisar enhancement point no programa menu:


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

Cada ponto conforme abaixo é um enhancement point

29
2.7 Regras de Substituição (Substitution Maintenance)

Utilizando a função de validação, podem ser verificados valores e intervalos de


valores entrados no ambiente SAP. Quando são introduzidos dados no sistema, o
integration manager verifica os dados em relação às regras de validação. Uma vez que a
validação tem lugar antes do lançamento, apenas os dados verificados serão
introduzidos no sistema de ledgers especiais.

Na substituição, os valores introduzidos no sistema SAP são verificados em relação a


uma condição definida pelo usuário. Se a condição foi cumprida, os valores entrados no
sistema serão substituídos por outros valores, e os valores substituídos são copiados
para o sistema de ledgers especiais.

Se o usuário pertender atribuir uma validação ou uma substituição a uma empresa


ou a uma sociedade, deverá efetuar as etapas de trabalho "Validação" e "Substituição",
em "Configurações básicas".

URL SAP HELP - Mais detalhes

SPRO -> Contabilidade financeira -> Ledgers especiais -> Ferramentas -> Atualizar
validação/substituição/regras

30
3. SAP NOTES

As notas SAP são instruções sobre como remover erros conhecidos no SAP, elas incluem
descrição e causa dos erros e o nivel de suporte package requerido. Dependendo do tipo de
erro, uma nota SAP pode conter Soluções – descrições de como corrigir os objetos do
repositório Abap, conhecido como instruções de correções. A SAP disponibiliza a transação
SNOTE para assistência em aplicação de notas, porem é altamente recomendável que leia
toda a nota antes de aplicá-la, pois existem os procedimentos manuais como criação de
campos em tabelas, portanto fiquem atentos!
Como encontrar, consultar notas SAP:

Acessar o site e clicar em SAP Support Portal:


http://launchpad.support.sap.com

clique no botão Launch the SAP Note and KBA Search, faça autenticação com seu usuário do
Market Place ou usuário do

31
Aparecerá os critérios de busca e pesquisa de notas, por número de nota, por termos, etc,
como mostra a imagem abaixo:

Uma característica que é praticamente vista em todas as notas são as versões exigidas de
support package ou componente instalado para aplicação ou não das notas, para isso iremos
aprender como checar isso para minimizar o tempo de aplicação.
No ambiente SAP de aplicação da Nota ir ao menu Sistema -> Status

Na tela seguinte, visualizar os componentes no botão “Informações Componente”

32
Abaixo a lista das versões dos componentes instalados no Ambiente SAP

Com as informações do Ambiente, basta comparar com a nota a ser aplicada e verificar se
necessário ou não aplicação da mesma e suas precedentes.

33
4. DICIONÁRIO DE DADOS (ABAP DICTIONARY)

O dicionário de dados do ABAP/4 é uma fonte central de informações provenientes do


sistema gerenciador de dados do SAP. Sua principal função é suportar a criação e o
gerenciamento das definições de dados. Elementos do dicionário de dados:

• Tabelas - armazenam dados


• Estruturas - não armazenam dados
• Visões - join de tabelas e restrição de campos
• Campos
• Elementos de dados
• Domínios
• Ajuda de pesquisa (search help)

Fluxo da estrutura de uma tabela / campo no SAP:

Para fixação das informações sobre Abap Dictionary iremos criar uma tabela, elemento de
dados, domínio e visão de atualização nos exercícios no item 5.4

34
5. PRATICANDO ABAP

5.1 Principais comandos

ADD Adiciona um valor a outro campo numérico.

SUBTRACT Subtrai um valor de outro campo numérico.

APPEND Cria um registro em uma tabela interna

COLLECT Organiza uma tabela interna totalizando os campos numéricos

DELETE Exclui um registro de uma tabela interna

MODIFY Modifica um registro de uma tabela interna

SORT Ordena os registros de uma tabela interna

READ TABLE Ler uma tabela interna

SELECT Selecionar dados de tabelas transparentes

UPDATE Atualizar dados de tabelas transparentes

DATA Declarações de tabelas internas, variáveis

IF...ELSE...ENDIF Comando para tomadas de decisão

LOOP AT...ENDLOOP Ler conteúdo de uma tabela interna

DO...ENDDO Laço de repetição / Estrutura de repetição

WHILE...E Laço de repetição / Estrutura de repetição


NDWHILE
WRITE Saída de Relatório

FORMAT COLOR Usado para formatar a saída do comando WRITE

CALL FUNCTION Comando para chamar uma função

CALL METHOD Comando para chamar um método

CALL TRANSACTION Comando para chamada de transações

CALL SCREEN Comando para chamada de telas

CONCATENATE Concatena dois ou mais campos em apenas um

CLEAR Limpa o conteúdo de uma variável

35
REFRESH Limpa todo conteúdo de uma tabela interna

CONDENSE Remove os espações em branco em um texto

PERFORM Usado para chamadas de sub-rotinas

PARAMETERS Criar parâmetros de seleção

SELECTION-OPTIONS Criar range de seleção

5.2 Variáveis de sistema

As variáveis de sistema possuem o prefixo “SY-“ e pode ser visualizadas em modo de


depuração e também na transação SE11 exibindo a estrutura SYST.

5.3 Debug básico

O que é Debug? A ferramenta “Debug” permite ao programador analisar os valores


atribuídos a cada variável que compõe o programa em tempo de execução. Para
visualizarmos isso na prática, vamos utilizar o programa de exemplo abaixo:

36
Existem três maneiras de ativarmos o debug:
• Comando “/h” na caixa de transações
• Botão “STOP” na barra de ferramentas, o ponto de parada será atribuído na linha
atual do cursor;
• Menu: Sistema > Utilitários > Depuração, similar a primeira opção

37
Ativado o Debug, apenas continuar a funcionalidade que entrará na tela abaixo:

Já dentro da ferramenta debug temos as seguintes opções de processamento:


• <F5> Executa linha a linha o programa (Step-by-Step).
• <F6> Executa o bloco atual. (loop, case, if, etc)
• <F7> Executa subprograma atual. (include, função, etc)
• <F8> Executa o programa diretamente
Em todos os casos, o programa é executado e havendo a presença de um ponto de
parada em sua execução, o programa é paralisado.

No item 5.4 iremos ver com maiores detalhes e praticando a ferramenta Debug.

38
5.4 Exercícios

Exercício 01
Iremos criar um programa em que trabalharemos formas simples de trabalho com
estruturas condicionais, de repetição, impressão em tela, variáveis, sub-rotinas e
depuração. Abaixo faça suas anotações:

39
Exercício 02
Iremos criar um programa com consultas em nas tabelas criadas no item 4. Dicionário de
Dados + utilização de sub-rotinas, alguns comandos e depuração usados no Exercício 01,
estrutura de repetição para impressão de tabelas internas, leitura, ordenação de tabelas
internas e utilização de função. Abaixo faça suas anotações:

40
6. Referencias bibliográficas

• Program types and execution


http://help.sap.com/saphelp_nw70/helpdata/en/fc/eb2d5a358411d1829f0000e829fbfe/frameset.htm

• ALV List Viewer


http://help.sap.com/saphelp_nw70/helpdata/en/bf/3bd1369f2d280ee10000009b38f889/frameset.htm

• Sapscript
http://help.sap.com/saphelp_nw70/helpdata/en/d6/0db74a494511d182b70000e829fbfe/frameset.htm

• Smartforms
http://help.sap.com/saphelp_nw70/helpdata/en/a9/de6838abce021ae10000009b38f842/frameset.htm

• SAP Notes - Technical Details on Correction Instructions


http://help.sap.com/saphelp_nw04/helpdata/EN/28/15ef3957fd0a1be10000000a114084/content.htm
http://help.sap.com/saphelp_nw04/helpdata/EN/1c/2cee3957f7cd55e10000000a114084/content.htm

• Abap Dictionary
http://help.sap.com/saphelp_webas620/helpdata/en/cf/21ea31446011d189700000e8322d00/content.htm

41

Você também pode gostar