academia abap4 - i semana.ppt

66
Workshop Desenvolvedores ABAP/4 Semana I Valinhos, março / 2007

Upload: lvaldeir

Post on 23-May-2017

220 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Academia ABAP4 - I semana.ppt

Workshop Desenvolvedores ABAP/4

Semana I

Valinhos, março / 2007

Page 2: Academia ABAP4 - I semana.ppt

Objetivos

1.1. Ter uma visão do que é o software de gestão SAP R/3.Ter uma visão do que é o software de gestão SAP R/3.

2.2. Ter uma visão geral das ferramentas de desenvolvimento do SAP R/3.Ter uma visão geral das ferramentas de desenvolvimento do SAP R/3.

1.1. ABAP DictionaryABAP Dictionary2.2. Open SQLOpen SQL3.3. Report (Listas e ALV)Report (Listas e ALV)4.4. Tabela InternaTabela Interna5.5. BDC – CT/ BIBDC – CT/ BI6.6. BAPIBAPI7.7. Module PoolModule Pool8.8. SAPScriptSAPScript9.9. Outras funcionalidadesOutras funcionalidades

3.3. Ter uma visão geral das principais tabelas e módulos do R/3Ter uma visão geral das principais tabelas e módulos do R/3

4.4. Ter uma visão geral do ambiente de projetos e postura de consultor.Ter uma visão geral do ambiente de projetos e postura de consultor.

Page 3: Academia ABAP4 - I semana.ppt

O que é SAP R/3 ?

SAP R/3Application Demo

SAP R/3SAP R/3SDSD

MMMMPPPP

QMQMPMPM

HRHR

COCOAMAM

PSPSWFWF

ISIS

FIFI

ABAP/4ABAP/4DWDW

Page 4: Academia ABAP4 - I semana.ppt

SAP: Empresa alemã construtora do R/3 e outros coligados.SAP: Empresa alemã construtora do R/3 e outros coligados.

R/3: Sistema de Gestão Empresarial:R/3: Sistema de Gestão Empresarial:

Integração de Dados.Integração de Dados. Segurança da informação.Segurança da informação. Atualização de informações em tempo real.Atualização de informações em tempo real. Unificação do banco de dadosUnificação do banco de dados

ABAP/4: Linguagem de programação nativa do R/3ABAP/4: Linguagem de programação nativa do R/3

Módulos: MM, SD, FI, CO, PP .... Áreas de funcionalidades do R/3Módulos: MM, SD, FI, CO, PP .... Áreas de funcionalidades do R/3

Novos Termos

Page 5: Academia ABAP4 - I semana.ppt

Overview ABAP/4: Conceitos do SAP R/3

Software com arquitetura em três camadasSoftware com arquitetura em três camadas

Ambiente de desenvolvimento eficiente e integradoAmbiente de desenvolvimento eficiente e integrado

Trabalha com qualquer banco de dados relacionalTrabalha com qualquer banco de dados relacional

Dentro do ABAP/4 o acesso é feito via interface Open SQLDentro do ABAP/4 o acesso é feito via interface Open SQL

ABAP Workbench: Área de trabalho com as ferramentas ABAP ABAP Workbench: Área de trabalho com as ferramentas ABAP

Repository: parte de DB para organização dos desenvolvimentosRepository: parte de DB para organização dos desenvolvimentos

Todos os desenvolvimentos são classificados através de uma Classe de Todos os desenvolvimentos são classificados através de uma Classe de DesenvolvimentoDesenvolvimento

Page 6: Academia ABAP4 - I semana.ppt

Overview ABAP/4: Menu e Transações

Menu: Caminho dentro do sistema para acesso a alguma funcionalidadeMenu: Caminho dentro do sistema para acesso a alguma funcionalidade

Transação: Acesso rápido a alguma funcionalidade do menuTransação: Acesso rápido a alguma funcionalidade do menu

Transações ABAP:Transações ABAP:

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

ABAP Dictionary (SE11) – para edição de objetos relacionados com o ABAP Dictionary (SE11) – para edição de objetos relacionados com o banco de dados e objetos específicos da aplicação.banco de dados e objetos específicos da aplicação.

Menu Painter (SE41) – para desenho de interfaces de usuário (barra Menu Painter (SE41) – para desenho de interfaces de usuário (barra de menu, ferramentas standard e ferramentas de aplicação).de menu, ferramentas standard e ferramentas de aplicação).

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

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

Workbench.Workbench.

Page 7: Academia ABAP4 - I semana.ppt

Overview ABAP/4: Ambiente e Landscape

Ambiente de DesenvolvimentoAmbiente de Desenvolvimento ( Client desenvolvimento ABAP e Client ( Client desenvolvimento ABAP e Client de customizações funcionais/Testes ).de customizações funcionais/Testes ). Divisão de Clients/Mandante:Divisão de Clients/Mandante:

Client desenvolvimentos ABAPClient desenvolvimentos ABAP Client customizações funcionaisClient customizações funcionais Outros de acordo com a necessidade do clienteOutros de acordo com a necessidade do cliente

Ambiente de QualidadeAmbiente de Qualidade ( onde são feitos os testes de usuários para ( onde são feitos os testes de usuários para aprovação final).aprovação final).

Ambiente de ProduçãoAmbiente de Produção ( onde realmente os dados da empresa estão ( onde realmente os dados da empresa estão sendo processados).sendo processados).

Observações:Observações: Os objetos são transportados de um ambiente para outro através de Os objetos são transportados de um ambiente para outro através de

Requests, cada objeto criado em ABAP é amarrado a uma request a Requests, cada objeto criado em ABAP é amarrado a uma request a mesma no final do desenvolvimento é liberada e transportada.mesma no final do desenvolvimento é liberada e transportada.

Page 8: Academia ABAP4 - I semana.ppt

Overview ABAP/4: Client e Particularidades

Com a divisão de clients no ambiente de desenvolvimento é Com a divisão de clients no ambiente de desenvolvimento é necessário saber se o mesmo é client dependent ou client necessário saber se o mesmo é client dependent ou client independentindependent Código fonte de programas – IndependentCódigo fonte de programas – Independent Telas, Menus e Funções – IndependentTelas, Menus e Funções – Independent Estrutura de tabela, elemento de dados e domínios – IndependentEstrutura de tabela, elemento de dados e domínios – Independent Registro de dados da tabela – DependentRegistro de dados da tabela – Dependent Objetos de Textos, Formulário SapScript - DependentObjetos de Textos, Formulário SapScript - Dependent

Os objetos criados devem ter nomes de clientes, inicial com Z ou Y Os objetos criados devem ter nomes de clientes, inicial com Z ou Y (os campos em append de tabelas ZZ ou YY)(os campos em append de tabelas ZZ ou YY)

O R/3 é código aberto, pode ser alterado, só que a SAP marca os O R/3 é código aberto, pode ser alterado, só que a SAP marca os programas com uma chave de registro de alteração e deixa de dar programas com uma chave de registro de alteração e deixa de dar garantia na funcionalidade e integridade de banco. garantia na funcionalidade e integridade de banco.

Page 9: Academia ABAP4 - I semana.ppt

Overview ABAP/4: Ordens ou Requests

Ordens ou Change Requests:Ordens ou Change Requests: Recurso através do qual um conjunto de Recurso através do qual um conjunto de objetos por ser transferido entre client ou instânciaobjetos por ser transferido entre client ou instância Nomenclatura:Nomenclatura:

Os objetos criados no SAP podem ser locais ou transportáveisOs objetos criados no SAP podem ser locais ou transportáveis

O objeto fica reservado em uma request, através de um usuário, pode O objeto fica reservado em uma request, através de um usuário, pode ser alterado enquanto o status = modificável, após status = release ser alterado enquanto o status = modificável, após status = release não pode mais ser alteradonão pode mais ser alterado

Transações: SE01 ( Objetos, Status), SE09 (Objetos ABAP / Transações: SE01 ( Objetos, Status), SE09 (Objetos ABAP / Liberação), SE10 (Customizing / Liberação) Liberação), SE10 (Customizing / Liberação)

