Você está na página 1de 153

Marcelo Pereira de Azevedo

marcelo.azevedo38@yahoo.com.br

ABAP

Curso de Introduo Linguagem


De Programao ABAP
CONTEDO PROGRAMTICO
CONTEDO PROGRAMTICO

Captulo 1 Introduo
Captulo 2 Dicionrio de dados
Captulo 3 Introduo linguagem ABAP
Captulo 4 Conceito de Procedures, funo e includes
Captulo 5 SQL
Captulo 6 Programas On-line
Captulo 7 Listas e ALV
Captulo 8 Conceito de Batch-input e Bapis
Captulo 9 Debug
Captulo 1

INTRODUO
Captulo 1 - introduo

Conceito do SAP
O que so transaes no SAP
Instncia X Client ( Dependent/Independent)
Conceito de classe de desenvolvimento
Controlando e administrando transportes - Request
Worbench Organizer
Conceito do SAP

O que ?
um conjunto integrado de aplicativos projetado para tratar o processamento
de dados em grandes corporaes. Ele foi desenvolvido na Alemanha pela
empresa denominada SAP {uma sigla de Systems Applications and Products for
data processing - aplicativos e produtos de sistemas para processamento de
dados).

Dentro do SAP , h um ambiente de tempo de execuo e um conjunto


integrado de programas aplicativos escritos em 4GL do SAP - ABAP/4. Esses
programas aplicativos foram projetados para atender ao processamento de
dados necessrios para o negcio.
Conceito do SAP

ABAP/4 (Advanced Business Application Programming 4GL) uma linguagem


"orientada por eventos", "Top-Down, bem estruturada e poderosa.
O que so transaes no SAP

Transao um cdigo alfanumrico de 20 caracteres, utilizado para


iniciar um processamento dentro do sistema SAP. Todo e qualquer
processo ou parte dele deve ser executado dentro do sistema atravs de
uma transao. A customizao de ABAP/4, sempre utilizada para
necessidade de um GAP ( procedimentos operacionais que no constam
no SAP e que exigem adaptaes ), isso gera pelo menos uma transao,
de modo que o usurio possa executar esse produto customizado de
dentro do sistema.

Toda operao realizada atravs do menu do sistema, tambm


corresponde a uma transao. Um mtodo para conhecermos o cdigo de
uma transao, cujo caminho pelo menu sabido, entrarmos na mesma,
na tela inicial desta transao e utilizarmos o menu SISTEMA STATUS,
que informa o programa, tela e transao executados.
O que so transaes no SAP

No desenvolvimento em ABAP/4, as principais transaes so:

ABAP Editor (SE38) para escrita e edio de programas, mais utilizado


para desenvolvimentos de programas do tipo executvel (Relatrios e
Cargas).

ABAP Dictionary (SE11) para edio de objetos relacionados com o


banco de dados.

Menu Painter (SE41) para desenho de interfaces de usurio (barra de


menu).
O que so transaes no SAP

Screen Painter (SE51) para desenho de telas para dilogo de usurio,


no utilizado para telas de seleo em report.

Function Builder(SE37) para programao de mdulos de funes.

Repository Browser (SE80) integra todas as ferramentas do ABAP


Workbench, muito utilizado para criao de programas do tipo on-line ou
module pool, pois, facilita e muito a visualizao de todos os objetos em
uma mesma tela. Todo objeto do ABAP Workbench pode ser editado
nessa transao e de uma forma bem mais organizada.
Instncia X Client
(Dependent/Independent)

Client definido como sendo uma unidade independente do R/3. Em


termos comerciais,organizacionais e tcnicos.Isso significa que possuem
sua prpria configurao e dados cadastrais (master data).

Instncia definida como um ambiente do R/3 que agrupa um ou mais


clients, onde se executa um determinado trabalho.

Objetos Client Dependent: Dependentes do mandante, por exemplo


formulrios de Sapscript, Relatrios de Report Writer/Painter, ABAP
QUERY(se criada na rea Standard), parametrizao/customizaes,
contedo de tabelas etc.

Objetos Client Independent: Independentes de mandante, por exemplo


programas Z*, todos os programas standards, todas as funes, estrutura
de tabelas etc.
Instncia X Client ( Dependent/Independent)

Ex: Cdigo Fonte Independent


Telas,Menus e funes Independent
Estrutura de tabelas,elementos e domnios - Independent
Registros de dados em tabela - Dependent
Formulrio SapScript - Dependent
Conceito de classe de desenvolvimento

Classe de desenvolvimento (Pacotes)


So importantes para transporte entre sistemas de produo, qualidade e
desenvolvimento.
As classes tambm so importantes para combinar todos os objetos
pertencentes a um determinado desenvolvimento, como por exemplo:
ZBC0 Classe de desenv.para Basis
ZCO_DES Classe para objetos de CO
ZFI_DES Classe para objetos de FI
Controlando e administrando transportes

Request

Guarda as modificaes ou customizaes feitas e que se deseja


transportar para um determinado ambiente. Uma vez liberada a ordem de
transporte mantm as alteraes feitas at aquele momento. Novas
alteraes/customizaes no mesmo lugar iro solicitar nova ordem de
transporte.
Ex : AF1K900109
AF1 Instncia
K Gerao de arquivo de controle (Interno SAP)
900109 - Sequncial
Worbench Organizer

Esta transao pemite controlar as ordens (requests) geradas atravs das


alteraes feitas nos objetos ABAP e customizaes funcionais.

Ordem Local : Alteraes no transportveis para objetos ABAP/4 so


gravadas em ordens locais.

Ordens Transportveis : Alteraes transportveis para objetos do ABAP/4.


Isto permite que as ordens possam ser transportadas entre clients.

Transaes importantes :

SE09/SE10 Permite verificar as ordens de objetos client independent e


dependent criados por um usurio.
Captulo 2

DICIONRIO DE DADOS
Captulo 2 Dicionrio de dados

Conceito de banco de dados relacionais.


Tipo de dados do dicionrio ABAP.
Conceito de domnio, elemento de dados.
Criao de tabelas transparentes, estruturas e view.
Criao de ndices primrios e secundrios.
Criao de dilogo de manuteno.
Conceito de banco de dados relacionais

Modelo de Entidade e Relacionamento


Modelo desenvolvido para facilitar o projeto de banco de dados,
permitindo a especificao de um esquema que represente a estrutura
lgica global de um banco de dados.

Entidade: um objeto que existe e distinguvel de outros objetos, ou


seja, identifica o agrupamento de objetos do mesmo tipo. Exemplos:
Clientes, Bancos, Agncias, Contas-corrente.

Atributos: So os qualificadores de uma entidade, isto , representam no


modelo o que uma entidade pretende ser. Exemplos: Nome, RG, CPF,
Endereo, Nmero conta, Nmero agncia, Nmero banco.
Conceito de banco de dados relacionais

Domnio: Conjunto de valores permissveis para um atributo. Exemplo:


(Casado,Solteiro e Etc ).

Relacionamento: a associao entre duas entidades, ou seja, representa


a maneira como duas entidades esto relacionadas ou ligadas. Exemplos:
Conta-corrente de um Cliente, Agncias de um Banco, Contas-Corrente de
uma Agncia.

Restries de Mapeamento: Representam o modo como as diferentes


entidades de um modelo se relacionam. Determinadas pela cardinalidade
dos relacionamentos entre as entidades.
Conceito de banco de dados relacionais

Um-para-Um: Uma ocorrncia da entidade A est relacionada com uma e


apenas uma ocorrncia da entidade B.

Um-para-N: Uma ocorrncia da entidade A est relacionada com uma ou


vrias ocorrncias da entidade B.
EX : MARCA X CARRO

N-par-N: Vrias ocorrncias da entidade A esto relacionadas com vrias


ocorrncias da entidade B.
EX : FORNECEDOR X PRODUTO
Conceito de banco de dados relacionais

