+ All Categories
Home > Documents > Apostila ABAP I

Apostila ABAP I

Date post: 18-Jan-2016
Category:
Upload: gorisilva
View: 22 times
Download: 0 times
Share this document with a friend
Description:
apostila abap
Popular Tags:
66
Treinamento ABAP WA | ABAP DICTIONARY 1 Sumário ABAP DICTIONARY ......................................................................................................................... 4 DATA ELEMENTS........................................................................................................................ 4 DOMAINS .................................................................................................................................. 4 STEP BY STEP (Data Element, Domain) ..................................................................................... 5 TABLES ....................................................................................................................................... 6 Fields ..................................................................................................................................... 7 FK ........................................................................................................................................... 7 Technical Settings .................................................................................................................. 7 Index ...................................................................................................................................... 8 STEP BY STEP (TABLE, FK, INDEX) .............................................................................................. 8 STRUCTURES............................................................................................................................ 10 STEP BY STEP (STRUCTURE) ..................................................................................................... 10 VIEWS ...................................................................................................................................... 11 STEP BY STEP (VIEW) ............................................................................................................... 11 SEARCH HELP ........................................................................................................................... 12 STEP BY STEP (SEARCH HELP, ASSOCIATION) .......................................................................... 14 ABAP PROGRAMMING ................................................................................................................ 15 Qual a função do R3 ? ............................................................................................................. 15 Por que saber isso ? ................................................................................................................ 16 Data Types and Data Objects .................................................................................................. 17 Data Objects ........................................................................................................................ 18 Data Types ........................................................................................................................... 20 WRITE ...................................................................................................................................... 21 PARAMETERS........................................................................................................................... 22 FRAMES ................................................................................................................................... 23 Processing Data ....................................................................................................................... 24 Assigning Values .................................................................................................................. 24 Reseting Values to their Initial Values................................................................................. 24 Numerical Operations ......................................................................................................... 25 Processing Character Strings (String Functions).................................................................. 27 Processing Sections of String............................................................................................... 27
Transcript
Page 1: Apostila ABAP I

Treinamento ABAP

WA | ABAP DICTIONARY 1

Sumário ABAP DICTIONARY ......................................................................................................................... 4

DATA ELEMENTS........................................................................................................................ 4

DOMAINS .................................................................................................................................. 4

STEP BY STEP (Data Element, Domain) ..................................................................................... 5

TABLES ....................................................................................................................................... 6

Fields ..................................................................................................................................... 7

FK ........................................................................................................................................... 7

Technical Settings .................................................................................................................. 7

Index ...................................................................................................................................... 8

STEP BY STEP (TABLE, FK, INDEX) .............................................................................................. 8

STRUCTURES ............................................................................................................................ 10

STEP BY STEP (STRUCTURE) ..................................................................................................... 10

VIEWS ...................................................................................................................................... 11

STEP BY STEP (VIEW) ............................................................................................................... 11

SEARCH HELP ........................................................................................................................... 12

STEP BY STEP (SEARCH HELP, ASSOCIATION) .......................................................................... 14

ABAP PROGRAMMING ................................................................................................................ 15

Qual a função do R3 ? ............................................................................................................. 15

Por que saber isso ? ................................................................................................................ 16

Data Types and Data Objects .................................................................................................. 17

Data Objects ........................................................................................................................ 18

Data Types ........................................................................................................................... 20

WRITE ...................................................................................................................................... 21

PARAMETERS ........................................................................................................................... 22

FRAMES ................................................................................................................................... 23

Processing Data ....................................................................................................................... 24

Assigning Values .................................................................................................................. 24

Reseting Values to their Initial Values ................................................................................. 24

Numerical Operations ......................................................................................................... 25

Processing Character Strings (String Functions).................................................................. 27

Processing Sections of String ............................................................................................... 27

Page 2: Apostila ABAP I

Treinamento ABAP

WA | ABAP DICTIONARY 2

EXERCISES (Declarations + Assigning Values + Operations) ................................................ 27

Field-Symbols ...................................................................................................................... 28

EXERCISES (Field-Symbol) .................................................................................................... 28

Controlling the program flow .................................................................................................. 29

Branching Conditionally ...................................................................................................... 29

EXERCISES (Conditionally) ................................................................................................... 30

Loops ................................................................................................................................... 31

Unconditional Loop (Do) ..................................................................................................... 31

Conditional Loop (While) .................................................................................................... 31

Terminating Loops ............................................................................................................... 31

EXERCISES (Loop) ................................................................................................................. 32

SELECT-OPTIONS ..........................................................................Erro! Indicador não definido.

Internal Tables ......................................................................................................................... 33

Create Internal Table With Header Line .............................................................................. 34

Create Internal Table Without Header Line ........................................................................ 34

Diferences between Internal Tables ................................................................................... 35

Operations on Entire Internal Table .................................................................................... 36

Operations on Individual Lines ............................................................................................ 37

EXERCISES (Declare, Append, Describe, Sort) ..................................................................... 38

