Você está na página 1de 53

ABAP

Índice

I. OBJETIVO......................................................................................................................................... 4

II. INTRODUÇÃO – LÓGICA DE PROGRAMAÇÃO ........................................................................... 5


1. Conceito de Algoritmo ......................................................................................................................... 5
2. Formas de Representação Gráfica (Fluxograma) .................................................................................. 5
3. Formas de Representação Narrativa (Pseudocódigo) ............................................................................ 6
4. Instruções Básicas .............................................................................................................................. 6
5. Operadores ........................................................................................................................................ 7
5.1. Operadores Aritméticos .............................................................................................................. 7
5.2. Operadores Relacionais ............................................................................................................. 7
5.3. Operador Lógico - E ................................................................................................................... 7
5.4. Operador Lógico - OU ................................................................................................................ 7
5.5. Operador Lógico - NÃO .............................................................................................................. 8
6. Tomadas de Decisão........................................................................................................................... 8
7. Blocos de Repetição............................................................................................................................ 8

III. INTRODUÇÃO – ABAP .................................................................................................................. 9


1. O que é ABAP?................................................................................................................................... 9
2. Instruções ........................................................................................................................................... 9
3. Comentários ....................................................................................................................................... 9
4. Objetos de Dados ............................................................................................................................. 10
5. Estrutura Básica de um Programa (report) .......................................................................................... 10
6. Operações Aritméticas em ABAP ....................................................................................................... 10
7. Variáveis de Sistema ......................................................................................................................... 11
8. Controle de Fluxos nos Programas ABAP ........................................................................................... 11
8.1. Condições ............................................................................................................................... 11
8.2. Blocos de Repetição................................................................................................................. 12
8.3. Sentenças de Controle ............................................................................................................. 12
9. Tabelas Internas ............................................................................................................................... 13
9.1. Como Declarar Tabelas Internas ............................................................................................... 13
9.2. Carregando uma Tabela Interna................................................................................................ 13
9.3. Ordenando uma Tabela Interna................................................................................................. 13
9.4. Processamento de uma Tabela Interna...................................................................................... 13
9.5. Leitura de Registro de uma Tabela ............................................................................................ 14
9.6. Modificando Tabelas Internas ................................................................................................... 14
9.7. Outras Instruções para Tabelas Internas ................................................................................... 14
10. Dicionário de Dados ........................................................................................................................ 14

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


11. Outros Aspectos do Dicionário de Dados .......................................................................................... 15
11.1. Controle de Mandante ............................................................................................................ 15
11.2. Sentenças em SQL Nativo ...................................................................................................... 15
11.3. Chave Primária ...................................................................................................................... 15
11.4. Indices................................................................................................................................... 16
11.5. Relacionamento ..................................................................................................................... 17
12. Instruções SQL de ABAP ................................................................................................................. 18
12.1. Select .................................................................................................................................... 18
12.2. Insert ..................................................................................................................................... 18
12.3. Update................................................................................................................................... 18
12.4. Modify ................................................................................................................................... 18
12.5. Delete.................................................................................................................................... 18

IV. SQVI / QUERY ............................................................................................................................. 20


1. SQVI (QuickViewer) .......................................................................................................................... 20
2. Query ............................................................................................................................................... 24
2.1. Infoset (Transação SQ02) ......................................................................................................... 24
2.2. Grupo de Usuários (Transação SQ03) ....................................................................................... 28
2.3. Query (Transação SQ01) .......................................................................................................... 29

V. LSMW (LEGACY SYSTEM MIGRAT ION WORKBENCH) ........................................................... 33

VI. SHDB (BATCH INPUT TRANSACT ION RECORDER) ............................................................... 38

VII. BAPI (BAPI EXPLORER) ............................................................................................................ 39

VIII. EXIT / BADI / FIELD EXIT .......................................................................................................... 43

IX. DEBUG ......................................................................................................................................... 45

X. ANÁLISE DE PERFORMANCE .................................................................................................... 47

XI. TRANSAÇÕES ÚTEIS ................................................................................................................. 53

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


I. Objetivo
O objetivo deste workshop é efetuar uma introdução sobre ABAP e algumas ferramentas técnicas
(como exemplo análise de performance).