Page 10: Academia ABAP4 - I semana.ppt

Dicionário de Dados: Introdução

Atributos:Atributos: São os qualificadores de uma entidade, isto é, representam no São os qualificadores de uma entidade, isto é, representam no modelo o que uma entidade pretende ser. Exemplos: Nome, RG, CPF, modelo o que uma entidade pretende ser. Exemplos: Nome, RG, CPF, Endereço, Nro Conta, Nro Agência, Nro BancoEndereço, Nro Conta, Nro Agência, Nro Banco

Domínio:Domínio: Conjunto de valores permissíveis para um atributo. Exemplo: Conjunto de valores permissíveis para um atributo. Exemplo: Estado Civil, Sexo, Cor, Meses do Ano.Estado Civil, Sexo, Cor, Meses do Ano.

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

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

Page 11: Academia ABAP4 - I semana.ppt

Dicionário de Dados: Introdução

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

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

N-para-UmN-para-Um: Várias ocorrências da Entidade A estão relacionadas com : Várias ocorrências da Entidade A estão relacionadas com apenas uma ocorrência da Entidade B.apenas uma ocorrência da Entidade B.

N-para-NN-para-N: Várias ocorrências da Entidade A está relacionada com várias : Várias ocorrências da Entidade A está relacionada com várias ocorrências da Entidade B.Modelo Relacionalocorrências da Entidade B.Modelo Relacional

Page 12: Academia ABAP4 - I semana.ppt

Dicionário de Dados: Introdução

Um Um banco de Dados Relacionalbanco de Dados Relacional é a implementação física do Modelo é a implementação física do Modelo Entidade-RelacionamentoEntidade-Relacionamento

Cada Cada tabelatabela possui uma estrutura similar àquilo que pretende a possui uma estrutura similar àquilo que pretende a representar, isto é, tabelas são formadas de linhas que por sua vez são representar, isto é, tabelas são formadas de linhas que por sua vez são formadas por colunas. Colunas representam fisicamente os Atributos.formadas por colunas. Colunas representam fisicamente os Atributos.

A cada linha da tabela chamamos de Ocorrência e o conjunto de A cada linha da tabela chamamos de Ocorrência e o conjunto de ocorrências pode ou não estar relacionado com ocorrências de outras ocorrências pode ou não estar relacionado com ocorrências de outras tabelas.tabelas.

Chave PrimáriaChave Primária: Conjunto de atributos que garante a unicidade de cada : Conjunto de atributos que garante a unicidade de cada ocorrência da tabela. Exemplos: RG, CPF, Nro Chassis.ocorrência da tabela. Exemplos: RG, CPF, Nro Chassis.

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

Page 13: Academia ABAP4 - I semana.ppt

Dicionário de Dados: Introdução

Dicionário ABAP (SE11)Dicionário ABAP (SE11)

Tabelas, Visões, IndicesTabelas, Visões, Indices

Tipos de Dados: Elemento de dados, estruturas e domíiniosTipos de Dados: Elemento de dados, estruturas e domíinios

Mais: Search Helps, objetos de lockMais: Search Helps, objetos de lock

OBS: O dicionário é integrado com as outras ferramentas de OBS: O dicionário é integrado com as outras ferramentas de desenvolvimento do R/3.desenvolvimento do R/3.

Page 14: Academia ABAP4 - I semana.ppt

Dicionário de Dados: Tipos de Dados Tipos pré-definidosTipos pré-definidos

I - campos numéricos sem decimais, contadores, etc.I - campos numéricos sem decimais, contadores, etc. P – campos numéricos com decimais, quantidade e moeda. Tomar P – campos numéricos com decimais, quantidade e moeda. Tomar

cuidado com cálculos feitos entre campos com número de casas cuidado com cálculos feitos entre campos com número de casas decimais diferentes.decimais diferentes.

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

N – campo alfa, utilizado para conter números sem decimais e N – campo alfa, utilizado para conter números sem decimais e preenchidos com zero a esquerda.preenchidos com zero a esquerda.

D – campo data, é armazenado no banco de dados no formato D – campo data, é armazenado no banco de dados no formato AAAAMMDD, é mostrado em tela de acordo com a customização de AAAAMMDD, é mostrado em tela de acordo com a customização de cada usuário, permite-se fazer contas do tipo “20041201 + 31 = cada usuário, permite-se fazer contas do tipo “20041201 + 31 = 20050101”.20050101”.

T - campo hora, é armazenado no banco de dados no formato T - campo hora, é armazenado no banco de dados no formato HHMMSS, é mostrado em tela de acordo com a customização de HHMMSS, é mostrado em tela de acordo com a customização de cada usuário. cada usuário.

Page 15: Academia ABAP4 - I semana.ppt

Dicionário de Dados: Tipos de Dados Tipos possíveis de definição em programaTipos possíveis de definição em programa

Page 16: Academia ABAP4 - I semana.ppt

Dicionário de Dados: Tipos de Dados Tipos mais utilizadosTipos mais utilizados

1 - 1 - EstruturaEstrutura: consiste em vários campos com tipos de dados : consiste em vários campos com tipos de dados elementares e tem tamanho fixo. (array)elementares e tem tamanho fixo. (array)

3 – 3 – Tabela InternaTabela Interna: é uma estrutura que pode variar em tamanho, no : é uma estrutura que pode variar em tamanho, no que diz respeito a linhas. (matriz)que diz respeito a linhas. (matriz)

Exemplos:Exemplos:TYPES: number TYPE i, TYPES: number TYPE i, length TYPE p DECIMAL 2,length TYPE p DECIMAL 2, code(3) TYPE c.code(3) TYPE c.TYPES: BEGIN OF <estrutura>,TYPES: BEGIN OF <estrutura>, <campos>…..<campos>….. END OF <estrutura>.END OF <estrutura>.

Page 17: Academia ABAP4 - I semana.ppt

Dicionário de Dados: Transação SE11 Elemento de Dados: Elemento de Dados: é a definição semântica para um campo individual, é a definição semântica para um campo individual,

nele colocamos os textos do campo e amarramos a um domínio.nele colocamos os textos do campo e amarramos a um domínio.

Domínio: Domínio: é a definição técnica do campo, onde colocamos o tipo de é a definição técnica do campo, onde colocamos o tipo de dados, o tamanho do campo e tabela de valores possíveis.dados, o tamanho do campo e tabela de valores possíveis.

Estrutura: Estrutura: São conjuntos de campos elementares ou do próprio tipo São conjuntos de campos elementares ou do próprio tipo estrutura e são utilizadas para referências em tela ou no programa.estrutura e são utilizadas para referências em tela ou no programa.

Tabela Tabela Transparente (database table): São as tabelas que possuem uma Transparente (database table): São as tabelas que possuem uma estrutura criada no dicionário de dados e que são refletidas no banco de estrutura criada no dicionário de dados e que são refletidas no banco de dados, são elas que contém os dados necessários para o sistema, através dados, são elas que contém os dados necessários para o sistema, através de instruções do ABAP OPEN SQL conseguimos obter essas informações.de instruções do ABAP OPEN SQL conseguimos obter essas informações.

Visões: Visões: São agrupamentos de <n> tabelas transparentes que possuem São agrupamentos de <n> tabelas transparentes que possuem ligações entre si, funciona como se fosse um INNER JOIN só que já está ligações entre si, funciona como se fosse um INNER JOIN só que já está pré-criado no dicionário de dados, pode ser utilizada no SELECT como se pré-criado no dicionário de dados, pode ser utilizada no SELECT como se fosse uma tabela normal.fosse uma tabela normal.

Page 18: Academia ABAP4 - I semana.ppt

Dicionário de Dados: Tabela Transparente Uma tabela consiste de Uma tabela consiste de colunas (campos) e linhas (registros). Cada colunas (campos) e linhas (registros). Cada

