curso abap

153
Marcelo Pereira de Azevedo [email protected] m.br ABAP Curso de Introdução à Linguagem De Programação ABAP

Upload: rafael-bordin

Post on 15-Nov-2014

4.666 views

Category:

Technology


15 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Curso abap

Marcelo Pereira de [email protected]

ABAP

Curso de Introdução à Linguagem

De Programação ABAP

Page 2: Curso abap

CONTEÚDO PROGRAMÁTICO

Page 3: Curso abap

CONTEÚDO PROGRAMÁTICO

• Capítulo 1 – Introdução• Capítulo 2 – Dicionário de dados• Capítulo 3 – Introdução à linguagem ABAP• Capítulo 4 – Conceito de Procedures, função e includes• Capítulo 5 – SQL• Capítulo 6 – Programas On-line• Capítulo 7 – Listas e ALV• Capítulo 8 – Conceito de Batch-input e Bapi´s• Capítulo 9 – Debug

Page 4: Curso abap

Capítulo 1

INTRODUÇÃO

Page 5: Curso abap

Capítulo 1 - introdução

• Conceito do SAP• O que são transações no SAP• Instância X Client ( Dependent/Independent)• Conceito de classe de desenvolvimento• Controlando e administrando transportes - Request• Worbench Organizer

Page 6: Curso abap

Conceito do SAP

• É um conjunto integrado de aplicativos projetado para tratar o processamento de dados em grandes corporações. 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 execução 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 necessários para o negócio.

O que é?

Page 7: Curso abap

Conceito do SAP

• ABAP/4 (Advanced Business Application Programming 4GL) é uma linguagem "orientada por eventos", "Top-Down”, bem estruturada e poderosa.

Page 8: Curso abap

O que são transações no SAP

• Transação é um código alfanumérico 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 através de uma transação. A customização de ABAP/4, sempre é utilizada para necessidade de um GAP ( procedimentos operacionais que não constam no SAP e que exigem adaptações ), isso gera pelo menos uma transação, de modo que o usuário possa executar esse produto customizado de dentro do sistema.

• Toda operação realizada através do menu do sistema, também corresponde a uma transação. Um método para conhecermos o código de uma transação, cujo caminho pelo menu é sabido, é entrarmos na mesma, na tela inicial desta transação e utilizarmos o menu SISTEMA→ STATUS, que informa o programa, tela e transação executados.

Page 9: Curso abap

O que são transações no SAP

• No desenvolvimento em ABAP/4, as principais transações são:

ABAP Editor (SE38) – para escrita e edição de programas, mais utilizado para desenvolvimentos de programas do tipo executável (Relatórios e Cargas).

ABAP Dictionary (SE11) – para edição de objetos relacionados com o banco de dados.

Menu Painter (SE41) – para desenho de interfaces de usuário (barra de menu).

Page 10: Curso abap

O que são transações no SAP

Screen Painter (SE51) – para desenho de telas para diálogo de usuário, não é utilizado para telas de seleção em report.

Function Builder(SE37) – para programação de módulos de funções. Repository Browser (SE80) – integra todas as ferramentas do ABAP

Workbench, muito utilizado para criação de programas do tipo on-line ou module pool, pois, facilita e muito a visualização de todos os objetos em uma mesma tela. Todo objeto do ABAP Workbench pode ser editado nessa transação e de uma forma bem mais organizada.

Page 11: Curso abap

Instância X Client (Dependent/Independent)

• Client – é definido como sendo uma unidade independente do R/3. Em termos comerciais,organizacionais e técnicos.Isso significa que possuem sua própria configuração e dados cadastrais (master data).

• Instância – é 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 formulários de Sapscript, Relatórios de Report Writer/Painter, ABAP QUERY(se criada na área Standard), parametrização/customizações, conteúdo de tabelas etc.

• Objetos Client Independent: Independentes de mandante, por exemplo programas Z*, todos os programas standards, todas as funções, estrutura de tabelas etc.

Page 12: Curso abap

Instância X Client ( Dependent/Independent)

Ex: Código Fonte – Independent Telas,Menus e funções – Independent Estrutura de tabelas,elementos e domínios - Independent Registros de dados em tabela - Dependent Formulário SapScript - Dependent

Page 13: Curso abap

Conceito de classe de desenvolvimento

• Classe de desenvolvimento (Pacotes)São importantes para transporte entre sistemas de produção, qualidade e desenvolvimento.As classes também são 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

Page 14: Curso abap

Controlando e administrando transportes

• Request

Guarda as modificações ou customizações feitas e que se deseja transportar para um determinado ambiente. Uma vez liberada a ordem de transporte mantém as alterações feitas até aquele momento. Novas alterações/customizações no mesmo lugar irão solicitar nova ordem de transporte.

• Ex : AF1K900109 – AF1 – Instância K – Geração de arquivo de controle (Interno SAP) 900109 - Sequêncial

Page 15: Curso abap

Worbench Organizer

• Esta transação pemite controlar as ordens (requests) geradas através das alterações feitas nos objetos ABAP e customizações funcionais.

Ordem Local : Alterações não transportáveis para objetos ABAP/4 são gravadas em ordens locais.

Ordens Transportáveis : Alterações transportáveis para objetos do ABAP/4. Isto permite que as ordens possam ser transportadas entre clients.

Transações importantes :

SE09/SE10 – Permite verificar as ordens de objetos client independent e dependent criados por um usuário.

Page 16: Curso abap

Capítulo 2

DICIONÁRIO DE DADOS

Page 17: Curso abap

Capítulo 2 – Dicionário de dados

• Conceito de banco de dados relacionais.• Tipo de dados do dicionário ABAP.• Conceito de domínio, elemento de dados.• Criação de tabelas transparentes, estruturas e view.• Criação de índices primários e secundários.• Criação de diálogo de manutenção.

Page 18: Curso abap

Conceito de banco de dados relacionais

• Modelo de Entidade e Relacionamento

Modelo desenvolvido para facilitar o projeto de banco de dados, permitindo a especificação de um esquema que represente a estrutura lógica global de um banco de dados.

Entidade: É um objeto que existe e é distinguível de outros objetos, ou seja, identifica o agrupamento de objetos do mesmo tipo. Exemplos: Clientes, Bancos, Agências, Contas-corrente.

Atributos: São os qualificadores de uma entidade, isto é, representam no modelo o que uma entidade pretende ser. Exemplos: Nome, RG, CPF, Endereço, Número conta, Número agência, Número banco.

Page 19: Curso abap

Conceito de banco de dados relacionais

Domínio: Conjunto de valores permissíveis para um atributo. Exemplo: (Casado,Solteiro e Etc ).