Modelo Relacional
Um banco de dados relacional a implementao fsica do modelo
entidade-relacionamento e traduz concretamente o que o modelo
conceitual procura representar. Consiste em uma coleo de tabelas cada
uma das quais associada a um nome nico e que possuem
relacionamentos entre si. Tabelas representam fisicamente as entidades.

Cada tabela possui uma estrutura similar quilo que pretende


representar, isto , tabelas so formadas de linhas que por sua vez so
formadas por colunas. Colunas representam fisicamente os atributos.
A cada linha da tabela chamaremos de ocorrncia e o conjunto de
ocorrncias pode ou no estar relacionado com ocorrncias de outras
tabelas.
Conceito de banco de dados relacionais

Como distinguir as ocorrncias umas das outras?


Utilizando o conceito de chave primria.

Chave Primria: Conjunto de atributos que garante a unicidade de cada


ocorrncia da tabela. Exemplos: RG, CPF, Nmero do Chassis.
Normalizao: Processo de reconhecimento da chave primria.

Como representar os relacionamentos entre tabelas?


Transferindo a chave primria de uma tabela para a outra.

Chave Estrangeira: Quando a chave primria de uma tabela um atributo


em outra(s) tabela(s).
Tipo de dados do dicionrio ABAP

O dicionrio ABAP (Transao SE11) permite a administrao central de


todas as definies de dados do R/3, permitindo a criao de tipos de
dados definidos pelo usurio para uso posterior, alm de vrios itens
auxiliares ao desenvolvimento de programas ( p.ex: search helps ).

Podem ser definidas tabelas e vises dentro do dicionrio. O R/3 se


encarrega, durante a ativao desses elementos, de cri-los no banco de
dados. O dicionrio permite, ainda, a criao de ndices, que agilizam as
buscas. A definio de ndices apropriados de suma importncia para o
bom desempenho do sistema. Cabe lembrar que uma busca sem ndice
realizada em um tabela extensa pode ter pesado custo em termos de
performance.
Tipo de dados do dicionrio ABAP

As definies de tipos de dados dentro do R/3 incluem os elementos


de dados, que definem um tipo elementar descrevendo o tipo bsico de
dados, o comprimento e, eventualmente, as casas decimais; as estruturas,
que podem receber elementos de vrios tipos (semelhante
representao de um registro numa tabela); e as estruturas append, que
seriam campos em formato de tabela.

Por exemplo, uma estrutura do registro de uma estrutura de usurio


que tivesse um campo para nmeros de telefone poderia usar um table
type e permitir colocar vrios nmeros num mesmo campo.
Tipo de dados do dicionrio ABAP

Alm dessas definies, o dicionrio ABAP permite criar os search


helps, que so tabelas de busca auxiliares aos campos de tela so as
buscas e tabelas que aparecem quando se tecla F4 dentro de um campo
em qualquer tela do R/3.

Criando documentao para o elemento de dados dentro do


dicionrio, automaticamente est disponvel a ajuda do campo, que pode
ser invocada usando-se a tela F1 dentro dos campos de tela. Pode-se,
ainda, definir verificaes de entrada automaticamente, bastando definir
uma relao de foreign key.

No dicionrio tambm so criados os objetos de lock, que permitem


definir o travamento de dados dentro do R/3. Por exemplo, podem-se
definir objetos de lock para impedir que dois usurios editem a mesma
informao ao mesmo tempo no sistema.
Tipo de dados do dicionrio ABAP

O dicionrio integrado s ferramentas de desenvolvimento e execuo


do R/3, permitindo o acesso das ferramentas s definies nele contidas.
Por exemplo, possvel navegar de um programa que esteja sendo criado
no editor ABAP para definies de campos, elementos e tabelas usadas no
programa.

Tipos de Dados
I Campos numricos sem decimais, contadores, etc.

P Campos numricos com decimais, quantidade e moeda.

C Campo alfa, mais utilizado para conter textos, pode conter nmeros at
efetuar clculos, mas no usual.
Tipo de dados do dicionrio ABAP

N Campo alfa, utilizado para conter nmeros sem decimais e preenchidos


com zeros esquerda.

D Campo data, armazenado no banco de dados no formato AAAAMMDD,


permite-se fazer contas do tipo 20041201 + 31 = 20050101.

T Campo hora, armazenado no banco de dados no formato HHMMSS.


Conceito de domnio, elemento de dados.

Domnios
O domnio contm os tipo de dado e comprimento do campo. Podem
conter os valores vlidos para o campo, atravs de valores fixos entrados
no domnio ou por uma tabela de valores (Value Table).

Tabela de Valores
Contm os valores que o domnio pode assumir.

Elementos de dados.
Os elementos de dados agrupam as definies de tipo, tamanho e
descrio dos campos em um s objeto. til quando os campos se
repetem em diversas tabelas.
Criao de tabelas transparentes,
estruturas e view.

A definio de uma tabela consiste dos seguintes


componentes:

Campos - Define o nome e o tipo dos campos da tabela.

Chaves Estrangeiras( Check Table ) - define o relacionamento entre a


tabela e outras tabelas do sistema, usadas para manter a integridade
dos dados no BD.

Opes Tcnicas - controla como a tabela deve ser criada no Banco de


Dados.

ndices - Para melhorar a performance nos acessos a tabela, pode-se


criar ndices secundrios para ela.
Criao de tabelas transparentes,
estruturas e view.

Ao se criar uma tabela ser necessrio informar :

Campo: O nome do campo pode conter at 16 caracteres, devendo


comear com uma letra.
Flag-Chave: Indicativo para campos chave.
Tipo: Tipo de dado do campo.
Comprimento: Comprimento do campo.
Casas Decimais: Nmero de casas decimais aps a vrgula.
Texto Breve: Descrio breve do campo.
Criao de tabelas transparentes,
estruturas e view.

Tabela Transparente

Existe uma tabela fsica no banco de dados para uma tabela


transparente. Os nomes da tabela fsica e da definio lgica de tabela
so coincidentes no ABAP Dictionary.
Todos os dados empresariais e dados de aplicao so arquivados em
tabelas transparentes.
Criao de tabelas transparentes,
estruturas e view.

Estruturas

So como tabelas que no armazenam dados, definem um conjunto de


campos e geralmente so utilizadas para definir os dados na interface de
pools de mdulos e telas, assim como para atribuir o tipo aos parmetros
de mdulos de funo. Uma estrutura diferentemente de uma tabela no
tem uma tabela de banco de dados associada a ela.
Criao de tabelas transparentes,
estruturas e view.

Vises
So tabelas virtuais que resultam da unio de tabelas transparentes e que
contm uma certa quantidade de informaes.
Criao de ndices primrios e secundrios

ndices

Um ndice pode ser considerado como uma cpia da tabela que foi
reduzida a um certo nmero de campos. Esta cpia est sempre
ordenada. A ordenao faz com que o acessos ao registros se torne
mais rpido, o ndice tambm contm, um ponteiro para o registro
real na tabela transparente, para que os campos que no esto no
ndice tambm possam ser lidos.

O ndice primrio separado dos ndices secundrios. O ndice


primrio constitudo dos campos indicados como campo-chave na
criao da tabela.
Criao de dilogo de manuteno

Pode ser feita uma criao automtica de programa on-line para


manuteno de tabelas transparentes atravs da transao SE11. Para
tanto basta seguir estes procedimentos :

Informar o nome da tabela a ser alimentada.


Clicar no menu utilitrios/Gerador de atualizao de tabelas.
Informar grupo de funes
Informar o grupo de autorizao
Se a tabela contiver poucos campos, usar nvel nico, seno
2 nveis.
Clicar procurar nmero de tela. O sistema sugere os nmeros das
telas.Deixar assim.
Criao de dilogo de manuteno

Gerar mdulo.
Captulo 3