tabela possui um nome e atributos, como por exemplo, a classe de tabela possui um nome e atributos, como por exemplo, a classe de desenvolvimento e a autorização para manutenção. Cada campo deve ter desenvolvimento e a autorização para manutenção. Cada campo deve ter um nome único dentro da tabela, e pode fazer parte de uma chave. Cada um nome único dentro da tabela, e pode fazer parte de uma chave. Cada tabela deve ter uma chave primária, que é composta por campos cujos tabela deve ter uma chave primária, que é composta por campos cujos valores identificam unicamente os registros de uma tabela. As tabelas valores identificam unicamente os registros de uma tabela. As tabelas definidas no dicionário de dados do R/3 são criadas no banco de dados definidas no dicionário de dados do R/3 são criadas no banco de dados assim que ativadas.assim que ativadas.

Durante a ativação, Durante a ativação, a descrição da tabela dentro do dicionário é traduzida a descrição da tabela dentro do dicionário é traduzida para a definição de tabela correspondente na linguagem do banco de para a definição de tabela correspondente na linguagem do banco de dados que estiver sendo usado. A ordem dos campos no banco de dados dados que estiver sendo usado. A ordem dos campos no banco de dados não precisa seguir a ordem estabelecida no dicionário de dados (com não precisa seguir a ordem estabelecida no dicionário de dados (com exceção dos campos de chave primária), o que permite a extensão das exceção dos campos de chave primária), o que permite a extensão das tabelas standard do R/3 através e tabelas standard do R/3 através e append structuresappend structures, que são definições , que são definições de campos adicionais definíveis pelo usuário sem haver a necessidade de de campos adicionais definíveis pelo usuário sem haver a necessidade de alteração da definição normal da tabela Standard. Os alteração da definição normal da tabela Standard. Os includesincludes são são estruturas definidas separadamente que podem ser inseridas em outras estruturas definidas separadamente que podem ser inseridas em outras tabelas. tabelas.

Page 19: Academia ABAP4 - I semana.ppt

Dicionário de Dados: Domínio e El. de Dados

Page 20: Academia ABAP4 - I semana.ppt

Dicionário de Dados: Observações VisibilidadeVisibilidade

Referência:Referência: Conceito “LIKE” : Eu utilizo o comando LIKE na criação de um tipo de Conceito “LIKE” : Eu utilizo o comando LIKE na criação de um tipo de

dados dentro do programa ABAP para referenciar diretamente o objeto a dados dentro do programa ABAP para referenciar diretamente o objeto a um tipo de dados do Dicionário de Dados ABAP, isto é muito utilizado, um tipo de dados do Dicionário de Dados ABAP, isto é muito utilizado, pois, se eu estou trabalhando com um campo que é reflexo de um campo pois, se eu estou trabalhando com um campo que é reflexo de um campo que já existe em uma tabela transparente eu não preciso descobrir o tipo e que já existe em uma tabela transparente eu não preciso descobrir o tipo e tamanho do campo para defini-lo no programa basta eu referenciá-lo tamanho do campo para defini-lo no programa basta eu referenciá-lo utilizando LIKE.utilizando LIKE.

Page 21: Academia ABAP4 - I semana.ppt

Dicionário de Dados:

Dúvidas?!?

Page 22: Academia ABAP4 - I semana.ppt

Editor ABAP: Transação SE38

Transação para acesso ao editor ABAP (SE38)Transação para acesso ao editor ABAP (SE38)

Criar, exibir e modificar um programaCriar, exibir e modificar um programa

Padrão de nomenclatura, Z ou YPadrão de nomenclatura, Z ou Y

Page 23: Academia ABAP4 - I semana.ppt

Editor ABAP: Transação SE38 Na janela de “Objetos parciais” há 5 opções básicas de objetos associados Na janela de “Objetos parciais” há 5 opções básicas de objetos associados

a um programa ABAP:a um programa ABAP:

Texto fonteTexto fonte: Através desta opção acionamos o editor de programas : Através desta opção acionamos o editor de programas ABAP.ABAP.

VariantesVariantes: Definem-se os valores pré-definidos para os parâmetros de : Definem-se os valores pré-definidos para os parâmetros de execução de um programa ABAP. Os parâmetros de um programa são execução de um programa ABAP. Os parâmetros de um programa são definidos pelos comandos Parameters e Select-options do ABAP.definidos pelos comandos Parameters e Select-options do ABAP.

AtributosAtributos: Definem-se os atributos de programa, como classe de : Definem-se os atributos de programa, como classe de desenvolvimento, título, categoria, status, aplicação, etc.desenvolvimento, título, categoria, status, aplicação, etc.

DocumentaçãoDocumentação: Texto com uma descrição breve do que o programa : Texto com uma descrição breve do que o programa executa e as suas condições necessárias para execução.executa e as suas condições necessárias para execução.

Elementos de textoElementos de texto: Definem-se os textos que serão relacionados às : Definem-se os textos que serão relacionados às mensagens, rótulos de parâmetros do programa e títulos e nome de mensagens, rótulos de parâmetros do programa e títulos e nome de colunas para o relatório gerado pelo programa.colunas para o relatório gerado pelo programa.

Page 24: Academia ABAP4 - I semana.ppt

Editor ABAP: Criação de um programa

Page 25: Academia ABAP4 - I semana.ppt

Editor ABAP: Criação de um programa

Page 26: Academia ABAP4 - I semana.ppt

Editor ABAP: Criação de um programa

Criar hábito de salvar, verificar e ativarCriar hábito de salvar, verificar e ativar..

Page 27: Academia ABAP4 - I semana.ppt

Editor ABAP: Criação de um programa

Verificação de sintaxe deve ser periódicaVerificação de sintaxe deve ser periódica..

Facilita o fato de resolvermos cada erro de uma vezFacilita o fato de resolvermos cada erro de uma vez

Page 28: Academia ABAP4 - I semana.ppt

Editor ABAP: Tela de Seleção

SELECTION-SCREEN: SELECTION-SCREEN: comando utilizado para definir a tela de seleção, comando utilizado para definir a tela de seleção, com ele pode se criar blocos dentro de uma mesma tela, incluir frames com ele pode se criar blocos dentro de uma mesma tela, incluir frames com textos explicativos, etc.com textos explicativos, etc.

PARAMETER: PARAMETER: è utilizado para criação de um campo único de seleção, è utilizado para criação de um campo único de seleção, obter as suas variações de sintaxe através do help (F1).obter as suas variações de sintaxe através do help (F1).

SELECTION-SCREEN BEGIN OF BLOCK bloco3 WITH FRAME TITLE text-003.SELECTION-SCREEN BEGIN OF BLOCK bloco3 WITH FRAME TITLE text-003.PARAMETER: p_num1 TYPE i,PARAMETER: p_num1 TYPE i, p_sin(1) TYPE c,p_sin(1) TYPE c, p_num2 TYPE i.p_num2 TYPE i.PARAMETER: P_MATNR LIKE MARA-MATNR.PARAMETER: P_MATNR LIKE MARA-MATNR.SELECTION-SCREEN end of BLOCK bloco3.SELECTION-SCREEN end of BLOCK bloco3.

Page 29: Academia ABAP4 - I semana.ppt

Editor ABAP: Tela de Seleção

TYPETYPE: está definindo o tipo da variável de tela de seleção, deve-se entrar : está definindo o tipo da variável de tela de seleção, deve-se entrar com o tamanho e o tipo do dado a ser armazenado.com o tamanho e o tipo do dado a ser armazenado.

LIKELIKE: está definindo o tipo da variável de tela de seleção por referência, : está definindo o tipo da variável de tela de seleção por referência, dizendo que a variável terá o mesmo tipo e tamanho da variável MATNR dizendo que a variável terá o mesmo tipo e tamanho da variável MATNR da tabela MARA que estão no Dicionário ABAP.da tabela MARA que estão no Dicionário ABAP.

Utilização no Utilização no SELECTSELECT: para utilização no comando select, usa-se o : para utilização no comando select, usa-se o comparativo = ou EQ caso o campo esteja em branco ele busca todos os comparativo = ou EQ caso o campo esteja em branco ele busca todos os registros que tenham conteúdo igual a branco registros que tenham conteúdo igual a branco

