Upload
derik-macedo
View
268
Download
0
Embed Size (px)
Citation preview
8/13/2019 Slides Curso ABAP
1/153
Marcelo Pereira de [email protected]
ABAP
Curso de Introduo Linguagem
De Programao ABAP
8/13/2019 Slides Curso ABAP
2/153
CONTEDO PROGRAMTICO
8/13/2019 Slides Curso ABAP
3/153
CONTEDO PROGRAMTICO
Captulo 1Introduo
Captulo 2Dicionrio de dados
Captulo 3Introduo linguagem ABAP
Captulo 4Conceito de Procedures, funo e includes
Captulo 5SQL Captulo 6Programas On-line
Captulo 7Listas e ALV
Captulo 8Conceito de Batch-input e Bapis
Captulo 9Debug
8/13/2019 Slides Curso ABAP
4/153
Captulo 1
INTRODUO
8/13/2019 Slides Curso ABAP
5/153
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
8/13/2019 Slides Curso ABAP
6/153
Conceito do SAP
um conjunto integrado de aplicativos projetado para tratar o processamentode dados em grandes corporaes. Ele foi desenvolvido na Alemanha pelaempresa denominada SAP {uma sigla de Systems Applications and Products for
data processing - aplicativos e produtos de sistemas para processamento dedados).
Dentro do SAP , h um ambiente de tempo de execuo e um conjuntointegrado de programas aplicativos escritos em 4GL do SAP - ABAP/4. Esses
programas aplicativos foram projetados para atender ao processamento dedados necessrios para o negcio.
O que ?
8/13/2019 Slides Curso ABAP
7/153
Conceito do SAP
ABAP/4 (Advanced Business Application Programming 4GL) uma linguagem"orientada por eventos", "Top-Down, bem estruturada e poderosa.
8/13/2019 Slides Curso ABAP
8/153
O que so transaes no SAP
Transao um cdigo alfanumrico de 20 caracteres, utilizado parainiciar um processamento dentro do sistema SAP. Todo e qualquerprocesso ou parte dele deve ser executado dentro do sistema atravs deuma transao. A customizao de ABAP/4, sempre utilizada paranecessidade 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 dedentro do sistema.
Toda operao realizada atravs do menu do sistema, tambmcorresponde a uma transao. Um mtodo para conhecermos o cdigo deuma 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.
8/13/2019 Slides Curso ABAP
9/153
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 utilizadopara desenvolvimentos de programas do tipo executvel (Relatrios eCargas).
ABAP Dictionary (SE11) para edio de objetos relacionados com obanco de dados.
Menu Painter (SE41) para desenho de interfaces de usurio (barra de
menu).
8/13/2019 Slides Curso ABAP
10/153
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 ABAPWorkbench, muito utilizado para criao de programas do tipo on-line oumodule pool, pois, facilita e muito a visualizao de todos os objetos emuma mesma tela. Todo objeto do ABAP Workbench pode ser editadonessa transao e de uma forma bem mais organizada.
8/13/2019 Slides Curso ABAP
11/153
8/13/2019 Slides Curso ABAP
12/153
Instncia X Client ( Dependent/Independent)
Ex: Cdigo Fonte IndependentTelas,Menus e funes IndependentEstrutura de tabelas,elementos e domnios - IndependentRegistros de dados em tabela - DependentFormulrio SapScript - Dependent
8/13/2019 Slides Curso ABAP
13/153
Conceito de classe de desenvolvimento
Classe de desenvolvimento (Pacotes)
So importantes para transporte entre sistemas de produo, qualidade edesenvolvimento.
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
8/13/2019 Slides Curso ABAP
14/153
Controlando e administrando transportes
Request
Guarda as modificaes ou customizaes feitas e que se desejatransportar para um determinado ambiente. Uma vez liberada a ordem de
transporte mantm as alteraes feitas at aquele momento. Novasalteraes/customizaes no mesmo lugar iro solicitar nova ordem detransporte.
Ex : AF1K900109
AF1Instncia
KGerao de arquivo de controle (Interno SAP)900109 - Sequncial
8/13/2019 Slides Curso ABAP
15/153
Worbench Organizer
Esta transao pemite controlar as ordens (requests) geradas atravs dasalteraes 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/SE10Permite verificar as ordens de objetos client independent edependent criados por um usurio.
8/13/2019 Slides Curso ABAP
16/153
Captulo 2
DICIONRIO DE DADOS
8/13/2019 Slides Curso ABAP
17/153
Captulo 2Dicionrio 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.
8/13/2019 Slides Curso ABAP
18/153
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 estruturalgica global de um banco de dados.
Entidade: um objeto que existe e distinguvel de outros objetos, ouseja, identifica o agrupamento de objetos do mesmo tipo. Exemplos:Clientes, Bancos, Agncias, Contas-corrente.
Atributos: So os qualificadores de uma entidade, isto , representam nomodelo o que uma entidade pretende ser. Exemplos: Nome, RG, CPF,Endereo, Nmero conta, Nmero agncia, Nmero banco.
8/13/2019 Slides Curso ABAP
19/153
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 deuma Agncia.
Restries de Mapeamento: Representam o modo como as diferentes
entidades de um modelo se relacionam. Determinadas pela cardinalidadedos relacionamentos entre as entidades.
8/13/2019 Slides Curso ABAP
20/153
Conceito de banco de dados relacionais
Um-para-Um: Uma ocorrncia da entidade A est relacionada com uma eapenas uma ocorrncia da entidade B.
Um-para-N: Uma ocorrncia da entidade A est relacionada com uma ouvrias ocorrncias da entidade B.
EX : MARCA X CARRO
N-par-N: Vrias ocorrncias da entidade A esto relacionadas com vriasocorrncias da entidade B.
EX : FORNECEDOR X PRODUTO
8/13/2019 Slides Curso ABAP
21/153
Conceito de banco de dados relacionais
Modelo RelacionalUm banco de dados relacional a implementao fsica do modeloentidade-relacionamento e traduz concretamente o que o modeloconceitual procura representar. Consiste em uma coleo de tabelas cada
uma das quais associada a um nome nico e que possuemrelacionamentos entre si. Tabelas representam fisicamente as entidades.
Cada tabela possui uma estrutura similar quilo que pretenderepresentar, 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 deocorrncias pode ou no estar relacionado com ocorrncias de outrastabelas.
8/13/2019 Slides Curso ABAP
22/153
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 atributoem outra(s) tabela(s).
8/13/2019 Slides Curso ABAP
23/153
Tipo de dados do dicionrio ABAP
O dicionrio ABAP (Transao SE11) permite a administrao central detodas as definies de dados do R/3, permitindo a criao de tipos dedados definidos pelo usurio para uso posterior, alm de vrios itensauxiliares ao desenvolvimento de programas ( p.ex: search helps ).
Podem ser definidas tabelas e vises dentro do dicionrio. O R/3 seencarrega, durante a ativao desses elementos, de cri-los no banco dedados. O dicionrio permite, ainda, a criao de ndices, que agilizam asbuscas. A definio de ndices apropriados de suma importncia para obom desempenho do sistema. Cabe lembrar que uma busca sem ndicerealizada em um tabela extensa pode ter pesado custo em termos deperformance.
8/13/2019 Slides Curso ABAP
24/153
Tipo de dados do dicionrio ABAP
As definies de tipos de dados dentro do R/3 incluem os elementosde dados, que definem um tipo elementar descrevendo o tipo bsico dedados, 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 camposem formato de tabela.
Por exemplo, uma estrutura do registro de uma estrutura de usurioque tivesse um campo para nmeros de telefone poderia usar um tabletype e permitir colocar vrios nmeros num mesmo campo.
8/13/2019 Slides Curso ABAP
25/153
Tipo de dados do dicionrio ABAP
Alm dessas definies, o dicionrio ABAP permite criar os searchhelps, que so tabelas de busca auxiliares aos campos de tela so asbuscas e tabelas que aparecem quando se tecla F4 dentro de um campoem qualquer tela do R/3.
Criando documentao para o elemento de dados dentro dodicionrio, automaticamente est disponvel a ajuda do campo, que podeser invocada usando-se a tela F1 dentro dos campos de tela. Pode-se,ainda, definir verificaes de entrada automaticamente, bastando definiruma relao de foreign key.
No dicionrio tambm so criados os objetos de lock, que permitemdefinir o travamento de dados dentro do R/3. Por exemplo, podem-sedefinir objetos de lock para impedir que dois usurios editem a mesmainformao ao mesmo tempo no sistema.
8/13/2019 Slides Curso ABAP
26/153
Tipo de dados do dicionrio ABAP
O dicionrio integrado s ferramentas de desenvolvimento e execuodo R/3, permitindo o acesso das ferramentas s definies nele contidas.Por exemplo, possvel navegar de um programa que esteja sendo criadono editor ABAP para definies de campos, elementos e tabelas usadas noprograma.
Tipos de Dados
ICampos numricos sem decimais, contadores, etc.
PCampos numricos com decimais, quantidade e moeda.
C Campo alfa, mais utilizado para conter textos, pode conter nmeros atefetuar clculos, mas no usual.
8/13/2019 Slides Curso ABAP
27/153
Tipo de dados do dicionrio ABAP
N Campo alfa, utilizado para conter nmeros sem decimais e preenchidoscom zeros esquerda.
DCampo data, armazenado no banco de dados no formato AAAAMMDD,
permite-se fazer contas do tipo 20041201+ 31 = 20050101.
TCampo hora, armazenado no banco de dados no formato HHMMSS.
8/13/2019 Slides Curso ABAP
28/153
Conceito de domnio, elemento de dados.
Domnios
O domnio contm os tipo de dado e comprimento do campo. Podemconter os valores vlidos para o campo, atravs de valores fixos entradosno 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 edescrio dos campos em um s objeto. til quando os campos serepetem em diversas tabelas.
8/13/2019 Slides Curso ABAP
29/153
Criao de tabelas transparentes,estruturas e view.
A definio de uma tabela consiste dos seguintescomponentes:
Campos - Define o nome e o tipo dos campos da tabela.
Chaves Estrangeiras( Check Table ) - define o relacionamento entre atabela e outras tabelas do sistema, usadas para manter a integridadedos dados no BD.
Opes Tcnicas - controla como a tabela deve ser criada no Banco deDados.
ndices - Para melhorar a performance nos acessos a tabela, pode-secriar ndices secundrios para ela.
8/13/2019 Slides Curso ABAP
30/153
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, devendocomear 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.
8/13/2019 Slides Curso ABAP
31/153
Criao de tabelas transparentes,estruturas e view.
Tabela Transparente
Existe uma tabela fsica no banco de dados para uma tabelatransparente. 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 emtabelas transparentes.
8/13/2019 Slides Curso ABAP
32/153
Criao de tabelas transparentes,estruturas e view.
Estruturas
So como tabelas que no armazenam dados, definem um conjunto decampos e geralmente so utilizadas para definir os dados na interface de
pools de mdulos e telas, assim como para atribuir o tipo aos parmetrosde mdulos de funo. Uma estrutura diferentemente de uma tabela notem uma tabela de banco de dados associada a ela.
8/13/2019 Slides Curso ABAP
33/153
Criao de tabelas transparentes,estruturas e view.
VisesSo tabelas virtuais que resultam da unio de tabelas transparentes e quecontm uma certa quantidade de informaes.
d d d
8/13/2019 Slides Curso ABAP
34/153
Criao de ndices primrios e secundrios
ndices
Um ndice pode ser considerado como uma cpia da tabela que foireduzida a um certo nmero de campos. Esta cpia est sempre
ordenada. A ordenao faz com que o acessos ao registros se tornemais rpido, o ndice tambm contm, um ponteiro para o registroreal na tabela transparente, para que os campos que no esto nondice tambm possam ser lidos.
O ndice primrio separado dos ndices secundrios. O ndiceprimrio constitudo dos campos indicados como campo-chave nacriao da tabela.
8/13/2019 Slides Curso ABAP
35/153
Criao de dilogo de manuteno
Pode ser feita uma criao automtica de programa on-line paramanuteno de tabelas transparentes atravs da transao SE11. Paratanto 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 nvelnico,seno
2 nveis.
Clicar procurarnmero de tela. O sistema sugere os nmeros das
telas.Deixar assim.
8/13/2019 Slides Curso ABAP
36/153
Criao de dilogo de manuteno
Gerar mdulo.
8/13/2019 Slides Curso ABAP
37/153
Captulo 3
INTRODUO LINGUAGEM ABAP
8/13/2019 Slides Curso ABAP
38/153
Captulo 3Introduo linguagem ABAP
Como funciona a transao SE38Editor ABAP.
Blocos de eventos.
Declarao de variveis, tabelas internas, ranges e constants.
Definio de parmetros de entrada.
Principais comandos ABAP. Executando um programa report.
f d
8/13/2019 Slides Curso ABAP
39/153
Como funciona a transao SE38Editor 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.
C f i t
8/13/2019 Slides Curso ABAP
40/153
Como funciona a transaoSE38 Editor ABAP
C f i
8/13/2019 Slides Curso ABAP
41/153
Como funciona a transaoSE38Editor 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.
8/13/2019 Slides Curso ABAP
42/153
Como funciona a transaoSE38Editor ABAP
Texto fonteTexto principal do programa.Variantes Exibe as variantes gravadas p/execuo do
programa.CaractersticasExibe as caractersticas do programa
como classe de desenvolvimento,tipo do fonte (includes, executvel e etc).
DocumentaoDocumentao simplificada doprograma.
Elementos de textoTextos que sero utilizados paraexecuo do programa
- Exibio do fonte e modificao do fonte.
8/13/2019 Slides Curso ABAP
43/153
Como funciona a transaoSE38Editor ABAP
-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.
- Gravar o fonte.
C f i t
8/13/2019 Slides Curso ABAP
44/153
Como funciona a transaoSE38Editor ABAP
- Controle de verso
8/13/2019 Slides Curso ABAP
45/153
Como funciona a transaoSE38Editor ABAP
8/13/2019 Slides Curso ABAP
46/153
Como funciona a transaoSE38Editor ABAP
- Tipos de editor
8/13/2019 Slides Curso ABAP
47/153
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.
INITIALIZATIONEvento 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 dousurio na tela de seleo ativa.Isso pode ser quando o usurio pressionauma tecla de funo ou d um clique em um boto.
l d
8/13/2019 Slides Curso ABAP
48/153
START-OF-SELECTION Evento onde executa o processamento principaldo programa.
END-OF-SELECTIONEvento onde finaliza o processamento do programa.
TOP-OF-PAGE (incio relatrio) Evento utilizado quando executado oprimeiro comando write.
END-OF-PAGE (fim relatrio) - Evento utilizado no final do relatrio.
AT USER-COMMAND (tratamento de botes)Evento para tratamento debotes.
Blocos de eventos
Blocos de e entos
8/13/2019 Slides Curso ABAP
49/153
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 houverdentro desse evento toda vez que o usurio clica duas vezes sobre uma linhaem uma lista ou clica sobre um campo marcado com HOTSPOT, ou teclando-seF2 sobre um registro, ou escolhendo um boto que tenha o cdigo standard
PICKa ele associado.
Blocos de eventos
8/13/2019 Slides Curso ABAP
50/153
Blocos de eventos
Declarao de variveis tabelas internas
8/13/2019 Slides Curso ABAP
51/153
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 decolocar definies globais na parte superior do programa.
D l d i i t b l i t
8/13/2019 Slides Curso ABAP
52/153
Declarao de variveis, tabelas internas,ranges e constants
-Tipos de dados:
D l d i i t b l i t
8/13/2019 Slides Curso ABAP
53/153
Entre as formas de tipos de dados, as mais usadas no desenvolvimento deprogramas ABAP/4 so:
Variveis : So declaradas para receber valores que so alterados durante aexecuo do programa.
Contants : So declaradas quando existem valores que no so alteradosdurante a execuo do programa. A forma da declarao e o tipos de dadosseguem o mesmo padro das variveis.
Ranges : Tabela interna com a mesma estrutura de um select-options, mas semconexo com uma tela de entrada.
Declarao de variveis, tabelas internas,ranges e constants
D l d i i t b l i t
8/13/2019 Slides Curso ABAP
54/153
VariveisDATA: varname(n)TYPE _.
DATA: varname LIKE varname2VALUE 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
Declarao de variveis tabelas internas
8/13/2019 Slides Curso ABAP
55/153
Constantes
CONSTANTS: constname(n)TYPE _.
CONSTANTS: constname(n)LIKE varname2VALUE 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
8/13/2019 Slides Curso ABAP
56/153
Declarao de variveis tabelas internas
8/13/2019 Slides Curso ABAP
57/153
Tabelas Transparentes: So declaradas quando existem seleo, insero,alteraes e excluso de valores em tabelas.
Declarao de variveis, tabelas internas,ranges e constants
Declarao de variveis tabelas internas
8/13/2019 Slides Curso ABAP
58/153
Tabelas Transparentes:
TABLES: tabbanco, tab1, tab2, tab3,...tabn.
Exemplo:TABLES: LFA1, EKKO.
Declarao de variveis, tabelas internas,ranges e constants
Declarao de variveis tabelas internas
8/13/2019 Slides Curso ABAP
59/153
Tabela Interna : Uma tabela interna consiste em uma srie de linhas domesmo tipo de dados. Os dados so armazenados linha a linha na memria, ecada 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
Declarao de variveis tabelas internas
8/13/2019 Slides Curso ABAP
60/153
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 ocomando sort nesse tipo de tabela;
Hashed table: As tabelas do tipo Hashed table so organizadas de acordocom a chave especificada e no permitem operaes utilizando o nmerosequncial dos registros. So mais adequadas a grande volume de dados.
Declarao de variveis, tabelas internas,ranges e constants
Declarao de variveis tabelas internas
8/13/2019 Slides Curso ABAP
61/153
Tabelas Internas:DATA: t_tab1TYPE tabinttipoOF estrutnameWITH HEADER LINE,
t_tab2LIKE tabinttipoOF 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
Declarao de variveis tabelas internas
8/13/2019 Slides Curso ABAP
62/153
Estruturas:So modelos de tabelas sem dados. Esses modelos podem serutlizados com referncias para criao de tabelas internas, parmetros defuno e etc.
Declarao de variveis, tabelas internas,ranges e constants
Declarao de variveis tabelas internas
8/13/2019 Slides Curso ABAP
63/153
Estruturas
TYPES: BEGIN OF,
var1 TYPE _,
var2 LIKE tab1-campo,
.....
END OF.
TYPES BEGIN OF,.
INCLUDE STRUCTURE.
TYPES END OF,.
Exemplo
TYPES: BEGIN OF TP_BANCO
numero TYPE N,
agencia TYPE N,
nome(30) TYPE C,
END OF TP_BANCO.
TYPES BEGIN OF FORNECEDOR.
INCLUDE STRUCTURE LFA1.TYPES END OF FORNECEDOR.
Declarao de variveis, tabelas internas,ranges e constants
Declarao de variveis tabelas internas
8/13/2019 Slides Curso ABAP
64/153
Registros
TYPES: BEGIN OF,
var1TYPE _,
var2LIKE tab1-campo,
.....
END OF.
DATA:T_TAB1TYPE.
Exemplo
TYPES: BEGIN OF TP_BANCO
numero TYPE N,
agencia TYPE N,
nome(30) TYPE C,
END OF TP_BANCO.
DAtA: T_BANCO TYPE TP_BANCO.
Declarao de variveis, tabelas internas,ranges e constants
Definio de parmetros de entrada
8/13/2019 Slides Curso ABAP
65/153
p
Parmetros de entrada :Essa instruo muito parecida com a instruo data, mas quando voc executa oprograma, o sistema exiber os parmetros como campos de entrada em uma tela deseleo antes que o programa realmente comece a ser executado. O usurio pode digitarou modificar seus valores e ento pressionar o boto execute, para iniciar oprocessamento.
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 usuriopoder escolher N valores em cada execuo. No parmetro SELECT-OPTIONSpodemos tambm definir faixas de dados, valores individuais, excluso de valoresindividuais, 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
8/13/2019 Slides Curso ABAP
66/153
p
PARAMETERS:p_par1 TYPE __ ,
p_par2 LIKE var1DEFAULT valor_default,
p_par3 AS CHECKBOX ,
p_par4 RADDIOBUTTON GROUP grpname
OBLIGATORY.
SELECTION-SCREEN:
BEGIN OF BLOCK bl_nameWITH FRAME
TITLE title_text.
END OF BLOCK bl_name.
BEGIN OF LINE.END OF LINE.
COMMENTpos(dim) text
POSITIONpos.
Definio de parmetros de entrada
8/13/2019 Slides Curso ABAP
67/153
SELECT-OPTIONS: s_par1 FOR campo1 ,
NO-EXTENSION.
NO INTERVALS.
DEFAULT valor1TO valor2.
OBLIGATORY.NO-DISPLAY.
MEMORY IDmem.
MATCHCODE OBJECT obj.
p
Principais comandos ABAP
8/13/2019 Slides Curso ABAP
68/153
p
Comando/Funo Descrio
ADD Adiciona um valor a outro camponumrico
APPEND Gravar em tabela interna
APPEND LINES Gravar linhas em tabela interna
APPEND SORTED BY Usado para classificar linhas emordem durante o append
AT END OF Identifica o ultimo registro de umasequncia (quebra)
AT EXIT-COMMAND Usado para definir a execuo de
mdulos com botesAT FIRST Identifica o primeiro registro da
tabela percorrida
AT LAST Identifica o ultimo registro da tabelapercorrida
Principais comandos ABAP
8/13/2019 Slides Curso ABAP
69/153
p
Comando/Funo Descrio
AT LINE-SELECTION Evento para abrir uma segunda teladentro de um relatrio
AT NEW Identifica o primeiro registro de umasequncia
AT SELECTION-SCREEN ON Analisar o resultado de uma varivelAT USER-COMMAND Evento para inicializar os botes
criados
AUTHORITY-CHECK OBJECT Para verificar a autorizao paradeterminado objeto
AS TEXT Usado para classificar caracteresacentuados
ASSIGN f1 TO Atribuio dinmica
AS SYMBOL / AS ICON / AS LINE Comandos usados para formataoem relatrios
Principais comandos ABAP
8/13/2019 Slides Curso ABAP
70/153
Comando/Funo Descrio
CALL TRANSACTION Comando usado para chamartransaes
CASE... WHEN... ENDCASE Comando para tomadas de deciso
CHECK Substitui o comando IF
CLEAR Limpar o contedo de uma varivelCLOSE DATASET Fecha um arquivo externo
CLOSE_FORM Funo usada para fechar umformulrio sapscript
COLLECT Organiza a tabela com todas as
descries esquerda totalizando oscampos numricos
COMMIT WORK Efetiva as alteraes no banco
Principais comandos ABAP
8/13/2019 Slides Curso ABAP
71/153
Comando/Funo Descrio
CONCATENATE Agrupa vrios campos em um s
CONSTANTS Criar constantes para serem usadasem todo o programa
CONTINUE Volta ao incio de um loop aps a
verificao de uma condioCONDENSE Remove os espaos em branco em
um texto
DATA Criar tabelas internas e variveis
DELETE Deleta um registro de uma tabela
internaDESCRIBE TABLE Determina o nmero de linhas de
uma tabela interna
DO... ENDDO Usado para criar um loop
Principais comandos ABAP
8/13/2019 Slides Curso ABAP
72/153
Comando/Funo Descrio
GUI_DOWNLOAD Funo para download de arquivo
END_FORM Funo usada para finalizar umformulrio sapscript
END-OF-PAGE Evento executado ao finalizar a
impresso de uma pginaEND-OF-SELECTION Evento executado logo aps o
evento START-OF-SELECTION
EXIT Comando usado para sair de umloop ou sub-rotina
FORM Indica o incio de uma sub-rotinaFORMAT COLOR Usado para formatar a sada do
comando write(COR)
FREE Libera espao de memria utilizadopor uma tabela interna
Principais comandos ABAP
8/13/2019 Slides Curso ABAP
73/153
Comando/Funo Descrio
HIDE Usado para definir campos para umasegunda janela em relatrios
ID... FIELD... Objetos de autorizao
IF... ELSE... ENDIF Comando de deciso
IF NOT... IS INITIAL Verifica se uma varivel est vaziaINITIALIZATION Primeiro evento executado dentro de
um programa
INSERT Insere o contedo de um registro emuma tabela transparente
INSERT LINES Insere mais de uma linha em umatabela transparente
Principais comandos ABAP
8/13/2019 Slides Curso ABAP
74/153
Comando/Funo Descrio
LEAVE PROGRAM Comando encerra um programa
LEAVE TO SCREEN Comando que direciona a ida de umatela para outra
LINE-COUNT Limita o nmero de linhas por pgina
LINE-SIZE Limita o nmero de colunas porpgina
LOOP AT Loop no contedo de uma tabelainterna
MESSAGE Usado para mostrar mensagens na
telaMESSAGE-ID Usado para definir uma classe de
mensagem
MODIFY Modifica o contedo de uma linha databela interna
Principais comandos ABAP
8/13/2019 Slides Curso ABAP
75/153
Comando/Funo Descrio
MODULE Usado para a criao de sub-rotinasem programas on-line
MOVE Move o contedo de uma varivelpara outra
MOVE-CORRESPONDING Move apenas campos com o mesmonome
NEW-PAGE Fora quebra de pgina em umrelatrio
NO STANDARD PAGE HEADING Ignora a impresso do cabealhostandard do SAP em relatrios
OPEN DATASET Para abrir arquivo externo(somentepara UNIX)
OPEN_FORM Funo para abrir formulriosapscript
Principais comandos ABAP
8/13/2019 Slides Curso ABAP
76/153
Comando/Funo Descrio
PARAMETERS Criar parmetros de seleo
PERFORM Usado para chamar sub-rotinas
READ DATASET... INTO Usado para ler e importar dados deum arquivo externo (UNIX)
READ TABLE Ler registro em tabela internaREFRESH Limpa todo o contedo de uma
tabela interna
REPLACE Substitui um texto dentro de outrotexto
REPORT Incio de um relatrio(programa)SEARCH Procura um texto dentro de outro
texto
SELECT Usado para selecionar dados emuma tabela
Principais comandos ABAP
8/13/2019 Slides Curso ABAP
77/153
Comando/Funo Descrio
SELECT-OPTIONS Declarar parmetros de seleo comopes
SELECTION-SCREEN Criar BOX na tela
SET PF-STATUS Comando usado para definir menu a
ser usadoSET TITLEBAR Criar ttulos em janelas
SKIP Saltar linha
SORT Ordenar o contedo de uma tabelainterna
SPLIT... AT... INTO Comando usado para separarcontedo de uma varivel e outra(s)
START_FORM Funo para iniciar formulriosapscript
START-OF-SELECTION Evento para marcar incio da rotina
principal do programa
Principais comandos ABAP
8/13/2019 Slides Curso ABAP
78/153
Comando/Funo Descrio
STRLEN Retorna o tamanho de um texto
SUBTRACT Subtrai um valor numrico de outrovalor
SUM Totaliza um campo numrico
SY-BATCH Indica execuo em backgroundSY-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 relatriosinterativos
SY-MANDT Retorna o mandante
SY-PAGNO Faz paginao automtica(num.Pagina)
Principais comandos ABAP
8/13/2019 Slides Curso ABAP
79/153
Comando/Funo Descrio
SY-SUBRC Retorna o resultado de umaexecuo(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 logadoSY-UZEIT Retorna a hora atual do sistema
SY-VLINE Serve para fazer o fechamento debordas de um relatrio
SY-ULINE Imprime uma linha com n posies
SY-CPROG Retorna o nome do programaprincipal
SY-TCODE Retorna o cdigo da transao
TABLES Usado para declarar tabelas
Principais comandos ABAP
8/13/2019 Slides Curso ABAP
80/153
Comando/Funo Descrio
TOP-OF-PAGE Evento para incio de cabealho emum relatrio
TRANSFER... TO... Usado para ler e gravar em arquivoexterno (UNIX)
TYPES Define estrutura para tabelasinternas
UPDATE Atualiza o contedo de uma tabelatransparente
WHILE... ENDWHILE Cria laos de execuo
WRITE Sada em relatrioWRITE_FORM Funo para escrever no formulrio
sapscript
WS_UPLOAD Funo para fazer upload de umarquivo externo
8/13/2019 Slides Curso ABAP
81/153
8/13/2019 Slides Curso ABAP
82/153
Captulo 4
CONCEITO DE PROCEDURES, FUNO EINCLUDES
Conceito de Procedures, funo e includes
8/13/2019 Slides Curso ABAP
83/153
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
8/13/2019 Slides Curso ABAP
84/153
Procedures: mdulos internos do programa, que possuem uma interface.Com uma declarao ABAP, possvel chamar um subprograma em umprograma, a partir de qualquer outro bloco de processamento.
Mdulos de funo: mdulos com uma interface transparente, disponveisem todo o sistema. Esses mdulos podem ser chamados de qualquerbloco de processamento e em qualquer programa ABAP que utilize umadeclarao ABAP especial.
Conceito de Procedures, funo e includes
8/13/2019 Slides Curso ABAP
85/153
Procedures
O bloco de processamento de um subprograma comea com 'FORM ' e termina com ' ... ENDFORM. ' .
possvel utilizar a declarao DATA em uma rotina FORM para declararos dados locais. Se um objeto local tem o mesmo nome de um objetoglobal, o global ser invisvel dentro do subprograma.
Conceito de Procedures, funo e includes
8/13/2019 Slides Curso ABAP
86/153
- A interface definida da seguinte maneira:
Aps USING, deve-se relacionar em uma lista todos os parmetros que osubprograma s precisa ler.
Aps CHANGING, deve-se relacionar em uma lista todos os parmetrosque o subprograma vai modificar e cujos valores sero transferidos para oprograma de chamada.
Aps TABLES, deve-se relacionar em uma lista todas as tabelas internas
que ir modificar e cujos valores sero transferidos para o programaprincipal.
Conceito de Procedures, funo e includes
8/13/2019 Slides Curso ABAP
87/153
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
8/13/2019 Slides Curso ABAP
88/153
As rotinas FORM podem ser chamadas a partir de qualquer bloco deprocessamento ABAP por meio de PERFORM .
O nmero de parmetros atuais deve ser igual ao de parmetros formais.
No possvel ter parmetros opcionais. Os parmetros so atribudos naseqncia em que esto relacionados na lista.
Quando um subprograma chamado com a declarao PERFORM, osistema verifica se os tipos dos parmetros atuais de PERFORM socompatveis com os parmetros formais.
Conceito de Procedures, funo e includes
8/13/2019 Slides Curso ABAP
89/153
Existe a possibilidade de omitir o tipo. Nesse caso, o parmetro formalherda o tipo do parmetro atual correspondente.
Como criar um mdulo de funo em ABAP
8/13/2019 Slides Curso ABAP
90/153
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
8/13/2019 Slides Curso ABAP
91/153
Tambm podemos executar procedures relacionadas em outros programas
utilizando a sintaxe abaixo:
- PERFORM IN PROGRAM
CHANGING IF FOUND.
Criando um report chamando procedurese funes
8/13/2019 Slides Curso ABAP
92/153
e funes
- Submit :O comando submit utilizado para chamar de dentro de um programa outroprograma com os parmetros desejados.
Ex : SUBMIT < Nome do programa >USING SELECTION-SCREEN < Nmero da tela >WITH EQ
IN AND RETURN.
Criando um report chamando procedurese funes
8/13/2019 Slides Curso ABAP
93/153
Funes :
-Mdulos de funo so subprogramas externos com uma interfacetransparente. A interface considerada transparente porque no est includanas declaraes do programa ABAP para a parte executvel do mdulo defuno. A interface definida separadamente e pode ser atualizada
independentemente do texto.
-Com os parmetros opcionais, acrscimos interface podem tornar asdeclaraes do programa ABAP completamente executveis sem qualquermodificao. 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 programascustomizados (Pesquisa na SE37).
e funes
Criando um report chamando procedurese funes
8/13/2019 Slides Curso ABAP
94/153
- Transao SE37
A transao SE37 responsvel pela criao de funes.
e funes
Criando um report chamando procedurese funes
8/13/2019 Slides Curso ABAP
95/153
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 umafuno internamente pelo sistema.
- Mdulo de acesso remoto definida quanto a funo chamadaremotamente 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 mdulosde funo utilizam os mesmos mtodos de transmisso de parmetros que as rotinasFORM.
Excees: se, durante o processamento, ocorre um erro em um mdulo, possvel inserira correo dentro do prprio mdulo como uma exceo. possvel antecipar possveis erros e escrever o programa de modo que eles nocausem erros de tempo de execuo. As possveis excees so denominadas nainterface do mdulo de funo e acionadas a partir do texto de programa, por meio dadeclarao RAISE. Cada programa que chama o mdulo de funo consulta sy-subrcpara interpretar as excees.
e funes
8/13/2019 Slides Curso ABAP
96/153
Criando um report chamando procedurese funes
8/13/2019 Slides Curso ABAP
97/153
Criar uma funo z_busca_price.Essa funo dever buscar o campo priceda 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
e funes
Criando um report chamando procedurese funes
8/13/2019 Slides Curso ABAP
98/153
- Includes:Programas do tipo include, pode se modularizar um programa utilizandocdigos fontes no executveis e chama-se esses cdigo de dentro doprograma principal. utilizado para declaraes de variveis em programasmuito extensos.
e funes
Criando um report chamando procedurese funes
8/13/2019 Slides Curso ABAP
99/153
- Criar um programa utilizando funo e procedures.
e funes
8/13/2019 Slides Curso ABAP
100/153
Captulo 5
SQL
Captulo 5SQL
8/13/2019 Slides Curso ABAP
101/153
Comandos SQL. Performance.
Comandos SQL
8/13/2019 Slides Curso ABAP
102/153
Comandos SQL
Comandos SQL
8/13/2019 Slides Curso ABAP
103/153
Comandos SQL
8/13/2019 Slides Curso ABAP
104/153
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 WAWITH NON-UNIQUE KEY
CITYFROM CITYTO.SELECT CARRID CONNID CITYFROM CITYTOINTO CORRESPONDING FIELDS OF TABLE
ITABFROM 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
8/13/2019 Slides Curso ABAP
105/153
ALGUNS TIPOS DE SELECT
SELECT FROM INTO TABLE .
A estrutura da tabela interna deve corresponder estrutura da tabela que
est sendo acessada. O sistema l os registros em conjunto, noindividualmente, e os coloca dentro de uma internal table. Este processo mais rpido que ler individualmente atravs de um LOOP e ir gravandoos registros, um a um.
Comandos SQL
8/13/2019 Slides Curso ABAP
106/153
SELECT * FROM APPENDING TABLE .L os registros e os inclui - no sobrepe - em uma internal table.
SELECT . INTO CORRESPONDING FIELDS OF TABLE .
Neste caso a estrutura da tabela interna no precisa corresponder
estrutura da tabela que est sendo acessada. 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
8/13/2019 Slides Curso ABAP
107/153
SELECT .. APPENDING CORRESPONDING FIELDS OF TABLE .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 .... EQ
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 * upto 1 row. Neste caso no necessrio especificar a chave completa.
Comandos SQL
8/13/2019 Slides Curso ABAP
108/153
SELECT * FROM
Quando no se impe nenhum tipo de restrio, ocorre uma varredura sequencial dosregistros da tabela. Quando se utiliza grandes tabelas, isso obviamente afeta oruntime.
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 WHERE eq .
L todos os registros da tabela especificada onde o campo igual ao contedoespecificado. O ideal que se qualifique a clusula WHERE tanto mais quanto sejapossvel. Atentar que isso vlido para tabelas do tipo Pool e Transparent. ParaCluster, seguir as recomendaes dadas anteriormente.
Comandos SQL
8/13/2019 Slides Curso ABAP
109/153
SELECT INTO (, , ) FROM .WHERE .
L as colunas especificadas (a1, a2). Aps INTO devero ser especificadas as reas detrabalho auxiliares (f1, f2). O nmero de colunas lidas dever ser igual ao nmero dework-areas especificadas.
SELECT * FROM WHERE BETWEEN and .
Ex.: field1 = 100 e field2 = 500. Pega inclusive 100 e 500. Voc trabalha
com o range.
Comandos SQL
8/13/2019 Slides Curso ABAP
110/153
SELECT * FROM WHERE 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 WHERE IN (.,.).Exemplo: select * from where campo1 in (123,1000) - podem ser valores ouliterais. igual a perguntar se campo1 123 ou 1000.
Comandos SQL
8/13/2019 Slides Curso ABAP
111/153
SELECT * FROM FOR ALL ENTRIES IN WHEREcampo1 = and
campo2 =
Defino uma tabela interna. Alimento os campos desta tabela interna. (move eappend). 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
8/13/2019 Slides Curso ABAP
112/153
SELECT * FROM ORDER BY 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
8/13/2019 Slides Curso ABAP
113/153
Para se obter uma otimizao da performance em programas ABAP, deve-seminimizar 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 dadostodos 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 fortementeespecificada, com vrias condies, visando restringir ;
ndices no utilizados;
Performance
8/13/2019 Slides Curso ABAP
114/153
Falta de ndices;
Select em tabelas com alto nmero de registros utilizando clusulawhere 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
8/13/2019 Slides Curso ABAP
115/153
Comandos Select
Visando garantir a performance e evitar problemas futuros, cuidadocom os comandos empregados. Existem alguns tipos de select maiseficientes que outros. Analise a aplicao que ser desenvolvida e faaa melhor escolha.
Performance
8/13/2019 Slides Curso ABAP
116/153
Dicas para otimizao do cdigo
Use o comando FREE para liberar espao em internal tables; Sempre usar oscomandos 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. interessanteque a tabela interna contenha os campos na sequncia em que seromovimentados;
Ao utilizar o comando CASE, codificar sempre a clusula WHEN OTHERS;
Performance
8/13/2019 Slides Curso ABAP
117/153
Sempre identifique se um SORT ascending ou descending e especifique aclusula BY . 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 osdemais campos sero comprimidos;
Performance
8/13/2019 Slides Curso ABAP
118/153
SELECT (para Transparent e Pool Tables): a clusula WHERE deve conter,
preferencialmente, os campos chaves e demais campos que possam restringir apesquisa;
SELECT (para Cluster Tables): s os campos chaves devem ser especificados naclusula WHERE. Os demais devem ser checados atravs do comando CHECK;
O conhecimento do contedo dos dados de uma tabela pode auxiliar no momento dacodificao do comando select. O campo que ocorrer em nmero menor de vezesdever constar na clusula where antes daquele que ocorre um nmero maior devezes, caso seja necessrio satisfazer a ambas condies. Isso faz com que oprocessamento seja mais gil.
Manuseio de tabelas: Estudar a possibilidade de manuseio em tabelas internas paraagilizar o processo. Analisar tambm o uso de comando select, sendo o que melhorse adapte a situao em questo.
Performance
8/13/2019 Slides Curso ABAP
119/153
MXIMASDABOAPROGRAMAO:
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
8/13/2019 Slides Curso ABAP
120/153
Para mais informaes chame a Transao SE30
Boto Tips & Tricks
8/13/2019 Slides Curso ABAP
121/153
Captulo 6
PROGRAMAS ON-LINE
8/13/2019 Slides Curso ABAP
122/153
Conceito de PBO, PAI e module.
8/13/2019 Slides Curso ABAP
123/153
Mdulo Pool o programa principal de um "Dialog" ou On-line. O Dialog composto por um programa principal (pool module), includes, mdulos etelas.
No pool de mdulo voc encontrar apenas os includes que por sua vez
contm os mdulos e sub-rotinas que formam o programa. Cada mduloest associado a uma tela, e a tela possui sua parte grfica que pode serdesenhada 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 umatransao, o que uma particularidade deste tipo de programa.
8/13/2019 Slides Curso ABAP
124/153
Como criar um programa ON-LINE
8/13/2019 Slides Curso ABAP
125/153
Os Componentes Principais de um Dialog Program (On-line)
Voc usa o Screen Paiter e o Menu Painter para criar e desenhar telas eprogramas 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 detela.
O processador de dilogo controla o fluxo do seus programa dilogo.
8/13/2019 Slides Curso ABAP
126/153
Como criar um programa ON-LINE
8/13/2019 Slides Curso ABAP
127/153
Quando todos os mdulos do PBO forem processados, o contedo doscampos da rea de trabalho (work rea) ABAP/4 so copiados para oscampos 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 nomena rea de trabalho (work rea) ABAP/4.
Criando telas no ON-LINE
8/13/2019 Slides Curso ABAP
128/153
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
8/13/2019 Slides Curso ABAP
129/153
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 esada, 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 omouse e ento escolhe Delete.
Para mover elementos da tela, voc usa o mouse para arrastar oelemento para a posio desejada.
Criando um ON-LINE
8/13/2019 Slides Curso ABAP
130/153
Transao SE80
8/13/2019 Slides Curso ABAP
131/153
Captulo 7
LISTAS E ALV
Captulo 7Listas e ALV
8/13/2019 Slides Curso ABAP
132/153
Formatao de relatrios Principais comandos para uma lista
Formatao do relatrio ALV
Criando uma Lista e um relatrio ALV
Formatao de relatrios
8/13/2019 Slides Curso ABAP
133/153
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 tantopara o usurio que interage com o relatrio.
O ALV atravs de suas funes e estruturas torna o desenvolvimento maissimples na medida que economiza significativas linhas de cdigo como porexemplo no tratamento de quebras,totais,subtotais,cores e outrasvantagens que veremos a seguir.
Principais estruturas de montagem do relatrio ALV
slis_layout_alv slis_sortinfo_alv
slis_t_fieldcat_alv
Formatao de relatrios
8/13/2019 Slides Curso ABAP
134/153
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'EXPORTING
i_callback_program = c_repidi_callback_pf_status_set = 'SET_PF_STATUS'i_callback_user_command = 'USER_COMMAND'is_layout = s_layout2
it_fieldcat = it_inf_campos2it_sort = t_qbr_campos[]
TABLESt_outtab = it_lote2.
8/13/2019 Slides Curso ABAP
135/153
Principais comandos para uma lista
8/13/2019 Slides Curso ABAP
136/153
SLIS_SORTINFO_ALV
Criar estrutura do tipo SLIS_SORTINFO_ALV
Ex.: sortinfo type slis_sortinfo_alv
Campos fundamentais da SLIS_SORTINFO_ALV SposSequncia de ordenao.
FieldnameNome do campo da i_tab que deseja fazer a ordenao.
UpDireo de ordenao ascendente.
TabnameNome da i_tab de sada
Principais comandos para uma lista
8/13/2019 Slides Curso ABAP
137/153
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_possada na linha desejada.
col_pos - Coluna a qual desejamos exibir o campo da I_tab de sada
FieldnameNome do campo da tabela interna(importante que esse nome de campo da
tabela referida em ref_tabname) TabnameTabela interna onde se encontra campo.
KeyDefinio de campo chave na sada do relatrio com formatao especfica dopadro do R3.
CheckboxPrecisamos informar apenas em ALV Hierarquico na i_tab de itens
JustJustificar e podemos passar Right( R ) Left(L) ou Center( C )
LzeroOmitir zeros em impresso de relatrio fix_columnFlag ou no para manter campo fixado na tela
do_sumtotal do campo especificado
no_outExibio obrigatria(O) No exibir em sada default(X)
Formatao do relatrio ALV
8/13/2019 Slides Curso ABAP
138/153
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
8/13/2019 Slides Curso ABAP
139/153
Captulo 8
CONCEITO DE BATCH-INPUT E BAPIS
Captulo 8Conceito de Batch-input e Bapis
8/13/2019 Slides Curso ABAP
140/153
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
8/13/2019 Slides Curso ABAP
141/153
Batch Input
O Batch Input uma tcnica standard para a transferncia de grandes volumes dedados para o Sistema R/3. O fluxo transacional simulado ( SHDB) e os dados sotransferidos como se entrassem de forma online. A vantagem que so executadostodas 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
8/13/2019 Slides Curso ABAP
142/153
Funes para criar Sesses:call function 'BDC_OPEN_GROUP'
exporting
client =
group =
user =
keep = 'X'. (manter pasta)
call function 'BDC_INSERT'
exporting
tcode =
tablesdynprotab = .
call function 'BDC_CLOSE_GROUP'.
Qual a funo de um Batch-input
8/13/2019 Slides Curso ABAP
143/153
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 - parecidocom 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
8/13/2019 Slides Curso ABAP
144/153
Call Transaction O call transaction mais rpido que o batch input. Tambm usado para carga dedados.
Sintaxe:
CALL TRANSACTION
[AND SKIP FIRST SCREEN] (pula a 1tela da transao) [USING ][MODE ]
[UPDATE ]
MESSAGES INTO (mensagem standard)
O que uma BAPI
8/13/2019 Slides Curso ABAP
145/153
BAPIs so funes disponibilizadas pela SAP para realizar processos dentro doR/3. Exemplo: Criao pedido de compra, ordem de venda e outros.
Normalmente so implementadas como mdulos de funes. Todas so criadas egerenciadas 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 batchinput ou call transaction.
8/13/2019 Slides Curso ABAP
146/153
8/13/2019 Slides Curso ABAP
147/153
Captulo 9
DEBUG
Captulo 9Debug
8/13/2019 Slides Curso ABAP
148/153
Qual a funo do Debug. Principais comandos para utilizar um Debug.
Executar um Debug
Qual a funo do Debug
8/13/2019 Slides Curso ABAP
149/153
O ABAP Debugger uma ferramenta integrada de teste dentro do ABAPWorkbench. usada para achar erros no cdigo fonte de um programa ABAP.
No Debugger, podemos executar o cdigo fonte passo a passo, desta forma oprograma em execuo interrompido depois de cada passo, permitindo quevoc 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
8/13/2019 Slides Curso ABAP
150/153
Para chamar o debugger do SAP (R/3) basta inserir o /h como umatransao.
Verificar a barra de status.
A partir deste momento o mode debugger do SAP est emfuncionamento, em qualquer transao, que estivermos, poderemosvisualizar cdigo-a-codigo, o que o compilador, ABAP est interpretando.
Principais comandos para utilizar um Debug
8/13/2019 Slides Curso ABAP
151/153
Observe no modo Debug a seguinte tela:
Nesta tela que poderemos EXIBIRe MODIFICARvalores das variveisem tempo de execuo do programa, Lembre-se estamos em modo debugonde cada comando segue passo a passo o que pedimos.
Principais comandos para utilizar um Debug
8/13/2019 Slides Curso ABAP
152/153
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 subrotinaou da funo foi processado, o controle retorna ao comando seguinte doCALL FUNCTION ou do PERFORM.
Entra nas subrotinas
Executar: Boto ou F6 :
Use essa opo para executar o programa linha a linha. Todos os comandos dalinha corrente so processados em um nico passo. Se estiver posicionado emuma linha que chama uma subrotina, o Debugger processa a subrotina emmodo oculto e retorna para a linha seguinte a chamada da subrotina. Issopermite que pule nos comandos dentro da subrotina.
No entra nas subrotinas
Principais comandos para utilizar um Debug
8/13/2019 Slides Curso ABAP
153/153
Retorno: Boto ou F7:
O debugger retorna de uma rotina para o ponto de controle definido noprograma principal. Use esta opo para retornar de uma subrotina, mdulode 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 noexistir mais breakpoints no programa e nenhum cursor for definido o sistemasai do modo debugging e executa o resto do programa normalmente.
Executa toda a rotina at o final, sem parar.