ABAP Curso Básico
ABAP Curso Básico
ABAP Curso Básico
5
INTEGRAÇÃO R/3.............................................................................................................5
BUSINESS FRAMEWORK...................................................................................................6
COMPONENTES DO BUSINESS FRAMEWORK.....................................................................6
R/3 COMO UM SISTEMA ABERTO.......................................................................................6
CLIENT/SERVER – ESCALABILIDADE DO SISTEMA R/3.....................................................7
PRINCÍPIO DO CLIENT/SERVER.........................................................................................8
CONFIGURAÇÕES CLIENT/SERVER NUM SISTEMA R/3......................................................8
HIERARQUIA DE TRÊS CAMADAS......................................................................................9
PLATAFORMAS PARA O SISTEMA R/3..............................................................................10
NAVEGANDO NO R/3 11
LOGON............................................................................................................................11
CONCEITO DE MANDANTE E CLIENT NO SISTEMA R/3..................................................12
ESTRUTURA DO MENU DO R/3.......................................................................................12
ESTRUTURA DE UMA TELA NO SISTEMA R/3..................................................................13
SELECIONANDO FUNÇÕES...............................................................................................14
AJUDA DE CAMPO..........................................................................................................14
HELP ON-LINE................................................................................................................16
SYSTEM FUNCTIONS.......................................................................................................16
Services......................................................................................................................16
Utilities......................................................................................................................16
KERNEL DO SISTEMA R/3 18
INTERFACE DE APRESENTAÇÃO......................................................................................18
RDBMS – RELATIONAL DATABASE MANAGEMENT SYSTEMS......................................18
INTERFACE DE BANCO DE DADOS DO SISTEMA R/3......................................................19
PROCESSANDO REQUISIÇÕES DO USUÁRIO.....................................................................20
APPLICATION SERVICES..................................................................................................21
TRANSAÇÕES..................................................................................................................21
LUW (LOGICAL UNIT OF WORK)..................................................................................21
REQUISITANDO UM LOCK...............................................................................................21
OBJETO DE LOCK...........................................................................................................22
PROCESSAMENTO EM BACKGROUND.............................................................................22
SERVIÇOS DE IMPRESSÃO...............................................................................................23
INSTANCIA R/3...............................................................................................................23
ABAP DICTIONARY 24
OBJETOS DO DICIONÁRIO................................................................................................24
CONCEPÇÃO DUAL LEVEL.............................................................................................24
TABELAS TRANSPARENTES.............................................................................................24
ESTRUTURAS..................................................................................................................25
435312240.doc 1 / 77
VIEWS.............................................................................................................................25
SEARCH HELP.................................................................................................................25
ABAP 26
CONCEITO.......................................................................................................................26
REPOSITÓRIO..................................................................................................................26
FERRAMENTAS DO WORKBENCH....................................................................................27
TRANSPORTE DE OBJETOS..............................................................................................27
DESENVOLVENDO UM PROJETO DO WBO......................................................................28
FINALIZANDO UM PROJETO............................................................................................29
CRIANDO CLASSES DE DESENVOLVIMENTO...................................................................30
CRIANDO PROGRAMAS EM ABAP..................................................................................30
Overview....................................................................................................................30
Atributos....................................................................................................................31
Editor.........................................................................................................................32
Declarações referenciando ao dicionário.................................................................32
Telas de seleção.........................................................................................................33
Open SQL..................................................................................................................33
Messages...................................................................................................................34
Listas.........................................................................................................................34
Sintaxes......................................................................................................................35
Comentários..............................................................................................................36
OPEN SQL 36
DATABASE INTERFACE....................................................................................................36
OVERVIEW......................................................................................................................37
COMANDO SELECT.......................................................................................................37
Overview....................................................................................................................37
Single Line.................................................................................................................38
Several Lines.............................................................................................................38
Tabela Interna...........................................................................................................39
Operadores da Clausula Where................................................................................39
CONTEXTO DE DADOS 40
DEFININDO OBJETO DE DADOS.......................................................................................40
Tipo de Dados............................................................................................................40
Tipos pré-definidos....................................................................................................40
Objeto de dados elementares.....................................................................................41
Estruturas..................................................................................................................42
Referindo-se ao Dicionário ABAP............................................................................42
Comando TABLES.....................................................................................................43
Literais e contantes...................................................................................................43
Símbolo de Texto........................................................................................................43
435312240.doc 2 / 77
Transferindo Valores.................................................................................................44
Comando MOVE..............................................................................................44
Comando MOVE-CORRESPONDING......................................................44
Regras de Conversão.................................................................................................45
Calculando Valores...................................................................................................46
Sub-Campos...............................................................................................................46
Calculando Datas......................................................................................................47
Expressões Lógicas...................................................................................................47
Estrutura CASE.........................................................................................................48
Loops DO e WHILE..................................................................................................49
Comandos CHECK e EXIT.......................................................................................50
FERRAMENTAS DE TESTE 51
DEBUG............................................................................................................................51
Importantes funções do Debug..................................................................................51
Breakpoint.................................................................................................................52
TABELAS INTERNAS 53
DEFINIÇÃO......................................................................................................................53
EXPANSÕES DINÂMICAS..................................................................................................53
ATRIBUTOS.....................................................................................................................53
Tipos de linhas...........................................................................................................53
Keys...........................................................................................................................53
Tipos de tabelas.........................................................................................................54
WORK AREA...................................................................................................................55
DECLARANDO TABELAS INTERNAS.................................................................................56
PREENCHENDO TABELAS INTERNAS...............................................................................56
TABELAS INTERNAS COM OU SEM HEADER LINE.......................................................57
INTO TABLE E INTO CORRESPONDING FIELDS OF TABLE..............................57
COMANDO SORT...........................................................................................................58
LOOP EM TABELA INTERNA...........................................................................................58
ACESSANDO REGISTRO NA TABELA INTERNA.................................................................59
ALTERANDO REGISTROS COM ÍNDICE.............................................................................60
MODULARIZAÇÃO DE PROGRAMAS.....................................................................................................61
ESTRUTURAS DE UM PROGRAMA ABAP........................................................................61
TIPOS DE BLOCOS DE PROCESSAMENTO.........................................................................61
MODULARIZANDO..........................................................................................................61
Eventos em programas executáveis...........................................................................61
Subrotinas..................................................................................................................62
Visibilidade dos dados...............................................................................................62
Chamando Subrotinas - Parâmetros.........................................................................63
435312240.doc 3 / 77
Chamando Subrotinas – Estruturas..........................................................................63
Chamando Subrotinas – Tabelas Internas.................................................................63
FUNÇÕES........................................................................................................................64
Chamando Módulo de Funções.................................................................................64
Criando grupo de função..........................................................................................65
Criando um módulo de função..................................................................................66
Elementos de um módulo de função..........................................................................66
Elementos de um módulo de função – IMPORT.......................................................67
Elementos de um módulo de função – EXPORT.......................................................67
Elementos de um módulo de função – CHANGING..................................................67
Elementos de um módulo de função – TABLES........................................................67
Elementos de um módulo de função – EXCEPTIONS..............................................67
Código do módulo de funções...................................................................................68
Inserindo funções no programa.................................................................................69
DIALOGS 70
LISTAS............................................................................................................................70
Comandos de operação em listas..............................................................................70
Cabeçalho de Página................................................................................................70
Detalhes de lista........................................................................................................71
HIDE Area.................................................................................................................72
Telas de seleção.........................................................................................................73
Search Help...............................................................................................................73
Salvando e chamando Variantes................................................................................73
Usando valores de telas de seleção no comando SELECT.......................................74
Usando o PARAMETERS.....................................................................................74
Usando o SELECT-OPTIONS...............................................................................74
Criando uma GUI – Graphic User Interface............................................................75
Barra de Status.......................................................................................................75
TITLES..................................................................................................................77
435312240.doc 4 / 77
Basis Technology Overview
Integração R/3
O sistema R/3 é baseado num modelo que cobre diversas áreas da empresa:
o FI – Financial Accounting;
o CO – Controlling;
o AM – Asset Management;
o MM – Materials Management;
o PP – Production Planing and Production Control;
o SD – Sales and Distribution;
o QM – Quality Management;
o PM – Plant Maintenance;
o PS – Project Management / Service Management;
o HR – Human Resources;
o WF – Office Communication / Workflow Functions;
o IS – Industry Soluction.
Os componentes do sistema R/3 utilizam a tecnologia “UP-TO-THE-MINUTE”
com compreensivas funções de negócio. O alto nível de integração de processos
permite que todas as funções sejam acessadas diretamente através do sistema e
435312240.doc 5 / 77
portanto da companhia. Quando se instala o sistema R/3, todos os dados são
integrados usando uma base de dados comum.
Os processos do sistema R/3 não são restritos a um modulo individual. Todos os
dados e funções estão conectados uns aos outros.
Business Framework
435312240.doc 6 / 77
o OLE (Object Linking and Embedding) – Integra aplicativos para PC com
o R/3.
O sistema R/3 também disponibiliza outras ferramentas de comunicação para
outros Sistemas:
o RFC (Remote Function Call) – utiliza protocolo CPI-C (IBM) para
facilitar a comunicação e processamento de aplicações e chamadas entre o
R/3, R/2 e outros Sistemas;
o ALE (Application Link Enable) – circula os processos autônomos e
integra o R/3, R/2 e outros sistemas que estão linkados.
Presentation
Application
Escalabilidade
Database
435312240.doc 7 / 77
O sistema R/3 tem uma arquitetura de software modular, que engloba
o princípio a arquitetura Client/Server;
Este princípio permite separar os servidor de banco de dados do
servidor de aplicação;
A escalabilidade permite ainda:
o Instalação de servidores adicionais;
o Servidores paralelos;
o Distribuir os usuários por servidores dedicados.
Princípio do Client/Server
435312240.doc 8 / 77
Hierarquia de três camadas
435312240.doc 9 / 77
Plataformas para o sistema R/3
Unix System
HARDWARE Bull Bull/Zenith IBM AS/400 IBM S/390
IBM Compac
Digital Digital
SNI HP (Intel)
HP IBM (Intel)
SUN
435312240.doc 10 / 77
Navegando no R/3
Logon
435312240.doc 11 / 77
Conceito de Mandante e Client no sistema R/3
Quando for feito o logon no sistema R/3, imediatamente irá aparecer o menu
personalizado do usuário (definido através da user-name).
No item favoritos, aparece as transações mais comumente acessadas, pelo usuário.
Essas transações são inseridas MANUAMENTE pelo usuário, através da opção:
FAVORITOS / INSERIR TRANSAÇÃO, do menu principal.
No item MENU SAP aparece o menu dos módulos do sistema R/3.
Todo o menu aparece em forma de árvore, sendo expandido à medida que o
usuário seleciona a opção, sendo que ao aparecer a transação, não terão mais
opções a exibir e sim o aplicativo.
Todo o menu é configurado pelo usuário, podendo exibir ou inibir qualquer item.
Essa estrutura de menu é chamada de SAP EASY ACCESS.
435312240.doc 12 / 77
Estrutura de uma tela no sistema R/3
435312240.doc 13 / 77
Option
s
Title Bar
Command
Field Standard
Toolbar
Applicatio
n Toolbar
Status
bar
Selecionando funções
Ajuda de Campo
435312240.doc 14 / 77
Informações técnicas como nome do campo, tabela, programa e tela, também
podem ser exibidas apertando a tecla F9, após aparecer a tela de explicação
técnica.
Pode-se ir ao Help selecionando informações adicionais.
435312240.doc 15 / 77
Help On-line
System Functions
Services
Utilities
435312240.doc 16 / 77
b. Depuração ABAP/4;
c. Depuração Sistema;
d. Consumo de Recursos;
e. Fila automática Processamento Síncrono;
f. Exibição de Performance;
g. Análise de Tempo de Execução;
i. Executar;
ii. Ativar;
iii. Desativar;
h. Exibir Verificação de Autorização.
435312240.doc 17 / 77
Kernel do Sistema R/3
Interface de Apresentação
Workstation / PC
Presentation
X Terminal X Terminal
X Terminal WINDOWS
MANAGER
SAPGUI SAPGUI
SAPGUI
435312240.doc 18 / 77
Diferentes empresas produzem produtos RDBMS. Esses produtos não são
totalmente compatíveis.
Interface de Banco de Dados do Sistema R/3
APPLICATION SERVER DATABASE SERVER
SELECT *
FROM .... OPEN SQL
Native SQL
App. data
DB Data
Exec SQL...
Select ...
End Exec. Native SQL
DB data
Na linguagem de programação ABAP, você pode usar o SAP OPEN SQL para
acessar os dados no sistema gerenciador de banco de dados.
A interface de banco de dados converte os comandos OPEN SQL para os
comandos de bancos de dados. Por isso a aplicação escrita em ABAP independe
do banco de dados usado.
Quando os comandos do OPEN SQL são convertidos, a interface do banco de
dados checa a sintaxe dos comandos e verifica se os dados não estão buferizados,
pois desta forma otimiza o acesso a base de dados.
Os dados acessados mais freqüentemente são armazenados no buffer e neste caso,
os dados não são acessados na base de dados.
435312240.doc 19 / 77
Processando requisições do usuário
PRESENTATION
SAP
GUI SAP
GUI SAP
GUI SAP
GUI
APPLICATION
DISPATCHER
WORK WORK
PROCESS WORK PROCESS
PROCESS
DATABASE
DB PROCESS
DB
435312240.doc 20 / 77
Application Services
Transações
Requisitando um Lock
435312240.doc 21 / 77
O mecanismo de lock presente no sistema de banco de dados relacionais não é
geralmente suficiente para uma transação (como ordens de vendas) que pode
utilizar várias tabelas no banco de dados. O sistema R/3 tem uma função de
gerenciamento de lock que é executado pela work process de enqueue
(travamento). Ele previne que várias aplicações acessem o mesmo objeto.
A work process de enqueue gerencia os locks usando uma tabela de lock
armazenada na memória principal do servidor.
Se um lock é requisitado, o sistema checa se já existe outro lock para o objeto na
tabela de lock. Neste caso a requisição é rejeitada. Desta forma a aplicação avisa o
usuário que a requisição não foi possível.
Como a janela de diálogo e a work process de enqueue não estão localizadas no
mesmo servidor de aplicação, esse dois processos se comunicam através do
servidor de mensagens.
Objeto de Lock
Para que o sistema R/3 execute uma requisição de lock, você deve definir
primeiro um objeto de lock no dicionário ABAP. O objeto de lock contém tabelas
que terão entradas travadas. Um objeto de lcok consiste de uma tabela primária.
Pode-se ter uma tabela adicional secundaria, usando-se as chaves estrangeiras do
relacionamento.
Para um objeto de lock você deve especificar o modo de travamento: “S” read
lock e “E” write lock. Um lock só pode ser removido pelo mesmo usuário que
solicitou.
Se o objeto de lock está ativado, o sistema gera uma função de ENQUEUE e uma
de DEQUEUE .
Processamento em Background
435312240.doc 22 / 77
Serviços de Impressão
Instancia R/3
435312240.doc 23 / 77
ABAP Dictionary
Objetos do dicionário
Tabelas Transparentes
ABAP Dictionary
435312240.doc 24 / 77
Quando se cria e ativa uma tabela no dicionário, uma tabela transparente é criada
automaticamente no banco de dados. Este processo traduz a descrição da tabela
no banco de dados numa linguagem usada pelo sistema do banco de dados.
As tabelas do banco de dados têm os mesmos nomes no ABAP Dictionary. Os
campos também têm os mesmos nomes em ambos. Os tipos de dados no ABAP
Dictionary são traduzidos para os tipos de dados correspondentes nos sistemas de
banco de dados.
Estruturas
Views
Search Help
435312240.doc 25 / 77
Para associar o Search Help, basta teclar o F4 com o cursor sobre o campo
desejado.
ABAP
Conceito
435312240.doc 26 / 77
Ferramentas do Workbench
Transporte de Objetos
435312240.doc 27 / 77
Desenvolvendo um projeto do WBO
435312240.doc 28 / 77
Finalizando um projeto
435312240.doc 29 / 77
Criando Classes de Desenvolvimento
Overview
Quando se cria um novo programa, primeiro deve ter uma série de detalhes
administrativos.
Todos os programas devem apontar para uma classe de desenvolvimento. Isso faz
a classificação lógica do programa. Isso indica em qual repositório o programa
será criado.
Em seguida, vários atributos gerais do programa devem ser especificados. O mais
importante é o tipo do programa. O tipo do programa determina como o programa
vai ser executado no R/3.
Por último o programa deve ser associado a uma CHANGE REQUEST. Isso
identifica o repositório cronologicamente.
435312240.doc 30 / 77
Um programa só poderá ser editado após a determinação desses detalhes. A
ferramenta de criação utilizada para o programa determina em qual ordem estas
informações devem ser inseridas.
Atributos
435312240.doc 31 / 77
Editor
435312240.doc 32 / 77
o TABLES: VBAK, VBAP.
as tabelas VBAK e VBAP estão sendo instanciadas para a utilização no
programa.
Telas de seleção
Open SQL
435312240.doc 33 / 77
SELECT SINGLE ebeln ebelp matnr menge
FROM vbap
INTO CORRESPONDING FIELDS OF wa_vbap
WHERE ebeln = pa_ebeln
AND ebelp = pa_ebelp.
Messages
…
…
…
SELECT SINGLE ….
IF sy-subrc <> 0.
MESSAGE I020(FI).
ENDIF.
Listas
A linguagem ABAP possui comandos para criar listas: WRITE, SKIP, ULINE, são
exemplos de alguns deles.
O comando WRITE exibe o conteúdo de um campo (ou variável), formatado de
acordo com o seu tipo, formando assim uma lista (relatório).
O comando SKIP imprime uma linha em branco na lista.
O comando ULINE imprime uma linha continua, cobrindo toda a largura do
relatório.
…
…
…
SKIP.
435312240.doc 34 / 77
WRITE: / wa_vbap-ebeln, wa_vbap-ebelp.
ULINE.
WRITE: / wa_vbap-matnr, wa_vbap-menge.
ULINE.
…
…
…
Sintaxes
REPORT Z_TESTE_CURSO .
IF sy-subrc = 0 .
MESSAGE I027(FI) .
ENDIF .
ULINE .
WRITE / wa_vbap-ebeln COLOR COL_KEY .
WRITE wa_vbap-ebelp COLOR COL_HEADING .
WRITE wa_vbap-matnr INTENSIFIED OFF .
435312240.doc 35 / 77
WRITE wa_vbap-menge .
ULINE.
Comentários
OPEN SQL
Database Interface
Database Interface
BANCO DE DADOS
435312240.doc 36 / 77
Usando o Open SQL você não precisa ater-se aos conhecimentos do banco de
dados em questão.
Quando de usa o Open SQL, a interface de banco de dados faz a tradução dos
comandos para a linguagem utilizada pelo banco de dados onde estão sendo feitos
os acesso.
Usando o Native SQL, o acesso é feito diretamente na base de dados,
necessitando de conhecimentos específicos do SQL do banco de dados em uso.
Neste caso não existe a necessidade de conversão de comandos de leitura e escrita
no banco de dados.
Overview
Comando SELECT
Overview
435312240.doc 37 / 77
Single Line
O uso do SINGLE no comando SELECT indica que será lido somente uma linha
para a condição informada.
Se você utilizar o CORRESPONDING FIELDS OF na clausula INTO, você pode
preencher a área de trabalho componente a componente, desde que esses
componentes tenham o mesmo nome e mesma estrutura. Caso não for informado,
o comando preenche a área de trabalho ocupando os espaços da esquerda para a
direita, sem respeitar os limites dos campos.
Several Lines
Se não for utilizado o SINGLE no comando SELECT, o comando fará ler todos
os registro enquanto satisfazer a condição do WHERE.
Para não causar erro de sintaxe, é necessário a adição do ENDSELECT ao final
do comando.
Todos os comandos entre o SELECT e o ENDSELECT serão executados para
cada registro da tabela.
O campo DBCNT da estrutura SYST (SY) indica o número de linha lida no loop.
435312240.doc 38 / 77
Tabela Interna
Você pode ler uma tabela e armazenar todos os registro que satisfazerem a
condição em um simples passo, utilizando o TABLE na clausula INTO.
Não é necessário utilizar o ENDSELECT quando a leitura for feita diretamente na
tabela interna.
SELECT <campos>
FROM <tabela>
INTO <destino>
… WHERE <campo> <operador> <valor>
… WHERE <campo> LIKE <valor>
… WHERE <campo> IN <valor>
ENDSELECT.
OPERADOR DEFINIÇÃO
EQ = igual
NE <> >< diferente
GT > maior que
GE >= => maior ou igual a
LT < menor que
LE <= =< menor ou igual a
BETWEEN FI and F2 intervalo
435312240.doc 39 / 77
Contexto de dados
Tipo de Dados
Tipos pré-definidos
N Tipos Significado Valor Inicial Tamanho Tamanho
U
M Padrão Máximo
E
R
P Packed Number 0 8 1-16
I I Integer 0 4 4
C
F Float Point 0.000 8 8
A
N Numeric Text 00…0 1 64kb
L C Text Branco 1 64kb
F
D Date (YYYYMMDD) 00000000 8 8
435312240.doc 40 / 77
A T Time (HHMMSS) 000000 6 6
X Hexadecimal X’00’ 1 64kb
435312240.doc 41 / 77
Estruturas
435312240.doc 42 / 77
Comando TABLES
O comando TABLES declara um objeto de dados interno que serve com estrutura
de dados e funciona como uma área de trabalho.
Não é necessário declarar no comando TABLES o nome de todas as tabelas
referenciadas no programa, somente quando for necessário armazenar em
memória (work area) os dados.
Literais e contantes
Símbolo de Texto
435312240.doc 43 / 77
Símbolo de texto é um outro tipo de literal. A grande vantagem dos símbolos
de texto é que o mesmo pode ser traduzido e as contantes não.
Você pode criar os elementos de texto dando um duplo-clique sobre o
elemento que você quer criar ou então, na tela de entrada da transação que
manipula o programa, escolhendo a opção “Elemento de Texto”.
Transferindo Valores
Comando MOVE
Comando MOVE-CORRESPONDING
435312240.doc 44 / 77
END OF ty_dados1,
BEGIN OF ty_dados2,
Codigo(4) TYPE I,
Nome(30),
Cidade(20),
END OF ty_dados2.
Resultado:
wa_dados1 wa_dados2
NOME Antonio Carlos Silva CODIGO
ENDE Rua do Bispo, 40 NOME Antonio Carlos Silva
BAIRRO Rio Cumprido CIDADE Rio de Janeiro
CIDADE Rio de Janeiro
Regras de Conversão
435312240.doc 45 / 77
Calculando Valores
..
..
lp_salario = 10000.
lp_desconto = 2000.
lp_aumento = 10,20.
Sub-Campos
DATA: lc_ano(04),
lc_mes(02),
lc_dia(02).
435312240.doc 46 / 77
WRITE: / wa_data-dia, wa_data-mes, wa_data-ano. “ 20 02 2003
Calculando Datas
Expressões Lógicas
..
..
IF sum2 GE 1000.
..
..
435312240.doc 47 / 77
IF start IS INITIAL.
..
..
IF sum1 GT sum2 and sum1 between 0 and 100.
..
..
IF sum1 = 1000 and ( sum2 LE 2000 or start IS INITIAL).
..
..
OPERADOR DEFINIÇÃO
EQ = igual
NE <> >< diferente
GT > maior que
GE >= => maior ou igual a
LT < menor que
LE <= =< menor ou igual a
BETWEEN FI and F2 Intervalo
IS INITIAL Valor inicial.
Estrutura CASE
CASE <objeto>.
WHEN <dado1>
...
WHEN <dado2>
...
...
WHEN OTHERS.
...
ENDCASE.
IF <expressão lógica>
...
ELSEIF <expressão lógica>
435312240.doc 48 / 77
...
ELSEIF <expressão lógica>
...
ELSE <expressão lógica>
...
ENDIF.
Loops DO e WHILE
DO <n> TIMES.
...
...
ENDDO.
435312240.doc 49 / 77
o O número de passos do loop não pode ser modificado em tempo de
execução alterando o valor do SY-INDEX.
EXIT.
li_cont = 100.
WHILE sy-index LT li_cont.
CHECK sy-index < 50.
ENDWHILE.
DO 100 TIMES.
IF sy-index = 50.
EXIT.
ENDIF.
ENDDO.
435312240.doc 50 / 77
Ferramentas de Teste
Debug
435312240.doc 51 / 77
F7 ou Return: Sai de dentro de um módulo (função, perform, metodo, sub-
programa) e volta ao programa chamador.
F6 ou Execute: Executa um módulo sem mostrar os comandos internos.
Breakpoint
435312240.doc 52 / 77
Tabelas Internas
Definição
Expansões dinâmicas
Atributos
Tipos de linhas
Keys
435312240.doc 53 / 77
Chaves de tabelas internas também podem ser definidas como UNIQUE ou NON-
UNIQUE. Isso determina se será ou não possível a entrada de mais de um dado
com a mesma chave.
Tipos de tabelas
Tabelas Internas
Index Table Hashed Table
Standard Table Sorted Table
Acesso com índice X X
Acesso com chave X X X
Chave UNIQUE ou NON-UNIQUE UNIQUE/NON- UNIQUE
NON-UNIQUE UNIQUE
Acesso usando Índice principal Chave principal Somente chave
Outro atributo das tabelas internas é o tipo da tabela. Tabelas internas podem ser
divididas em três tipos de acordo com o caminho de acesso aos dados:
o Standard Tables: mantém um índice linear internamente. Estas
tabelas podem ser acessadas usando ou índice ou chave da tabela.
o Sorted Tables: são organizados de acordo com a chave e são
salvos. Aqui também, um índice linear é montado externamente. Esse tipo
de tabela também pode ser acessado usando ou índice ou chave da tabela.
o Hashed Tables: não mantém um índice linear interno. Hashed tables
só podem ser acessadas pela chave.
As tabelas internas do tipo Standard Tables são as mais comumente usadas.
435312240.doc 54 / 77
Work Area
Comando Efeito
435312240.doc 55 / 77
Declarando tabelas internas
435312240.doc 56 / 77
ENDSELECT.
As tabelas internas podem ser definidas com ou sem HEADER LINE. Uma
tabela com HEADER LINE significa a existência de uma WORK AREA,
junto com o corpo da tabela interna, ambos endereçados com o mesmo nome.
Para se declarar uma tabela interna com HEADER LINE, basta adicionar
WITH HEADER LINE na declaração da mesma.
435312240.doc 57 / 77
ENDSELECT.
A seleção no banco de dados pode ser feita toda ao mesmo tempo ou de registro
em registro, quando utilizamos a adição INTO TABLE, a tabela interna é
alimentada com todos os registros de uma única vez.
Utilizamos a adição INTO CORRESPONDING FIELDS OF TABLE <itabname>
quando a seleção feita possuir muitos campos e a tabela interna não estiver na
ordem da seleção ou então não possuir todos os campos da seleção. Essa forma de
seleção é feita registro a registro.
Comando SORT
Use o comando SORT para ordenar uma tabela interna. A adição de BY <f> e
ASCENDING ou DESCENDING permite você restringir a ordenação a
determinados campos e hierarquia.
A hierarquia default é ASCENDING.
435312240.doc 58 / 77
SELECT * FROM vbap INTO TABLE it_vbap
FOR ALL ENTRIES IN it_vbak
WHERE ebeln = it_vbak-ebeln.
LOOP AT it_vbap.
WRITE: / it_vbak-matnr.
ENDLOOP.
IF sy-subrc NE 0.
……..
ENDIF.
435312240.doc 59 / 77
Use o comando READ TABLE para acessar um registro individual. Se o acesso a
tabela for executado com sucesso, o campo SY-SUBRC receberá o valor 0 (zero),
caso não encontre, o valor será 4. o campo SY-TABIX receberá o índice que foi
acessado.
Também pode ser lido acessando diretamente pelo índice na tabela, use para isso
READ TABLE <itab> INDEX <n>.
IF sy-subrc EQ 0.
it_vbak-bukrs = ‘2000’.
MODIFY it_vbak INDEX sy-tabix.
ENDIF.
IF sy-subrc EQ 0.
DELETE it_vbak INDEX sy-tabix.
ENDIF.
IF sy-subrc EQ 0.
INSERT wa_vbak INTO it_vbak INDEX 101.
ENDIF.
435312240.doc 60 / 77
Modularização de Programas
Modularizando
435312240.doc 61 / 77
o Existem outros blocos de eventos, que iremos ver no decorrer do curso,
como: AT LINE-SELECTION, AT USER-COMMAND, AT
SELECTION-SCREEN, TOP-OF-PAGE e END-OF-PAGE.
Subrotinas
PERFORM ys_calcula_salário
USING v_salhora
V_horastrab
CHANGING v_salliq.
...
...
...
ENDFORM.
Subrotinas são blocos de processamento que são definidos para serem chamados
de outro bloco de processamento através de comandos ABAP. As subrotinas
proporcionam ao programa um encapsulamento.
Os parâmetros em uma interface são chamados de parâmetros formais e o
processamento que você passa para a subrotina são chamados de parâmetros
atuais.
O comando de chamada de subrotinas é o PERFORM e a declaração da subrotina
deverá estar entre os comandos FORM e ENDFORM.
435312240.doc 62 / 77
Se um dado declarado como global for redeclarado dentro de uma subrotina, o
dado válido passa a ser o que foi criado nela. Ao retornar ao programa, o dado
global volta a valer para o resto do programa, sem alterar o valor original.
O número de parâmetros atuais deve de ser o mesmo dos parâmetros formais. Não
existe parâmetro opcional.
O tipo dos parâmetros passado para a subrotina é definido automaticamente,
sendo assumido, na declaração da subrotina, o tipo dos parâmetros passado na
chamada.
ENDFORM.
Pode ser, também, passado para a subrotinas, as estruturas (estruturas, header line
de tabela interna ou work Areas) com a descrição da estrutura usando o LIKE ou
TYPE para declarar o tipo da mesma.
Se não for passado o tipo da estrutura, os campos dela não serão reconhecidos
dentro da subrotinas.
Se você quiser passar uma tabela interna para a subrotina, deve-se especificar o
tipo formal do parâmetro na declaração do FORM, como se fosse uma estrutura.
Tabelas internas são passadas sem a área de trabalho, necessitando assim criar
uma como local dentro da subrotina.
435312240.doc 63 / 77
Funções
435312240.doc 64 / 77
CALL FUNCTION ys_calcula_salario
EXPORT
v_sal_hora
v_horas_trab
IMPORT
v_sal_liquido
EXCEPTION
erro_calculo
variavel_vazia.
435312240.doc 65 / 77
Para se criar um grupo de funções, acessar a transação SE37. No menu acessar a
opção do menu Saltar / Admin. de Grupos de Funções / Criar Grupo.
O nome do grupo de função deve ter até 30 caracteres. Só poderá conter
caracteres alfanuméricos e o caractere underscore.
O grupo de funções deve começar com “Z_” ou “Y_”.
435312240.doc 66 / 77
o Código de programa.
o Documentação: Cada módulo de função deve ser documentado
separadamente. A documentação pode ser traduzida e ela ira aparecer na
linguagem definida no logon do usuário.
Grande parte das características de passagem de valor para uma função segue as
regras das subrotinas.
Diferente das subrotinas, você pode definir quais parâmetros são necessários ou
não, permitindo que o usuário suprima alguns na chamada destes.
Os parâmetros de IMPORT vistos de dentro da função, são correspondentes aos
parâmetros EXPORT na chamada da função de dentro do programa.
A declaração dos elementos da importação, é feita associando-se ao dicionário do
banco de dados ou a tipos declarados em um pool de tipos.
Parâmetros de importação não podem ter o seu valor, alterado durante o
processamento.
Segue as mesmas regras dos parâmetros de importação, sendo que estes são vistos
como parâmetros de IMPORT na chamada da função de dentro do programa.
Os parâmetros de exportação não recebem valores na chamada da função.
435312240.doc 67 / 77
CALL FUNCTION XXXXXXX
....
....
EXCEPTIONS
SEM_DADOS
MENOR_ZERO.
FUNCTION XXXXXXXXX.
IF variavel_a IS INITIAL.
RAIZE SEM_DADOS.
ENDIF.
IF variavel_a < 0.
RAIZE MENOR_ZERO.
ENDIF.
Você pode antecipar possíveis erros e escrever o programa para tratar-los à fim de
não causar erro de execução e conseqüentemente abortar o programa. Você
definirá os possíveis erros na lista de EXCEPTION na hora da criação da função e
chamá-los dentro do programa através do comando RAIZE.
435312240.doc 68 / 77
Inserindo funções no programa
435312240.doc 69 / 77
Dialogs
Listas
Cabeçalho de Página
Cada lista pode ter um cabeçalho e até 4 linhas de cabeçalho de coluna. Isto pode
ser criado de uma das seguintes formas:
o Dentro do editor usando as funções de manutenção do elemento de texto.
o Dentro da própria lista. Você pode criar o cabeçalho da lista e cabeçalho
das colunas, escolhendo no menu a opção: Sistema > Lista > Cabeçalho de
Lista.
o Na próxima vez que startar o programa, o novo cabeçalho irá aparecer na
lista automaticamente.
435312240.doc 70 / 77
Cores/Ícones/Símbolos na lista
REPORT xxxxxxxxxxxx.
INCLUDE <LIST>.
::
::
::
WRITE: / ti_tabela-campo COLOR col_key, icon_date AS ICON.
0 COL_BACKGROUND Fundo
1 COL_HEADING Cabeçalho
2 COL_NORMAL Entradas
3 COL_TOTAL Totais
4 COL_KEY Colunas Chaves
5 COL_POSITIVE Valores positivos
6 COL_NEGATIVE Valores negativos
7 COL_GROUP Níveis de controle
Detalhes de lista
435312240.doc 71 / 77
o Insere funções associadas ao menu de funções e a uma GUI particular no
campo de sistema SY-UCOMM quando uma entrada de usuário é
executada.
o Processa o bloco de eventos AT LINE-SELECTION usando o código de
função ‘PICK’ cada vez que você der um duplo-clique numa entrada da
lista.
o Processa o bloco de eventos AT USER-COMMAND cada vez que uma
ação for executada (enter ou clique em algum botão da barra).
o Exibe detalhes de lista após o processamento do evento AT LINE-
SELECTION e aumenta o valor contido no SY-LSIND em 1.
o Executa determinada função (que pode ser uma atualização de tabela) após
o processamento do evento AT USER-COMMAND.
Podem ser criados barras de botões e menus específicos para cada programa
usando o comando SET PF-STATUS <nome>. Ao dar duplo-clique sobre o nome
da barra de status, o MENU EDITOR será automaticamente aberto para ser
configurado. Neste caso todos os comandos da barra de botão standard serão
desativados durante a exibição da lista (atenção especial para o PICK que deve ser
redefinido para o funcionamento do AT LINE-SELECTION).
SET TITLEBAR <nome> redefine o nome do relatório que será impresso.
HIDE Área.
LOOP AT ti_tabela.
WRITE> / ti_tabela-campo1,
ti_tabela-campo2 HOTSPOT ON,
ti_tabela-campo3,
ti_tabela-campo4 HOTSPOT ON.
ENDLOOP.
435312240.doc 72 / 77
Insira o comando HIDE logo após a exibição da lista contendo os campos da
mesma que deverão ser armazenados no momento da escolha do usuário.
O parâmetro HOTSPOT no comando WRITE possibilita a mudança do formato
do cursor no momento em que o mouse para sobre os campos, fazendo o efeito
semelhante de um mouse passando sobre um hiperlink de uma página HTML.
Telas de seleção
Search Help
Você pode definir e armazenar variantes para uma tela de seleção. Para isso,
preencha a tela de seleção e clique no ícone de salvar. Defina o título e o nome da
variante e salve novamente.
Variantes permitem selecionar dados de uma tela de seleção de forma fácil para o
usuário.
Uma simples variante pode estar associada para mais de uma tela de seleção.
Para chamar uma variante pré-gravada, basta selecionar o ícone na tela de seleção.
Para programas com barra de status definida internamente, o botão salvar não
funciona como gravação de variantes.
435312240.doc 73 / 77
Usando valores de telas de seleção no comando SELECT
Usando o PARAMETERS
REPORT xxxxxxxxx.
::
::
::
PARAMETERS: pa_ebeln LIKE vbap-ebeln,
Pa_ebelp LIKE vbap-ebelp.
::
::
SELECT *
FROM vbap
INTO TABLE ti_vbap
WHERE ebelp = pa_ebeln
AND ebelp = pa_ebelp.
::
::
Usando o SELECT-OPTIONS
REPORT xxxxxxxxx.
::
::
::
SELECT-OPTIONS: pa_ebeln for vbap-ebeln,
Pa_ebelp for vbap-ebelp.
::
::
SELECT *
FROM vbap
INTO TABLE ti_vbap
WHERE ebelp IN pa_ebeln
AND ebelp IN pa_ebelp.
435312240.doc 74 / 77
Se você utilizou o comando SELECT-OPTIONS no programa com um campo de
entrada como um range de chaves para a tabela, você pode utilizá-lo na clausula
WHERE do comando SELECT para limitar os valores na seleção.
Com o uso dos valores do comando PARAMETERS você pode utilizar o
operador lógico IN na comparação da clausula WHERE.
As condições numa tabela interna declarada usando o SELECT-OPTIONS são
interpretadas da seguinte forma:
o Se a tabela interna estiver vazia, a condição será sempre verdadeira e
todos os registros serão selecionados sem que haja restrição.
o Se na tabela interna contiver somente valores simples, o resultado será a
composição da condição: <valor 1> ou <valor 2> .... ou <valor N>.
o Se na tabela interna contiver exclusão de valores, o resultado será a
composição da condição <NOT valor 1> e <NOT valor 2> .... e <NOT
valor N>.
o Se na tabela interna contiver ambos, o resultado será a composição da
condição <valor 1> ou <valor 2> .... ou <valor N> e <NOT valor 1> e
<NOT valor 2> .... e <NOT valor N>.
o Se na tabela interna contiver range, o resultado será a composição da
condição <ENTRE valor1 e valor2>.
Barra de Status
435312240.doc 75 / 77
No primeiro nível, definiremos as opções do menu. O botão fundir normas
acrescenta as opções “Sistema” e “Ajuda”, que aparecem em todos os menus no
R/3.
No segundo nível, iremos criar os botões da aplicação.
435312240.doc 76 / 77
No terceiro nível são os botões standards do R3 que iremos redefinir.
No quarto nível estão as teclas de acesso rápido recomendadas. Neste nível
iremos definir a opção “PICK” ou F2 para ativar listas interativas.
No quarto nível aparecem todas as teclas de função, inclusive as que já estão
associadas a outro item.
TITLES
435312240.doc 77 / 77