Você está na página 1de 49

Outsourcing

ABAP/4 – Para Funcionais

Índice I. OBJETIVO ................................................................................................................................... II. INTRODUÇÃO – LÓGICA DE PROGRAMAÇÃO ....................................................................... 4 5 1. Conceito de
Índice I. OBJETIVO ................................................................................................................................... II. INTRODUÇÃO – LÓGICA DE PROGRAMAÇÃO ....................................................................... 4 5 1. Conceito de
Índice
Índice

I. OBJETIVO

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

.......................................................................

4

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

.......................................................................................................................

  • 5.2. Operadores Relacionais

......................................................................................................................

7

7

  • 5.3. Operador Lógico - E

.............................................................................................................................

  • 5.4. Operador Lógico - OU

..........................................................................................................................

  • 5.5. Operador Lógico - NÃO

.......................................................................................................................

7

7

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

...............................................................................................

8.1. Condições

..........................................................................................................................................

  • 8.2. Blocos de Repetição

..........................................................................................................................

  • 8.3. Sentenças de Controle

......................................................................................................................

11

11

12

12

Tabelas Internas

  • 9. ..........................................................................................................................................

13

  • 9.1. Como Declarar Tabelas Internas

.......................................................................................................

13

  • 9.2. Carregando uma Tabela Interna

........................................................................................................

  • 9.3. Ordenando uma Tabela Interna

.........................................................................................................

13

13

  • 9.4. Processamento de uma Tabela Interna

.............................................................................................

13

  • 9.5. Leitura de Registro de uma Tabela

...................................................................................................

  • 9.6. Modificando Tabelas Internas

............................................................................................................

14

14

  • 9.7. Outras Instruções para Tabelas Internas

..........................................................................................

14

10. Dicionário de Dados

..................................................................................................................................

14

11. Outros Aspectos do Dicionário de Dados .................................................................................................. 15 11.1. Controle de Mandante 15 11.2. Sentenças
11. Outros Aspectos do Dicionário de Dados .................................................................................................. 15 11.1. Controle de Mandante 15 11.2. Sentenças

11. Outros Aspectos do Dicionário de Dados

..................................................................................................

15

  • 11.1. Controle de Mandante

15

  • 11.2. Sentenças em SQL Nativo

...............................................................................................................

15

Chave Primária

  • 11.3. ................................................................................................................................

15

  • 11.4. Indices ..............................................................................................................................................

16

Relacionamento

  • 11.5. ...............................................................................................................................

17

12. Instruções SQL de ABAP/4

18

Select

  • 12.1. ...............................................................................................................................................

18

Insert

  • 12.2. ................................................................................................................................................

18

Update

  • 12.3. ..............................................................................................................................................

18

Modify

  • 12.4. ...............................................................................................................................................

18

Delete

  • 12.5. ...............................................................................................................................................

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

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

I. Objetivo O objetivo deste workshop é efetuar uma introdução sobre ABAP/4 e algumas ferramentas técnicas
I. Objetivo O objetivo deste workshop é efetuar uma introdução sobre ABAP/4 e algumas ferramentas técnicas

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.

II. Introdução – Lógica de Programação 1. Conceito de Algoritmo São regras formais para obtenção de
II. Introdução – Lógica de Programação 1. Conceito de Algoritmo São regras formais para obtenção de

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:

II. Introdução – Lógica de Programação 1. Conceito de Algoritmo São regras formais para obtenção de
Exemplo de Fluxograma 3. Formas de Representação Narrativa (Pseudocódigo) Consiste em representar descritivamente (linguagem estruturada) a

Exemplo de Fluxograma

Exemplo de Fluxograma 3. Formas de Representação Narrativa (Pseudocódigo) Consiste em representar descritivamente (linguagem estruturada) a
Exemplo de Fluxograma 3. Formas de Representação Narrativa (Pseudocódigo) Consiste em representar descritivamente (linguagem estruturada) a
  • 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

Exemplo de Fluxograma 3. Formas de Representação Narrativa (Pseudocódigo) Consiste em representar descritivamente (linguagem estruturada) a
  • 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.

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