INTRODUO LINGUAGEM ABAP


Captulo 3 Introduo linguagem ABAP

Como funciona a transao SE38 Editor ABAP.


Blocos de eventos.
Declarao de variveis, tabelas internas, ranges e constants.
Definio de parmetros de entrada.
Principais comandos ABAP.
Executando um programa report.
Como funciona a transao SE38 Editor ABAP.

Transao SE38.

Permite a visualizao, edio e execuo de programas ABAP, bem


como duplicao de um programa e deleo do mesmo, entre outros
recursos.
Como funciona a transao
SE38 Editor ABAP
Como funciona a transao
SE38 Editor ABAP

- Voltar, encerrar e cancelar.

- Compilar e ativar.

- Executar,ref.cruzada,anlise de ambiente e ajuda on-line.

- Eliminar,copiar e renomear.

- Criar o novo programa.


Como funciona a transao
SE38 Editor ABAP

Texto fonte Texto principal do programa.


Variantes Exibe as variantes gravadas p/execuo do
programa.
Caractersticas Exibe as caractersticas do programa
como classe de desenvolvimento,
tipo do fonte (includes, executvel e etc).
Documentao Documentao simplificada do
programa.
Elementos de texto Textos que sero utilizados para
execuo do programa

- Exibio do fonte e modificao do fonte.


Como funciona a transao
SE38 Editor ABAP

- Gravar o fonte.
- Imprimir fonte,localizar e localizar prxima.
- Modificar, ativar desativar, outro objeto e ampliar.
- Compilar, ativar,testar e ref.cruzada.
- Lista de Objetos,janela de navegao, tela completa e ajuda.
- Ponto de parada na sesso, ponto de parada externo,
modelo e identao.
- Recuar, recuperar,localizar,localizar prxima,
upload e download.
Como funciona a transao
SE38 Editor ABAP

- Controle de verso
Como funciona a transao
SE38 Editor ABAP
Como funciona a transao
SE38 Editor ABAP

- Tipos de editor
Blocos de eventos

Eventos:
Evento um Tag que identifica uma seo de cdigo. A seo de cdigo
Associada com um evento comea com um nome de evento e termina
quando o prximo encontrado.

INITIALIZATION Evento acionado antes da tela de seleo ser acionada.


Seria uma preparao para executar o programa.
Ex: inicializao de variveis de tela com condio.

AT SELECTION SCREEN Evento processado depois da entrada do


usurio na tela de seleo ativa.Isso pode ser quando o usurio pressiona
uma tecla de funo ou d um clique em um boto.
Blocos de eventos

START-OF-SELECTION Evento onde executa o processamento principal


do programa.

END-OF-SELECTION Evento onde finaliza o processamento do programa.

TOP-OF-PAGE (incio relatrio) Evento utilizado quando executado o


primeiro comando write.

END-OF-PAGE (fim relatrio) - Evento utilizado no final do relatrio.

AT USER-COMMAND (tratamento de botes) Evento para tratamento de


botes.
Blocos de eventos

AT LINE-SELECTION O processamento das listas de detalhe dentro do R/3


feito pelo evento AT LINE-SELECTION. O R/3 executa os comando que houver
dentro desse evento toda vez que o usurio clica duas vezes sobre uma linha
em uma lista ou clica sobre um campo marcado com HOTSPOT, ou teclando-se
F2 sobre um registro, ou escolhendo um boto que tenha o cdigo standard
PICK a ele associado.
Blocos de eventos
Declarao de variveis, tabelas internas,
ranges e constants

Declarao : Locais e Globais.

Locais:
Essas declaraes so apenas vistas dentro da mesma sub-rotuna.
So utilizadas no caso de processos individuais dentro do programa.

Globais:
Essas declaraes podem vistas de qualquer ponto no programa,
seja dentro de um evento ou sub-rotina. boa a prtica de
colocar definies globais na parte superior do programa.
Declarao de variveis, tabelas internas,
ranges e constants

- Tipos de dados:
Declarao de variveis, tabelas internas,
ranges e constants

Entre as formas de tipos de dados, as mais usadas no desenvolvimento de


programas ABAP/4 so:

Variveis : So declaradas para receber valores que so alterados durante a


execuo do programa.

Contants : So declaradas quando existem valores que no so alterados


durante a execuo do programa. A forma da declarao e o tipos de dados
seguem o mesmo padro das variveis.

Ranges : Tabela interna com a mesma estrutura de um select-options, mas sem


conexo com uma tela de entrada.
Declarao de variveis, tabelas internas,
ranges e constants

Variveis
DATA: varname(n) TYPE _.
DATA: varname LIKE varname2 VALUE valor_default.

Exemplo:
DATA: w_contador TYPE I value 100.
DATA: w_data LIKE sy-datum VALUE 20040106.
Declarao de variveis, tabelas internas,
ranges e constants

Constantes
CONSTANTS: constname(n) TYPE _.
CONSTANTS: constname(n) LIKE varname2 VALUE valor_default.

Exemplo:
CONSTANTS: c_contador TYPE I value 100.
CONSTANTS: c_data LIKE sy-datum VALUE 20040106.
Declarao de variveis, tabelas internas,
ranges e constants

Ranges
Ranges: rangename FOR _.

Exemplo:
Ranges: r_vstel FOR vbap-vstel.
Declarao de variveis, tabelas internas,
ranges e constants

Tabelas Transparentes: So declaradas quando existem seleo, insero,


alteraes e excluso de valores em tabelas.
Declarao de variveis, tabelas internas,
ranges e constants

Tabelas Transparentes:
TABLES: tabbanco, tab1, tab2, tab3,...tabn.

Exemplo:
TABLES: LFA1, EKKO.
Declarao de variveis, tabelas internas,
ranges e constants

Tabela Interna : Uma tabela interna consiste em uma srie de linhas do


mesmo tipo de dados. Os dados so armazenados linha a linha na memria, e
cada linha tem a mesma estrutura.

Deve-se usar tabelas internas sempre que precisar usar registros de tabelas
transparentes dentro do programa.
Declarao de variveis, tabelas internas,
ranges e constants

Tipos de tabelas internas :

Standard table: Permite acesso sequncial aos dados;

Sorted table: o tipo mais apropriado se voc precisa de uma tabela


ordenada independente do seu preenchimento. No pode ser utilizar o
comando sort nesse tipo de tabela;

Hashed table: As tabelas do tipo Hashed table so organizadas de acordo


com a chave especificada e no permitem operaes utilizando o nmero
sequncial dos registros. So mais adequadas a grande volume de dados.
Declarao de variveis, tabelas internas,
ranges e constants

Tabelas Internas:
DATA: t_tab1 TYPE tabinttipo OF estrutname WITH HEADER LINE,
t_tab2 LIKE tabinttipo OF tab1 WITH HEADER LINE.

Exemplo:
DATA: T_TAB1 TYPE STANDARD TABLE OF TP_BANCO WITH HEADER LINE,
T_TAB2 TYPE STANDARD TABLE OF LFA1 WITH HEADER LINE.
Declarao de variveis, tabelas internas,
ranges e constants

Estruturas:So modelos de tabelas sem dados. Esses modelos podem ser


utlizados com referncias para criao de tabelas internas, parmetros de
funo e etc.
Declarao de variveis, tabelas internas,
ranges e constants

Estruturas Exemplo

TYPES: BEGIN OF <typename>, TYPES: BEGIN OF TP_BANCO


var1 TYPE _, numero TYPE N,
var2 LIKE tab1-campo, agencia TYPE N,
..... nome(30) TYPE C,
END OF <typename>. END OF TP_BANCO.

TYPES BEGIN OF <typename>,. TYPES BEGIN OF FORNECEDOR.


INCLUDE STRUCTURE INCLUDE STRUCTURE LFA1.
<tabbanco>. TYPES END OF FORNECEDOR.
TYPES END OF <typename>,.
Declarao de variveis, tabelas internas,
ranges e constants

