Aprendendo lógica ABAP

53
8/17/2019 Aprendendo lógica ABAP http://slidepdf.com/reader/full/aprendendo-logica-abap 1/53  ABAP

Transcript of Aprendendo lógica ABAP

Page 1: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 1/53

 

ABAP

Page 2: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 2/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

Í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 

Page 3: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 3/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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 MIGRATION WORKBENCH) ........................................................... 33 

VI. SHDB (BATCH INPUT TRANSACTION 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 

Page 4: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 4/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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

Page 5: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 5/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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, englobandofó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 qualconsiste 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:

Page 6: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 6/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

Exemplo de Fluxograma

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

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

Exemplo de Pseudocódigo

4. Instruções Básicas

Page 7: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 7/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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

Page 8: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 8/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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 decondiçõ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 seufuncionamento controlado por decisão, podendo executar um determinado conjunto de instruçõesenquanto a condição verificada for verdadeira. No momento em que esta condição se torna falsa oprocessamento da rotina é desviado.

Exemplo:

Enquanto Contador < 10 façaContador = Contador + 1Soma = Soma + Contador

Fim-Enquanto

Page 9: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 9/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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 - AplicationP - Programming 

2. Instruções

Um programa ABAP consiste em uma série de instruções que começam com uma palavra chave eterminam 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).

Page 10: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 10/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

4. Objetos de DadosExistem 3 classes de objetos de dados:

  Campos de bases de dados: existentes no dicionário de dados. Podemos declarar as tabelas queserã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 DATAExemplo: 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. 

Page 11: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 11/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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 utilizadasnos 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 parasubdividir 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 emdistintas modalidades.

IF <Cond.>. IF <Cond.>. IF <Cond.>.…  …  … 

ENDIF. ELSE. ELSEIF.…  … 

ENDIF. ELSE.… ENDIF.

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

E AND Ou ORIgual = , 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.

Page 12: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 12/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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

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

Page 13: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 13/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

9. Tabelas Internas As tabelas internas são utilizadas para guardar vários registros de dados com a mesma estrutura namemó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. 

Page 14: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 14/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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

Page 15: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 15/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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á omandante em uso.

11.2. Sentenças em SQL Nativo

Podemos executar qualquer sentença de SQL permitida pelo gerenciador da base de dados sobre oqual o sistema R/3 tenha sido implementado, utilizando EXEC SQL. Neste caso as instruções da basede 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 camposMANDT e MATNR. Isto significa que, para um determinado mandante, apenas um registro para cadamaterial poderá ser gravado.

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

Page 16: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 16/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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 nabusca dos registros, a existência do índice prejudica a performance do banco na criação de novosregistros.

Page 17: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 17/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

11.5. Relacionamento

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

Exemplo:

Page 18: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 18/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

12. Instruções SQL de ABAP ABAP tem um subconjunto de sentenças SQL para sua aplicação sobre as tabelas da base de dadosSAP.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  leruma 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 oumodificado 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>. 

Page 19: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 19/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

DELETE FROM <tab> FROM TABLE <intab>. 

Page 20: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 20/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

IV. SQVI / Query1. SQVI (QuickViewer)

Criação de “relatório” para uso pessoal. O “relatório” fica disponível apenas ao usuário que efetuou suacriação.

Transação SQVI

Page 21: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 21/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

 Acionando “Voltar” (F3) 

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

Page 22: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 22/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

ExecutandoTela de Seleção

Page 23: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 23/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

Lista

Page 24: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 24/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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.

Page 25: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 25/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

Inserindo uma nova tabela ( ).

Teremos:

Page 26: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 26/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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

Page 27: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 27/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

Para incluir um campo, basta arrastá-lo ao grupo desejado.

 Após a definição dos campos, gerar o infoset ( ).

Page 28: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 28/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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

Page 29: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 29/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

 Atribuição  – Usuários

2.3. Query (Transação SQ01)

Page 30: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 30/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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

Page 31: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 31/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

Testar

Page 32: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 32/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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.

Page 33: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 33/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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.

Page 34: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 34/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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. 

Page 35: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 35/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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.

Page 36: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 36/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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

Page 37: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 37/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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 ficamdisponíveis para todo o projeto.

O passo “Specify Files” é utilizado para indicar a origem do(s) arquivo(s) de entrada e onde serãogravados os dados importados e convertidos. É neste passo que definimos também o padrão doarquivo 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 “Main tainField 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 “MaintainObject Attributes” a opção DI (Direct Input). Escolhendo, por exemplo, a opção Batch Input, teríamosapós a opção “Display Converted Data” as opções “Create Batch Input Session” e “Run Batch InputSession”. 

Page 38: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 38/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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

Page 39: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 39/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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.

Page 40: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 40/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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

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

Page 41: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 41/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

Efetuando um click duplo sobre o elemento de dados EBELN:

Page 42: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 42/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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

Page 43: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 43/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

VIII. Exit / Badi / Field ExitExit, 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ãoacionadas durante algum evento na transação standard como por exemplo a gravação de umdocumento, a liberação de uma ordem, etc.

Field-exit normalmente é utilizada para efetuar a validação de um campo de uma transação como porexemplo a validação do CNPJ no cadastro de cliente. A field-exit fica associada diretamente aoelemento 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” ( ).

Page 44: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 44/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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

Page 45: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 45/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

IX. DebugÉ possível efetuar um debug em um programa ABAP através do comando /H ou criando um ponto deparada 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 parapró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 callfunction, etc) atual. Tomando a tela acima como exemplo, ao acionar “F7” voltaríamos para uma linhaapó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 é efetuadopor completo (ou até um ponto de parada ativo, caso exista um).

Page 46: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 46/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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

Page 47: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 47/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

X. Análise de PerformanceSE30: 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 ummó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. 

Page 48: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 48/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

Preencher os parâmetros e executar o programa normalmente.

 Após a execução do programa, voltar para tela inicial da transação SM30.

Page 49: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 49/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

Observe que o nome do arquivo para avaliação foi modificado. A transação SM30 gerou um arquivocom 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:

Page 50: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 50/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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

Page 51: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 51/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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ãono 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 parao ponto do programa onde a instrução é executada.

Exibição do programa:

Page 52: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 52/53

 

 Academia ABAP/SAP – www.ztreinamentos.com  / [email protected]

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.

Page 53: Aprendendo lógica ABAP

8/17/2019 Aprendendo lógica ABAP

http://slidepdf.com/reader/full/aprendendo-logica-abap 53/53

 

XI. Transações ÚteisCMOD Ampliações

DB20 Atualizar estatísticas de banco dadosSE03 Ferramentas de Transport Organizer

SE18 BAdI Builder - definiçõesSHD0 Variantes de transação e de telaSM01 Bloquear Transações

SM04 Lista de usuáriosSM12 Exibir e eliminar bloqueios

SM13 Administrar registros de atualizaçãoSM37 Síntese da seleção de jobs

SM51 Lista dos sistemas SAPSMOD Administração de ampliações SAPST05 Trace

SUIM Sistema info usuário