Relacionamento: É a associação entre duas entidades, ou seja, representa a maneira como duas entidades estão relacionadas ou ligadas. Exemplos: Conta-corrente de um Cliente, Agências de um Banco, Contas-Corrente de uma Agência.

Restrições de Mapeamento: Representam o modo como as diferentes entidades de um modelo se relacionam. Determinadas pela cardinalidade dos relacionamentos entre as entidades.

Page 20: Curso abap

Conceito de banco de dados relacionais

Um-para-Um: Uma ocorrência da entidade A está relacionada com uma e apenas uma ocorrência da entidade B.

Um-para-N: Uma ocorrência da entidade A está relacionada com uma ou várias ocorrências da entidade B.

EX : MARCA X CARRO

N-par-N: Várias ocorrências da entidade A estão relacionadas com várias ocorrências da entidade B.

EX : FORNECEDOR X PRODUTO

Page 21: Curso abap

Conceito de banco de dados relacionais

• Modelo RelacionalUm banco de dados relacional é a implementação física do modelo entidade-relacionamento e traduz concretamente o que o modelo conceitual procura representar. Consiste em uma coleção 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 são formadas de linhas que por sua vez são formadas por colunas. Colunas representam fisicamente os atributos.A cada linha da tabela chamaremos de ocorrência e o conjunto de ocorrências pode ou não estar relacionado com ocorrências de outras tabelas.

Page 22: Curso abap

Conceito de banco de dados relacionais

Como distinguir as ocorrências umas das outras?Utilizando o conceito de chave primária.

Chave Primária: Conjunto de atributos que garante a unicidade de cada ocorrência da tabela. Exemplos: RG, CPF, Número do Chassis.Normalização: Processo de reconhecimento da chave primária.

Como representar os relacionamentos entre tabelas?Transferindo a chave primária de uma tabela para a outra.

Chave Estrangeira: Quando a chave primária de uma tabela é um atributo em outra(s) tabela(s).

Page 23: Curso abap

Tipo de dados do dicionário ABAP

O dicionário ABAP (Transação SE11) permite a administração central de todas as definições de dados do R/3, permitindo a criação de tipos de dados definidos pelo usuário para uso posterior, além de vários itens auxiliares ao desenvolvimento de programas ( p.ex: search helps ).

Podem ser definidas tabelas e visões dentro do dicionário. O R/3 se encarrega, durante a ativação desses elementos, de criá-los no banco de dados. O dicionário permite, ainda, a criação de índices, que agilizam as buscas. A definição de índices apropriados é de suma importância 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.

Page 24: Curso abap

Tipo de dados do dicionário ABAP