Registros Exemplo

TYPES: BEGIN OF <typename>, TYPES: BEGIN OF TP_BANCO


var1 TYPE _, numero TYPE N,
var2 LIKE tab1-campo, agencia TYPE N,
..... nome(30) TYPE C,
END OF <typename>. END OF TP_BANCO.

DATA: T_TAB1 TYPE <typename>. DAtA: T_BANCO TYPE TP_BANCO.


Definio de parmetros de entrada

Parmetros de entrada :
Essa instruo muito parecida com a instruo data, mas quando voc executa o
programa, o sistema exiber os parmetros como campos de entrada em uma tela de
seleo antes que o programa realmente comece a ser executado. O usurio pode digitar
ou modificar seus valores e ento pressionar o boto execute, para iniciar o
processamento.

PARAMETERS: uma forma de entrada de dados que o usurio poder escolher


apenas 1 valor em cada execuo.

SELECT-OPTIONS: Select-Options uma forma de entrada de dados que o usurio


poder escolher N valores em cada execuo. No parmetro SELECT-OPTIONS
podemos tambm definir faixas de dados, valores individuais, excluso de valores
individuais, excluso de faixas e etc.

CHECK-BOX : Esse parmetro utilizado para funcionalidades ligadas ou desligadas.


No trabalha com grupo de seleo.

RADIOBUTTON: Esse parmetro utilizado para funcionalidades ligadas ou desligadas,


envolvendo vrias opes. Trabalha com grupo de seleo.
Definio de parmetros de entrada

PARAMETERS: p_par1 TYPE __ ,


p_par2 LIKE var1 DEFAULT valor_default,
p_par3 AS CHECKBOX ,
p_par4 RADDIOBUTTON GROUP grpname
OBLIGATORY.

SELECTION-SCREEN:
BEGIN OF BLOCK bl_name WITH FRAME
TITLE title_text.
END OF BLOCK bl_name.
BEGIN OF LINE.
END OF LINE.
COMMENT pos(dim) text
POSITION pos.
Definio de parmetros de entrada

SELECT-OPTIONS: s_par1 FOR campo1 ,


NO-EXTENSION.
NO INTERVALS.
DEFAULT valor1 TO valor2.
OBLIGATORY.
NO-DISPLAY.
MEMORY ID mem.
MATCHCODE OBJECT obj.
Principais comandos ABAP

Comando/Funo Descrio
ADD Adiciona um valor a outro campo
numrico
APPEND Gravar em tabela interna
APPEND LINES Gravar linhas em tabela interna
APPEND SORTED BY Usado para classificar linhas em
ordem durante o append
AT END OF Identifica o ultimo registro de uma
sequncia (quebra)
AT EXIT-COMMAND Usado para definir a execuo de
mdulos com botes
AT FIRST Identifica o primeiro registro da
tabela percorrida
AT LAST Identifica o ultimo registro da tabela
percorrida
Principais comandos ABAP

Comando/Funo Descrio
AT LINE-SELECTION Evento para abrir uma segunda tela
dentro de um relatrio
AT NEW Identifica o primeiro registro de uma
sequncia
AT SELECTION-SCREEN ON Analisar o resultado de uma varivel
AT USER-COMMAND Evento para inicializar os botes
criados
AUTHORITY-CHECK OBJECT Para verificar a autorizao para
determinado objeto
AS TEXT Usado para classificar caracteres
acentuados
ASSIGN f1 TO <f> Atribuio dinmica
AS SYMBOL / AS ICON / AS LINE Comandos usados para formatao
em relatrios
Principais comandos ABAP

Comando/Funo Descrio
CALL TRANSACTION Comando usado para chamar
transaes
CASE... WHEN... ENDCASE Comando para tomadas de deciso
CHECK Substitui o comando IF
CLEAR Limpar o contedo de uma varivel
CLOSE DATASET Fecha um arquivo externo
CLOSE_FORM Funo usada para fechar um
formulrio sapscript
COLLECT Organiza a tabela com todas as
descries esquerda totalizando os
campos numricos
COMMIT WORK Efetiva as alteraes no banco
Principais comandos ABAP

Comando/Funo Descrio
CONCATENATE Agrupa vrios campos em um s
CONSTANTS Criar constantes para serem usadas
em todo o programa
CONTINUE Volta ao incio de um loop aps a
verificao de uma condio
CONDENSE Remove os espaos em branco em
um texto
DATA Criar tabelas internas e variveis
DELETE Deleta um registro de uma tabela
interna
DESCRIBE TABLE Determina o nmero de linhas de
uma tabela interna
DO... ENDDO Usado para criar um loop
Principais comandos ABAP

Comando/Funo Descrio
GUI_DOWNLOAD Funo para download de arquivo
END_FORM Funo usada para finalizar um
formulrio sapscript
END-OF-PAGE Evento executado ao finalizar a
impresso de uma pgina
END-OF-SELECTION Evento executado logo aps o
evento START-OF-SELECTION
EXIT Comando usado para sair de um
loop ou sub-rotina
FORM Indica o incio de uma sub-rotina
FORMAT COLOR Usado para formatar a sada do
comando write(COR)
FREE Libera espao de memria utilizado
por uma tabela interna
Principais comandos ABAP

Comando/Funo Descrio
HIDE Usado para definir campos para uma
segunda janela em relatrios
ID... FIELD... Objetos de autorizao
IF... ELSE... ENDIF Comando de deciso
IF NOT... IS INITIAL Verifica se uma varivel est vazia
INITIALIZATION Primeiro evento executado dentro de
um programa
INSERT Insere o contedo de um registro em
uma tabela transparente
INSERT LINES Insere mais de uma linha em uma
tabela transparente
Principais comandos ABAP

Comando/Funo Descrio
LEAVE PROGRAM Comando encerra um programa
LEAVE TO SCREEN Comando que direciona a ida de uma
tela para outra
LINE-COUNT Limita o nmero de linhas por pgina
LINE-SIZE Limita o nmero de colunas por
pgina
LOOP AT Loop no contedo de uma tabela
interna
MESSAGE Usado para mostrar mensagens na
tela
MESSAGE-ID Usado para definir uma classe de
mensagem
MODIFY Modifica o contedo de uma linha da
tabela interna
Principais comandos ABAP

Comando/Funo Descrio
MODULE Usado para a criao de sub-rotinas
em programas on-line
MOVE Move o contedo de uma varivel
para outra
MOVE-CORRESPONDING Move apenas campos com o mesmo
nome
NEW-PAGE Fora quebra de pgina em um
relatrio
NO STANDARD PAGE HEADING Ignora a impresso do cabealho
standard do SAP em relatrios
OPEN DATASET Para abrir arquivo externo(somente
para UNIX)
OPEN_FORM Funo para abrir formulrio
sapscript
Principais comandos ABAP

Comando/Funo Descrio
PARAMETERS Criar parmetros de seleo
PERFORM Usado para chamar sub-rotinas
READ DATASET... INTO Usado para ler e importar dados de
um arquivo externo (UNIX)
READ TABLE Ler registro em tabela interna
REFRESH Limpa todo o contedo de uma
tabela interna
REPLACE Substitui um texto dentro de outro
texto
REPORT Incio de um relatrio(programa)
SEARCH Procura um texto dentro de outro
texto
SELECT Usado para selecionar dados em
uma tabela
Principais comandos ABAP

Comando/Funo Descrio
SELECT-OPTIONS Declarar parmetros de seleo com
opes
SELECTION-SCREEN Criar BOX na tela
SET PF-STATUS Comando usado para definir menu a
ser usado
SET TITLEBAR Criar ttulos em janelas
SKIP Saltar linha
SORT Ordenar o contedo de uma tabela
interna
SPLIT... AT... INTO Comando usado para separar
contedo de uma varivel e outra(s)
START_FORM Funo para iniciar formulrio
sapscript
START-OF-SELECTION Evento para marcar incio da rotina
principal do programa
Principais comandos ABAP