EXERCISES (Read) ................................................................................................................ 38

EXERCISES (Modify, Delete) ................................................................................................ 38

EXERCISES (Loop ITAB , Control Level Processing) .............................................................. 39

Access Using Field Symbols ................................................................................................. 40

Open SQL ................................................................................................................................. 41

Overview ............................................................................................................................. 41

Return Codes ....................................................................................................................... 41

Reading Data ....................................................................................................................... 42

EXERCISES (SELECT) ............................................................................................................. 43

Inserting Lines ..................................................................................................................... 44

Changing Lines ..................................................................................................................... 44

Deleting Lines ...................................................................................................................... 45

Inserting or Changing Lines ................................................................................................. 46

Commiting Database Changes ............................................................................................ 46

Page 3: Apostila ABAP I

Treinamento ABAP

WA | ABAP DICTIONARY 3

EXERCISES (DB Operations) ................................................................................................. 46

Lists .......................................................................................................................................... 47

Creating Simple List with Write ........................................................................................... 47

EXERCISES (WRITE) .............................................................................................................. 48

Messages ................................................................................................................................. 49

Messages on screen ............................................................................................................ 49

EXERCISES (CLASS + MESSAGE) ........................................................................................... 49

Transactions ............................................................................................................................ 50

Reports .................................................................................................................................... 51

Description of Events .......................................................................................................... 51

Modularization Techniques ..................................................................................................... 54

Macro .................................................................................................................................. 54

Include ................................................................................................................................. 54

Subroutines ......................................................................................................................... 55

Function Modules................................................................................................................ 56

EXERCISES (Modularization Techniques) ............................................................................ 57

Working with Files ................................................................................................................... 59

Working with files in Application Server ............................................................................. 59

EXERCISES (files in Application Server)................................................................................ 62

Working with local files ....................................................................................................... 63

EXERCISES (Local files) ......................................................................................................... 63

ALV .............................................................................................................................................. 64

REUSE_ALV_GRID_DISPLAY ..................................................................................................... 64

PERFORMANCE – Best Practices ................................................................................................. 65

Page 4: Apostila ABAP I

Treinamento ABAP

WA | ABAP DICTIONARY 4

ABAP DICTIONARY

O dicionário de dados do ABAP/4 (DD) é uma fonte central de informações provenientes do sistema gerenciador de dados do SAP. Sua principal função é suportar a criação e o gerenciamento das definições de dados. É completamente integrado ao ABAP Development Workbench. Através dele, podemos criar e manipular tabelas, elemento de dados, domínios, search help, views ...

DATA ELEMENTS Define atributos do objeto tais como: Tipo, tamanho, casas decimais. Esses atributos podem

ser definidos diretamente ao elemento ou copiados do domínio a ele associado.

Responsável pela maneira como o objeto será apresentado ao usuário (label + documentação)

Um elemento de dados pode ser referenciado diretamente por um programa ABAP. Como

resultado, essas variáveis possuirão as características do elemento referenciado.

DOMAINS Descreve os valores válidos para um elemento de dados. O domínio especifica também

informações como o tipo de dados e o tamanho do campo. Uma vez alterado, todos os campos

ou componentes que estão referenciados a ele são modificados.

Page 5: Apostila ABAP I

Treinamento ABAP

WA | ABAP DICTIONARY 5

STEP BY STEP (Data Element, Domain)

- Domínio

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

- Elemento de Dados

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

Page 6: Apostila ABAP I

Treinamento ABAP

WA | ABAP DICTIONARY 6

TABLES

Repositório de armazenamento. Em uma tabela são armazenados dados persistentes, se você inserir dados, eles continuarão ai mesmo depois de você finalizar seu programa e ali ficarão até o seu ou outro programa alterá-los ou excluí-los. Tabelas podem ser definidas independentemente do banco de dados (DB2, Oracle, SQL) associado ao SAP.

Page 7: Apostila ABAP I

Treinamento ABAP

WA | ABAP DICTIONARY 7

Fields

- Nome do Campo: string de no máximo 16 caracteres podendo conter letras, números e underscores. Deve iniciar com uma letra.

- Chave: caracteriza o campo como campo-chave (PK). É necessário que os campos-chave de uma tabela estejam juntos no início da tabela, ou seja, um campo que não seja campo-chave não pode estar entre dois campos-chave.

- Tipo de dados: se o valor do mesmo será caractere, numérico, data ... - Tamanho: Número de casas ocupadas pelo campo. - Decimais: Número de casas decimais após o ponto flutuante. - Descrição Breve: Significado breve do campo.

FK

Para definir relações entre tabelas do ABAP Dictionary, criamos chaves estrangeiras (FK).

Usando essa chave, criamos rapidamente uma validação para o campo de entrada.

Technical Settings

Define como a tabela será armazenada no BD. Os parâmetros mais importantes são:

- Categoria de Dados: Determina em que área física do banco de dados (em ORACLE

do TABLESPACE) é arquivada a tabela.