O workshop não tem como objetivo a formação de programadores.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


II. Introdução – Lógica de Programação

1. Conceito de Algoritmo
São regras formais para obtenção de um resultado ou da solução de um problema, englobando
fórmulas de expressões aritméticas e lógicas.

Uma das técnicas no projeto da lógica de programas é a chamada programação estruturada, a qual
consiste em uma metodologia de projeto, objetivando:
 Agilizar a codificação da escrita da programação;
 Permitir a verificação de possíveis falhas apresentadas pelos programas;
 Facilitar as alterações e atualizações dos programas.

2. Formas de Representação Gráfica (Fluxograma)


Consiste em representar graficamente a execução do algoritmo ou programa.
São vários os símbolos utilizados na programação estruturada.
Abaixo uma relação das simbologias mais utilizadas:

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Exemplo de Fluxograma

3. Formas de Representação Narrativa (Pseudocódigo)


Consiste em representar descritivamente (linguagem estruturada) a execução do algoritmo ou
programa.

Exemplo de Pseudocódigo

4. Instruções Básicas
Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com
Cada linguagem de programação usa um conjunto de palavras onde cada uma desenvolve uma ação.
Estas palavras reservadas de cada linguagem são conhecidas como comandos ou instruções.

5. Operadores
São utilizados na definição de expressões aritméticas e lógicas.

5.1. Operadores Aritméticos

5.2. Operadores Relacionais

5.3. Operador Lógico - E

5.4. Operador Lógico - OU

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


5.5. Operador Lógico - NÃO

6. Tomadas de Decisão
São utilizadas para controlar o fluxo de processamento do programa. O controle é efetuado através de
condições lógicas.

Exemplo:

Se (NOTA >= 7) então


Aprovado = “Sim”
Senão
Aprovado = “Não”
Fim-Se

7. Blocos de Repetição
Como o próprio nome diz, são utilizados para repetir um bloco de instruções. Tem o seu
funcionamento controlado por decisão, podendo executar um determinado conjunto de instruções
enquanto a condição verificada for verdadeira. No momento em que esta condição se torna falsa o
processamento da rotina é desviado.

Exemplo:

Enquanto Contador < 10 faça


Contador = Contador + 1
Soma = Soma + Contador
Fim-Enquanto

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


III. Introdução – ABAP

1. O que é ABAP?
ABAP é uma linguagem de programação de quarta geração de propriedade da SAP.
Suas iniciais significam:
A - Advanced
B - Business
A - Aplication
P - Programming

2. Instruções
Um programa ABAP consiste em uma série de instruções que começam com uma palavra chave e
terminam com um ponto.

Tipos de palavras chaves:


 Declarativas: Para declarar os dados que serão utilizados no programa.
Exemplo: DATA, TABLES.
 Eventos: especifica um evento, é um ponto onde o ABAP executa um determinado processo.
Exemplo: START-OF-SELECTION, TOP-OF-PAGE.
 Controle: Sentença de controle do fluxo de execução do programa.
Exemplo: IF, WHILE, DO.
 Operativas: Realiza funções próprias segundo o tipo de palavra chave.
Exemplo: WRITE, MOVE, CALL.