Comando/Funo Descrio
STRLEN Retorna o tamanho de um texto
SUBTRACT Subtrai um valor numrico de outro
valor
SUM Totaliza um campo numrico
SY-BATCH Indica execuo em background
SY-DATUM Retorna a data atual do sistema
SY-LANGU Retorna o idioma de logon
SY-LINNO Linha corrente em um relatrio
SY-LISEL Linha selecionada em relatrios
interativos
SY-MANDT Retorna o mandante
SY-PAGNO Faz paginao automtica(num.
Pagina)
Principais comandos ABAP

Comando/Funo Descrio
SY-SUBRC Retorna o resultado de uma
execuo(OK ou No OK)
SY-TABIX Linha corrente de uma tabela interna
SY-UCOMM Retorna o nome de um boto
SY-UNAME Retorna o usurio logado
SY-UZEIT Retorna a hora atual do sistema
SY-VLINE Serve para fazer o fechamento de
bordas de um relatrio
SY-ULINE Imprime uma linha com n posies
SY-CPROG Retorna o nome do programa
principal
SY-TCODE Retorna o cdigo da transao
TABLES Usado para declarar tabelas
Principais comandos ABAP

Comando/Funo Descrio
TOP-OF-PAGE Evento para incio de cabealho em
um relatrio
TRANSFER... TO... Usado para ler e gravar em arquivo
externo (UNIX)
TYPES Define estrutura para tabelas
internas
UPDATE Atualiza o contedo de uma tabela
transparente
WHILE... ENDWHILE Cria laos de execuo
WRITE Sada em relatrio
WRITE_FORM Funo para escrever no formulrio
sapscript
WS_UPLOAD Funo para fazer upload de um
arquivo externo
Executando um programa report
Captulo 4

CONCEITO DE PROCEDURES, FUNO E


INCLUDES
Conceito de Procedures, funo e includes

Como criar uma procedure.


Como criar um Include.
Como criar uma mdulo de funo em ABAP.
Testando a execuo de uma funo.
Criando um report chamando procedures e funes.
Conceito de Procedures, funo e includes

Procedures: mdulos internos do programa, que possuem uma interface.


Com uma declarao ABAP, possvel chamar um subprograma em um
programa, a partir de qualquer outro bloco de processamento.

Mdulos de funo: mdulos com uma interface transparente, disponveis


em todo o sistema. Esses mdulos podem ser chamados de qualquer
bloco de processamento e em qualquer programa ABAP que utilize uma
declarao ABAP especial.
Conceito de Procedures, funo e includes

Procedures

O bloco de processamento de um subprograma comea com 'FORM


<subroutine name> <interface definition>' e termina com ' ... ENDFORM. ' .

possvel utilizar a declarao DATA em uma rotina FORM para declarar


os dados locais. Se um objeto local tem o mesmo nome de um objeto
global, o global ser invisvel dentro do subprograma.
Conceito de Procedures, funo e includes

- A interface definida da seguinte maneira:

Aps USING, deve-se relacionar em uma lista todos os parmetros que o


subprograma s precisa ler.

Aps CHANGING, deve-se relacionar em uma lista todos os parmetros


que o subprograma vai modificar e cujos valores sero transferidos para o
programa de chamada.

Aps TABLES, deve-se relacionar em uma lista todas as tabelas internas


que ir modificar e cujos valores sero transferidos para o programa
principal.
Conceito de Procedures, funo e includes

Exemplo :
DATA sflight_tab TYPE STANDARD TABLE OF sflight.

PARAMETERS: p_carr TYPE sflight-carrid,


p_conn TYPE sflight-connid.

PERFORM select_sflight TABLES sflight_tab


USING p_carr p_conn.

FORM select_sflight TABLES flight_tab LIKE sflight_tab


USING f_carr TYPE sflight-carrid
f_conn TYPE sflight-connid.
SELECT *
FROM sflight
INTO TABLE flight_tab
WHERE carrid = f_carr AND
connid = f_conn.
f_carr = BB.
ENDFORM.
Conceito de Procedures, funo e includes

As rotinas FORM podem ser chamadas a partir de qualquer bloco de


processamento ABAP por meio de PERFORM <nome do subprograma>
<interface>.

O nmero de parmetros atuais deve ser igual ao de parmetros formais.


No possvel ter parmetros opcionais. Os parmetros so atribudos na
seqncia em que esto relacionados na lista.

Quando um subprograma chamado com a declarao PERFORM, o


sistema verifica se os tipos dos parmetros atuais de PERFORM so
compatveis com os parmetros formais.
Conceito de Procedures, funo e includes

Existe a possibilidade de omitir o tipo. Nesse caso, o parmetro formal


herda o tipo do parmetro atual correspondente.
Como criar um mdulo de funo em ABAP

Exemplo :
DATA: a1 TYPE string value 'a1',
a2 TYPE string value 'a2',
a3 TYPE string value 'a3',
a4 TYPE string value 'a4'.

PERFORM test USING a1 a2 a3 a4.


a1 = 'a1'. a2 = 'a2. a3 = 'a3'. a4 = 'a4'.
PERFORM test CHANGING a1 a2 a3 a4.
a1 = 'a1'. a2 = 'a2. a3 = 'a3'. a4 = 'a4'.
PERFORM test USING a1 CHANGING a2 a3 a4.
a1 = 'a1'. a2 = 'a2. a3 = 'a3'. a4 = 'a4'.
PERFORM test USING a1 a2 CHANGING a3 a4.
a1 = 'a1'. a2 = 'a2. a3 = 'a3'. a4 = 'a4'.

PERFORM test USING a1 a2 a3 CHANGING a4.

FORM test USING p1 TYPE string


p2 TYPE string
CHANGING p3 TYPE string
p4 TYPE string.
p1 = 'b1'.
p2 = 'b2'.
p3 = 'b3'.
p4 = 'b4'.
ENDFORM.
Testando a execuo de uma funo

Tambm podemos executar procedures relacionadas em outros programas


utilizando a sintaxe abaixo:

- PERFORM <nome da procedure> IN PROGRAM <nome do programa>


CHANGING <valor> IF FOUND.
Criando um report chamando procedures
e funes

- Submit :
O comando submit utilizado para chamar de dentro de um programa outro
programa com os parmetros desejados.

Ex : SUBMIT < Nome do programa >


USING SELECTION-SCREEN < Nmero da tela >
WITH <PARAMETERS> EQ <valor do parmetro>
<SELECT-OPTIONS> IN <valor do parmetro>
AND RETURN.
Criando um report chamando procedures
e funes

Funes :

-Mdulos de funo so subprogramas externos com uma interface


transparente. A interface considerada transparente porque no est includa
nas declaraes do programa ABAP para a parte executvel do mdulo de
funo. A interface definida separadamente e pode ser atualizada
independentemente do texto.

-Com os parmetros opcionais, acrscimos interface podem tornar as


declaraes do programa ABAP completamente executveis sem qualquer
modificao. Eles so armazenados de forma centralizada no Repository R/3.

-Cada mdulo de funo pertence a um grupo de funes.

-Existem vrias funes STANDARD que podem ser utilizadas nos programas
customizados (Pesquisa na SE37).
Criando um report chamando procedures
e funes

- Transao SE37

A transao SE37 responsvel pela criao de funes.


Criando um report chamando procedures
e funes

Caractersticas: So definidas as caractersticas da funo, como texto breve,


qual grupo de funo pertence, responsvel etc.
- Mdulo de funo normal definida como default. Trata-se de uma
funo internamente pelo sistema.
- Mdulo de acesso remoto definida quanto a funo chamada
remotamente de outra plataforma No SAP.