Os tipos de dados mais importantes (à exceção de dados de sistema) são:

APPL0 dados mestre

APPL1 dados de movimento

APPL2 dados organizacionais e de customizing

Os Dados mestre são dados com freqüentes acessos de leitura, mas que raramente são atualizados. Os Dados de movimento são dados que são atualizados com freqüência. Os Dados organizacionais e de customizing são dados indicados na configuração do sistema, e que raramente são modificados depois.

Page 8: Apostila ABAP I

Treinamento ABAP

WA | ABAP DICTIONARY 8

- Categor.Tamanho: Determina a necessidade de espaço prevista de uma tabela no banco de dados.

Para a tabela, é possível selecionar a categoria de 0 a 4. A cada categoria está atribuído um determinado tamanho fixo de uma área de memória do banco de dados. Ao criar uma tabela, é reservado para esta um espaço inicial no banco de dados; se ela necessitar de mais espaço devido aos dados entrados, o espaço de memória é anexado em conformidade com a categoria aqui selecionada.

Index

Criado para otimizar a busca de registros em um determinado critério de seleção. Pode ser

considerado uma cópia da tabela, reduzida a poucos campos, de maneira ordenada e que

possui um “ponteiro” para a linha correspondente na tabela original. Assim sendo, campos que

não são índices podem ser lidos.

STEP BY STEP (TABLE, FK, INDEX)

- Tabela

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

Page 9: Apostila ABAP I

Treinamento ABAP

WA | ABAP DICTIONARY 9

- Chave Estrangeira (FK)

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

- Índice

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

Page 10: Apostila ABAP I

Treinamento ABAP

WA | ABAP DICTIONARY 10

STRUCTURES Uma structure é uma “descrição” de uma série de campos agrupados sob um nome em

comum. Ela descreve os nomes de campo, sua sequência e seus tipos e comprimentos de

dados. Assim como a tabela, uma estrutura não terá outra com seu nome e nem com o de uma

tabela.

STEP BY STEP (STRUCTURE)

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

Page 11: Apostila ABAP I

Treinamento ABAP

WA | ABAP DICTIONARY 11

VIEWS Uma view é uma visão lógica de uma ou várias tabelas. Ou seja, uma visão não é arquivada

fisicamente, mas derivada de uma ou de várias tabelas.

No caso mais simples, este processo de desvio pode consistir em ocultar um ou vários campos

de uma tabela (projeção) ou em transferir apenas determinadas entradas de uma tabela para

a visão (seleção). As visões mais complicadas podem ser compostas por várias tabelas, onde as

tabelas individuais são ligadas através da operação de ligação relacional.

Como o join entre as tabelas é executado no banco de dados, existe uma redução de acessos

ao BD.

STEP BY STEP (VIEW)

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

Page 12: Apostila ABAP I

Treinamento ABAP

WA | ABAP DICTIONARY 12

_____________________________________________________________________________

SEARCH HELP

Uma ajuda para pesquisa é um objeto do ABAP Dictionary que permite definir todas as entradas possíveis para um determinado campo.

Page 13: Apostila ABAP I

Treinamento ABAP

WA | ABAP DICTIONARY 13

Page 14: Apostila ABAP I

Treinamento ABAP

WA | ABAP DICTIONARY 14

STEP BY STEP (SEARCH HELP, ASSOCIATION)

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

_____________________________________________________________________________

Page 15: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 15

ABAP PROGRAMMING

Qual a função do R3 ?

É oferecer um conjunto integrado compacto, de aplicativos empresariais de grande escala. O

conjunto padrão de aplicativos integrados com cada sistema R/3 é o seguinte:

• PP (Production Planning - planejamento de produção)

• MM (Materials Management - gerenciamento de materiais)

• SD (Sales and Distribution - vendas e distribuição)

• FI (Financial Accounting - contabilidade financeira)

• CO (Controlling - controladoria)

• AM (Fixed Assets Management - gerenciamento de ativos fixos)

• PS (Project System - sistema de projeto)

• HR (Human Resources - recursos humanos)

• PM (Plant Maintenance - manutenção das instalações)

• QM (Quality Management - gerenciamento da qualidade)

Estes aplicativos são chamados áreas funcionais, áreas de aplicativo ou, ás vezes, módulos

funcionais do R/3. Todos estes termos são sinônimos.

Tradicionalmente, as estruturas empresariais desenvolvem um conjunto de aplicativos de

processamento de dados avaliando produtos individuais e comprando esses produtos

separadamente de diversos fabricantes de software. Interfaces entre eles são então

necessárias. Por exemplo, o sistema de gerenciamento de materiais precisará ser vinculado

com as vendas e a distribuição e com os sistemas financeiros, e o sistema de fluxo de trabalho

precisará de uma alimentação a partir do sistema do HR.

Page 16: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 16

O R/3 vem predefinindo com os aplicativos empresariais básicos necessários à maioria das