As definições de tipos de dados dentro do R/3 incluem os elementos de dados, que definem um tipo elementar descrevendo o tipo básico de dados, o comprimento e, eventualmente, as casas decimais; as estruturas, que podem receber elementos de vários tipos (semelhante à representação 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 usuário que tivesse um campo para números de telefone poderia usar um table type e permitir colocar vários números num mesmo campo.

Page 25: Curso abap

Tipo de dados do dicionário ABAP

Além dessas definições, o dicionário ABAP permite criar os search helps, que são tabelas de busca auxiliares aos campos de tela – são as buscas e tabelas que aparecem quando se tecla F4 dentro de um campo em qualquer tela do R/3.

Criando documentação para o elemento de dados dentro do dicionário, automaticamente está disponível a ajuda do campo, que pode ser invocada usando-se a tela F1 dentro dos campos de tela. Pode-se, ainda, definir verificações de entrada automaticamente, bastando definir uma relação de foreign key.

No dicionário também são 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 usuários editem a mesma informação ao mesmo tempo no sistema.

Page 26: Curso abap

Tipo de dados do dicionário ABAP

O dicionário é integrado às ferramentas de desenvolvimento e execução do R/3, permitindo o acesso das ferramentas às definições nele contidas. Por exemplo, é possível navegar de um programa que esteja sendo criado no editor ABAP para definições de campos, elementos e tabelas usadas no programa.

Tipos de DadosI – Campos numéricos sem decimais, contadores, etc.

P – Campos numéricos com decimais, quantidade e moeda.

C – Campo alfa, mais utilizado para conter textos, pode conter números até efetuar cálculos, mas não é usual.

Page 27: Curso abap

Tipo de dados do dicionário ABAP

N – Campo alfa, utilizado para conter números 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.

Page 28: Curso abap

Conceito de domínio, elemento de dados.

• DomíniosO domínio contém os tipo de dado e comprimento do campo. Podem conter os valores válidos para o campo, através de valores fixos entrados no domínio ou por uma tabela de valores (Value Table).

• Tabela de ValoresContém os valores que o domínio pode assumir.

• Elementos de dados.Os elementos de dados agrupam as definições de tipo, tamanho e descrição dos campos em um só objeto. É útil quando os campos se repetem em diversas tabelas.

Page 29: Curso abap

Criação de tabelas transparentes, estruturas e view.

• A definição 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.

Opções Técnicas - controla como a tabela deve ser criada no Banco de Dados.

Índices - Para melhorar a performance nos acessos a tabela, pode-se criar índices secundários para ela.

Page 30: Curso abap

Criação de tabelas transparentes, estruturas e view.

• Ao se criar uma tabela será necessário informar :

Campo: O nome do campo pode conter até 16 caracteres, devendo começar com uma letra.

Flag-Chave: Indicativo para campos chave. Tipo: Tipo de dado do campo. Comprimento: Comprimento do campo. Casas Decimais: Número de casas decimais após a vírgula. Texto Breve: Descrição breve do campo.

Page 31: Curso abap

Criação de tabelas transparentes, estruturas e view.

Tabela Transparente

Existe uma tabela física no banco de dados para uma tabela transparente. Os nomes da tabela física e da definição lógica de tabela são coincidentes no ABAP Dictionary.Todos os dados empresariais e dados de aplicação são arquivados em tabelas transparentes.

Page 32: Curso abap

Criação de tabelas transparentes, estruturas e view.

• Estruturas

São como tabelas que não armazenam dados, definem um conjunto de campos e geralmente são utilizadas para definir os dados na interface de pools de módulos e telas, assim como para atribuir o tipo aos parâmetros de módulos de função. Uma estrutura diferentemente de uma tabela não tem uma tabela de banco de dados associada a ela.

Page 33: Curso abap

Criação de tabelas transparentes, estruturas e view.

• VisõesSão tabelas virtuais que resultam da união de tabelas transparentes e que contém uma certa quantidade de informações.

Page 34: Curso abap

Criação de índices primários e secundários

• Índices

• Um índice pode ser considerado como uma cópia da tabela que foi reduzida a um certo número de campos. Esta cópia está sempre ordenada. A ordenação faz com que o acessos ao registros se torne mais rápido, o índice também contém, um ponteiro para o registro real na tabela transparente, para que os campos que não estão no índice também possam ser lidos.

• O índice primário é separado dos índices secundários. O Índice primário é constituído dos campos indicados como campo-chave na criação da tabela.

Page 35: Curso abap

Criação de diálogo de manutenção

Pode ser feita uma criação automática de programa on-line para manutenção de tabelas transparentes através da transação SE11. Para tanto basta seguir estes procedimentos :

• Informar o nome da tabela a ser alimentada. • Clicar no menu utilitários/Gerador de atualização de tabelas.

– Informar grupo de funções – Informar o grupo de autorização – Se a tabela contiver poucos campos, usar ‘nível único’, senão ‘ 2 níveis’.– Clicar ‘procurar número de tela’. O sistema sugere os números das telas.Deixar assim.

Page 36: Curso abap

Criação de diálogo de manutenção

Gerar módulo.

Page 37: Curso abap

Capítulo 3

INTRODUÇÃO À LINGUAGEM ABAP

Page 38: Curso abap

Capítulo 3 – Introdução à linguagem ABAP

• Como funciona a transação SE38 – Editor ABAP.• Blocos de eventos.• Declaração de variáveis, tabelas internas, ranges e constants.• Definição de parâmetros de entrada.• Principais comandos ABAP. • Executando um programa report.

Page 39: Curso abap

Como funciona a transação SE38 – Editor ABAP.

Transação SE38.

Permite a visualização, edição e execução de programas ABAP, bem como duplicação de um programa e deleção do mesmo, entre outros recursos.

Page 40: Curso abap

Como funciona a transação SE38 – Editor ABAP

Page 41: Curso abap

Como funciona a transação SE38 – Editor ABAP

- Voltar, encerrar e cancelar.

- Compilar e ativar.

- Executar,ref.cruzada,análise de ambiente e ajuda on-line.

- Eliminar,copiar e renomear.

- Criar o novo programa.

Page 42: Curso abap

Como funciona a transação SE38 – Editor ABAP

Texto fonte – Texto principal do programa.Variantes – Exibe as variantes gravadas p/execução do programa.Características – Exibe as características do programa como classe de desenvolvimento, tipo do fonte (includes, executável e etc).Documentação – Documentação simplificada do programa.Elementos de texto – Textos que serão utilizados para execução do programa

- Exibição do fonte e modificação do fonte.

Page 43: Curso abap

Como funciona a transação SE38 – Editor ABAP

- Imprimir fonte,localizar e localizar próxima. - Modificar, ativar desativar, outro objeto e ampliar. - Compilar, ativar,testar e ref.cruzada.

- Lista de Objetos,janela de navegação, tela completa e ajuda.

- Ponto de parada na sessão, ponto de parada externo, modelo e identação.

- Recuar, recuperar,localizar,localizar próxima, upload e download.

- Gravar o fonte.

Page 44: Curso abap

Como funciona a transação SE38 – Editor ABAP

- Controle de versão

Page 45: Curso abap

Como funciona a transação SE38 – Editor ABAP

Page 46: Curso abap

Como funciona a transação SE38 – Editor ABAP

- Tipos de editor

Page 47: Curso abap

Blocos de eventos

• Eventos: Evento é um Tag que identifica uma seção de código. A seção de código

Associada com um evento começa com um nome de evento e termina quando o próximo é encontrado.

• INITIALIZATION – Evento é acionado antes da tela de seleção ser acionada.Seria uma preparação para executar o programa.

Ex: inicialização de variáveis de tela com condição.»

• AT SELECTION SCREEN – Evento é processado depois da entrada do usuário na tela de seleção ativa.Isso pode ser quando o usuário pressiona uma tecla de função ou dá um clique em um botão.

Page 48: Curso abap

• START-OF-SELECTION – Evento onde executa o processamento principal do programa.

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

• TOP-OF-PAGE (início relatório) – Evento é utilizado quando executado o primeiro comando write.

• END-OF-PAGE (fim relatório) - Evento é utilizado no final do relatório.

• AT USER-COMMAND (tratamento de botões) – Evento para tratamento de botões.

Blocos de eventos

Page 49: Curso abap

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 usuário 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 botão que tenha o código standard ‘PICK’ a ele associado.

Page 50: Curso abap

Blocos de eventos

Page 51: Curso abap

Declaração de variáveis, tabelas internas, ranges e constants

Declaração : Locais e Globais.

Locais:Essas declarações são apenas vistas dentro da mesma sub-rotuna. São utilizadas no caso de processos individuais dentro do programa.

Globais:Essas declarações podem vistas de qualquer ponto no programa, seja dentro de um evento ou sub-rotina. É boa a prática decolocar definições globais na parte superior do programa.

Page 52: Curso abap

Declaração de variáveis, tabelas internas, ranges e constants

- Tipos de dados:

Page 53: Curso abap

Entre as formas de tipos de dados, as mais usadas no desenvolvimento de programas ABAP/4 são:

Variáveis : São declaradas para receber valores que são alterados durante aexecução do programa.

Contants : São declaradas quando existem valores que não são alterados durante a execução do programa. A forma da declaração e o tipos de dados seguem o mesmo padrão das variáveis.

Ranges : Tabela interna com a mesma estrutura de um select-options, mas sem conexão com uma tela de entrada.

Declaração de variáveis, tabelas internas, ranges e constants

Page 54: Curso abap

VariáveisDATA: 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’.

Declaração de variáveis, tabelas internas, ranges e constants

Page 55: Curso abap

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’.

Declaração de variáveis, tabelas internas, ranges e constants

Page 56: Curso abap

Ranges

Ranges: rangename FOR _.

Exemplo:

Ranges: r_vstel FOR vbap-vstel.

Declaração de variáveis, tabelas internas, ranges e constants

Page 57: Curso abap

Tabelas Transparentes: São declaradas quando existem seleção, inserção, alterações e exclusão de valores em tabelas.

Declaração de variáveis, tabelas internas, ranges e constants

Page 58: Curso abap

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

Exemplo:TABLES: LFA1, EKKO.

Declaração de variáveis, tabelas internas, ranges e constants

Page 59: Curso abap

Tabela Interna : Uma tabela interna consiste em uma série de linhas do mesmo tipo de dados. Os dados são armazenados linha a linha na memória, e cada linha tem a mesma estrutura.

Deve-se usar tabelas internas sempre que precisar usar registros de tabelas transparentes dentro do programa.

Declaração de variáveis, tabelas internas, ranges e constants

Page 60: Curso abap

Tipos de tabelas internas :

Standard table: Permite acesso sequêncial aos dados;

Sorted table: É o tipo mais apropriado se você precisa de uma tabela ordenada independente do seu preenchimento. Não pode ser utilizar o comando sort nesse tipo de tabela;

Hashed table: As tabelas do tipo Hashed table são organizadas de acordo com a chave especificada e não permitem operações utilizando o número sequêncial dos registros. São mais adequadas a grande volume de dados.

Declaração de variáveis, tabelas internas, ranges e constants

Page 61: Curso abap

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.

Declaração de variáveis, tabelas internas, ranges e constants

Page 62: Curso abap

Estruturas:São modelos de tabelas sem dados. Esses modelos podem ser utlizados com referências para criação de tabelas internas, parâmetros de função e etc.

Declaração de variáveis, tabelas internas, ranges e constants

Page 63: Curso abap

Estruturas

TYPES: BEGIN OF <typename>,

var1 TYPE _,

var2 LIKE tab1-campo,

.....

END OF <typename>.

TYPES BEGIN OF <typename>,.

INCLUDE STRUCTURE <tabbanco>.

TYPES END OF <typename>,.

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.

Declaração de variáveis, tabelas internas, ranges e constants

Page 64: Curso abap

Registros

TYPES: BEGIN OF <typename>,

var1 TYPE _,

var2 LIKE tab1-campo,

.....

END OF <typename>.

DATA: T_TAB1 TYPE <typename>.

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.

Declaração de variáveis, tabelas internas, ranges e constants

Page 65: Curso abap

Definição de parâmetros de entrada

Parâmetros de entrada :Essa instrução é muito parecida com a instrução data, mas quando você executa o programa, o sistema exiberá os parâmetros como campos de entrada em uma tela de seleção antes que o programa realmente comece a ser executado. O usuário pode digitar ou modificar seus valores e então pressionar o botão execute, para iniciar o processamento.

PARAMETERS: É uma forma de entrada de dados que o usuário poderá escolher apenas 1 valor em cada execução.

SELECT-OPTIONS: Select-Options é uma forma de entrada de dados que o usuário poderá escolher N valores em cada execução. No parâmetro SELECT-OPTIONS podemos também definir faixas de dados, valores individuais, exclusão de valores individuais, exclusão de faixas e etc.

CHECK-BOX : Esse parâmetro é utilizado para funcionalidades ligadas ou desligadas. Não trabalha com grupo de seleção.

RADIOBUTTON: Esse parâmetro é utilizado para funcionalidades ligadas ou desligadas, envolvendo várias opções. Trabalha com grupo de seleção.

Page 66: Curso abap

Definição de parâmetros 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.

Page 67: Curso abap

SELECT-OPTIONS: s_par1 FOR campo1 ,

NO-EXTENSION.

NO INTERVALS.

DEFAULT valor1 TO valor2.

OBLIGATORY.

NO-DISPLAY.

MEMORY ID mem.

MATCHCODE OBJECT obj.

Definição de parâmetros de entrada

Page 68: Curso abap

Principais comandos ABAP

Comando/Função Descrição

ADD Adiciona um valor a outro campo numérico

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 sequência (quebra)

AT EXIT-COMMAND Usado para definir a execução de módulos com botões

AT FIRST Identifica o primeiro registro da tabela percorrida

AT LAST Identifica o ultimo registro da tabela percorrida

Page 69: Curso abap

Principais comandos ABAP

Comando/Função Descrição

AT LINE-SELECTION Evento para abrir uma segunda tela dentro de um relatório

AT NEW Identifica o primeiro registro de uma sequência

AT SELECTION-SCREEN ON Analisar o resultado de uma variável

AT USER-COMMAND Evento para inicializar os botões criados

AUTHORITY-CHECK OBJECT Para verificar a autorização para determinado objeto

AS TEXT Usado para classificar caracteres acentuados

ASSIGN f1 TO <f> Atribuição dinâmica

AS SYMBOL / AS ICON / AS LINE Comandos usados para formatação em relatórios

Page 70: Curso abap

Principais comandos ABAP

Comando/Função Descrição

CALL TRANSACTION Comando usado para chamar transações

CASE... WHEN... ENDCASE Comando para tomadas de decisão

CHECK Substitui o comando IF

CLEAR Limpar o conteúdo de uma variável

CLOSE DATASET Fecha um arquivo externo

CLOSE_FORM Função usada para fechar um formulário sapscript

COLLECT Organiza a tabela com todas as descrições à esquerda totalizando os campos numéricos

COMMIT WORK Efetiva as alterações no banco

Page 71: Curso abap

Principais comandos ABAP

Comando/Função Descrição

CONCATENATE Agrupa vários campos em um só

CONSTANTS Criar constantes para serem usadas em todo o programa

CONTINUE Volta ao início de um loop após a verificação de uma condição

CONDENSE Remove os espaços em branco em um texto

DATA Criar tabelas internas e variáveis

DELETE Deleta um registro de uma tabela interna

DESCRIBE TABLE Determina o número de linhas de uma tabela interna

DO... ENDDO Usado para criar um loop

Page 72: Curso abap

Principais comandos ABAP

Comando/Função Descrição

GUI_DOWNLOAD Função para download de arquivo

END_FORM Função usada para finalizar um formulário sapscript

END-OF-PAGE Evento executado ao finalizar a impressão de uma página

END-OF-SELECTION Evento executado logo após o evento START-OF-SELECTION

EXIT Comando usado para sair de um loop ou sub-rotina

FORM Indica o início de uma sub-rotina

FORMAT COLOR Usado para formatar a saída do comando write(COR)

FREE Libera espaço de memória utilizado por uma tabela interna

Page 73: Curso abap

Principais comandos ABAP

Comando/Função Descrição

HIDE Usado para definir campos para uma segunda janela em relatórios

ID... FIELD... Objetos de autorização

IF... ELSE... ENDIF Comando de decisão

IF NOT... IS INITIAL Verifica se uma variável está vazia

INITIALIZATION Primeiro evento executado dentro de um programa

INSERT Insere o conteúdo de um registro em uma tabela transparente

INSERT LINES Insere mais de uma linha em uma tabela transparente

Page 74: Curso abap

Principais comandos ABAP

Comando/Função Descrição

LEAVE PROGRAM Comando encerra um programa

LEAVE TO SCREEN Comando que direciona a ida de uma tela para outra

LINE-COUNT Limita o número de linhas por página

LINE-SIZE Limita o número de colunas por página

LOOP AT Loop no conteúdo de uma tabela interna

MESSAGE Usado para mostrar mensagens na tela

MESSAGE-ID Usado para definir uma classe de mensagem

MODIFY Modifica o conteúdo de uma linha da tabela interna

Page 75: Curso abap

Principais comandos ABAP

Comando/Função Descrição

MODULE Usado para a criação de sub-rotinas em programas on-line

MOVE Move o conteúdo de uma variável para outra

MOVE-CORRESPONDING Move apenas campos com o mesmo nome

NEW-PAGE Força quebra de página em um relatório

NO STANDARD PAGE HEADING Ignora a impressão do cabeçalho standard do SAP em relatórios

OPEN DATASET Para abrir arquivo externo(somente para UNIX)

OPEN_FORM Função para abrir formulário sapscript

Page 76: Curso abap

Principais comandos ABAP

Comando/Função Descrição

PARAMETERS Criar parâmetros de seleção

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 conteúdo de uma tabela interna

REPLACE Substitui um texto dentro de outro texto

REPORT Início de um relatório(programa)

SEARCH Procura um texto dentro de outro texto

SELECT Usado para selecionar dados em uma tabela

Page 77: Curso abap

Principais comandos ABAP

Comando/Função Descrição

SELECT-OPTIONS Declarar parâmetros de seleção com opções

SELECTION-SCREEN Criar BOX na tela

SET PF-STATUS Comando usado para definir menu a ser usado

SET TITLEBAR Criar títulos em janelas

SKIP Saltar linha

SORT Ordenar o conteúdo de uma tabela interna

SPLIT... AT... INTO Comando usado para separar conteúdo de uma variável e outra(s)

START_FORM Função para iniciar formulário sapscript

START-OF-SELECTION Evento para marcar início da rotina principal do programa

Page 78: Curso abap

Principais comandos ABAP

Comando/Função Descrição

STRLEN Retorna o tamanho de um texto

SUBTRACT Subtrai um valor numérico de outro valor

SUM Totaliza um campo numérico

SY-BATCH Indica execução em background

SY-DATUM Retorna a data atual do sistema

SY-LANGU Retorna o idioma de logon

SY-LINNO Linha corrente em um relatório

SY-LISEL Linha selecionada em relatórios interativos

SY-MANDT Retorna o mandante

SY-PAGNO Faz paginação automática(num. Pagina)

Page 79: Curso abap

Principais comandos ABAP

Comando/Função Descrição

SY-SUBRC Retorna o resultado de uma execução(OK ou Não OK)

SY-TABIX Linha corrente de uma tabela interna

SY-UCOMM Retorna o nome de um botão

SY-UNAME Retorna o usuário logado

SY-UZEIT Retorna a hora atual do sistema

SY-VLINE Serve para fazer o fechamento de bordas de um relatório

SY-ULINE Imprime uma linha com n posições

SY-CPROG Retorna o nome do programa principal

SY-TCODE Retorna o código da transação

TABLES Usado para declarar tabelas

Page 80: Curso abap

Principais comandos ABAP

Comando/Função Descrição

TOP-OF-PAGE Evento para início de cabeçalho em um relatório

TRANSFER... TO... Usado para ler e gravar em arquivo externo (UNIX)

TYPES Define estrutura para tabelas internas

UPDATE Atualiza o conteúdo de uma tabela transparente

WHILE... ENDWHILE Cria laços de execução

WRITE Saída em relatório

WRITE_FORM Função para escrever no formulário sapscript

WS_UPLOAD Função para fazer upload de um arquivo externo

Page 81: Curso abap

Executando um programa report

Page 82: Curso abap

Capítulo 4

CONCEITO DE PROCEDURES, FUNÇÃO E INCLUDES

Page 83: Curso abap

Conceito de Procedures, função e includes

• Como criar uma procedure.• Como criar um Include.• Como criar uma módulo de função em ABAP.• Testando a execução de uma função.• Criando um report chamando procedures e funções.

Page 84: Curso abap

• Procedures: módulos internos do programa, que possuem uma interface. Com uma declaração ABAP, é possível chamar um subprograma em um programa, a partir de qualquer outro bloco de processamento.

• Módulos de função: módulos com uma interface transparente, disponíveis em todo o sistema. Esses módulos podem ser chamados de qualquer bloco de processamento e em qualquer programa ABAP que utilize uma declaração ABAP especial.

Conceito de Procedures, função e includes

Page 85: Curso abap

• Procedures

O bloco de processamento de um subprograma começa com 'FORM <subroutine name> <interface definition>' e termina com ' ... ENDFORM. ' .

É possível utilizar a declaração 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á invisível dentro do subprograma.

Conceito de Procedures, função e includes

Page 86: Curso abap

- A interface é definida da seguinte maneira:

• Após USING, deve-se relacionar em uma lista todos os parâmetros que o subprograma só precisa ler.

• Após CHANGING, deve-se relacionar em uma lista todos os parâmetros que o subprograma vai modificar e cujos valores serão transferidos para o programa de chamada.

• Após TABLES, deve-se relacionar em uma lista todas as tabelas internas que irá modificar e cujos valores serão transferidos para o programa principal.

Conceito de Procedures, função e includes

Page 87: Curso abap

• 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, função e includes

Page 88: Curso abap

• As rotinas FORM podem ser chamadas a partir de qualquer bloco de processamento ABAP por meio de PERFORM <nome do subprograma> <interface>.

• O número de parâmetros atuais deve ser igual ao de parâmetros formais. Não é possível ter parâmetros opcionais. Os parâmetros são atribuídos na seqüência em que estão relacionados na lista.

• Quando um subprograma é chamado com a declaração PERFORM, o sistema verifica se os tipos dos parâmetros atuais de PERFORM são compatíveis com os parâmetros formais.

Conceito de Procedures, função e includes

Page 89: Curso abap

Existe a possibilidade de omitir o tipo. Nesse caso, o parâmetro formal herda o tipo do parâmetro atual correspondente.

Conceito de Procedures, função e includes

Page 90: Curso abap

Como criar um módulo de função 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.

Page 91: Curso abap

Testando a execução de uma função

Também podemos executar procedures relacionadas em outros programas utilizando a sintaxe abaixo:

- PERFORM <nome da procedure> IN PROGRAM <nome do programa> CHANGING <valor> IF FOUND.

Page 92: Curso abap

Criando um report chamando procedures e funções

- Submit :

O comando submit é utilizado para chamar de dentro de um programa outro programa com os parâmetros desejados.

Ex : SUBMIT < Nome do programa > USING SELECTION-SCREEN < Número da tela >

WITH <PARAMETERS> EQ <valor do parâmetro> <SELECT-OPTIONS> IN <valor do parâmetro> AND RETURN.

Page 93: Curso abap

Funções :

-Módulos de função são subprogramas externos com uma interface transparente. A interface é considerada transparente porque não está incluída nas declarações do programa ABAP para a parte executável do módulo de função. A interface é definida separadamente e pode ser atualizada independentemente do texto.

-Com os parâmetros opcionais, acréscimos à interface podem tornar as declarações do programa ABAP completamente executáveis sem qualquer modificação. Eles são armazenados de forma centralizada no Repository R/3.

-Cada módulo de função pertence a um grupo de funções.

-Existem várias funções STANDARD que podem ser utilizadas nos programas customizados (Pesquisa na SE37).

Criando um report chamando procedures e funções

Page 94: Curso abap

- Transação SE37

A transação SE37 é responsável pela criação de funções.

Criando um report chamando procedures e funções

Page 95: Curso abap

Características: São definidas as características da função, como texto breve,qual grupo de função pertence, responsável etc. - Módulo de função normal – é definida como default. Trata-se de uma função internamente pelo sistema. - Módulo de acesso remoto – é definida quanto a função é chamada remotamente de outra plataforma – Não SAP.

Parâmetros da interface: é possível utilizar objetos de dados elementares, estruturas ou tabelas internas como parâmetros de importação, exportação e modificação. Os módulos de função utilizam os mesmos métodos de transmissão de parâmetros que as rotinas FORM.

Exceções: se, durante o processamento, ocorre um erro em um módulo, é possível inserir a correção dentro do próprio módulo como uma exceção.É possível antecipar possíveis erros e escrever o programa de modo que eles não causem erros de tempo de execução. As possíveis exceções são denominadas na interface do módulo de função e acionadas a partir do texto de programa, por meio da declaração RAISE. Cada programa que chama o módulo de função consulta sy-subrc para interpretar as exceções.

Criando um report chamando procedures e funções

Page 96: Curso abap

Valor proposto : Valor inicial para o parâmetro caso não seja passado nenhum valor na interface.

Opcional: Parâmetro não é obrigatório.

Transf.Valores: A transferência do parâmetro é efetuada com transferência de valor. Isto significa que o conteúdo do parâmetro é copiado durante a transferência. Em estruturas que contêm tabelas, isto pode levar a fortes reduções de performance e, se possível, não deve ser utilizado.

Criando um report chamando procedures e funções

Page 97: Curso abap

Criar uma função z_busca_price. Essa função deverá buscar o campo price da tabela SFLIGHT, utilizando os parâmetros abaixo :

Parâmetros de importação :carrid – companhia aérea(obrigatório).connid – código de conexão do vôo(obrigatório).fldate – data do vôo(Não obrigatório).

Parâmetros de exportação :Price – preço do vôo.

Exceções :Error_parameters = 1

Criando um report chamando procedures e funções

Page 98: Curso abap

- Includes:

Programas do tipo include, pode se modularizar um programa utilizando códigos fontes não executáveis e chama-se esses código de dentro do programa principal. É utilizado para declarações de variáveis em programas muito extensos.

Criando um report chamando procedures e funções

Page 99: Curso abap

- Criar um programa utilizando função e procedures.

Criando um report chamando procedures e funções

Page 100: Curso abap

Capítulo 5

SQL

Page 101: Curso abap

Capítulo 5 – SQL

• Comandos SQL.• Performance.

Page 102: Curso abap

Comandos SQL

• Comandos SQL

Page 103: Curso abap

Comandos SQL

Page 104: Curso abap

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 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.

Page 105: Curso abap

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, não individualmente, e os coloca dentro de uma internal table. Este processo é mais rápido que ler individualmente através de um LOOP e ir gravando os registros, um a um.

Page 106: Curso abap

Comandos SQL

SELECT * FROM <table> APPENDING TABLE <internal table>.Lê os registros e os inclui - não sobrepõe - em uma internal table. SELECT …. INTO CORRESPONDING FIELDS OF TABLE <itab>.Neste caso a estrutura da tabela interna não 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 não exigem o endselect.

Page 107: Curso abap

Comandos SQL

SELECT ….. APPENDING CORRESPONDING FIELDS OF TABLE <itab>.Lê e grava (não sobrepõe) os dados em uma internal table que possua nomes idênticos aos nomes da tabela que está sendo lida. SELECT SINGLE * FROM SPFLI WHERE …..<campo>….. EQ … <conteúdo>Toda vez que se usa select single * a chave primária completa deve ser especificada. Se a chave especificada não é 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 opções são: select * ….. seguido de comando exit OU select * … up to 1 row. Neste caso não é necessário especificar a chave completa.

Page 108: Curso abap

Comandos SQL

SELECT * FROM …<tabela> Quando não se impõe nenhum tipo de restrição, 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 <conteúdo>.Lê todos os registros da tabela especificada onde o campo é igual ao conteúdo

especificado. O ideal é que se qualifique a cláusula WHERE tanto mais quanto seja possível. Atentar que isso é válido para tabelas do tipo Pool e Transparent. Para Cluster, seguir as recomendações dadas anteriormente.

Page 109: Curso abap

Comandos SQL

SELECT <a1> <a2> … INTO (<f1>, <f2>, … ) FROM ….<tabela> WHERE …… .Lê as colunas especificadas (a1, a2). Após INTO deverão ser especificadas as áreas de

trabalho auxiliares (f1, f2). O número de colunas lidas deverá ser igual ao número 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.

Page 110: Curso abap

Comandos SQL

Page 111: Curso abap

Comandos SQL

Page 112: Curso abap

Comandos SQL

Page 113: Curso abap

Performance

Para se obter uma otimização da performance em programas ABAP, deve-se minimizar o tempo de acesso ao database.

• Grandes vilões no que se refere à performance– Ninhos de select;– Select …. Endselect ao invés de comandos que recuperem do banco de dados

todos os registros de uma única vez;– Select * ao invés de select com as colunas necessárias ao processamento;– Select single sem chave completa especificada ao invés de Select up to 1 row;– Selects genéricos, ou seja, onde a cláusula where não foi fortemente

especificada, com várias condições, visando restringir ;– Índices não utilizados;

Page 114: Curso abap

Performance

– Falta de índices;– Select em tabelas com alto número de registros utilizando cláusula

where baseada em tela de seleção onde o preenchimento não é obrigatório;

– Definição funcional falha;– Grandes tabelas do sistema: BKPF, BSEG, EKKO, EKPO, VBAK, VBAB,

MKPF, MSEG, J_1BNFDOC, J_1BNFLIN, EKET, EKBZ.

Page 115: Curso abap

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 aplicação que será desenvolvida e faça a melhor escolha.

Page 116: Curso abap

Performance

• Dicas para otimização do código

• Use o comando FREE para liberar espaço em internal tables; Sempre usar os comandos Clear / Refresh após o fim de um LOOP;

• Evite comparações num SELECT com campos numéricos versus campos alfanuméricos; o sistema perde tempo para conversão;

• Testar SY-SUBRC após cada acesso ao banco de dados;• O comando MOVE-CORRESPONDING é bom para tabelas pequenas. É interessante

que a tabela interna contenha os campos na sequência em que serão movimentados;

• Ao utilizar o comando CASE, codificar sempre a cláusula WHEN OTHERS;

Page 117: Curso abap

Performance

• Sempre identifique se um SORT é ascending ou descending e especifique a cláusula BY <fields>. Caso contrário, todos os campos serão classificados.

• Evitar lógicas do tipo IF not CPOA = CPOB. É mais claro codificar IF CPOA ne CPOB.

• Evitar construções do tipo:

SORT tabela1, SORT tabela2, SORT tabela3. LOOP tabela1, LOOP tabela2, LOOP tabela3 Para cada SORT fazer o LOOP correspondente. Aí então iniciar novo SORT e

LOOP, e assim por diante.

• Campos chave devem ser sempre os primeiros campos da tabela. Assim, todos os demais campos serão comprimidos;

Page 118: Curso abap

Performance

• SELECT (para Transparent e Pool Tables): a cláusula 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 cláusula WHERE. Os demais devem ser checados através do comando CHECK;

• O conhecimento do conteúdo dos dados de uma tabela pode auxiliar no momento da codificação do comando select. O campo que ocorrer em número menor de vezes deverá constar na cláusula where antes daquele que ocorre um número maior de vezes, caso seja necessário satisfazer a ambas condições. 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 também o uso de comando select, sendo o que melhor se adapte a situação em questão.

Page 119: Curso abap

Performance

• MÁXIMAS DA BOA PROGRAMAÇÃO:

Remova todo o código/processamento desnecessário/redundante! Gaste tempo documentando e adote boas práticas de alteração de código! Gaste todo tempo preciso analisando as necessidades de negócio, fluxos de

processos, estruturas de dados e modelos de dados! Qualidade é a chave! Planeje e execute um bom plano de testes A Experiência sempre ajuda!

Page 120: Curso abap

Performance

Para mais informações chame a Transação SE30Botão Tips & Tricks

Page 121: Curso abap

Capítulo 6

PROGRAMAS ON-LINE

Page 122: Curso abap

Capítulo 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.

Page 123: Curso abap

Conceito de PBO, PAI e module.

• Módulo Pool é o programa principal de um "Dialog" ou On-line. O Dialog é composto por um programa principal (pool module), includes, módulos e telas.

No pool de módulo você encontrará apenas os includes que por sua vez contêm os módulos e sub-rotinas que formam o programa. Cada módulo está associado a uma tela, e a tela possui sua parte gráfica que pode ser desenhada usando a transação SE80(screen painter).

A SE80 é a transação usada para se gerar on-lines, pois nela todos os objetos e programas podem ser criados e manipulados facilmente. Um programa do tipo módulo pool só pode ser executado através de uma transação, o que é uma particularidade deste tipo de programa.

Page 124: Curso abap

Conceito de PBO, PAI e module.

Lembre-se: no programa tipo pool de módulo você só verá os includes, para entender todo o funcionamento terá que entrar nos includes → modules → screens. Geralmente os includes pertencem a 4 níveis distintos:

1º) Top (área geral de declaração);

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