Parmetros da interface: possvel utilizar objetos de dados elementares, estruturas ou


tabelas internas como parmetros de importao, exportao e modificao. Os mdulos
de funo utilizam os mesmos mtodos de transmisso de parmetros que as rotinas
FORM.

Excees: se, durante o processamento, ocorre um erro em um mdulo, possvel inserir


a correo dentro do prprio mdulo como uma exceo.
possvel antecipar possveis erros e escrever o programa de modo que eles no
causem erros de tempo de execuo. As possveis excees so denominadas na
interface do mdulo de funo e acionadas a partir do texto de programa, por meio da
declarao RAISE. Cada programa que chama o mdulo de funo consulta sy-subrc
para interpretar as excees.
Criando um report chamando procedures
e funes

Valor proposto : Valor inicial para o parmetro caso no seja passado


nenhum valor na interface.

Opcional: Parmetro no obrigatrio.

Transf.Valores: A transferncia do parmetro efetuada com transferncia de


valor. Isto significa que o contedo do parmetro copiado durante a
transferncia. Em estruturas que contm tabelas, isto pode levar a fortes
redues de performance e, se possvel, no deve ser utilizado.
Criando um report chamando procedures
e funes

Criar uma funo z_busca_price. Essa funo dever buscar o campo price
da tabela SFLIGHT, utilizando os parmetros abaixo :

Parmetros de importao :
carrid companhia area(obrigatrio).
connid cdigo de conexo do vo(obrigatrio).
fldate data do vo(No obrigatrio).

Parmetros de exportao :
Price preo do vo.

Excees :
Error_parameters = 1
Criando um report chamando procedures
e funes

- Includes:

Programas do tipo include, pode se modularizar um programa utilizando


cdigos fontes no executveis e chama-se esses cdigo de dentro do
programa principal. utilizado para declaraes de variveis em programas
muito extensos.
Criando um report chamando procedures
e funes

- Criar um programa utilizando funo e procedures.


Captulo 5

SQL
Captulo 5 SQL

Comandos SQL.
Performance.
Comandos SQL

Comandos SQL
Comandos SQL
Comandos SQL

DATA: BEGIN OF WA,


CARRID TYPE SPFLI-CARRID,
CONNID TYPE SPFLI-CONNID,
CITYFROM TYPE SPFLI-CITYFROM,
CITYTO TYPE SPFLI-CITYTO,
END OF WA,
ITAB LIKE SORTED TABLE OF WA
WITH NON-UNIQUE KEY
CITYFROM CITYTO.
SELECT CARRID CONNID CITYFROM CITYTO
INTO CORRESPONDING FIELDS OF TABLE
ITAB
FROM SPFLI.

IF SY-SUBRC EQ 0.
WRITE: / SY-DBCNT, 'Connections'.
SKIP.
LOOP AT ITAB INTO WA.
WRITE: / WA-CARRID,
WA-CONNID,
WA-CITYFROM,
WA-CITYTO.
ENDLOOP.
ENDIF.
Comandos SQL

ALGUNS TIPOS DE SELECT

SELECT FROM <table> INTO TABLE <INTERNAL TABLE> .


A estrutura da tabela interna deve corresponder estrutura da tabela que
est sendo acessada. O sistema l os registros em conjunto, no
individualmente, e os coloca dentro de uma internal table. Este processo
mais rpido que ler individualmente atravs de um LOOP e ir gravando
os registros, um a um.
Comandos SQL

SELECT * FROM <table> APPENDING TABLE <internal table>.


L os registros e os inclui - no sobrepe - em uma internal table.

SELECT . INTO CORRESPONDING FIELDS OF TABLE <itab>.


Neste caso a estrutura da tabela interna no precisa corresponder
estrutura da tabela que est sendo acessada. <itab> o nome da internal
table. Movimentar os registros para as colunas definidas na internal table
que possuam nome igual ao da tabela acessada).
Obs.: corresponding ou appending corresponding no exigem o endselect.
Comandos SQL

SELECT .. APPENDING CORRESPONDING FIELDS OF TABLE <itab>.


L e grava (no sobrepe) os dados em uma internal table que possua
nomes idnticos aos nomes da tabela que est sendo lida.

SELECT SINGLE * FROM SPFLI WHERE ..<campo>.. EQ <contedo>


Toda vez que se usa select single * a chave primria completa deve ser
especificada. Se a chave especificada no qualificada, voc receber
uma mensagem de warning e a performance ficar prejudicada.
No caso de haver a necessidade de acessar um nico registro via select,
as opes so: select * .. seguido de comando exit OU select * up
to 1 row. Neste caso no necessrio especificar a chave completa.
Comandos SQL

SELECT * FROM <tabela>


Quando no se impe nenhum tipo de restrio, ocorre uma varredura sequencial dos
registros da tabela. Quando se utiliza grandes tabelas, isso obviamente afeta o
runtime.

Select * seleciona todas as colunas de uma tabela. melhor sempre especificar as


colunas, pois em caso de tabelas com muitas colunas, prejudicar performance.

SELECT * FROM <tabela> WHERE <campo> eq <contedo>.


L todos os registros da tabela especificada onde o campo igual ao contedo
especificado. O ideal que se qualifique a clusula WHERE tanto mais quanto seja
possvel. Atentar que isso vlido para tabelas do tipo Pool e Transparent. Para
Cluster, seguir as recomendaes dadas anteriormente.
Comandos SQL

SELECT <a1> <a2> INTO (<f1>, <f2>, ) FROM .<tabela>


WHERE .
L as colunas especificadas (a1, a2). Aps INTO devero ser especificadas as reas de
trabalho auxiliares (f1, f2). O nmero de colunas lidas dever ser igual ao nmero de
work-areas especificadas.

SELECT * FROM <table> WHERE <table field> BETWEEN <field1> and <field2>.
Ex.: field1 = 100 e field2 = 500. Pega inclusive 100 e 500. Voc trabalha
com o range.
Comandos SQL

SELECT * FROM <table> WHERE <table field> LIKE ._R%.


_ = a primeira letra no importa o que vir a segunda dever ser R (eu defini)
% = no importa a sequncia de caracteres que vir.
(Varredura para que possa realizar a comparao)

SELECT * FROM <table> WHERE <table field> IN (.,.).


Exemplo: select * from <table> where campo1 in (123,1000) - podem ser valores ou
literais. igual a perguntar se campo1 123 ou 1000.
Comandos SQL

SELECT * FROM <table> FOR ALL ENTRIES IN <internal table> WHERE


campo1 = <contedo> and
campo2 = <contedo>
Defino uma tabela interna. Alimento os campos desta tabela interna. (move e
append). No meu select campo1 e campo2 sero os campos definidos e alimentados
na tabela interna.

Esta uma excelente soluo quando se trabalha com grandes tabelas.

O select for all entries simula a funcionalidade join.


Comandos SQL

SELECT * FROM <table> ORDER BY <field1> <field2> PRIMARY KEY.

Obs.: Classifica a tabela interna numa rea auxiliar, sem afetar a tabela
original. Evitar o uso de sorts dentro de um select. Consome mais tempo
que descarregar os dados em uma tabela interna e classific-los.
Performance

Para se obter uma otimizao da performance em programas ABAP, deve-se


minimizar o tempo de acesso ao database.
Grandes viles no que se refere performance
Ninhos de select;
Select . Endselect ao invs de comandos que recuperem do banco de dados
todos os registros de uma nica vez;
Select * ao invs de select com as colunas necessrias ao processamento;
Select single sem chave completa especificada ao invs de Select up to 1 row;
Selects genricos, ou seja, onde a clusula where no foi fortemente
especificada, com vrias condies, visando restringir ;
ndices no utilizados;
Performance