grandes corporações. Esses aplicativos coexistem em um ambiente homogêneo. Eles são

projetados para funcionar utilizando desde um único banco de dados e um conjunto (muito

grande) de tabelas. Os tamanhos de banco de dados de produção atuais variam de 12

gigabytes a aproximadamente 3 terabytes. Cerca de 8.000 tabelas de banco de dados são

distribuídas com o produto R/3 padrão.

Por que saber isso ?

É importante para você, como um programador de ABAP, saber por que esses aplicativos são

todos escritos inteiramente em ABAP. Esses são os aplicativos que você deve entender para

ser um bom desenvolvedor de R/3.

Por exemplo, suponha que você conhece ABAP e tenha recebido a incumbência de

escrever um relatório financeiro que resume débitos e créditos de cada ano fiscal para cada

fabricante na empresa. Talvez você saiba escrever código em ABAP, mas você saberia como

começar a resolver essa tarefa?

Ou talvez seu trabalho exija um novo desenvolvimento em ABAP/4. Você é incumbido

de projetar um sistema que ofereça informações de estoque para potenciais compradores. Se

você não conhece os sistemas de vendas e financeiro e de distribuição, você não saberá se

está criando algo que já existe em R/3. Tampouco você poderá saber se há tabelas do R/3 que

já contêm dados semelhantes ou idênticos aos tipos de dados que você quer recuperar. Esses

aplicativos são altamente integrados. Um desenvolvedor que assume a abordagem “eu

construirei minhas próprias tabelas e manterei minhas próprias cópias dos dados”, pode logo

descobrir que seus dados são redundantes e devem ser rotineiramente sincronizados com o

resto do banco de dados. Ele construiu um aplicativo que não tira proveito da natureza

altamente integrada do ambiente R/3.

É importante que o ABAP seja desenvolvido com a certeza de que dentro do R/3 não

possua nada que já não atenda as necessidades da área funcional.

Page 17: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 17

Data Types and Data Objects

Page 18: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 18

Data Objects

Variables

Variável é um objeto capaz de reter e representar um valor ou expressão.

Quando nos referimos à variável, estamos tratando de uma “região de memória previamente

identificada cuja finalidade é armazenar os dados ou informações de um programa por um

determinado espaço de tempo”.

Uma variável é composta por dois elementos básicos: o conteúdo,o valor da variável e

identificador, um nome dado à variável para possibilitar sua utilização.

Constants

Como o nome já diz é uma constante, sendo que é quase idêntica a uma variável, exceto quanto ao fato de que seu valor não poderá ser alterado. A instrução constants é semelhante à instrução data; entretanto, a adição do comando value é necessário. O comando constants pode ser usado quando for incluir um literal várias vezes no mesmo programa definindo um valor igual ao da literal e utilizar a constante no corpo do programa e quando for necessário alterar o valor de sua literal basta apenas alterar o valor de sua constante.

Predefined data objects

Space

É uma constant do tipo C, de tamanho 1 com valor ‘ ‘.

Page 19: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 19

SYST (SY)

Algumas variáveis foram criadas para validar a execução e entrada de dados no sistema, estas variáveis encontram-se na estrutura SYST.

Apesar de serem variáveis, não devemos atribuir valor ou alterar o conteúdo dos

mesmos.

Abaixo alguns campos da estrutura com seu respectivo significado.

• SY-SUBRC: Return code for ABAP statements (zero if a statement is executed

successfully)

• SY-UNAME: logon name of the user

• SY-REPID: Current ABAP program

• SY-TCODE: current transaction

• SY-INDEX: Number of the current loop pass

• SY-TABIX: Number of the current loop pass

Literals

É um conjunto de caracteres não declarados explicitamente no programa. Como todos os

objetos, possuem tamanho, número de decimais, tipo de dados porém não possuem nome.

Exemplo: ‘123.12’ , ‘Daniel’, ‘1ª’, 100.

Text Symbols

É um objeto gerado durante o desenvolvimento do programa para substituição de literais. Tem

a vantagem a possibilidade de tradução.

Page 20: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 20

Data Types Data Types são tipos de dados definidos em tempo de design no programa.

Defining Data Types

Page 21: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 21

WRITE

Write statement

Quando se faz necessário a exibição na tela do resultado de um report você utiliza o comando

write e todo o conteúdo que estiver após a instrução até ser finalizado por “.” gerará um

relatório de saída.

Positioning write output

Page 22: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 22

PARAMETERS

Usamos a instrução PARAMETERS para declarar variáveis similarmente a instrução DATA. Para

cada parameter declarado, um campo é apresentado na tela, permitindo a entrada de valores

pelo usuário.

Para checar o valor entrado com valores do Dicionário de Dados, utilizamos o adendo VALUE

CHECK na instrução de declaração.

Para atribuir valor de entrada padrão, utilizamos a instrução DEFAULT.

Para tornar a entrada de valor obrigatório, acrescentamos a cláusula OBLIGATORY na

declaração.