Where MATNR = P_MATNRWhere MATNR = P_MATNR..

Page 30: Academia ABAP4 - I semana.ppt

Editor ABAP: Tela de Seleção SELECT-OPTIONSSELECT-OPTIONS: è utilizado para criação de um campo de/até de : è utilizado para criação de um campo de/até de

seleção com várias opções de comparações, obter as suas variações de seleção com várias opções de comparações, obter as suas variações de sintaxe através do help (F1).sintaxe através do help (F1).TABLES: MARA.TABLES: MARA.SELECTION-SCREEN BEGIN OF BLOCK bloco4 WITH FRAME TITLE text-004.SELECTION-SCREEN BEGIN OF BLOCK bloco4 WITH FRAME TITLE text-004.SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.SELECTION-SCREEN end of BLOCK bloco4SELECTION-SCREEN end of BLOCK bloco4..

FORFOR: Para a opção Select-options utilizasse FOR no lugar do LIKE.: Para a opção Select-options utilizasse FOR no lugar do LIKE.

TABLES:TABLES: O Comando tables, disponibiliza a estrutura da tabela do banco O Comando tables, disponibiliza a estrutura da tabela do banco de dados, para ser utilizada dentro do programa, é obrigatória essa de dados, para ser utilizada dentro do programa, é obrigatória essa disponibilização quando a tabela vai ser utilizada no FOR.disponibilização quando a tabela vai ser utilizada no FOR.

Page 31: Academia ABAP4 - I semana.ppt

Editor ABAP: Tela de Seleção TABELA DO SELECT-OPTIONS:TABELA DO SELECT-OPTIONS:

Utilização no Utilização no SELECTSELECT: para utilização no comando select, usa-se o : para utilização no comando select, usa-se o comparativo IN e automaticamente ele já entende o tipo de comparação a comparativo IN e automaticamente ele já entende o tipo de comparação a fazer, caso o campo esteja em branco ele busca todos os registros.fazer, caso o campo esteja em branco ele busca todos os registros.

Where MATNR IN S_MATNR.Where MATNR IN S_MATNR.

Utilização no Utilização no SELECTSELECT: para utilização no comando select, usa-se o : para utilização no comando select, usa-se o comparativo comparativo ININ e automaticamente ele já entende o tipo de comparação a e automaticamente ele já entende o tipo de comparação a fazer, caso o campo esteja em branco ele busca todos os registros.fazer, caso o campo esteja em branco ele busca todos os registros.

Page 32: Academia ABAP4 - I semana.ppt

Editor ABAP: Comandos principais DATADATA: é utilizado para definir uma variável de qualquer tipo (simples, : é utilizado para definir uma variável de qualquer tipo (simples,

estrutura ou tabela interna). estrutura ou tabela interna). DATA: V_num TYPE i.DATA: V_num TYPE i.DATA: v_matnr LIKE mara-matnr.DATA: v_matnr LIKE mara-matnr.DATA: s_mara LIKE mara.DATA: s_mara LIKE mara.DATA: DATA: begin of t_mara occurs 0,begin of t_mara occurs 0,

matnr LIKE mara-matnr,matnr LIKE mara-matnr, end of t_mara.end of t_mara.

IFIF e e CASECASE: são utilizados como comparativos na lógica do ABAP.: são utilizados como comparativos na lógica do ABAP.CASE p_sin.CASE p_sin. WHEN '+'.WHEN '+'. v_num = p_num1 + p_num2.v_num = p_num1 + p_num2. WHEN '-'.WHEN '-'. v_num = p_num1 + p_num2.v_num = p_num1 + p_num2. WHEN OTHERS.WHEN OTHERS.ENDCASE.ENDCASE.

Detalhes: No término de toda instrução ABAP, deve ter um ponto final, Detalhes: No término de toda instrução ABAP, deve ter um ponto final, para evitar repetições pode-se utilizar “:” após o comando e “,” separando para evitar repetições pode-se utilizar “:” após o comando e “,” separando as instruções, mas, deve terminar com ‘.’as instruções, mas, deve terminar com ‘.’ Quando me referencio a uma string utilizo “ ‘ “ aspas simples.Quando me referencio a uma string utilizo “ ‘ “ aspas simples.

II

Page 33: Academia ABAP4 - I semana.ppt

Editor ABAP: Comandos principais MOVE MOVE ou “ = “: esses são os comandos de atribuição de valores.ou “ = “: esses são os comandos de atribuição de valores.

MOVE: 2 to v_num,MOVE: 2 to v_num, 'MATERIAL to v_matnr.'MATERIAL to v_matnr. ouou

v_num = 2.v_num = 2. v_matnr = ‘MATERIAL’.v_matnr = ‘MATERIAL’. WRITEWRITE e WRITE ... TO ... : Utilizado para imprimir em tela, pode se e WRITE ... TO ... : Utilizado para imprimir em tela, pode se

também mover o resultado dessa impressão para dentro de outra variável. também mover o resultado dessa impressão para dentro de outra variável. Quando se executa o comando write o ABAP faz todas as traduções Quando se executa o comando write o ABAP faz todas as traduções necessárias de acordo com a configuração do usuário (moeda, necessárias de acordo com a configuração do usuário (moeda, quantidade). Ver variações com o F1.quantidade). Ver variações com o F1.write: / v_num.write: / v_num. Ou Ou write; v_num to v_aux. Iwrite; v_num to v_aux. I

Page 34: Academia ABAP4 - I semana.ppt

Editor ABAP: Executando Programas Executando Programa:Na SE38 – é só clicar aqui ou tecla F8 fora ou Executando Programa:Na SE38 – é só clicar aqui ou tecla F8 fora ou

dentro do código fontedentro do código fonte

Alguns ExemplosAlguns ExemplosEXEMPLO 1EXEMPLO 1REPORT ZEXP0001.REPORT ZEXP0001.WRITE: '111111'. WRITE: '111111'. WRITE: '222222',WRITE: '222222', '333333'.'333333'.WRITE: /'111111'.WRITE: /'111111'.WRITE: 15 '333333'.WRITE: 15 '333333'.WRITE: / TEXT-001.WRITE: / TEXT-001.ULINE.ULINE.ULINE 8(6).ULINE 8(6).SKIP.SKIP.SKIP 2.SKIP 2.WRITE : 8 SY-LANGU.WRITE : 8 SY-LANGU.WRITE : / SY-DATUM UNDER SY-LANGU.WRITE : / SY-DATUM UNDER SY-LANGU.

Page 35: Academia ABAP4 - I semana.ppt

Editor ABAP: Variáveis de sistema Existem alguns tipos de variáveis chamadas de Existem alguns tipos de variáveis chamadas de variáveis do sistemavariáveis do sistema. .

Elas possuem informações e dados do processamento, como o idioma de Elas possuem informações e dados do processamento, como o idioma de acesso (acesso (sy-langusy-langu), a data (), a data (sy-datumsy-datum), a hora (), a hora (sy-uzeitsy-uzeit), etc.. Essas ), etc.. Essas informações estão contidas na estrutura SYST (Campos de sistema ABAP, informações estão contidas na estrutura SYST (Campos de sistema ABAP, que pode ser abreviada para SY) e podem ser acessadas conforme o que pode ser abreviada para SY) e podem ser acessadas conforme o exemplo acima, o nome da estrutura mais o campo que se deseja.exemplo acima, o nome da estrutura mais o campo que se deseja.

EXEMPLO 2EXEMPLO 2REPORT ZEXC0002 NO STANDARD PAGE HEADING.REPORT ZEXC0002 NO STANDARD PAGE HEADING.WRITE 'PAG 1'.WRITE 'PAG 1'.NEW-PAGE.NEW-PAGE.WRITE 'PAG 2'.WRITE 'PAG 2'.TOP-OF-PAGE.TOP-OF-PAGE.WRITE : 'EXEMPLO 2 - CURSO ABAP/4',WRITE : 'EXEMPLO 2 - CURSO ABAP/4', 80 'Page',80 'Page', SY-PAGNO.SY-PAGNO.ULINE.ULINE.