Falta de ndices;
Select em tabelas com alto nmero de registros utilizando clusula
where baseada em tela de seleo onde o preenchimento no
obrigatrio;
Definio funcional falha;
Grandes tabelas do sistema: BKPF, BSEG, EKKO, EKPO, VBAK, VBAB,
MKPF, MSEG, J_1BNFDOC, J_1BNFLIN, EKET, EKBZ.
Performance

Comandos Select

Visando garantir a performance e evitar problemas futuros, cuidado


com os comandos empregados. Existem alguns tipos de select mais
eficientes que outros. Analise a aplicao que ser desenvolvida e faa
a melhor escolha.
Performance

Dicas para otimizao do cdigo

Use o comando FREE para liberar espao em internal tables; Sempre usar os
comandos Clear / Refresh aps o fim de um LOOP;
Evite comparaes num SELECT com campos numricos versus campos
alfanumricos; o sistema perde tempo para converso;
Testar SY-SUBRC aps cada acesso ao banco de dados;
O comando MOVE-CORRESPONDING bom para tabelas pequenas. interessante
que a tabela interna contenha os campos na sequncia em que sero
movimentados;
Ao utilizar o comando CASE, codificar sempre a clusula WHEN OTHERS;
Performance

Sempre identifique se um SORT ascending ou descending e especifique a


clusula BY <fields>. Caso contrrio, todos os campos sero classificados.

Evitar lgicas do tipo IF not CPOA = CPOB. mais claro codificar IF CPOA ne CPOB.

Evitar construes do tipo:

SORT tabela1, SORT tabela2, SORT tabela3.


LOOP tabela1, LOOP tabela2, LOOP tabela3
Para cada SORT fazer o LOOP correspondente. A ento iniciar novo SORT e
LOOP, e assim por diante.

Campos chave devem ser sempre os primeiros campos da tabela. Assim, todos os
demais campos sero comprimidos;
Performance

SELECT (para Transparent e Pool Tables): a clusula WHERE deve conter,


preferencialmente, os campos chaves e demais campos que possam restringir a
pesquisa;

SELECT (para Cluster Tables): s os campos chaves devem ser especificados na


clusula WHERE. Os demais devem ser checados atravs do comando CHECK;

O conhecimento do contedo dos dados de uma tabela pode auxiliar no momento da


codificao do comando select. O campo que ocorrer em nmero menor de vezes
dever constar na clusula where antes daquele que ocorre um nmero maior de
vezes, caso seja necessrio satisfazer a ambas condies. Isso faz com que o
processamento seja mais gil.

Manuseio de tabelas: Estudar a possibilidade de manuseio em tabelas internas para


agilizar o processo. Analisar tambm o uso de comando select, sendo o que melhor
se adapte a situao em questo.
Performance

MXIMAS DA BOA PROGRAMAO:

Remova todo o cdigo/processamento desnecessrio/redundante!


Gaste tempo documentando e adote boas prticas de alterao de cdigo!
Gaste todo tempo preciso analisando as necessidades de negcio, fluxos de
processos, estruturas de dados e modelos de dados!
Qualidade a chave! Planeje e execute um bom plano de testes
A Experincia sempre ajuda!
Performance

Para mais informaes chame a Transao SE30


Boto Tips & Tricks
Captulo 6

PROGRAMAS ON-LINE
Captulo 6 Programas On-line

Conceito de PBO e PAI e module.


Como criar um programa ON-LINE.
Criando telas no ON-LINE.
Criando um ON-LINE.
Conceito de PBO, PAI e module.

Mdulo Pool o programa principal de um "Dialog" ou On-line. O Dialog


composto por um programa principal (pool module), includes, mdulos e
telas.

No pool de mdulo voc encontrar apenas os includes que por sua vez
contm os mdulos e sub-rotinas que formam o programa. Cada mdulo
est associado a uma tela, e a tela possui sua parte grfica que pode ser
desenhada usando a transao SE80(screen painter).

A SE80 a transao usada para se gerar on-lines, pois nela todos os


objetos e programas podem ser criados e manipulados facilmente.
Um programa do tipo mdulo pool s pode ser executado atravs de uma
transao, o que uma particularidade deste tipo de programa.
Conceito de PBO, PAI e module.

Lembre-se: no programa tipo pool de mdulo voc s ver os includes,


para entender todo o funcionamento ter que entrar nos includes
modules screens. Geralmente os includes pertencem a 4 nveis
distintos:

1) Top (rea geral de declarao);

2) PBO (Process Before Output - Processos antes de Apresentar a Tela);

3) PAI (Process After Input - Processos aps Entrada de Dados) e

4) Contm as subrotinas chamadas pelos mdulos "PERFORM".


Como criar um programa ON-LINE

Os Componentes Principais de um Dialog Program (On-line)

Voc usa o Screen Paiter e o Menu Painter para criar e desenhar telas e
programas de telas.
Voc define o processamento lgico no module pool do programa ABAP/4
.
Estruturas de dados so definidas no Dicionrio ABAP/4. Voc pode
acessar essas estruturas do programa ABAP/4 e quando define campos de
tela.
O processador de dilogo controla o fluxo do seus programa dilogo.
Como criar um programa ON-LINE

Comunicao: Tela ABAP/4 module Pool

O fluxo lgico da tela dividido em dois eventos para cada tela:


O evento PBO executado antes da tela ser apresentada.
O evento PAI executado aps o usurio pressionar ENTER.

O sistema processa os mdulos de evento numa sequncia

Em cada mdulo, o controle passa do processador de dilogo para o


processador ABAP/4. Depois do processamento, o controle retornado
para o processador de dilogo.
Como criar um programa ON-LINE

Quando todos os mdulos do PBO forem processados, o contedo dos


campos da rea de trabalho (work rea) ABAP/4 so copiados para os
campos de mesmo nome da rea de trabalho (work rea) da tela.

Antes do mdulo PAI processado. O contedo dos campos na rea de


trabalho da tela (work rea) so copiados para campos de mesmo nome
na rea de trabalho (work rea) ABAP/4.
Criando telas no ON-LINE

Screen Painter - ABAP/4

Para criar uma tela, siga os seguintes passos:

Defina as caractersticas bsicas da tela (screen atributes);

Projete um layout de tela (in full screen editor);

Defina os atributos dos campos (field list);

Escreva o fluxo lgico da tela (programa).


Criando telas no ON-LINE

Definindo o Layout (Graphical Screen Painter)


A interface do Graphical Screen Painter contm funes fceis de usar
para definir os vrios elementos da tela (ex.: campos de entrada e
sada, campos textos, caixas, etc.).
Voc escolhe cada elemento da tela e posiciona na tela usando o
mouse.

Para deletar elementos da tela, voc seleciona o elemento com o


mouse e ento escolhe Delete.

Para mover elementos da tela, voc usa o mouse para arrastar o


elemento para a posio desejada.
Criando um ON-LINE

Transao SE80
Captulo 7

LISTAS E ALV
Captulo 7 Listas e ALV

Formatao de relatrios
Principais comandos para uma lista
Formatao do relatrio ALV
Criando uma Lista e um relatrio ALV
Formatao de relatrios

O que o ALV
O Abap List Viewer(ALV) uma ferramenta que padroniza e simplifica o
uso de listas e relatrios no sistema R/3 tanto para o desenvolvedor tanto
para o usurio que interage com o relatrio.
O ALV atravs de suas funes e estruturas torna o desenvolvimento mais
simples na medida que economiza significativas linhas de cdigo como por
exemplo no tratamento de quebras,totais,subtotais,cores e outras
vantagens que veremos a seguir.
Principais estruturas de montagem do relatrio ALV
slis_layout_alv
slis_sortinfo_alv
slis_t_fieldcat_alv
Formatao de relatrios

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'


EXPORTING
i_callback_program = c_repid
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
is_layout = s_layout2
it_fieldcat = it_inf_campos2
it_sort = t_qbr_campos[]
TABLES
t_outtab = it_lote2.
Principais comandos para uma lista