Para exibir ao usuário uma lista de valores válidos, utilizamos a instrução MATCHCODE OBJECT,

ela permite acrescentar um search help (definido previamente no ABAP Dictionary).

Page 23: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 23

FRAMES

Inclui um frame à tela de seleção conforme instrução abaixo.

Page 24: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 24

Processing Data

Assigning Values

Essa seção descreve os comandos utilizados para atribuir/alterar o conteúdo das variáveis. No

inicio do programa ABAP, as variáveis possuem um valor inicial que podem ser preenchidos

durante sua declaração ou durante a execução do programa. Podem também ser alterados em

qualquer momento utilizando as sintaxes abaixo.

With Move (Directly)

With Write

Reseting Values to their Initial Values

Para inicializar uma variável, utilizamos a sintaxe abaixo. Se o dado é do tipo c, o valor , por sua

vez, será configurado como espaços em branco.

Page 25: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 25

Numerical Operations

Arithmetic Calculations

Page 26: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 26

Mathematical Functions

Page 27: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 27

Processing Character Strings (String Functions)

Processing Sections of String

EXERCISES (Declarations + Assigning Values + Operations)

Page 28: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 28

Field-Symbols

Field Symbols permite acesso dinâmico à Data Objects nos programas ABAP. Diferentemente do acesso estático, onde você precisa especificar o nome do objeto, FS permite acessar objetos cujo nome você desconhecia até a hora da execução. Field Symbol é um objeto que não ocupa espaço físico, porém aponta para outro objeto e passa a possuir suas características. Depois de referenciado (assign), qualquer alteração no Field symbol é refletida automaticamente no objeto “apontado”.

Defining

Assigning

EXERCISES (Field-Symbol)

Page 29: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 29

Controlling the program flow

Branching Conditionally

The IF control sctructure

Page 30: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 30

The CASE control structure

EXERCISES (Conditionally)

Page 31: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 31

Loops

Unconditional Loop (Do)

Conditional Loop (While)

Terminating Loops

Continue / Check / Exit

Page 32: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 32

EXERCISES (Loop)

Page 33: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 33

Internal Tables

Tabelas internas são utilizadas para armazenar em tempo de execução os dados necessários

para a processamento do seu programa. Estes dados podem ser selecionados de diversas

tabelas transparentes. O número de linhas de uma tabela não é fixo.

O acesso a tabela interna é feito linha a linha utilizando uma work area como interface para transferir dados para ou de uma tabela, esta work area é utilizada para armazenar temporariamente uma entrada da tabela de dados. Quando lemos uma tabela interna o conteúdo de endereçamento é enviado para uma work area. Esta work area tem a mesma estrutura da sua tabela interna.

Através deste conceito temos dois tipos de tabelas internas.

WITH HEADER LINE – O sistema automaticamente cria uma work area idêntica a linha da sua tabela interna. WITHOUT HEADER LINE – O sistema não reconhece a work area, que deve ser definida no

programa.

Standard table: The key access to a standard table uses a sequential search. The time required for an access is linearly dependent on the number of entries in the internal table. You should usually access a standard table with index operations.

Sorted table: The table is always stored internally sorted by its key. Key access to a sorted table can therefore use a binary search. If the key is not unique, the entry with the lowest index is accessed. The time required for an access is logarithmically dependent on the number of entries in the internal table. Index accesses to sorted tables are also allowed. You should usually access a sorted table using its key.

Hash table: The table is internally managed with a hash procedure. All the entries must have a unique key. The time required for a key access is constant, that is it does not depend on the number of entries in the internal table. You cannot access a hash table with an index. Accesses must use generic key operations (SORT, LOOP, etc.).

Page 34: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 34

Create Internal Table With Header Line

Create Internal Table Without Header Line

Page 35: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 35

Diferences between Internal Tables

Page 36: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 36

Operations on Entire Internal Table

Initializing

Sort

Para classificar o conteúdo de uma tabela interna você pode utilizar o comando sort, as linhas

podem ser classificadas por uma ou mais colunas em ordem ascendente ou descendente,

sendo que a própria sequência de classificação pode ser alterada.

Page 37: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 37

Determining Attributes of Internal Table

Utilizando-se o parâmetro LINES, obtemos a quantidade de linhas da tabela. Utilizando-se o parâmetro OCCURS, caso a tabela tenha sido declarada com o parâmetro Occurs, o tamanho inicial da tabela é retornado para a variávels <n>. Utilizando-se o parâmetro KIND, o tipo da tabela é retornado para a variável. (T = standard, S = sorted, H = Hashed)

Operations on Individual Lines

Appending Lines

A instrução acima adiciona os valores da work area <wa> na tabela interna <itab>. Isto é, é

uma instrução para inclusão de uma única linha.

Para a inclusão de múltiplas linhas, utilizamos a sintaxe acima. Todas as linhas da tabela

interna <itab1> são inseridas na tabela <itab2>. Cuidado que as linhas devem ser compatíveis.

Page 38: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 38