Page 36: Academia ABAP4 - I semana.ppt

Editor ABAP: ExemplosEXEMPLO 3EXEMPLO 3

REPORT ZEXP0003.REPORT ZEXP0003.WRITE : 'NORMAL'. WRITE : 'NORMAL'. FORMAT INTENSIFIED OFF.FORMAT INTENSIFIED OFF.WRITE : 'NEGRITO '.WRITE : 'NEGRITO '.FORMAT COLOR 1.FORMAT COLOR 1.WRITE : 'FUNDO AZUL'.WRITE : 'FUNDO AZUL'.FORMAT COLOR OFF.FORMAT COLOR OFF.FORMAT INTENSIFIED ON.FORMAT INTENSIFIED ON.WRITE : 'NORMAL'.WRITE : 'NORMAL'.

Page 37: Academia ABAP4 - I semana.ppt

Editor ABAP: ExemplosEXEMPLO 4EXEMPLO 4

REPORT ZEXP0004.REPORT ZEXP0004.DATA: NOME(20) TYPE C,DATA: NOME(20) TYPE C, RG(10) TYPE I,RG(10) TYPE I, DATA LIKE BKPF-BUDAT, DATA LIKE BKPF-BUDAT, HORA(8) VALUE '14:05:45'.HORA(8) VALUE '14:05:45'.MOVE 'Solution Center' TO NOME.MOVE 'Solution Center' TO NOME.RG = 42159818.RG = 42159818.DATA = '19973005'.DATA = '19973005'.SKIP 2.SKIP 2.WRITE: 'Nome:',WRITE: 'Nome:', NOME,NOME, / 'RG:',/ 'RG:', RG UNDER NOME,RG UNDER NOME, / 'Data:',/ 'Data:', DATA,DATA, / 'Hora:',/ 'Hora:', HORA.HORA.

Page 38: Academia ABAP4 - I semana.ppt

Editor ABAP: ExemplosEXEMPLO 5EXEMPLO 5

REPORT ZEXP0005.REPORT ZEXP0005.PARAMETER: P_NOME1(15) TYPE C,PARAMETER: P_NOME1(15) TYPE C, P_NOME2(15) TYPE C DEFAULT 'Abap Factory',P_NOME2(15) TYPE C DEFAULT 'Abap Factory', P_BOTAO1 RADIOBUTTON GROUP G1,P_BOTAO1 RADIOBUTTON GROUP G1, P_BOTAO2 RADIOBUTTON GROUP G1.P_BOTAO2 RADIOBUTTON GROUP G1.WRITE P_NOME1.WRITE P_NOME1.IF P_NOME2 NE 'ABAP FACTORY'. IF P_NOME2 NE 'ABAP FACTORY'. WRITE P_NOME2.WRITE P_NOME2.ENDIF.ENDIF.IF P_BOTAO1 = 'X'.IF P_BOTAO1 = 'X'. WRITE / 'BOTÃO 1 ACIONADO'.WRITE / 'BOTÃO 1 ACIONADO'.ELSE.ELSE. WRITE / 'BOTÃO 2 ACIONADO'.WRITE / 'BOTÃO 2 ACIONADO'.ENDIF.ENDIF.

Page 39: Academia ABAP4 - I semana.ppt

Editor ABAP

Dúvidas?!?

Page 40: Academia ABAP4 - I semana.ppt

Open SQL: Comandos O ABAP oferece um conjunto de comandos que permite realizar O ABAP oferece um conjunto de comandos que permite realizar

operações com os dados armazenados no banco, o operações com os dados armazenados no banco, o Open SQLOpen SQL. A idéia . A idéia central do Open SQL é prover uma linguagem de acesso ao banco central do Open SQL é prover uma linguagem de acesso ao banco independente de plataforma. Os comandos Open SQL têm de passar pelo independente de plataforma. Os comandos Open SQL têm de passar pelo interpretador ABAP, que os traduz para os comandos SQL do banco de interpretador ABAP, que os traduz para os comandos SQL do banco de dados que esteja sendo utilizado.dados que esteja sendo utilizado.

SELECTSELECT: Leitura de dados no banco: Leitura de dados no banco INSERTINSERT: Insere dados do banco: Insere dados do banco UPDATEUPDATE: Atualiza dados: Atualiza dados MODIFYMODIFY: Atualiza dados existentes ou insere caso não existam: Atualiza dados existentes ou insere caso não existam DELETEDELETE: apaga registros do banco: apaga registros do banco

Campos de sistemaCampos de sistema: Os dois principais campos de sistema envolvidos : Os dois principais campos de sistema envolvidos em operações do Open SQL são o SY-SUBRC, que retorna zero caso a em operações do Open SQL são o SY-SUBRC, que retorna zero caso a operação tenha sido bem-sucedida, e o SY-DBCNT, que retorna o número operação tenha sido bem-sucedida, e o SY-DBCNT, que retorna o número de registros afetados pelo comando.de registros afetados pelo comando.

Page 41: Academia ABAP4 - I semana.ppt

Open SQL: Select O comando O comando SELECTSELECT retorna um conjunto de dados (registros) que retorna um conjunto de dados (registros) que

atendam a um determinado critério. As cláusulas do comando atendam a um determinado critério. As cláusulas do comando SELECT são as seguintes:SELECT são as seguintes:

SELECTSELECT <lista de campos>: Pode-se selecionar uma lista de <lista de campos>: Pode-se selecionar uma lista de campos a serem retornados, separados por espaços, ou o campos a serem retornados, separados por espaços, ou o caractere * para retornar todos os campos disponíveis. A opção caractere * para retornar todos os campos disponíveis. A opção SINGLE retorna somente um registro que atenda às restrições SINGLE retorna somente um registro que atenda às restrições impostas. Caso a tabela tenha sido declarada através de impostas. Caso a tabela tenha sido declarada através de TABLES, é automaticamente criado um registro na memória com TABLES, é automaticamente criado um registro na memória com o mesmo nome para manipulá-la; caso o SELECT traga campos o mesmo nome para manipulá-la; caso o SELECT traga campos de mais de uma tabela, não é possível utilizar esse artifício. de mais de uma tabela, não é possível utilizar esse artifício. Nesse caso, as tabelas não precisam ser declaradas em Nesse caso, as tabelas não precisam ser declaradas em TABLES, mas a seleção dos campos deve separar o nome da TABLES, mas a seleção dos campos deve separar o nome da tabela e o campo com um til (~). tabela e o campo com um til (~). ExemploExemplo::

TABLES: SFLIGHT.TABLES: SFLIGHT.DATA: T_SFLIGHT LIKE SFLIGHT.DATA: T_SFLIGHT LIKE SFLIGHT.SELECT CARRID CONNID FLDATE SEATSOCCSELECT CARRID CONNID FLDATE SEATSOCCFROM SFLIGHT INTO TABLE T_SFLIGHT.FROM SFLIGHT INTO TABLE T_SFLIGHT.

Page 42: Academia ABAP4 - I semana.ppt

Open SQL: Select INTOINTO [<lista de campos>| [<lista de campos>| TABLETABLE <tabela interna>]: Permite <tabela interna>]: Permite

armazenar o retorno numa tabela interna ou em campos definidos armazenar o retorno numa tabela interna ou em campos definidos com o comando com o comando DATADATA. O uso de . O uso de SELECTSELECT sem especificar SINGLE sem especificar SINGLE ou INTO TABLE exige o uso de ou INTO TABLE exige o uso de ENDSELECTENDSELECT ..

FROMFROM <tabela> [[INNER|LEFT OUTER] <tabela> [[INNER|LEFT OUTER] JOINJOIN <tabela>, ..]: Especifica <tabela>, ..]: Especifica a origem dos dados a origem dos dados