5. Operadores

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

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

  • 5.1. Operadores Aritméticos

5. Operadores São utilizados na definição de expressões aritméticas e lógicas. 5.1. Operadores Aritméticos 5.2. Operadores
  • 5.2. Operadores Relacionais

5. Operadores São utilizados na definição de expressões aritméticas e lógicas. 5.1. Operadores Aritméticos 5.2. Operadores
  • 5.3. Operador Lógico - E

5. Operadores São utilizados na definição de expressões aritméticas e lógicas. 5.1. Operadores Aritméticos 5.2. Operadores
  • 5.4. Operador Lógico - OU

5. Operadores São utilizados na definição de expressões aritméticas e lógicas. 5.1. Operadores Aritméticos 5.2. Operadores
  • 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

6. Tomadas de Decisão

6. Tomadas de Decisão São utilizadas para controlar o fluxo de processamento do programa. O controle

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

III. Introdução – ABAP/4 1. O que é ABAP/4? ABAP/4 é uma linguagem de programação de
III. Introdução – ABAP/4 1. O que é ABAP/4? ABAP/4 é uma linguagem de programação de

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

4. Objetos de Dados Existem 3 classes de objetos de dados: • Campos de bases de
  • 4. Objetos de Dados

Existem 3 classes de objetos de dados:

4. Objetos de Dados Existem 3 classes de objetos de dados: • Campos de bases de

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)

4. Objetos de Dados Existem 3 classes de objetos de dados: • Campos de bases de
  • 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.

7. Variáveis de Sistema ABAP/4 tem algumas variáveis internas que se atualizam automaticamente e que podem

7. Variáveis de Sistema

7. Variáveis de Sistema ABAP/4 tem algumas variáveis internas que se atualizam automaticamente e que podem

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

ELSE...

ENDIF , que poderá aparecer em

IF <Cond.>.

IF <Cond.>.

IF <Cond.>.

ENDIF.

ELSE.

ELSEIF.

ENDIF.

ELSE.

 

ENDIF.

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

E Ou Igual Diferente Maior Menor Maior ou igual Menor ou igual

AND OR = , EQ <> , EN > , GT < , LT >= , GE <= , LE

Existem ainda operadores adicionais para comparar cadeias de caracteres:

<f1> CO <f2> (Contains Only) <f1> CN <f2> (Contains Not Only) <f1> CA <f2> (Contains Any) <f1> NA <f2> (Contains Not Any) <f1> CS <f2> (Contains String) <f1> NS <f2> (Contains No String) <f1> CP <f2> (Contains Pattern)

: f1 somente contém caracteres de f2. : negação da anterior. : f1 contém algum caractere de f2. : negação da anterior. : f1 contém a cadeia f2. : negação da anterior. : 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.

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

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.

9. Tabelas Internas As tabelas internas são utilizadas para guardar vários registros de dados com a

9. Tabelas Internas

9. Tabelas Internas As tabelas internas são utilizadas para guardar vários registros de dados com a

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>

SORT

...

.... ASCENDING. o DESCENDING.

<campo n>.

  • 9.4. Processamento de uma Tabela Interna

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

...

ENDLOOP.

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

9.5. Leitura de Registro de uma Tabela Podemos buscar um registro em uma tabela sem a
  • 9.5. Leitura de Registro de uma Tabela

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

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:

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

Os elementos de dados descrevem o significado de um campo independente da tabela. Os domínios descrevem o campo de valores possíveis.