EXERCISES (Declare, Append, Describe, Sort)

Reading Lines

Essa instrução lê uma linha da da tabela interna <itab> e move o seu conteúdo para a work

área <wa>. Podemos efetuar um filtro na leitura ou por conteúdo (with key) ou por posição na

tabela (index).

Caso o programa não encontre uma entrada na tabela que satisfaça a condição, a variável de

sistema sy-subrc é preenchida com o valor 4, caso contrário o valor da mesma será 0.

Utilizando-se da cláusula TRANSPORTING, especificamos quais campos da tabela interna

queremos que sejam transferidos para a Work Area.

EXERCISES (Read)

Changing Lines

Para alterar linhas da tabela interna, utilizamos a instrução Modify.

Deleting Lines

Para excluir linhas de uma tabela interna, usamos a cláusula que segue:

Para remover as linhas duplicadas de uma tabela interna, usamos a sintaxe abaixo:

EXERCISES (Modify, Delete)

Page 39: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 39

Processing Table Lines in Loops

Essa instrução lê, linha a linha, a tabela interna <itab> e move o seu conteúdo para a work

área <wa> desde que a condição (where/from) seja satisfatória.

Em tabelas internas do tipo Standard e Sort, a variável de sistema SY-TABIX contém o índex da

linha corrente.

Loop – Control Level Processing

EXERCISES (Loop ITAB , Control Level Processing)

Page 40: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 40

Access Using Field Symbols

Acessando a tabela interna utilizando-se FIELD SYMBOL, não há a necessidade de copiar os

dados para uma work area. Uma vez atribuído o registro, trabalhar com o Field Symbol tem o

mesmo efeito de acessar a linha correspondente diretamente.

Quando você altera uma tabela interna com a instrução Modify, devemos inicialmente

preencher a work área e posteriormente atribuí-la à tabela Interna. Se trabalharmos com

Field-Symbols, isso não é necessário o que aumenta a performance do programa em caso de

tabelas internas com grande quantidade de linhas.

Page 41: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 41

Open SQL É um conjunto de instruções que efetuam operações no banco de dados central do SAP/R3. O

resultado da operação e a mensagem de retorno, são independentes do banco no qual o SAP

está trabalhando.

Open SQL só pode “trabalhar” com tabelas criadas através do ABAP Dictionary.

Overview

Return Codes

Todos os comandos Open SQL preenchem as variáveis de sistema abaixo da seguinte forma:

SY-SUBRC - caso a operação tenha sido efetuada com sucesso o valor da variável será 0, caso

contrário o valor será diferente de 0.

SY-DBCNT – esta variável conterá a quantidade de linhas processadas pela instrução Open SQL.

Page 42: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 42

Reading Data O comando select é usado para acessar e selecionar dados de tabelas transparentes do SAP. Porexistirem diversas variações do mesmo comando, é fundamental que o programador saiba o mecanismo de funcionamento de cada uma delas pois só assim poderá dar ao programa uma performance satisfatória.

SELECT … ENDSELECT

SELECT * FROM dbtab. … ENDSELECT.

Seleciona dados de uma tabela SAP num processo de “loop” que começa no select e termina no endselect. A cada passagem pelo “loop” temos um elemento lido e selecionado.

SELECT ... INTO TABLE

SELECT * INTO TABEL itab FROM dbtab. Os dados são selecionados e colocados na tabela interna itab de uma só vez. Não há mais o processo de loop e portanto não há mais ENDSELECT. Os dados novos da tabela interna são gravados por cima dos antigos. É importante ressaltar que o * pode ser substituído pelos nomes dos campos da tabela, agilizando assim o processo e melhorando a performance.

SELECT ... APPENDING TABLE ...

SELECT * APPENDING TABLE itab FROM dbtab.

Mesmo processo do item acima, só que os dados novos são inseridos na tabela interna itab

sem apagar os antigos.

SELECT SINGLE ...

SELECT SINGLE * INTO TABLE itab FROM dbtab WHERE f1 = g1.

Seleciona apenas um único dado que satisfaças condições do where. OBS.: Neste caso todas as chaves (índices da tabela) devem ser satisfeitos.

Page 43: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 43

SELECT … FOR ALL ENTRIES …

SELECT * INTO TABLE itab FROM dbtab FOR ALL ENTRIES in itab WHERE...

Usado quando selecionamos dados de uma tabela e precisamos de dados de outra tabela para compor as condições do where.

Exemplo: SELECT * FORM BSEG FOR ALL ENTRIES IN T_BKPF WHERE BUKRS = T_BKPF-BUKRS AND BELNR = T_BKPF-BELNR .

Onde T_BKPF é uma tabela interna que recebeu a tabela BKPF. Este tipo de comando é utilizado entre tabelas internas.

Adição: WHERE

Clausula que visa restringir a seleção dos dados.

Adição: ORDER BY

Utilizado para ordenar a tabela interna de acordo com os campos informados

ORDER BY <field1> [DESCENDING] <field2> ...