FOR ALL ENTRIESFOR ALL ENTRIES Usado quando selecionamos dados de uma Usado quando selecionamos dados de uma tabela e precisamos de dados de outra tabela para compor as tabela e precisamos de dados de outra tabela para compor as condições do where condições do where

SELECT * FROM dtab FOR ALL ENTRIES in itab where…SELECT * FROM dtab FOR ALL ENTRIES in itab where…

EXEMPLOEXEMPLO::SELECT * FROM BSEG FOR ALL ENTRIES IN T_BKPFSELECT * FROM BSEG FOR ALL ENTRIES IN T_BKPF WHERE BUKRS = T_BKPF-BUKRSWHERE BUKRS = T_BKPF-BUKRS

AND BELNR = T_BKPF-BELNRAND BELNR = T_BKPF-BELNR AND BELNR = T_BKPF-BELNR.AND BELNR = T_BKPF-BELNR.

Onde T_BKPF é uma tabela interna que recebeu a tebela BKPF.Onde T_BKPF é uma tabela interna que recebeu a tebela BKPF.

Page 43: Academia ABAP4 - I semana.ppt

Open SQL: Select (For all entries e Where) NOTANOTA: se itab estiver vazia, esse comando selecionará : se itab estiver vazia, esse comando selecionará

todo o conteúdo da tabela, pois nenhuma restrição está todo o conteúdo da tabela, pois nenhuma restrição está sendo colocada. Uma maneira de fazer essa verificação é a sendo colocada. Uma maneira de fazer essa verificação é a seguinte:seguinte:

IF NOT itab[] IS INITIAL. IF NOT itab[] IS INITIAL. “ se itab não está vazia“ se itab não está vazia SELECT * FROM dtab FOR ALL ENTRIES in itab SELECT * FROM dtab FOR ALL ENTRIES in itab where campo = itab-campo …where campo = itab-campo …ENDIF.ENDIF.

WHERE WHERE <condições>: A cláusula WHERE especifica as condições de <condições>: A cláusula WHERE especifica as condições de busca. Por exemplo, WHERE CARRID = ‘AA’ faz com que apenas os busca. Por exemplo, WHERE CARRID = ‘AA’ faz com que apenas os registros em que o campo CARRID tenha conteúdo igual a ‘AA’ sejam registros em que o campo CARRID tenha conteúdo igual a ‘AA’ sejam retornados retornados

Page 44: Academia ABAP4 - I semana.ppt

Open SQL: Comandos de interferência INSERTINSERT:: O comando INSERT insere um novo registro no O comando INSERT insere um novo registro no

banco de dados, a partir de uma área de dados especificada em banco de dados, a partir de uma área de dados especificada em TABLES ou uma área declarada com DATA. Para usar INSERT, TABLES ou uma área declarada com DATA. Para usar INSERT, devem-se colocar os dados desejados na área intermediária e, devem-se colocar os dados desejados na área intermediária e, em seguida, chamar o comando INSERT. Caso a área não seja em seguida, chamar o comando INSERT. Caso a área não seja especificada em TABLES, deve ser usada a opção FROM:especificada em TABLES, deve ser usada a opção FROM:

UPDATEUPDATE:: O comando UPDATE funciona como o O comando UPDATE funciona como o comando INSERT, podendo alterar dados no banco a partir de comando INSERT, podendo alterar dados no banco a partir de uma área ou tabela interna. No caso da tabela interna, não é uma área ou tabela interna. No caso da tabela interna, não é necessário especificar a cláusula WHERE: serão alterados os necessário especificar a cláusula WHERE: serão alterados os registros correspondentes de acordo com as chaves. registros correspondentes de acordo com as chaves.

MODIFYMODIFY:: O comando MODIFY opera da mesma forma O comando MODIFY opera da mesma forma que o comando UPDATE, mas insere um novo registro caso o que o comando UPDATE, mas insere um novo registro caso o registro especificado não exista.registro especificado não exista.

DELETEDELETE:: O comando DELETE elimina registros do O comando DELETE elimina registros do banco. Ele opera da mesma forma que o comando INSERT.banco. Ele opera da mesma forma que o comando INSERT.

Page 45: Academia ABAP4 - I semana.ppt

Open SQL: Comandos de interferência LUW – COMMIT e ROLLBACKLUW – COMMIT e ROLLBACK:: Quando trabalhamos com Quando trabalhamos com

alteração nos dados do banco, é bom sabermos que todas as alteração nos dados do banco, é bom sabermos que todas as alterações que estamos fazendo ainda não aconteceram efetivamente alterações que estamos fazendo ainda não aconteceram efetivamente no banco, isso só ocorre quando encontra-se o primeiro comit, no banco, isso só ocorre quando encontra-se o primeiro comit, automaticamente quando acaba a execução de um programa já é automaticamente quando acaba a execução de um programa já é executado um commit:executado um commit:

ExemploExemplo::INSERT <tabela1>.INSERT <tabela1>.IF SY-SUBRC = 0.IF SY-SUBRC = 0.INSERT <tabela2>.INSERT <tabela2>. IF SY-SUBRC = 0.IF SY-SUBRC = 0. COMMIT WORK. COMMIT WORK. ELSE.ELSE.

ROLLBACK WORK. ROLLBACK WORK. ENDIF.ENDIF.ENDIF. ENDIF.

OBS: As considerações devem ser lidas e estudadas.OBS: As considerações devem ser lidas e estudadas.

Page 46: Academia ABAP4 - I semana.ppt

Open SQL: Mensagens

MESSAGE <tipo>+<numero>+(<classe mensagens>)MESSAGE <tipo>+<numero>+(<classe mensagens>)Exemlo: MESSAGE I368(00) with ‘Erro XXXXX’.Exemlo: MESSAGE I368(00) with ‘Erro XXXXX’.Tipos de MensagemTipos de Mensagem

Page 47: Academia ABAP4 - I semana.ppt

Open SQL: Comandos de interferência EXEMPLO 6EXEMPLO 6

REPORT ZEXP0006 message-id za.REPORT ZEXP0006 message-id za.PARAMETER: P_PAIS LIKE T005S-LAND1.PARAMETER: P_PAIS LIKE T005S-LAND1.TABLES T005H.TABLES T005H.SELECT * FROM T005H WHERE LAND1 = P_PAIS ORDER BY CITYC.SELECT * FROM T005H WHERE LAND1 = P_PAIS ORDER BY CITYC. WRITE: / T005H-Bezei,WRITE: / T005H-Bezei, T005H-LAND1.T005H-LAND1.ENDSELECT.ENDSELECT.IF SY-SUBRC NE 0.IF SY-SUBRC NE 0. MESSAGE I000.MESSAGE I000.ENDIF.ENDIF.

Page 48: Academia ABAP4 - I semana.ppt

Open SQL

Dúvidas?!?

Page 49: Academia ABAP4 - I semana.ppt

Report/Listas: Criação de lista básica

Exemplo: Exemplo:

REPORT ZSELECT00 .REPORT ZSELECT00 .TABLES: SPFLI, SFLIGHT.TABLES: SPFLI, SFLIGHT.SELECT * FROM SPFLI.SELECT * FROM SPFLI.WRITE: /WRITE: / SPFLI-CARRID, SPFLI-CONNID, SPFLI-CITYFROM, SPFLI-CARRID, SPFLI-CONNID, SPFLI-CITYFROM,

SPFLI-AIRPFROM, SPFLI-CITYTO, SPFLI-AIRPTO. SPFLI-AIRPFROM, SPFLI-CITYTO, SPFLI-AIRPTO. ENDSELECT.ENDSELECT.

Page 50: Academia ABAP4 - I semana.ppt

Report/Listas : Cabeçalho e Rodapé Existem alguns comandos e opções que permitem melhorar o aspecto Existem alguns comandos e opções que permitem melhorar o aspecto

e a funcionalidade de uma lista. No exemplo, a lista ainda não tem e a funcionalidade de uma lista. No exemplo, a lista ainda não tem cabeçalho. Para criá-los, pode-se editar diretamente o cabeçalho cabeçalho. Para criá-los, pode-se editar diretamente o cabeçalho usando a opção:usando a opção:

Saltar Saltar Elementos de Texto Elementos de Texto Títulos de Lista. Títulos de Lista.

Para criar um cabeçalho próprio, deve-se colocar na Para criar um cabeçalho próprio, deve-se colocar na declaração REPORT do início do programa a opção NO declaração REPORT do início do programa a opção NO STANDARD PAGE HEADING e implementar no programa o STANDARD PAGE HEADING e implementar no programa o evento TOP-OF-PAGE. Caso também queira um rodapé para evento TOP-OF-PAGE. Caso também queira um rodapé para cada página, use o evento END-OF-PAGE para escrevê-lo.cada página, use o evento END-OF-PAGE para escrevê-lo.

Page 51: Academia ABAP4 - I semana.ppt

Report/Listas : Apresentação dos campos Para melhorar a apresentação da lista, podemos modificar a forma Para melhorar a apresentação da lista, podemos modificar a forma

como os campos são exibidos. Por exemplo, podemos mudar a cor como os campos são exibidos. Por exemplo, podemos mudar a cor com a opção com a opção COLORCOLOR do comando do comando WRITEWRITE;;

Podemos mudar a intensidade da cor com a opção Podemos mudar a intensidade da cor com a opção INTENSIFIED INTENSIFIED {ON|OFF}.{ON|OFF}.

Transformar o campo num Transformar o campo num HOTSPOTHOTSPOT para uso em listas com drill- para uso em listas com drill-down.down.

Exemplo:Exemplo:WRITE: / SPFLI-CARRID COLOR COL_KEY INTENSIFIED OFF HOTSPOT CENTERED.WRITE: / SPFLI-CARRID COLOR COL_KEY INTENSIFIED OFF HOTSPOT CENTERED.

Mudar o posicionamento dos campos com WRITE AT. A opção Mudar o posicionamento dos campos com WRITE AT. A opção COLOR admite qualquer uma das cores padrão do R/3, disponíveis COLOR admite qualquer uma das cores padrão do R/3, disponíveis na transação LIBS:na transação LIBS:

Exemplo:Exemplo:WRITE: /10(5) SPFLI-CARRID COLOR COL_KEY INTENSIFIED OFF HOTSPOT.WRITE: /10(5) SPFLI-CARRID COLOR COL_KEY INTENSIFIED OFF HOTSPOT.

Page 52: Academia ABAP4 - I semana.ppt

Report/Listas : Unidade de medida e Moeda Para formatar automaticamente na lista campos numa determinada Para formatar automaticamente na lista campos numa determinada

unidade de medida e valores monetários, pode-se utilizar as opções unidade de medida e valores monetários, pode-se utilizar as opções UNIT e CURRENCY, seguidas do campo que contém a chave da UNIT e CURRENCY, seguidas do campo que contém a chave da unidade, unidade, Veja o exemplo a seguir:Veja o exemplo a seguir:

WRITE: /20(6) SFLIGHT-FLDATE,WRITE: /20(6) SFLIGHT-FLDATE,SFLIGHT-CURRENCY,SFLIGHT-CURRENCY,

'Sem CURRENCY:', (12) SFLIGHT-PAYMENTSUM,'Sem CURRENCY:', (12) SFLIGHT-PAYMENTSUM,'Com CURRENCY:', (12) SFLIGHT-PAYMENTSUM'Com CURRENCY:', (12) SFLIGHT-PAYMENTSUMCURRENCY SFLIGHT-CURRENCY.CURRENCY SFLIGHT-CURRENCY.Um trecho do report seria:Um trecho do report seria: 150420 ITL Sem CURRENCY: 683.231,44 Com CURRENCY: 68.323.144 150420 ITL Sem CURRENCY: 683.231,44 Com CURRENCY: 68.323.144 130520 ITL Sem CURRENCY: 318.202,60 Com CURRENCY: 31.820.260 130520 ITL Sem CURRENCY: 318.202,60 Com CURRENCY: 31.820.260

Page 53: Academia ABAP4 - I semana.ppt

Report/Listas : Símbolos de Textos O ABAP permite a criação de símbolos de texto, que são elementos O ABAP permite a criação de símbolos de texto, que são elementos

do repositório que permitem a criação de tabelas de texto para uso do repositório que permitem a criação de tabelas de texto para uso nos programas ABAP. Cada símbolo de texto pode ser criado em nos programas ABAP. Cada símbolo de texto pode ser criado em várias linguagens.várias linguagens.

Suponha que exista o seguinte trecho de código:Suponha que exista o seguinte trecho de código:WRITE: /10 'Assentos ocupados:', SFLIGHT-SEATSOCC.WRITE: /10 'Assentos ocupados:', SFLIGHT-SEATSOCC.

Utilizando símbolos de texto, o comando ficariaUtilizando símbolos de texto, o comando ficariaWRITE: /10 TEXT-001(ZCLMENS), SFLIGHT-SEATSOCC.WRITE: /10 TEXT-001(ZCLMENS), SFLIGHT-SEATSOCC.

Toda vez que o interpretador ABAP encontra um campo que começa Toda vez que o interpretador ABAP encontra um campo que começa com TEXT, coloca naquela posição um símbolo de texto com TEXT, coloca naquela posição um símbolo de texto correspondente ao número após o hífen na classe entre parênteses.correspondente ao número após o hífen na classe entre parênteses.

Para editar os símbolos de texto, use, na janela do editor ABAP, a Para editar os símbolos de texto, use, na janela do editor ABAP, a opção Saltar opção Saltar Elementos de Texto Elementos de Texto Símbolos de Texto Símbolos de Texto

Page 54: Academia ABAP4 - I semana.ppt

Report/Listas : Listas Complexas O Evento O Evento AT LINE-SELECTIONAT LINE-SELECTION

O processamento das listas de detalhe dentro do R/3 é feito pelo O processamento das listas de detalhe dentro do R/3 é feito pelo evento AT LINE-SELECTION. evento AT LINE-SELECTION.

HIDEHIDE Através do comando HIDE, é possível armazenar informação a Através do comando HIDE, é possível armazenar informação a

respeito de uma linha para uso do evento AT LINE-SELECTION. O respeito de uma linha para uso do evento AT LINE-SELECTION. O comando HIDE guarda a informação sobre os campos desejados, comando HIDE guarda a informação sobre os campos desejados, além do número da linha que está sendo processada, em uma tabela além do número da linha que está sendo processada, em uma tabela interna, que é automaticamente acessada no evento AT LINE-interna, que é automaticamente acessada no evento AT LINE-SELECTION. SELECTION. Veja o seguinte exemplo:Veja o seguinte exemplo:

WRITE: SFLIGHT-CARRID, SFLIGHT-CONNID, SFLIGHT-FLDATE, SFLIGHT-WRITE: SFLIGHT-CARRID, SFLIGHT-CONNID, SFLIGHT-FLDATE, SFLIGHT-SEATSOCC.SEATSOCC.

HIDE: HIDE: SFLIGHT-CARRID, SFLIGHT-CONNID, SFLIGHT-FLDATE.SFLIGHT-CARRID, SFLIGHT-CONNID, SFLIGHT-FLDATE.

AT LINE-SELECTION.AT LINE-SELECTION. SELECT * SELECT *

FROM SBOOKFROM SBOOK WHERE CARRID = SFLIGHT-CARRID ANDWHERE CARRID = SFLIGHT-CARRID AND

CONNID = SFLIGHT-CONNID ANDCONNID = SFLIGHT-CONNID AND FLDATE = SFLIGHT-FLDATE.FLDATE = SFLIGHT-FLDATE.

Page 55: Academia ABAP4 - I semana.ppt

Report/Listas

Dúvidas?!?

Page 56: Academia ABAP4 - I semana.ppt

Modularização Todo programa ABAP é estruturado e desenvolvido para ser Todo programa ABAP é estruturado e desenvolvido para ser

