Você está na página 1de 49

Outsourcing

ABAP/4 – Para Funcionais


Í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 ....................................................................................................................... 7
6. Tomadas de Decisão..................................................................................................................................... 8
7. Blocos de Repetição...................................................................................................................................... 8

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


1. O que é ABAP/4? .......................................................................................................................................... 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/4............................................................................................................. 10
7. Variáveis de Sistema ................................................................................................................................... 11
8. Controle de Fluxos nos Programas ABAP/4 ............................................................................................... 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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 2 de 49


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/4 ....................................................................................................................... 18
12.1. Select ............................................................................................................................................... 18
12.2. Insert ................................................................................................................................................ 18
12.3. Update.............................................................................................................................................. 18
12.4. Modify............................................................................................................................................... 18
12.5. Delete............................................................................................................................................... 18

IV. SQVI / QUERY ........................................................................................................................ 19


1. SQVI (QuickViewer)..................................................................................................................................... 19
2. Query ........................................................................................................................................................... 22
2.1. Infoset (Transação SQ02).................................................................................................................. 22
2.2. Grupo de Usuários (Transação SQ03) .............................................................................................. 26
2.3. Query (Transação SQ01)................................................................................................................... 27

V. LSMW (LEGACY SYSTEM MIGRATION WORKBENCH) ........................................................ 31

VI. SHDB (BATCH INPUT TRANSACTION RECORDER) ............................................................ 36

VII. BAPI (BAPI EXPLORER)........................................................................................................ 37

VIII. EXIT / BADI / FIELD EXIT ..................................................................................................... 40

IX. DEBUG.................................................................................................................................... 42

X. ANÁLISE DE PERFORMANCE ................................................................................................ 44

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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 3 de 49


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

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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 4 de 49


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:

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 5 de 49


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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 6 de 49


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

5.5. Operador Lógico - NÃO

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 7 de 49


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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 8 de 49


III. Introdução – ABAP/4

1. O que é ABAP/4?
ABAP/4 é 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).

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 9 de 49


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/4


Em ABAP/4 é 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.
Também estão disponíveis funções matemáticas como por exemplo: EXP, LOG, SIN, COS, SQRT,
DIV, MOD.

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 10 de 49


7. Variáveis de Sistema
ABAP/4 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/4

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.

Também podemos utilizar operadores especiais:


IF <f1> BETWEEN <f2> AND <f3>. Para validar ranges
IF <f1> IS INITAL. Para validar valores iniciais.
ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 11 de 49
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.

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 12 de 49


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.

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 13 de 49


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.

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 14 de 49


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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 15 de 49


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.

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 16 de 49


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:

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 17 de 49


12. Instruções SQL de ABAP/4
ABAP/4 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>.
DELETE FROM <tab> FROM TABLE <intab>.
ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 18 de 49
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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 19 de 49


Acionando “Voltar” (F3)

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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 20 de 49


Executando
Tela de Seleção

Lista

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 21 de 49


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.

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 22 de 49


Inserindo uma nova tabela ( ).

Teremos:

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 23 de 49


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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 24 de 49


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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 25 de 49


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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 26 de 49


Atribuição – Usuários

2.3. Query (Transação SQ01)


Na query definimos quais serão os parâmetros de seleção e as colunas de saída do relatório.

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 27 de 49


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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 28 de 49


Testar

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 29 de 49


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.

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 30 de 49


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.

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 31 de 49


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.

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 32 de 49


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.

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 33 de 49


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

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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 34 de 49


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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 35 de 49


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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 36 de 49


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.

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 37 de 49


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

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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 38 de 49


Efetuando um click duplo sobre o elemento de dados EBELN:

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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 39 de 49


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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 40 de 49


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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 41 de 49


IX. Debug
É possível efetuar um debug em um programa ABAP/4 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).

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 42 de 49


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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 43 de 49


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.

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 44 de 49


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

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:

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 45 de 49


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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 46 de 49


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

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.

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 47 de 49


Exibição do programa:

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.

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 48 de 49


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

ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 49 de 49

Você também pode gostar