EXERCISES (SELECT)

Page 44: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 44

Inserting Lines

Changing Lines

Page 45: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 45

Deleting Lines

Page 46: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 46

Inserting or Changing Lines

Commiting Database Changes

EXERCISES (DB Operations)

Page 47: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 47

Lists

Creating Simple List with Write

Write statement

Quando se faz necessário a exibição na tela do resultado de um report você utiliza o comando

write e todo o conteúdo que estiver após a instrução até ser finalizado por “.” gerará um

relatório de saída.

Positioning write output

Page 48: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 48

Format Color

Blank Lines and drawing lines

Para pular linhas, é utilizado a instrução abaixo. (onde n é a quantidade de linhas)

Para “desenhar” linhas horizontais, usamos a instrução que segue:

Para “desenhar” linhas verticais, usamos a instrução que segue:

EXERCISES (WRITE)

Page 49: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 49

Messages

Messages on screen

EXERCISES (CLASS + MESSAGE)

Page 50: Apostila ABAP I

Treinamento ABAP

WA | ABAP PROGRAMMING 50

Transactions

Podemos criar transação para qualquer programa ABAP. É utilizado para disponibilizar ao

usuário o acesso ao mesmo, funcionando como se fosse Standard.

Page 51: Apostila ABAP I

Treinamento ABAP

WA | 51

Reports

Description of Events

Um evento é como uma sub-rotina em outras linguagens, trata-se de uma seção independente

do código que executa uma tarefa e então retorna para o ponto de chamada, contudo, ao

contrário das sub-rotinas, você não codifica a chamada para um evento, ao contrário, o

sistema aciona o evento para você quando uma condição especifica surge. Os nomes dos

eventos são palavras reservadas, não se podendo criar novos eventos.

Initialization

Quando você executa um programa onde um critério de seleção é definido, o sistema

normalmente processa a tela primeiro. Se você quer que um bloco de comandos seja

executado antes da tela de seleção utilize este comando.

At Selection-screen

É executado toda vez que houver interação na tela de seleção. É um evento executado entre o

Initialization e o Start-of-selection.

Start-of-selection

Se a primeira instrução executável em seu programa não for procedida por um nome de

evento, o sistema automaticamente insere start-of-selection antes da primeira linha de código

executável.

Page 52: Apostila ABAP I

Treinamento ABAP

WA | 52

Page 53: Apostila ABAP I

Treinamento ABAP

WA | 53

Page 54: Apostila ABAP I

Treinamento ABAP

WA | 54

Modularization Techniques

É uma técnica utilizada basicamente para reaproveitamento de código e melhor organização

do programa.

Macro

Caso queiramos reutilizar o mesmo conjunto de instruções mais de uma vez no programa,

podemos utilizar uma macro.

Essa instrução poderá conter até 9 “placeholders” (&1 &2 &3 ... &9) e deve ser definido antes

de ser utilizado.

Include

Permite a utilização do código em vários programas. Por exemplo, isso pode ser útil quando

definimos uma grande quantidade de variáveis, constantes, types, internal tables .... que

podem ser reutilizadas em diversos programas.

Para criar uma include, devemos informar o tipo “I” nos atributos do programa. Atente-se

somente para que todas instruções de código na include estejam completas. Por exemplo:

***INCLUDE INCL_TST. TEXT = 'Hello!'.

O trecho acima daria erro pois a variável TEXT não foi definida.

Page 55: Apostila ABAP I

Treinamento ABAP

WA | 55

Sintaxe:

Exemplo:

***INCLUDE ZSTARTTXT. WRITE: / 'Program started by', SY-UNAME, / 'on host', SY-HOST, 'date:', SY-DATUM, 'time:', SY-UZEIT. ULINE.

REPORT ZSAPMZTST. INCLUDE ZSTARTTXT.

O resultado do exemplo acima será:

Program started by KELLERH

on host ds0025 date: 03/19/1998 time: 09:00:39

Subroutines

São principalmente utilizadas para modularização local, ou seja, são chamadas pelo

programa na qual foi criada.

Page 56: Apostila ABAP I

Treinamento ABAP

WA | 56

Uma subrotina normalmente é encerrada pela instrução ENDFORM, porém é possível encerrá-

la previamente através da instrução EXIT ou CHECK.

Function Modules

Function Groups

Function

Page 57: Apostila ABAP I

Treinamento ABAP

WA | 57

Chamar uma função de dentro do programa:

EXERCISES (Modularization Techniques)

Page 58: Apostila ABAP I

Treinamento ABAP

WA | 58

Page 59: Apostila ABAP I

Treinamento ABAP

WA | 59

Working with Files

Working with files in Application Server

Opening files

Para abrir um arquivo, usamos a instrução OPEN DATASET conforme sintaxe abaixo

Se a instrução for bem sucedida, a variável de sistema SY-SUBRC possuirá o valor 0, caso

contrário o valor da mesma será 8.

For Input