11. Outros Aspectos do Dicionário de Dados 11.1. Controle de Mandante O controle é automático (desde
11. Outros Aspectos do Dicionário de Dados 11.1. Controle de Mandante O controle é automático (desde

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.

11. Outros Aspectos do Dicionário de Dados 11.1. Controle de Mandante O controle é automático (desde

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

11.4. Indices Os índices são criados para otimizar o processo de busca de registros segundo um
11.4. Indices Os índices são criados para otimizar o processo de busca de registros segundo um
11.4. Indices Os índices são criados para otimizar o processo de busca de registros segundo um

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.

11.4. Indices Os índices são criados para otimizar o processo de busca de registros segundo um

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.

11.5. Relacionamento Em bancos de dados relacionais, como o próprio nome indica, as tabelas estão relacionadas.

11.5. Relacionamento

11.5. Relacionamento Em bancos de dados relacionais, como o próprio nome indica, as tabelas estão relacionadas.

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:

11.5. Relacionamento Em bancos de dados relacionais, como o próprio nome indica, as tabelas estão relacionadas.
12. Instruções SQL de ABAP/4 ABAP/4 tem um subconjunto de sentenças SQL para sua aplicação sobre

12. Instruções SQL de ABAP/4

12. Instruções SQL de ABAP/4 ABAP/4 tem um subconjunto de sentenças SQL para sua aplicação sobre

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

IV. SQVI / Query 1. SQVI (QuickViewer) Criação de “relatório” para uso pessoal. O “relatório” fica
IV. SQVI / Query 1. SQVI (QuickViewer) Criação de “relatório” para uso pessoal. O “relatório” fica

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

IV. SQVI / Query 1. SQVI (QuickViewer) Criação de “relatório” para uso pessoal. O “relatório” fica
IV. SQVI / Query 1. SQVI (QuickViewer) Criação de “relatório” para uso pessoal. O “relatório” fica
Acionando “Voltar” (F3) Selecionar os campos de seleção e os campos da lista. ABAP/4 – Para
Acionando “Voltar” (F3) Selecionar os campos de seleção e os campos da lista. ABAP/4 – Para
Acionando “Voltar” (F3) Selecionar os campos de seleção e os campos da lista. ABAP/4 – Para

Acionando “Voltar” (F3)

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

Acionando “Voltar” (F3) Selecionar os campos de seleção e os campos da lista. ABAP/4 – Para
Executando Tela de Seleção Lista ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 21

Executando Tela de Seleção

Executando Tela de Seleção Lista ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 21
Executando Tela de Seleção Lista ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 21

Lista

Executando Tela de Seleção Lista ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 21
2. Query O “relatório” criado fica disponível a todos os usuários que possuam acesso ao infoset

2. Query

2. Query O “relatório” criado fica disponível a todos os usuários que possuam acesso ao infoset

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.

2. Query O “relatório” criado fica disponível a todos os usuários que possuam acesso ao infoset

Informar o nome da tabela base e avançar.

Como exemplo utilizaremos a tabela SPFLI.

Inserindo uma nova tabela ( ). Teremos: ABAP/4 – Para Funcionais CPM Braxis – 2008 –
Inserindo uma nova tabela ( ). Teremos: ABAP/4 – Para Funcionais CPM Braxis – 2008 –
Inserindo uma nova tabela ( ).
Inserindo uma nova tabela (
).
Inserindo uma nova tabela ( ). Teremos: ABAP/4 – Para Funcionais CPM Braxis – 2008 –

Teremos:

Acionar o botão Infoset ( ) para seguir com a definição dos campos: ABAP/4 – Para
Acionar o botão Infoset ( ) para seguir com a definição dos campos: ABAP/4 – Para
Acionar o botão Infoset ( ) para seguir com a definição dos campos: ABAP/4 – Para

Acionar o botão Infoset (

Acionar o botão Infoset ( ) para seguir com a definição dos campos: ABAP/4 – Para

) para seguir com a definição dos campos:

Acionar o botão Infoset ( ) para seguir com a definição dos campos: ABAP/4 – Para
Para incluir um campo, basta arrastá-lo ao grupo desejado. Após a definição dos campos, gerar o
Para incluir um campo, basta arrastá-lo ao grupo desejado. Após a definição dos campos, gerar o
Para incluir um campo, basta arrastá-lo ao grupo desejado. Após a definição dos campos, gerar o
Para incluir um campo, basta arrastá-lo ao grupo desejado.
Após a definição dos campos, gerar o infoset (
).
2.2. Grupo de Usuários (Transação SQ03) Ao grupo de usuário, efetuamos a atribuição dos infosets que

2.2. Grupo de Usuários (Transação SQ03)

2.2. Grupo de Usuários (Transação SQ03) Ao grupo de usuário, efetuamos a atribuição dos infosets que

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.

2.2. Grupo de Usuários (Transação SQ03) Ao grupo de usuário, efetuamos a atribuição dos infosets que

Atribuição – Infosets

2.2. Grupo de Usuários (Transação SQ03) Ao grupo de usuário, efetuamos a atribuição dos infosets que
Atribuição – Usuários 2.3. Query (Transação SQ01) Na query definimos quais serão os parâmetros de seleção

Atribuição – Usuários

Atribuição – Usuários 2.3. Query (Transação SQ01) Na query definimos quais serão os parâmetros de seleção
Atribuição – Usuários 2.3. Query (Transação SQ01) Na query definimos quais serão os parâmetros de seleção

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.

Atribuição – Usuários 2.3. Query (Transação SQ01) Na query definimos quais serão os parâmetros de seleção
Efetuar a seleção dos campos (Tela de Seleção e Lista de Saída). ABAP/4 – Para Funcionais
Efetuar a seleção dos campos (Tela de Seleção e Lista de Saída). ABAP/4 – Para Funcionais
Efetuar a seleção dos campos (Tela de Seleção e Lista de Saída). ABAP/4 – Para Funcionais

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

Efetuar a seleção dos campos (Tela de Seleção e Lista de Saída). ABAP/4 – Para Funcionais
Testar ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 29 de 49

Testar

Testar ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 29 de 49
Testar ABAP/4 – Para Funcionais CPM Braxis – 2008 – página 29 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

OBS:

- Área de trabalho

OBS: - Área de trabalho Área standard permite a utilização da transação START_REPORT. A transação START_REPORT
OBS: - Área de trabalho Área standard permite a utilização da transação START_REPORT. A transação START_REPORT
OBS: - Área de trabalho Área standard permite a utilização da transação START_REPORT. A transação START_REPORT

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

V. LSMW (Legacy System Migration Workbench) Transação para criação de programas de carga de dados. Definir
V. LSMW (Legacy System Migration Workbench) Transação para criação de programas de carga de dados. Definir

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.

V. LSMW (Legacy System Migration Workbench) Transação para criação de programas de carga de dados. Definir

Acionar o botão Executar.

V. LSMW (Legacy System Migration Workbench) Transação para criação de programas de carga de dados. Definir
No passo “Maintain Object Attributes” definimos qual a carga e como ela será efetuada. Obs: Os
No passo “Maintain Object Attributes” definimos qual a carga e como ela será efetuada. Obs: Os

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

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

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.

No passo “Maintain Object Attributes” definimos qual a carga e como ela será efetuada. Obs: Os
No passo “Maintain Source Fields” definimos os campos da(s) estrutura(s). No passo “Maintain Structure Relations” efetuamos
No passo “Maintain Source Fields” definimos os campos da(s) estrutura(s). No passo “Maintain Structure Relations” efetuamos

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

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

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

No passo “Maintain Source Fields” definimos os campos da(s) estrutura(s). No passo “Maintain Structure Relations” efetuamos
No passo “Maintain Field Mapping and Conversion Rules” efetuamos a amarração entre os campos origem e
No passo “Maintain Field Mapping and Conversion Rules” efetuamos a amarração entre os campos origem e

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

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

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
No passo “Assign Files” efetuamos a ligação entre a(s) estrutura(s) de entrada, definida(s) no passo “Maintain
No passo “Assign Files” efetuamos a ligação entre a(s) estrutura(s) de entrada, definida(s) no passo “Maintain

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

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

VI. SHDB (Batch Input Transaction Recorder)

Transação utilizada para efetuar o mapeamento (telas e comandos) de uma transação.

VI. SHDB (Batch Input Transaction Recorder) Transação utilizada para efetuar o mapeamento (telas e comandos) de
VII. BAPI (BAPI Explorer) B usiness A pplication P rogramming I nterface Na transação BAPI, é
VII. BAPI (BAPI Explorer) B usiness A pplication P rogramming I nterface Na transação BAPI, é

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.

VII. BAPI (BAPI Explorer) B usiness A pplication P rogramming I nterface Na transação BAPI, é

Identificando um campo em uma bapi

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

VII. BAPI (BAPI Explorer) B usiness A pplication P rogramming I nterface Na transação BAPI, é
Visualizando os campos da estrutura de importação, BAPIMEPOHEADER, temos: - Obtendo detalhes do campo “Pedido” (acionando
Visualizando os campos da estrutura de importação, BAPIMEPOHEADER, temos: - Obtendo detalhes do campo “Pedido” (acionando

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

Visualizando os campos da estrutura de importação, BAPIMEPOHEADER, temos: - Obtendo detalhes do campo “Pedido” (acionando

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

Visualizando os campos da estrutura de importação, BAPIMEPOHEADER, temos: - Obtendo detalhes do campo “Pedido” (acionando
Efetuando um click duplo sobre o elemento de dados EBELN: Observe que o nome informado em
Efetuando um click duplo sobre o elemento de dados EBELN: Observe que o nome informado em

Efetuando um click duplo sobre o elemento de dados EBELN:

Efetuando um click duplo sobre o elemento de dados EBELN: Observe que o nome informado em

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

VIII. Exit / Badi / Field Exit Exit, badi e field-exit são utilizadas para inserir códigos
VIII. Exit / Badi / Field Exit Exit, badi e field-exit são utilizadas para inserir códigos

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:

VIII. Exit / Badi / Field Exit Exit, badi e field-exit são utilizadas para inserir códigos

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

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

VIII. Exit / Badi / Field Exit Exit, badi e field-exit são utilizadas para inserir códigos

).

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

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

IX. Debug É possível efetuar um debug em um programa ABAP/4 através do comando /H ou
IX. Debug É possível efetuar um debug em um programa ABAP/4 através do comando /H ou

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:

IX. Debug É possível efetuar um debug em um programa ABAP/4 através do comando /H ou

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

IX. Debug É possível efetuar um debug em um programa ABAP/4 através do comando /H ou

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

Criação de “Pontos de parada” • Em modo debug: • Ativando um ponto de parada em

Criação de “Pontos de parada”

Em modo debug:

Criação de “Pontos de parada” • Em modo debug: • Ativando um ponto de parada em
Criação de “Pontos de parada” • Em modo debug: • Ativando um ponto de parada em

Ativando um ponto de parada em um programa ativo:

Criação de “Pontos de parada” • Em modo debug: • Ativando um ponto de parada em

Basta acionar o botão

Criação de “Pontos de parada” • Em modo debug: • Ativando um ponto de parada em

na linha desejada

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

X. Análise de Performance SE30 : Análise tempo execução objetos ABAP Com essa transação é possível
X. Análise de Performance SE30 : Análise tempo execução objetos ABAP Com essa transação é possível

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:

X. Análise de Performance SE30 : Análise tempo execução objetos ABAP Com essa transação é possível

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

X. Análise de Performance SE30 : Análise tempo execução objetos ABAP Com essa transação é possível
Preencher os parâmetros e executar o programa normalmente. Após a execução do programa, voltar para tela
Preencher os parâmetros e executar o programa normalmente. Após a execução do programa, voltar para tela

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

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

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
O gráfico acima exibe como está o consumo do programa executado, como o programa está consumindo
O gráfico acima exibe como está o consumo do programa executado, como o programa está consumindo

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

O gráfico acima exibe como está o consumo do programa executado, como o programa está consumindo

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,
Como no programa utilizado para testes temos o problema está no acesso ao banco de dados,
Como no programa utilizado para testes temos o problema está no acesso ao banco de dados,

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

Como no programa utilizado para testes temos o problema está no acesso ao 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.

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

Exibição do programa:

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

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

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

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.

XI. Transações Úteis CMOD Ampliações DB20 Atualizar estatísticas de banco dados SE03 Ferramentas de Transport Organizer
XI. Transações Úteis CMOD Ampliações DB20 Atualizar estatísticas de banco dados SE03 Ferramentas de Transport Organizer

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