3º) PAI (Process After Input - Processos após Entrada de Dados) e

4º) Contém as subrotinas chamadas pelos módulos "PERFORM".

Page 125: Curso abap

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 lógico no module pool do programa ABAP/4 .

Estruturas de dados são definidas no Dicionário ABAP/4. Você pode acessar essas estruturas do programa ABAP/4 e quando define campos de tela.

O processador de diálogo controla o fluxo do seus programa diálogo.

Page 126: Curso abap

Como criar um programa ON-LINE

• Comunicação: Tela ABAP/4 module Pool

• O fluxo lógico da tela é dividido em dois eventos para cada tela: – O evento PBO é executado antes da tela ser apresentada. – O evento PAI é executado após o usuário pressionar ENTER.

• O sistema processa os módulos de evento numa sequência

• Em cada módulo, o controle passa do processador de diálogo para o processador ABAP/4. Depois do processamento, o controle é retornado para o processador de diálogo.

Page 127: Curso abap

Como criar um programa ON-LINE

• Quando todos os módulos do PBO forem processados, o conteúdo dos campos da área de trabalho (work área) ABAP/4 são copiados para os campos de mesmo nome da área de trabalho (work área) da tela.

• Antes do módulo PAI é processado. O conteúdo dos campos na área de trabalho da tela (work área) são copiados para campos de mesmo nome na área de trabalho (work área) ABAP/4.