Abre o arquivo somente para leitura. O cursor é posicionado no começo do arquivo.

For Output

Abre o arquivo para “escrita”. Se o arquivo existir, seu conteúdo é apagado, senão é criado um

novo arquivo.

For Appending

Abre o arquivo para “escrita” no fim do arquivo. O cursor é posicionado no fim do arquivo.

SAP AG

R

Processing Files

Process

file

Open

file

Close

file

SAP AG

R

REPORT xxx.

:

OPEN DATASET newfile FOR APPENDING.

IF sy-subrc NE 0. EXIT. ENDIF.

:

OPEN DATASET <filename>

[FOR {INPUT | OUTPUT | APPENDING}].

Process

file

Open

file

Close

file

Default: FOR INPUT

Opening Files

Page 60: Apostila ABAP I

Treinamento ABAP

WA | 60

In Binary Mode

In Text Mode

Writing data to files

Cada instrução TRANSFER transfere um registro para o arquivo.

Antes da instrução, é necessário mover os dados para uma estrutura.

Se o arquivo não estiver aberto, a instrução tenta abrir o arquivo de modo FOR OUTPUT.

A cláusula LENGHT permite especificar o tamanho em bytes da linha. Caso a estrutura a ser

transferida seja mais curta que o valor atribuído, ela será complementada com “espaços” se a

abertura tiver sido efetuada via “Text mode” ou com “0” caso a abertura tenha sido efetuada

via “Binary mode”.

SAP AG

R

REPORT xxx.

:

OPEN DATASET newfile FOR APPENDING MESSAGE text.

IF sy-subrc NE 0. EXIT. ENDIF.

:

OPEN DATASET <filename>

[FOR {INPUT | OUTPUT | APPENDING}]

[IN {BINARY MODE | TEXT MODE}]

[MESSAGE <field>].

Default: BINARY MODE

Process

file

Open

file

Close

file

Opening Files - Options

SAP AG

R

Transferring Data Records

REPORT xxx.

DATA rec LIKE BBKPF.

:

SELECT ...

TRANSFER rec TO demo_file.

ENDSELECT.

TRANSFER <field> to <file name> [LENGTH <len>].

Process

file

Open

file

Close

file

One record at a time

Page 61: Apostila ABAP I

Treinamento ABAP

WA | 61

Reading data from files

A instrução “Read Dataset” lê uma linha do arquivo e transfere seu valor para uma variável ou

estrutura.

Se o arquivo não estiver aberto, a instrução tenta abrir o arquivo de modo IN BINARY MODE

FOR INPUT. Se o arquivo não puder ser aberto , SY-SUBRC terá o valor 8.

Se o final do arquivo for atingido, a variável de sistema SY-SUBRC é setada com o valor 4, caso

contrário o valor da mesma será 0.

A cláusula LENGHT permite especificar o tamanho em bytes da linha lida.

Closing files

A instrução acima fecha o arquivo de forma explicita.

Assim como a instrução OPEN, a ocorrência de erros é descartada.

SAP AG

R

Reading Data Records

READ DATASET <file name> INTO <field> [LENGTH <len>].

REPORT xxx.

DATA rec LIKE BBKPF.

:

DO.

READ DATASET demo_file into rec.

IF sy-subrc NE 0. EXIT. ENDIF.

ENDDO.

One data record at a time

Process

file

Open

file

Close

file

SAP AG

R

CLOSE DATASET <file name>.

DELETE DATASET <file name>.

Process

file

Open

file

Close

file

Closing / Deleting a Sequential File

Page 62: Apostila ABAP I

Treinamento ABAP

WA | 62

Após o termino do programa, todos os arquivos são fechados.

Deleting files

Usamos a instrução acima para apagar o arquivo. Caso seja bem sucedida, a variável de

sistema SY-SUBRC possuirá o valor 0.

Summary

EXERCISES (files in Application Server)

SAP AG

R

CLOSE DATASET <file name>.

DELETE DATASET <file name>.

Process

file

Open

file

Close

file

Closing / Deleting a Sequential File

SAP AG

R

Sequential Files - Summary

ReadRead

No

No

Yes

WriteWrite

Yes

Define structure

Open file

Fill structure Read data record

Transfer

structureProcess data

record?

Close file

More data

records?

End of

file?

Page 63: Apostila ABAP I

Treinamento ABAP

WA | 63

Working with local files

EXERCISES (Local files)

Call Function

‘GUI_DOWNLOAD’

Call Function

‘GUI_UPLOAD’

Page 64: Apostila ABAP I

Treinamento ABAP

WA | ALV 64

ALV

REUSE_ALV_GRID_DISPLAY

Função utilizada para exibição de tabela interna em formato de grid num report ABAP.

Page 65: Apostila ABAP I

Treinamento ABAP

WA | PERFORMANCE – Best Practices 65

PERFORMANCE – Best Practices

Page 66: Apostila ABAP I

Treinamento ABAP

WA | PERFORMANCE – Best Practices 66


Recommended