processado em blocoprocessado em bloco Blocos de processamentos que são chamados pelo sistemaBlocos de processamentos que são chamados pelo sistema

Blocos de Eventos Módulos de Diálogo

Blocos de processamentos que são chamados pelo programa. Sub-rotinas Módulos de função Métodos

Page 57: Academia ABAP4 - I semana.ppt

Modularização INCLUDES

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

Sub-rotina - FORM Para estruturar nossos programas, utilizamos os blocos de

processamentos controlados pelo nosso pr[oprio programa os FORMs, delimitamos as rotinas de processamentos em pequenos grupos, o que facilita a manutenção de nosso código. Podemos passar e receber valores para essas rotinas.

START... PERFORM TESTE123.END....FORM TESTE123. <código fonte com a rotina desejada>ENDFORM

Page 58: Academia ABAP4 - I semana.ppt

Modularização Módulos de Funções

São rotinas de processamento externas e independentes de programa, ficam amarradas a um grupo de funções e tem o seu código desenvolvidos em includes,podem ser chamadas por <n> programas diferentes, também trabalham com passagem de parâmetros e de tabelas, e com exceções (erros no processamento). Praticamente pouco se cria em matéria de funções, o que mais fazemos é utilizar as funções prontas disponibilizadas pela SAP

Page 59: Academia ABAP4 - I semana.ppt

Modularização Blocos de Eventos.

Os blocos de eventos são controlados pelo sistema e só valem para programas do tipo executável. Abaixo vemos os principais:

REPORT... INICIALIZATION.

Primeiro passo a ser executado no programa, antes da tela de seleção e antes da lógica de processamento.

AT SELECTION-SCREEN. Executa logo após sair da tela de seleção, utilizado para fazer

tratamentos de obrigatoriedade de campos e similares. TOP-OF-PAGE.

Executa quando é encontrado o primeiro comando WRITE dentro da lógica principal, utilizado para colocar cabeçalho, textos que devem sair em todas as páginas.

END-OF-PAGE. Informações que apareçam no rodapé do relatório

OBS: essas informações só aparecerão se o tamanho da página estiver definido no comando REPORT e somente qdo houver quebra de página. Caso contrário,

não aparecerá

Page 60: Academia ABAP4 - I semana.ppt

Modularização START-OF-SELECTION.

Entre o START-OF-SELECTION e o END-OF-SELECTION, se encontra a lógica principal do programa, quando programamos de uma forma estruturada colocamos aqui apenas chamadas de sub-rotinas, para evitar poluição de código.

Ex:START-OF-SELECTION.

PERFORM seleciona_dados.PERFORM tratamento_interno.PERFORM impressao_dados.PERFORM gera_arquivos.

END-OF-SELECTION.

AT LINE-SELECTION. Somente é executado se o usuário der um duplo click em uma

linha mostrada no relatório, ou marcar a linha e pedir para ver detalhe, utilizada para listas interativas, drill-down.

AT USER-COMMAND. Somente é executado se o usuário der um click em algum objeto

do menu, utilizado para listas com botões de interação.

Page 61: Academia ABAP4 - I semana.ppt

Modularização

Dúvidas?!?

Page 62: Academia ABAP4 - I semana.ppt

Tabela Interna : Definição Estruturas complexas de armazenamento temporário.Estruturas complexas de armazenamento temporário.

Dentro de um programa ABAP, muitas vezes é impossível trabalhar Dentro de um programa ABAP, muitas vezes é impossível trabalhar apenas com os comandos de seleção e alteração de dados apenas com os comandos de seleção e alteração de dados diretamente na tabela. diretamente na tabela.

Para manipular localmente os dados, o ABAP permite o uso de Para manipular localmente os dados, o ABAP permite o uso de tabelas internas, que são áreas de memória organizadas como tabelas internas, que são áreas de memória organizadas como tabelas. Essas tabelas internas podem ter o mesmo formato de uma tabelas. Essas tabelas internas podem ter o mesmo formato de uma tabela do banco de dados, o que as qualifica para serem usadas tabela do banco de dados, o que as qualifica para serem usadas como áreas de manipulação intermediária, o que traz benefícios em como áreas de manipulação intermediária, o que traz benefícios em termos de performance geral do R/3.termos de performance geral do R/3.

Uma tabela interna é declarada através do comando DATA, onde se Uma tabela interna é declarada através do comando DATA, onde se especifica qual é o tipo de linha da tabela, se ela tem headerline e especifica qual é o tipo de linha da tabela, se ela tem headerline e qual é a forma de operação da mesma. qual é a forma de operação da mesma.

Page 63: Academia ABAP4 - I semana.ppt

Tabela Interna : Comandos Inserção:Inserção:

APPEND:APPEND: Inclui um novo registro na TI, no último registro. Inclui um novo registro na TI, no último registro. INSERT:INSERT: Inseri um novo registro em uma posição especifica Inseri um novo registro em uma posição especifica COLLECT: Compara os campos tipo texto, caso encontre

chaves iguais, soma os campos numéricos, se não inclui um novo registro

Exclusão:Exclusão: DELETEDELETE: Exclui um registro da tabela interna, usado dentro do : Exclui um registro da tabela interna, usado dentro do

loop at exclui o registro corrente, caso contrário usar o loop at exclui o registro corrente, caso contrário usar o INDEXINDEX mostrando a linha a ser excluídamostrando a linha a ser excluída

REFRESH: Limpa todos os registros da TI CLEAR: Limpa somente o conteúdo do header line da TI

Alteração:Alteração: MODIFY:MODIFY: Altera um registro da tabela interna, usado dentro do Altera um registro da tabela interna, usado dentro do

loop at altera o registro corrente, caso contrário usar o loop at altera o registro corrente, caso contrário usar o INDEXINDEX mostrando a linha a ser alteradamostrando a linha a ser alterada

Page 64: Academia ABAP4 - I semana.ppt

Tabela Interna : Comandos Leitura de dados:Leitura de dados:

LOOP AT <TI> WHERELOOP AT <TI> WHERE <condição>: Utilizado para ler mais de <condição>: Utilizado para ler mais de uma linha da tabela interna, para os casos de tabela interna com uma linha da tabela interna, para os casos de tabela interna com Header line automaticamente o sistema joga os dados para este Header line automaticamente o sistema joga os dados para este registro, caso não deve-se indicar onde será jogado os dados registro, caso não deve-se indicar onde será jogado os dados lidos. Filtro é a opção WHERElidos. Filtro é a opção WHERE

READ TABLE <TI> WITH KEY <condição>: Como o Loop at lê os dados de uma tabela interna só que apenas uma linha por vez

OBS: Os comandos DELETE e MODIFY quando usados de forma incorreta fora do loop at e sem a indicação do INDEX, ocasiona Short Dump.

Page 65: Academia ABAP4 - I semana.ppt

Tabela Interna : Declaração Por exemplo, para declarar uma tabela interna, conforme no exemplo, Por exemplo, para declarar uma tabela interna, conforme no exemplo,

usou-se a declaração TYPES para declarar uma estrutura que contém usou-se a declaração TYPES para declarar uma estrutura que contém os campos que desejamos ter na tabela. Em seguida, a tabela é os campos que desejamos ter na tabela. Em seguida, a tabela é criada através da declaração DATA, usando a estrutura como modelo.criada através da declaração DATA, usando a estrutura como modelo.

Exemplos:Exemplos:data: begin of t_spfli occurs 0, data: begin of t_spfli occurs 0, carrid like spfli-carrid,carrid like spfli-carrid, connid like spfli-connid,connid like spfli-connid, end of t_spfli.end of t_spfli.

data: begin of t_sflight occurs 0.data: begin of t_sflight occurs 0. include structure sflight.include structure sflight.data: end of t_sflight.data: end of t_sflight.

data: t_aux like t_sflight occurs 0 with header line.data: t_aux like t_sflight occurs 0 with header line.

Page 66: Academia ABAP4 - I semana.ppt

Tabela Interna

Dúvidas?!?