SLIS_LAYOUT_ALV
Criar estrutura do tipo SLIS_LAYOUT_ALV
Ex:s_layout2 type slis_layout_alv
Campos fundamentais da SLIS_LAYOUT_ALV

colwidth_optimize - otimizao de largura de colunas.Passar flag ou no.


zebra - mudana de cores de cada sada de linha do Relatrio na mesma estrutura.
Passar flag ou no.
box_fieldname Exibio de checkbox em cada item da(s) I_TABs de exibio do
relatrio.Passar o nome real do(s) campo(s) checkbox.
window_titlebar Ttulo na barra de ttulo
Principais comandos para uma lista

SLIS_SORTINFO_ALV

Criar estrutura do tipo SLIS_SORTINFO_ALV


Ex.: sortinfo type slis_sortinfo_alv

Campos fundamentais da SLIS_SORTINFO_ALV


Spos Sequncia de ordenao.
Fieldname Nome do campo da i_tab que deseja fazer a ordenao.
Up Direo de ordenao ascendente.
Tabname Nome da i_tab de sada
Principais comandos para uma lista

SLIS_T_FIELDCAT_ALV
Criar Workarea do tipo SLIS_T_FIELDCAT_ALV.
Ex: data: s_fieldcat type slis_t_fieldcat_alv with header line.
Campos fundamentais da SLIS_T_FIELDCAT_ALV
row_pos sada na linha desejada.
col_pos - Coluna a qual desejamos exibir o campo da I_tab de sada
Fieldname Nome do campo da tabela interna(importante que esse nome de campo da
tabela referida em ref_tabname)
Tabname Tabela interna onde se encontra campo.
Key Definio de campo chave na sada do relatrio com formatao especfica do
padro do R3.
Checkbox Precisamos informar apenas em ALV Hierarquico na i_tab de itens
Just Justificar e podemos passar Right( R ) Left(L) ou Center( C )
Lzero Omitir zeros em impresso de relatrio
fix_column Flag ou no para manter campo fixado na tela
do_sum total do campo especificado
no_out Exibio obrigatria(O) No exibir em sada default(X)
Formatao do relatrio ALV

type-pools slis

Seleo de dados e tratamento de informaes em tabela de sada

Slis_t_fieldcat_alv para Formatao dos campos

Slis_layout_alv para Layout

Slis_sortinfo_alv para ordenao


Captulo 8

CONCEITO DE BATCH-INPUT E BAPIS


Captulo 8 Conceito de Batch-input e Bapis

Qual a funo de um Batch-input


O que uma BAPI
Criar um mapeamento.
Criar um report utilizando Batch-input
Qual a funo de um Batch-input

Batch Input

O Batch Input uma tcnica standard para a transferncia de grandes volumes de


dados para o Sistema R/3. O fluxo transacional simulado ( SHDB) e os dados so
transferidos como se entrassem de forma online. A vantagem que so executados
todas as verificaes relevantes garantindo uma entrada consistente dos dados.

O processo de Batch Input dividido em duas fases:


Criao da sesso de Batch Input com os dados;
Processamento da sesso de Batch Input executando transaes do sistema R/3

As pastas de Batch input podem ser processadas de vrias formas:


Foreground;
Background;
Durante o processamento com display de erro;
Qual a funo de um Batch-input

Funes para criar Sesses:


call function 'BDC_OPEN_GROUP'
exporting
client = <cliente>
group = <nome_pasta>
user = <usurio>
keep = 'X'. (manter pasta)

call function 'BDC_INSERT'


exporting
tcode = <cod_trans>
tables
dynprotab = <bdc_tab>.

call function 'BDC_CLOSE_GROUP'.


Qual a funo de um Batch-input

Executar Sesses:
SM35 (transao utilizada para rodar o batch input)
Gerar automat.programa:
SHDB (grava a transao para rodar automaticamente, tal como carga de dados - parecido
com macro)
Processamento:
Cancelar sesso:/N
Apagar sesso: /BDEL
Cancelar e marcar incorreta: /NEND
Alterar p/ mdulo de dilogo: /BDA
Alterar p/ visuallizao de Erro: /BDE
Alterar p/ execuo em background: /BDN
Qual a funo de um Batch-input

Call Transaction
O call transaction mais rpido que o batch input. Tambm usado para carga de
dados.

Sintaxe:
CALL TRANSACTION <tcod>
[AND SKIP FIRST SCREEN] (pula a 1 tela da transao) [USING <itab>]
[MODE <display_mode>]
[UPDATE <update_mode>]
MESSAGES INTO <imsg > (mensagem standard)
O que uma BAPI

BAPIs so funes disponibilizadas pela SAP para realizar processos dentro do


R/3. Exemplo: Criao pedido de compra, ordem de venda e outros.

Normalmente so implementadas como mdulos de funes. Todas so criadas e


gerenciadas no Function Builder (SE37).

Pode ser executada por uma aplicao externa. Exemplo: VB, Delphi, VBA e outras.

Para consultar as BAPIs disponveis executar a transao BAPI.

O ideal verificar a existncia de uma BAPI e s se no existir, utilizar o batch


input ou call transaction.
Criar um mapeamento.

Transao SHDB
Captulo 9

DEBUG
Captulo 9 Debug

Qual a funo do Debug.


Principais comandos para utilizar um Debug.
Executar um Debug
Qual a funo do Debug

O ABAP Debugger uma ferramenta integrada de teste dentro do ABAP


Workbench. usada para achar erros no cdigo fonte de um programa ABAP.

No Debugger, podemos executar o cdigo fonte passo a passo, desta forma o


programa em execuo interrompido depois de cada passo, permitindo que
voc verifique seu processo lgico e o resultado individual de comandos.

Existem duas estratgias para inicializar o Debugger no ABAP Workbench:


Definindo breakpoints e ento rodando o programa
Ou rodando o programa em modo debugging.
Principais comandos para utilizar um Debug

Para chamar o debugger do SAP (R/3) basta inserir o /h como uma


transao.

Verificar a barra de status.

A partir deste momento o mode debugger do SAP est em


funcionamento, em qualquer transao, que estivermos, poderemos
visualizar cdigo-a-codigo, o que o compilador, ABAP est interpretando.
Principais comandos para utilizar um Debug

Observe no modo Debug a seguinte tela:

Nesta tela que poderemos EXIBIR e MODIFICAR valores das variveis


em tempo de execuo do programa, Lembre-se estamos em modo debug
onde cada comando segue passo a passo o que pedimos.
Principais comandos para utilizar um Debug

Etapa Individual: Boto ou F5 :

Use essa opo para navegar no programa comando a comando.


Isto permite que voc passe em subrotinas e em mdulos de funo,
executando-as passo a passo tambm. Uma vez que um mdulo da subrotina
ou da funo foi processado, o controle retorna ao comando seguinte do
CALL FUNCTION ou do PERFORM.
Entra nas subrotinas

Executar: Boto ou F6 :

Use essa opo para executar o programa linha a linha. Todos os comandos da
linha corrente so processados em um nico passo. Se estiver posicionado em
uma linha que chama uma subrotina, o Debugger processa a subrotina em
modo oculto e retorna para a linha seguinte a chamada da subrotina. Isso
permite que pule nos comandos dentro da subrotina.
No entra nas subrotinas
Principais comandos para utilizar um Debug

Retorno: Boto ou F7:

O debugger retorna de uma rotina para o ponto de controle definido no


programa principal. Use esta opo para retornar de uma subrotina, mdulo
de funo, ou programa chamado ao programa de chamada.
Executa a subrotina e pra aps seu trmino

Avanar (at o cursor): Boto ou F8:

Use essa opo para processar o programa at o prximo breakpoint. Se no


existir mais breakpoints no programa e nenhum cursor for definido o sistema
sai do modo debugging e executa o resto do programa normalmente.
Executa toda a rotina at o final, sem parar.