3. Comentários
Existem duas formas para inserir comentários em um programa ABAP:
 Com um asterisco (*) na primeira coluna da linha.
 Com aspas (") no meio da linha (normalmente após o comando).

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


4. Objetos de Dados
Existem 3 classes de objetos de dados:
 Campos de bases de dados: existentes no dicionário de dados. Podemos declarar as tabelas que
serão utilizadas no programa com a sentença TABLES.
Exemplo: TABLES: LFA1.
 Literais: literais de texto entre aspas simples (‘ ’) ou números.
Exemplo: WRITE ‘DIRECCIÓN’.
COMPUTE SALES = AMOUNT / 100.
 Variáveis internas: campos auxiliares. São declarados através da sentença DATA
Exemplo: DATA: VENDAS_TOTAIS TYPE P.
Obs: Constantes nada mais são que variáveis com conteúdo pré-definido e protegido.

5. Estrutura Básica de um Programa (report)

6. Operações Aritméticas em ABAP


Em ABAP é possível implementar as 4 operações aritméticas básicas:
 Com a instrução COMPUTE e os símbolos +, -, / e *.
Exemplo: COMPUTE var1 = <Exp. Aritmética>.
Obs: A palavra COMPUTE é opcional.
 Com as instruções: ADD TO, SUBSTRACT FROM, MULTIPLY BY y DIVIDE BY.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Também estão disponíveis funções matemáticas como por exemplo: EXP, LOG, SIN, COS, SQRT,
DIV, MOD.

7. Variáveis de Sistema
ABAP tem algumas variáveis internas que se atualizam automaticamente e que podem ser utilizadas
nos programas. Essas variáveis ficam agrupadas na estrutura SYST (SY).
Exemplo: SY-SUBRC, SY-TABIX, SY-MANDT, SY-LANGU, SY-DATUM, SY-UZEIT, SY-TCODE, etc.

8. Controle de Fluxos nos Programas ABAP

8.1. Condições
Em ABAP, como em todas as linguagens estruturadas, dispomos de uma serie de instruções para
subdividir o programa em blocos lógicos (serão executados quando se cumpra uma certa condição).
Para criar uma condição, utilizamos a sentença IF... ELSE... ENDIF , que poderá aparecer em
distintas modalidades.
IF <Cond.>. IF <Cond.>. IF <Cond.>.
… … …
ENDIF. ELSE. ELSEIF.
… …
ENDIF. ELSE.

ENDIF.

Nas condições utilizamos os operadores clássicos:


E AND
Ou OR
Igual = , EQ
Diferente <> , EN
Maior > , GT
Menor < , LT
Maior ou igual >= , GE
Menor ou igual <= , LE

Existem ainda operadores adicionais para comparar cadeias de caracteres:


<f1> CO <f2> (Contains Only) : f1 somente contém caracteres de f2.
<f1> CN <f2> (Contains Not Only) : negação da anterior.
<f1> CA <f2> (Contains Any) : f1 contém algum caractere de f2.
<f1> NA <f2> (Contains Not Any) : negação da anterior.
<f1> CS <f2> (Contains String) : f1 contém a cadeia f2.
<f1> NS <f2> (Contains No String) : negação da anterior.
<f1> CP <f2> (Contains Pattern) : f1 corresponde ao padrão f2.
<f1> NP <f2> (Contains No Pattern) : negação da anterior.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Também podemos utilizar operadores especiais:
IF <f1> BETWEEN <f2> AND <f3>. Para validar ranges
IF <f1> IS INITAL. Para validar valores iniciais.

Para executar diferentes instruções em função do conteúdo de um campo, podemos utilizar a sentença
CASE.
CASE <campo>.
WHEN <valor1>.

WHEN <valor2>.

WHEN OTHERS.

ENDCASE.

Existe ainda a instrução condicional, ON CHANGE OF ... ENDON, que permitirá a execução de um
bloco de instruções se ocorrer a troca de valor de um certo campo durante o acesso aos dados.
ON CHANGE OF <campo>.

ENDON.

8.2. Blocos de Repetição


Para realizar processos repetitivos, podemos utilizar DO e WHILE.

A instrução DO permite executar um bloco de instruções tantas vezes quanto se especifique.


DO <n> TIMES.

ENDDO.

A instrução WHILE permite executar um bloco de instruções enquanto se cumpra uma condição.
WHILE <cond>.

ENDWHILE.

8.3. Sentenças de Controle


As sentenças abaixo são utilizadas para finalizar o processamento de um bloco ou processo.
- CHECK <cond>.
- EXIT.
- STOP.
- LEAVE.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


9. Tabelas Internas
As tabelas internas são utilizadas para guardar vários registros de dados com a mesma estrutura na
memória.

9.1. Como Declarar Tabelas Internas


Exemplo de uma maneira de declaração de tabelas internas:
DATA: BEGIN OF <tabela> OCCURS <n>,
<Def.Campo>,

END OF <tabela>.

9.2. Carregando uma Tabela Interna


APPEND: Insere um registro na tabela interna com os valores carregados na área de trabalho.
APPEND <tabint>.

COLLECT: Efetua a soma da linha de cabeçalho. Somará os campos de tipo P,F,I, se existirem,
em uma linha da tabela com campos (tipo C) idênticos ao da área de trabalho.
COLLECT <tabint>.

Também é possível alimentar uma tabela interna com o conteúdo de uma tabela da base de dados.
SELECT * FROM <tab> INTO TABLE <tabint>.

9.3. Ordenando uma Tabela Interna


Para classificar uma tabela interna utilizamos SORT.
SORT <intab>.
SORT <intab> BY <campo1> .... <campo n>.
SORT ... ASCENDING. o DESCENDING.

9.4. Processamento de uma Tabela Interna


Podemos percorrer uma tabela interna com a instrução LOOP ... ENDLOOP.
LOOP AT <intab> ( WHERE <cond>).
ENDLOOP.

LOOP AT<intab> FROM <inicio> TO <fim>.



ENDLOOP.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


9.5. Leitura de Registro de uma Tabela
Podemos buscar um registro em uma tabela sem a necessidade de percorrer toda a tabela.

READ TABLE <intab>.


READ TABLE <intab> WHIT KEY <clave>.
READ TABLE <intab> WITH KEY <clave> BINARY SEARCH.
READ TABLE <intab> INDEX <num>.

9.6. Modificando Tabelas Internas


Para modificar os registros existentes em uma tabela interna:
MODIFY <intab> (INDEX <i>).
INSERT <intab> (INDEX <i>).
DELETE <intab> (INDEX <i>).

Outras instruções para tabelas internas:

9.7. Outras Instruções para Tabelas Internas


CLEAR <intab>.
REFRESH <intab>.
FREE <intab>.
DESCRIBE TABLE <tab>
LINES <contador_entradas>
OCCURS <valor_occurs>.

10. Dicionário de Dados


O dicionário de dados (D.D.) é uma fonte de informação centralizada.
Os distintos objetos do dicionário de dados estão estruturados em:

Os elementos de dados descrevem o significado de um campo independente da tabela.


Os domínios descrevem o campo de valores possíveis.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


11. Outros Aspectos do Dicionário de Dados

11.1. Controle de Mandante


O controle é automático (desde que a tabela possua o campo mandante). Sempre se processará o
mandante em uso.

11.2. Sentenças em SQL Nativo


Podemos executar qualquer sentença de SQL permitida pelo gerenciador da base de dados sobre o
qual o sistema R/3 tenha sido implementado, utilizando EXEC SQL. Neste caso as instruções da base
de dados não estão restringidas ao subconjunto de instruções SQL ABAP.
EXEC SQL.
< Instruções SQL-Nativas>.
ENDEXEC.

11.3. Chave Primária


Uma tabela deve ter pelo menos um campo que identifique o registro. Este(s) campo(s) é chamado de
chave ou chave primária. Os dados da chave primária devem ser únicos na tabela.
Tomando como exemplo a tabela MARA (Dados gerais de material), temos como chave os campos
MANDT e MATNR. Isto significa que, para um determinado mandante, apenas um registro para cada
material poderá ser gravado.

Se passarmos agora para a tabela MARC (Dados de centro para material), onde a chave é composta
pelos campos MANDT, MATNR e WERKS, podemos gravar mais de um registro para um mesmo
material (para centros diferentes).

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


11.4. Indices
Os índices são criados para otimizar o processo de busca de registros segundo um critério de seleção.
Exemplo: Na tabela MARA, existe um índice para busca dos materiais segundo seu tipo.

Obs: A criação de um índice deve ser efetuada segundo criteriosa avaliação. Apesar de ajudar na
busca dos registros, a existência do índice prejudica a performance do banco na criação de novos
registros.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


11.5. Relacionamento
Em bancos de dados relacionais, como o próprio nome indica, as tabelas estão relacionadas. Alguns
campos de uma tabela são os responsáveis pela ligação com outra(s) tabela(s).
Exemplo:

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


12. Instruções SQL de ABAP
ABAP tem um subconjunto de sentenças SQL para sua aplicação sobre as tabelas da base de dados
SAP.
Exemplo: SELECT, INSERT, UPDATE, MODIFY, DELETE, COMMIT WORK, ROLLBACK WORK.

12.1. Select
A sentença SELECT é a instrução fundamental para ler a informação da base de dados. Podemos ler
uma tabela da base de dados e simultaneamente carregar una tabela interna com o resultado da
leitura.
SELECT * FROM <tab> INTO TABLE <intab> (WHERE <cond»)
SELECT * FROM <tab> APPENDING TABLE <intab>
(WHERE <cond>).
SELECT * ... ORDER BY <campo1> <campo2> ...
SELECT SINGLE * FROM <tab> (WHERE <cond>).

12.2. Insert
A sentença INSERT permite incluir registros em uma tabela da base de dados SAP.
INSERT <tab>.
INSERT <tab> FROM TABLE <intab>

12.3. Update
A sentença UPDATE permite modificar o conteúdo de um ou vários registros.
UPDATE <tab>.
UPDATE <tab> SET <campo> = <valor> WHERE <cond>.
UPDATE <tab> FROM TABLE <intab>.

12.4. Modify
A sentencia MODIFY é utilizada quando não sabemos ao certo se o registro deverá ser incluído ou
modificado na tabela. Se o registro já existir na tabela, será atualizado. Caso contrário será incluído.
MODIFY <tab>.
MODIFY<tab> FROM TABLE <intab>

12.5. Delete
Para eliminar registros da base de dados, utiliza-se a sentença DELETE.
DELETE <tab>.
DELETE FROM<tab> WHERE <cond>.
Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com
DELETE FROM <tab> FROM TABLE <intab>.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


IV. SQVI / Query

1. SQVI (QuickViewer)
Criação de “relatório” para uso pessoal. O “relatório” fica disponível apenas ao usuário que efetuou sua
criação.
Transação SQVI

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Acionando “Voltar” (F3)

Selecionar os campos de seleção e os campos da lista.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Executando

Tela de Seleção

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Lista

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


2. Query
O “relatório” criado fica disponível a todos os usuários que possuam acesso ao infoset ligado à query.
Para criar uma query se faz necessário:
- Infoset: Base de Informação;
- Grupo de Usuários: usuários que terão acesso ao infoset.

Ou seja, precisamos do conjunto: QUERY (SQ01) + INFOSET (SQ02) + Grupo de Usuários (SQ03).

2.1. Infoset (Transação SQ02)


No infoset definimos as informações, tabelas e campos, disponíveis para utilização em uma query.

Informar o nome da tabela base e avançar.

Como exemplo utilizaremos a tabela SPFLI.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Inserindo uma nova tabela ( ).

Teremos:

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Acionar o botão Infoset ( ) para seguir com a definição dos campos:

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Para incluir um campo, basta arrastá-lo ao grupo desejado.
Após a definição dos campos, gerar o infoset ( ).

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


2.2. Grupo de Usuários (Transação SQ03)
Ao grupo de usuário, efetuamos a atribuição dos infosets que poderão ser utilizados pelo grupo e,
também, dos usuários que fazem parte do grupo.

Atribuição – Infosets

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Atribuição – Usuários

2.3. Query (Transação SQ01)


Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com
Na query definimos quais serão os parâmetros de seleção e as colunas de saída do relatório.

Efetuar a seleção dos campos (Tela de Seleção e Lista de Saída).

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Testar

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


OBS:
- Área de trabalho

Área standard permite a utilização da transação START_REPORT.


A transação START_REPORT é utilizada para associar a query criada a uma transação.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


V. LSMW (Legacy System Migration Workbench)
Transação para criação de programas de carga de dados.
Definir o nome do Projeto, do Subprojeto e do Objeto.

Acionar o botão Executar.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


No passo “Maintain Object Attributes” definimos qual a carga e como ela será efetuada.

Obs: Os demais passos dependem do método selecionado. Como exemplo, utilizaremos o Direct Input
para mestre de materiais.

No passo “Maintain Source Structures” definimos a(s) estrutura(s) de entrada dos dados.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


No passo “Maintain Source Fields” definimos os campos da(s) estrutura(s).

No passo “Maintain Structure Relations” efetuamos a ligação entre a(s) estrutura(s) de entrada e a(s)
estrutura(s) de carga.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


No passo “Maintain Field Mapping and Conversion Rules” efetuamos a amarração entre os campos
origem e destino.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


O passo “Maintain Fixed Values, Translations, User-Defined Routines” não é obrigatório. Este passo
serve para a criação de constantes, rotinas (forms) e traduções. Os objetos criados aqui ficam
disponíveis para todo o projeto.
O passo “Specify Files” é utilizado para indicar a origem do(s) arquivo(s) de entrada e onde serão
gravados os dados importados e convertidos. É neste passo que definimos também o padrão do
arquivo importado (separado por tabulação, separado por “;”, etc).

No passo “Assign Files” efetuamos a ligação entre a(s) estrutura(s) de entrada, definida(s) no passo
“Maintain Source Structures”, e o arquivo de entrada definido no passo acima.
No passo “Import Data” é efetuada a leitura do arquivo de entrada.
No passo “Display Imported Data” é possível exibir os dados importados.
No passo “Convert Data” é efetuada a transferência dos dados importados (de origem) para a(s)
estrutura(s) de destino. Essa conversão é efetuada segundo as regras definidas no passo “Maintain
Field Mapping and Conversion Rules”.
No passo “Display Converted Data” é possível exibir os dados convertidos.
No passo “Start Direct Input Program” é efetuada a transferência dos dados convertido para o(s)
objeto(s) que será criado/modificado. Ou seja, é neste passo que o objeto, em nosso exemplo material,
será criado ou modificado.

Obs: A opção “Start Direct Input Program” existe devido ao fato de escolhermos no passo “Maintain
Object Attributes” a opção DI (Direct Input). Escolhendo, por exemplo, a opção Batch Input, teríamos
após a opção “Display Converted Data” as opções “Create Batch Input Session” e “Run Batch Input
Session”.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


VI. SHDB (Batch Input Transaction Recorder)
Transação utilizada para efetuar o mapeamento (telas e comandos) de uma transação.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


VII. BAPI (BAPI Explorer)
Business Application Programming Interface

Na transação BAPI, é possível procurar uma bapi de acordo com a área de negócio.

Identificando um campo em uma bapi


Utilizando como exemplo a bapi para criação de “Pedido de Compra” - BAPI_PO_CREATE1.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Visualizando os campos da estrutura de importação, BAPIMEPOHEADER, temos:

- Obtendo detalhes do campo “Pedido” (acionando F1 e depois Informação Técnica):

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Efetuando um click duplo sobre o elemento de dados EBELN:

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Observe que o nome informado em “Nome componente default” é o mesmo utilizado na estrutura de
importação BAPIMEPOHEADER.

Obs: Nem sempre os nomes dos campos são idênticos. Em algumas bapis os nomes são parecidos.
Por exemplo, na bapi para criação de documentos DMS (BAPI_DOCUMENT_CREATE2) o campo
número do documento é denominado “DOCUMENTNUMBER”. No elemento de dados (DOKNR)
associado ao campo número de documento na transação CV01N, temos a denominação
“DOCUMENT_NUMBER”.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


VIII. Exit / Badi / Field Exit
Exit, badi e field-exit são utilizadas para inserir códigos “Z” no processamento de transações standard.
Exit e badi possuem o mesmo conceito, diferenciam-se apenas na maneira de implementação. São
acionadas durante algum evento na transação standard como por exemplo a gravação de um
documento, a liberação de uma ordem, etc.
Field-exit normalmente é utilizada para efetuar a validação de um campo de uma transação como por
exemplo a validação do CNPJ no cadastro de cliente. A field-exit fica associada diretamente ao
elemento de dados do campo que se deseja validar e pode ser ativada de maneira global (a validação
é efetuada em todas as transações que possuírem um campo com o elemento de dados associado à
field-exit) ou restrita (atribuída a um programa e tela específica).

Exemplo de como encontrar exit e badi para uma transação


Utilizando como exemplo a transação para criação de notas de qualidade, QM01.
Acessar a transação SE93 e exibir detalhes da transação QM01:

Efetuar um click duplo sobre o campo pacote (QQM).

Na exibição do pacote QQM, acionar o botão “Exibir lista de objetos” ( ).

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Nos pacotes normalmente existem grupos de funções para “Customer Exits” (Exits) e ampliações
(Badis).

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


IX. Debug
É possível efetuar um debug em um programa ABAP através do comando /H ou criando um ponto de
parada no programa.
Exemplo de programa em modo de debug:

O comando “F5” executa uma etapa individual.


O comando “F6” executa uma rotina (um form, um call function, etc) de uma só vez passando para
próxima linha executável do programa.
O comando “F7” retorna para a próxima linha executável após a chamada da rotina (um form, um call
function, etc) atual. Tomando a tela acima como exemplo, ao acionar “F7” voltaríamos para uma linha
após a chamada do form pai (ou seja para a linha após o comando perform pai).

O comando “F8” efetua o todo o processamento do ponto atual ( ) até o cursor (linha selecionada).
Se não houver nenhuma linha selecionada antes da execução do “F8”, o processamento é efetuado
por completo (ou até um ponto de parada ativo, caso exista um).

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Criação de “Pontos de parada”

 Em modo debug:

 Ativando um ponto de parada em um programa ativo:

Basta acionar o botão na linha desejada

 Incluindo no programa uma linha com o comando break-point ou break <user>.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


X. Análise de Performance
SE30: Análise tempo execução objetos ABAP
Com essa transação é possível avaliar a execução de um programa, de uma transação ou de um
módulo de função.
Abaixo exemplo da execução de um programa:

Acionando o botão “Executar”, o programa (ou transação/função) informado é iniciado.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Preencher os parâmetros e executar o programa normalmente.
Após a execução do programa, voltar para tela inicial da transação SM30.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Observe que o nome do arquivo para avaliação foi modificado. A transação SM30 gerou um arquivo
com os dados da execução do programa ZTESTE_PERFORMANCE.

Acionando o botão “Avaliar”, temos o gráfico da execução:

O gráfico acima exibe como está o consumo do programa executado, como o programa está
consumindo os recursos do ambiente.
Os recursos do ambiente, são aqui distribuídos em:

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


- ABAP: tempo gasto para execução das rotinas ABAP (chamadas de forms, atribuição de valores a
variáveis e tabelas internas, etc);
- Banco de Dados: tempo gasto no acesso ao banco de dados (select, insert, delete, modify, etc);
- Sistema: tempo gasto pelo sistema, por exemplo, para exibição de uma tela ou de uma mensagem.
Observe que o programa ZTESTE_PERFORMANCE está consumindo muito Banco de Dados (está
gastando muito tempo em acesso aos dados).

Acionando o botão “Lista de Ocorrências” ( ) , temos os detalhes da execução:

Como no programa utilizado para testes temos o problema está no acesso ao banco de dados,
podemos filtrar a lista acima mantendo apenas os registros do tipo “BD” (Banco de Dados).

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Na lista, temos os pontos de acesso ao banco de dados e seu consumo.
No exemplo acima, observe que os pontos críticos (maior consumo segundo percentual exibido) estão
no programa ZTESTE_PERFORMANCE no acesso às tabelas CAUFV e RESB.
Posicionando o cursor sobre a linha e acionando o botão “Exibir Texto Fonte”, é possível navegar para
o ponto do programa onde a instrução é executada.

Exibição do programa:

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


Obs: O aconselhável é que a execução do programa esteja “balanceada”.

Observe que no exemplo acima o gráfico de consumo está mais distribuído. O programa está
distribuindo melhor a carga de processamento utilizando bem os recursos do ambiente.

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com


XI. Transações Úteis
CMOD Ampliações
DB20 Atualizar estatísticas de banco dados
SE03 Ferramentas de Transport Organizer
SE18 BAdI Builder - definições
SHD0 Variantes de transação e de tela
SM01 Bloquear Transações
SM04 Lista de usuários
SM12 Exibir e eliminar bloqueios
SM13 Administrar registros de atualização
SM37 Síntese da seleção de jobs
SM51 Lista dos sistemas SAP
SMOD Administração de ampliações SAP
ST05 Trace
SUIM Sistema info usuário

Academia ABAP/SAP – www.ztreinamentos.com / ztreinamentos@googlegroups.com

Você também pode gostar