Upload
gorisilva
View
22
Download
0
Tags:
Embed Size (px)
DESCRIPTION
apostila abap
Citation preview
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
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
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
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.
Treinamento ABAP
WA | ABAP DICTIONARY 5
STEP BY STEP (Data Element, Domain)
- Domínio
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
- Elemento de Dados
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
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.
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.
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
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
Treinamento ABAP
WA | ABAP DICTIONARY 9
- Chave Estrangeira (FK)
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
- Índice
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
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)
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
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)
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
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.
Treinamento ABAP
WA | ABAP DICTIONARY 13
Treinamento ABAP
WA | ABAP DICTIONARY 14
STEP BY STEP (SEARCH HELP, ASSOCIATION)
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
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.
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.
Treinamento ABAP
WA | ABAP PROGRAMMING 17
Data Types and Data Objects
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 ‘ ‘.
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.
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
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
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).
Treinamento ABAP
WA | ABAP PROGRAMMING 23
FRAMES
Inclui um frame à tela de seleção conforme instrução abaixo.
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.
Treinamento ABAP
WA | ABAP PROGRAMMING 25
Numerical Operations
Arithmetic Calculations
Treinamento ABAP
WA | ABAP PROGRAMMING 26
Mathematical Functions
Treinamento ABAP
WA | ABAP PROGRAMMING 27
Processing Character Strings (String Functions)
Processing Sections of String
EXERCISES (Declarations + Assigning Values + Operations)
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)
Treinamento ABAP
WA | ABAP PROGRAMMING 29
Controlling the program flow
Branching Conditionally
The IF control sctructure
Treinamento ABAP
WA | ABAP PROGRAMMING 30
The CASE control structure
EXERCISES (Conditionally)
Treinamento ABAP
WA | ABAP PROGRAMMING 31
Loops
Unconditional Loop (Do)
Conditional Loop (While)
Terminating Loops
Continue / Check / Exit
Treinamento ABAP
WA | ABAP PROGRAMMING 32
EXERCISES (Loop)
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.).
Treinamento ABAP
WA | ABAP PROGRAMMING 34
Create Internal Table With Header Line
Create Internal Table Without Header Line
Treinamento ABAP
WA | ABAP PROGRAMMING 35
Diferences between Internal Tables
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.
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.
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)
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)
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.
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.
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.
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)
Treinamento ABAP
WA | ABAP PROGRAMMING 44
Inserting Lines
Changing Lines
Treinamento ABAP
WA | ABAP PROGRAMMING 45
Deleting Lines
Treinamento ABAP
WA | ABAP PROGRAMMING 46
Inserting or Changing Lines
Commiting Database Changes
EXERCISES (DB Operations)
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
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)
Treinamento ABAP
WA | ABAP PROGRAMMING 49
Messages
Messages on screen
EXERCISES (CLASS + MESSAGE)
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.
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.
Treinamento ABAP
WA | 52
Treinamento ABAP
WA | 53
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.
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.
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
Treinamento ABAP
WA | 57
Chamar uma função de dentro do programa:
EXERCISES (Modularization Techniques)
Treinamento ABAP
WA | 58
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
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
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
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?
Treinamento ABAP
WA | 63
Working with local files
EXERCISES (Local files)
Call Function
‘GUI_DOWNLOAD’
Call Function
‘GUI_UPLOAD’
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.
Treinamento ABAP
WA | PERFORMANCE – Best Practices 65
PERFORMANCE – Best Practices
Treinamento ABAP
WA | PERFORMANCE – Best Practices 66