Page 128: Curso abap

Criando telas no ON-LINE

• Screen Painter - ABAP/4

Para criar uma tela, siga os seguintes passos:

– Defina as características básicas da tela (screen atributes);

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

– Defina os atributos dos campos (field list);

– Escreva o fluxo lógico da tela (programa).

Page 129: Curso abap

Criando telas no ON-LINE

• Definindo o Layout (Graphical Screen Painter) – A interface do Graphical Screen Painter contém funções fáceis de usar

para definir os vários elementos da tela (ex.: campos de entrada e saída, 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 então escolhe Delete.

– Para mover elementos da tela, você usa o mouse para arrastar o elemento para a posição desejada.

Page 130: Curso abap

Criando um ON-LINE

• Transação SE80

Page 131: Curso abap

Capítulo 7

LISTAS E ALV

Page 132: Curso abap

Capítulo 7 – Listas e ALV

• Formatação de relatórios• Principais comandos para uma lista• Formatação do relatório ALV• Criando uma Lista e um relatório ALV

Page 133: Curso abap

Formatação de relatórios

O que é o ALV

• O Abap List Viewer(ALV) é uma ferramenta que padroniza e simplifica o uso de listas e relatórios no sistema R/3 tanto para o desenvolvedor tanto para o usuário que interage com o relatório.

• O ALV através de suas funções e estruturas torna o desenvolvimento mais simples na medida que economiza significativas linhas de código como por exemplo no tratamento de quebras,totais,subtotais,cores e outras vantagens que veremos a seguir.

• Principais estruturas de montagem do relatório ALV– slis_layout_alv– slis_sortinfo_alv– slis_t_fieldcat_alv

Page 134: Curso abap

Formatação de relatórios

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.

Page 135: Curso abap

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 - otimização de largura de colunas.Passar flag ou não.– zebra - mudança de cores de cada saída de linha do Relatório na mesma estrutura.

Passar flag ou não.– box_fieldname – Exibição de checkbox em cada item da(s) I_TABs de exibição do

relatório.Passar o nome real do(s) campo(s) checkbox.– window_titlebar – Título na barra de título

Page 136: Curso abap

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 – Sequência de ordenação.– Fieldname – Nome do campo da i_tab que deseja fazer a ordenação.– Up – Direção de ordenação ascendente.– Tabname – ‘Nome da i_tab de saída’

Page 137: Curso abap

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 – saída na linha desejada.– col_pos - Coluna a qual desejamos exibir o campo da I_tab de saída– 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 – Definição de campo chave na saída do relatório com formatação específica do

padrão 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 impressão de relatório– fix_column – Flag ou não para manter campo fixado na tela – do_sum – total do campo especificado– no_out – Exibição obrigatória(O) Não exibir em saída default(X)

Page 138: Curso abap

Formatação do relatório ALV

• type-pools slis

• Seleção de dados e tratamento de informações em tabela de saída

• Slis_t_fieldcat_alv para Formatação dos campos

• Slis_layout_alv para Layout

• Slis_sortinfo_alv para ordenação

Page 139: Curso abap

Capítulo 8

CONCEITO DE BATCH-INPUT E BAPI´S

Page 140: Curso abap

Capítulo 8 – Conceito de Batch-input e Bapi´s

• Qual a função de um Batch-input• O que é uma BAPI• Criar um mapeamento.• Criar um report utilizando Batch-input

Page 141: Curso abap

Qual a função de um Batch-input

• Batch Input

• O Batch Input é uma técnica standard para a transferência de grandes volumes de dados para o Sistema R/3. O fluxo transacional é simulado ( SHDB) e os dados são transferidos como se entrassem de forma online. A vantagem é que são executados todas as verificações relevantes garantindo uma entrada consistente dos dados.

• O processo de Batch Input é dividido em duas fases: Criação da sessão de Batch Input com os dados; Processamento da sessão de Batch Input executando transações do sistema R/3

• As pastas de Batch input podem ser processadas de várias formas: Foreground; Background; Durante o processamento com display de erro;

Page 142: Curso abap

Qual a função de um Batch-input

Funções para criar Sessões:

call function 'BDC_OPEN_GROUP'

exporting

client = <cliente>

group = <nome_pasta>

user = <usuário>

keep = 'X'. (manter pasta)

call function 'BDC_INSERT'

exporting

tcode = <cod_trans>

tables

dynprotab = <bdc_tab>.

call function 'BDC_CLOSE_GROUP'.

Page 143: Curso abap

Qual a função de um Batch-input

Executar Sessões:SM35 (transação utilizada para rodar o batch input)

Gerar automat.programa:SHDB (grava a transação para rodar automaticamente, tal como carga de

dados - parecido com macro)

Processamento:• Cancelar sessão:/N• Apagar sessão: /BDEL• Cancelar e marcar incorreta: /NEND• Alterar p/ módulo de diálogo: /BDA• Alterar p/ visuallização de Erro: /BDE• Alterar p/ execução em background: /BDN

Page 144: Curso abap

Qual a função de um Batch-input

• Call Transaction• O call transaction é mais rápido que o batch input. Também usado para carga de

dados.

Sintaxe:CALL TRANSACTION <tcod>

[AND SKIP FIRST SCREEN] (pula a 1° tela da transação) [USING <itab>]

[MODE <display_mode>][UPDATE <update_mode>]MESSAGES INTO <imsg > (mensagem standard)

Page 145: Curso abap

O que é uma BAPI

• BAPI´s são funções disponibilizadas pela SAP para realizar processos dentro do R/3. Exemplo: Criação pedido de compra, ordem de venda e outros.

• Normalmente são implementadas como módulos de funções. Todas são criadas e gerenciadas no Function Builder (SE37).

• Pode ser executada por uma aplicação externa. Exemplo: VB, Delphi, VBA e outras.

• Para consultar as BAPI´s disponíveis executar a transação BAPI.

• O ideal é verificar a existência de uma BAPI e só se não existir, utilizar o batch input ou call transaction.

Page 146: Curso abap

Criar um mapeamento.

• Transação SHDB

Page 147: Curso abap

Capítulo 9

DEBUG

Page 148: Curso abap

Capítulo 9 – Debug

• Qual a função do Debug.• Principais comandos para utilizar um Debug.• Executar um Debug

Page 149: Curso abap

Qual a função do Debug

• O ABAP Debugger é uma ferramenta integrada de teste dentro do ABAP Workbench. É usada para achar erros no código fonte de um programa ABAP.

• No Debugger, podemos executar o código fonte passo a passo, desta forma o programa em execução é interrompido depois de cada passo, permitindo que você verifique seu processo lógico e o resultado individual de comandos.

• Existem duas estratégias para inicializar o Debugger no ABAP Workbench: Definindo breakpoints e então rodando o programa Ou rodando o programa em modo debugging.

Page 150: Curso abap

• Para chamar o debugger do SAP (R/3) basta inserir o /h como uma transação.

• Verificar a barra de status.

• A partir deste momento o “mode debugger” do SAP está em funcionamento, em qualquer transação, que estivermos, poderemos visualizar código-a-codigo, o que o compilador, ABAP está interpretando.

Principais comandos para utilizar um Debug

Page 151: Curso abap

• Observe no modo Debug a seguinte tela:

• Nesta tela que poderemos “EXIBIR” e “MODIFICAR” valores das variáveis em tempo de execução do programa, Lembre-se estamos em modo debug onde cada comando segue passo a passo o que pedimos.

Principais comandos para utilizar um Debug

Page 152: Curso abap

• Etapa Individual: Botão ou F5 :

– Use essa opção para navegar no programa comando a comando. – Isto permite que você passe em subrotinas e em módulos de função,

executando-as passo a passo também. Uma vez que um módulo da subrotina ou da função foi processado, o controle retorna ao comando seguinte do CALL FUNCTION ou do PERFORM.

– Entra nas subrotinas

• Executar: Botão ou F6 :

– Use essa opção para executar o programa linha a linha. Todos os comandos da linha corrente são 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.

– Não entra nas subrotinas

Principais comandos para utilizar um Debug

Page 153: Curso abap

• Retorno: Botão ou F7:

– O debugger retorna de uma rotina para o ponto de controle definido no programa principal. Use esta opção para retornar de uma subrotina, módulo de função, ou programa chamado ao programa de chamada.

– Executa a subrotina e pára após seu término

• Avançar (até o cursor): Botão ou F8:

– Use essa opção para processar o programa até o próximo breakpoint. Se não 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.

Principais comandos para utilizar um Debug