Curso abap

7.760 visualizações

Publicada em

Publicada em: Tecnologia
1 comentário
5 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
7.760
No SlideShare
0
A partir de incorporações
0
Número de incorporações
285
Ações
Compartilhamentos
0
Downloads
473
Comentários
1
Gostaram
5
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Curso abap

  1. 1. Marcelo Pereira de Azevedomarcelo.azevedo38@yahoo.com.brABAPCurso de Introdução à LinguagemDe Programação ABAP
  2. 2. CONTEÚDO PROGRAMÁTICO
  3. 3. 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
  4. 4. Capítulo 1INTRODUÇÃO
  5. 5. 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
  6. 6. Conceito do SAP• É um conjunto integrado de aplicativos projetado para tratar o processamentode dados em grandes corporações. Ele foi desenvolvido na Alemanha pelaempresa denominada SAP {uma sigla de Systems Applications and Products fordata processing - aplicativos e produtos de sistemas para processamento dedados).• Dentro do SAP , há um ambiente de tempo de execução e um conjuntointegrado de programas aplicativos escritos em 4GL do SAP - ABAP/4. Essesprogramas aplicativos foram projetados para atender ao processamento dedados necessários para o negócio.O que é?
  7. 7. Conceito do SAP• ABAP/4 (Advanced Business Application Programming 4GL) é uma linguagem"orientada por eventos", "Top-Down”, bem estruturada e poderosa.
  8. 8. O que são transações no SAP• Transação é um código alfanumérico de 20 caracteres, utilizado parainiciar um processamento dentro do sistema SAP. Todo e qualquerprocesso ou parte dele deve ser executado dentro do sistema através deuma transação. A customização de ABAP/4, sempre é utilizada paranecessidade de um GAP ( procedimentos operacionais que não constamno SAP e que exigem adaptações ), isso gera pelo menos uma transação,de modo que o usuário possa executar esse produto customizado dedentro do sistema.• Toda operação realizada através do menu do sistema, tambémcorresponde a uma transação. Um método para conhecermos o código deuma transação, cujo caminho pelo menu é sabido, é entrarmos namesma, na tela inicial desta transação e utilizarmos o menu SISTEMA→STATUS, que informa o programa, tela e transação executados.
  9. 9. 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 utilizadopara desenvolvimentos de programas do tipo executável (Relatórios eCargas). ABAP Dictionary (SE11) – para edição de objetos relacionados com obanco de dados. Menu Painter (SE41) – para desenho de interfaces de usuário (barra demenu).
  10. 10. 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 ABAPWorkbench, muito utilizado para criação de programas do tipo on-line oumodule pool, pois, facilita e muito a visualização de todos os objetos emuma mesma tela. Todo objeto do ABAP Workbench pode ser editadonessa transação e de uma forma bem mais organizada.
  11. 11. Instância X Client(Dependent/Independent)• Client – é definido como sendo uma unidade independente do R/3. Emtermos comerciais,organizacionais e técnicos.Isso significa que possuemsua própria configuração e dados cadastrais (master data).• Instância – é definida como um ambiente do R/3 que agrupa um ou maisclients, onde se executa um determinado trabalho.• Objetos Client Dependent: Dependentes do mandante, por exemploformulários de Sapscript, Relatórios de Report Writer/Painter, ABAPQUERY(se criada na área Standard), parametrização/customizações,conteúdo de tabelas etc.• Objetos Client Independent: Independentes de mandante, por exemploprogramas Z*, todos os programas standards, todas as funções, estruturade tabelas etc.
  12. 12. Instância X Client ( Dependent/Independent)Ex: Código Fonte – IndependentTelas,Menus e funções – IndependentEstrutura de tabelas,elementos e domínios - IndependentRegistros de dados em tabela - DependentFormulário SapScript - Dependent
  13. 13. Conceito de classe de desenvolvimento• Classe de desenvolvimento (Pacotes)São importantes para transporte entre sistemas de produção, qualidade edesenvolvimento.As classes também são importantes para combinar todos os objetospertencentes 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
  14. 14. Controlando e administrando transportes• RequestGuarda as modificações ou customizações feitas e que se desejatransportar para um determinado ambiente. Uma vez liberada a ordem detransporte mantém as alterações feitas até aquele momento. Novasalterações/customizações no mesmo lugar irão solicitar nova ordem detransporte.• Ex : AF1K900109 –AF1 – InstânciaK – Geração de arquivo de controle (Interno SAP)900109 - Sequêncial
  15. 15. Worbench Organizer• Esta transação pemite controlar as ordens (requests) geradas através dasalterações feitas nos objetos ABAP e customizações funcionais.Ordem Local : Alterações não transportáveis para objetos ABAP/4 sãogravadas 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 edependent criados por um usuário.
  16. 16. Capítulo 2DICIONÁRIO DE DADOS
  17. 17. 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.
  18. 18. Conceito de banco de dados relacionais• Modelo de Entidade e RelacionamentoModelo desenvolvido para facilitar o projeto de banco de dados,permitindo a especificação de um esquema que represente a estruturalógica global de um banco de dados.Entidade: É um objeto que existe e é distinguível de outros objetos, ouseja, 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 nomodelo o que uma entidade pretende ser. Exemplos: Nome, RG, CPF,Endereço, Número conta, Número agência, Número banco.
  19. 19. Conceito de banco de dados relacionaisDomínio: Conjunto de valores permissíveis para um atributo. Exemplo:(Casado,Solteiro e Etc ).Relacionamento: É a associação entre duas entidades, ou seja, representaa maneira como duas entidades estão relacionadas ou ligadas. Exemplos:Conta-corrente de um Cliente, Agências de um Banco, Contas-Corrente deuma Agência.Restrições de Mapeamento: Representam o modo como as diferentesentidades de um modelo se relacionam. Determinadas pela cardinalidadedos relacionamentos entre as entidades.
  20. 20. Conceito de banco de dados relacionaisUm-para-Um: Uma ocorrência da entidade A está relacionada com uma eapenas uma ocorrência da entidade B.Um-para-N: Uma ocorrência da entidade A está relacionada com uma ouvárias ocorrências da entidade B.EX : MARCA X CARRON-par-N: Várias ocorrências da entidade A estão relacionadas com váriasocorrências da entidade B.EX : FORNECEDOR X PRODUTO
  21. 21. Conceito de banco de dados relacionais• Modelo RelacionalUm banco de dados relacional é a implementação física do modeloentidade-relacionamento e traduz concretamente o que o modeloconceitual procura representar. Consiste em uma coleção de tabelas cadauma das quais associada a um nome único e que possuemrelacionamentos entre si. Tabelas representam fisicamente as entidades.Cada tabela possui uma estrutura similar àquilo que pretenderepresentar, isto é, tabelas são formadas de linhas que por sua vez sãoformadas por colunas. Colunas representam fisicamente os atributos.A cada linha da tabela chamaremos de ocorrência e o conjunto deocorrências pode ou não estar relacionado com ocorrências de outrastabelas.
  22. 22. Conceito de banco de dados relacionaisComo 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 cadaocorrê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 atributoem outra(s) tabela(s).
  23. 23. Tipo de dados do dicionário ABAPO dicionário ABAP (Transação SE11) permite a administração central detodas as definições de dados do R/3, permitindo a criação de tipos dedados definidos pelo usuário para uso posterior, além de vários itensauxiliares ao desenvolvimento de programas ( p.ex: search helps ).Podem ser definidas tabelas e visões dentro do dicionário. O R/3 seencarrega, durante a ativação desses elementos, de criá-los no banco dedados. O dicionário permite, ainda, a criação de índices, que agilizam asbuscas. A definição de índices apropriados é de suma importância para obom desempenho do sistema. Cabe lembrar que uma busca sem índicerealizada em um tabela extensa pode ter pesado custo em termos deperformance.
  24. 24. Tipo de dados do dicionário ABAPAs definições de tipos de dados dentro do R/3 incluem os elementosde dados, que definem um tipo elementar descrevendo o tipo básico dedados, 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, queseriam “campos” em formato de tabela.Por exemplo, uma estrutura do registro de uma estrutura de usuárioque tivesse um campo para números de telefone poderia usar um tabletype e permitir colocar vários números num mesmo campo.
  25. 25. Tipo de dados do dicionário ABAPAlém dessas definições, o dicionário ABAP permite criar os searchhelps, que são tabelas de busca auxiliares aos campos de tela – são asbuscas e tabelas que aparecem quando se tecla F4 dentro de um campoem qualquer tela do R/3.Criando documentação para o elemento de dados dentro dodicionário, automaticamente está disponível a ajuda do campo, que podeser invocada usando-se a tela F1 dentro dos campos de tela. Pode-se,ainda, definir verificações de entrada automaticamente, bastando definiruma relação de foreign key.No dicionário também são criados os objetos de lock, que permitemdefinir o travamento de dados dentro do R/3. Por exemplo, podem-sedefinir objetos de lock para impedir que dois usuários editem a mesmainformação ao mesmo tempo no sistema.
  26. 26. Tipo de dados do dicionário ABAPO dicionário é integrado às ferramentas de desenvolvimento e execuçãodo R/3, permitindo o acesso das ferramentas às definições nele contidas.Por exemplo, é possível navegar de um programa que esteja sendo criadono editor ABAP para definições de campos, elementos e tabelas usadas noprograma.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.
  27. 27. Tipo de dados do dicionário ABAPN – Campo alfa, utilizado para conter números sem decimais e preenchidoscom 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.
  28. 28. Conceito de domínio, elemento de dados.• DomíniosO domínio contém os tipo de dado e comprimento do campo. Podemconter os valores válidos para o campo, através de valores fixos entradosno 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 edescrição dos campos em um só objeto. É útil quando os campos serepetem em diversas tabelas.
  29. 29. Criação de tabelas transparentes,estruturas e view.• A definição de uma tabela consiste dos seguintescomponentes: Campos - Define o nome e o tipo dos campos da tabela. Chaves Estrangeiras( Check Table ) - define o relacionamento entre atabela e outras tabelas do sistema, usadas para manter a integridadedos dados no BD. Opções Técnicas - controla como a tabela deve ser criada no Banco deDados. Índices - Para melhorar a performance nos acessos a tabela, pode-secriar índices secundários para ela.
  30. 30. 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, devendocomeç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.
  31. 31. Criação de tabelas transparentes,estruturas e view. Tabela TransparenteExiste uma tabela física no banco de dados para uma tabelatransparente. Os nomes da tabela física e da definição lógica de tabelasão coincidentes no ABAP Dictionary.Todos os dados empresariais e dados de aplicação são arquivados emtabelas transparentes.
  32. 32. Criação de tabelas transparentes,estruturas e view.• EstruturasSão como tabelas que não armazenam dados, definem um conjunto decampos e geralmente são utilizadas para definir os dados na interface depools de módulos e telas, assim como para atribuir o tipo aos parâmetrosde módulos de função. Uma estrutura diferentemente de uma tabela nãotem uma tabela de banco de dados associada a ela.
  33. 33. Criação de tabelas transparentes,estruturas e view.• VisõesSão tabelas virtuais que resultam da união de tabelas transparentes e quecontém uma certa quantidade de informações.
  34. 34. Criação de índices primários e secundários• Índices• Um índice pode ser considerado como uma cópia da tabela que foireduzida a um certo número de campos. Esta cópia está sempreordenada. A ordenação faz com que o acessos ao registros se tornemais rápido, o índice também contém, um ponteiro para o registroreal 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 Índiceprimário é constituído dos campos indicados como campo-chave nacriação da tabela.
  35. 35. Criação de diálogo de manutençãoPode ser feita uma criação automática de programa on-line paramanutenção de tabelas transparentes através da transação SE11. Paratanto 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 dastelas.Deixar assim.
  36. 36. Criação de diálogo de manutenção Gerar módulo.
  37. 37. Capítulo 3INTRODUÇÃO À LINGUAGEM ABAP
  38. 38. 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.
  39. 39. Como funciona a transação SE38 – Editor ABAP. Transação SE38.Permite a visualização, edição e execução de programas ABAP, bemcomo duplicação de um programa e deleção do mesmo, entre outrosrecursos.
  40. 40. Como funciona a transaçãoSE38 – Editor ABAP
  41. 41. Como funciona a transaçãoSE38 – 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.
  42. 42. Como funciona a transaçãoSE38 – Editor ABAPTexto fonte – Texto principal do programa.Variantes – Exibe as variantes gravadas p/execução doprograma.Características – Exibe as características do programacomo classe de desenvolvimento,tipo do fonte (includes, executável e etc).Documentação – Documentação simplificada doprograma.Elementos de texto – Textos que serão utilizados paraexecução do programa- Exibição do fonte e modificação do fonte.
  43. 43. Como funciona a transaçãoSE38 – 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.
  44. 44. Como funciona a transaçãoSE38 – Editor ABAP- Controle de versão
  45. 45. Como funciona a transaçãoSE38 – Editor ABAP
  46. 46. Como funciona a transaçãoSE38 – Editor ABAP- Tipos de editor
  47. 47. Blocos de eventos• Eventos:Evento é um Tag que identifica uma seção de código. A seção de códigoAssociada com um evento começa com um nome de evento e terminaquando 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 dousuário na tela de seleção ativa.Isso pode ser quando o usuário pressionauma tecla de função ou dá um clique em um botão.
  48. 48. • START-OF-SELECTION – Evento onde executa o processamento principaldo programa.• END-OF-SELECTION – Evento onde finaliza o processamento do programa.• TOP-OF-PAGE (início relatório) – Evento é utilizado quando executado oprimeiro 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 debotões.Blocos de eventos
  49. 49. Blocos de eventos• AT LINE-SELECTION – O processamento das listas de detalhe dentro do R/3 éfeito pelo evento AT LINE-SELECTION. O R/3 executa os comando que houverdentro desse evento toda vez que o usuário clica duas vezes sobre uma linhaem uma lista ou clica sobre um campo marcado com HOTSPOT, ou teclando-seF2 sobre um registro, ou escolhendo um botão que tenha o código standard‘PICK’ a ele associado.
  50. 50. Blocos de eventos
  51. 51. Declaração de variáveis, tabelas internas,ranges e constantsDeclaraçã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.
  52. 52. Declaração de variáveis, tabelas internas,ranges e constants- Tipos de dados:
  53. 53. Entre as formas de tipos de dados, as mais usadas no desenvolvimento deprogramas 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 alteradosdurante a execução do programa. A forma da declaração e o tipos de dadosseguem o mesmo padrão das variáveis.Ranges : Tabela interna com a mesma estrutura de um select-options, mas semconexão com uma tela de entrada.Declaração de variáveis, tabelas internas,ranges e constants
  54. 54.  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
  55. 55.  ConstantesCONSTANTS: 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
  56. 56.  RangesRanges: rangename FOR _. Exemplo:Ranges: r_vstel FOR vbap-vstel.Declaração de variáveis, tabelas internas,ranges e constants
  57. 57. 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
  58. 58.  Tabelas Transparentes:TABLES: tabbanco, tab1, tab2, tab3,...tabn. Exemplo:TABLES: LFA1, EKKO.Declaração de variáveis, tabelas internas,ranges e constants
  59. 59. Tabela Interna : Uma tabela interna consiste em uma série de linhas domesmo tipo de dados. Os dados são armazenados linha a linha na memória, ecada linha tem a mesma estrutura.Deve-se usar tabelas internas sempre que precisar usar registros de tabelastransparentes dentro do programa.Declaração de variáveis, tabelas internas,ranges e constants
  60. 60. Tipos de tabelas internas :Standard table: Permite acesso sequêncial aos dados;Sorted table: É o tipo mais apropriado se você precisa de uma tabelaordenada independente do seu preenchimento. Não pode ser utilizar ocomando sort nesse tipo de tabela;Hashed table: As tabelas do tipo Hashed table são organizadas de acordocom a chave especificada e não permitem operações utilizando o númerosequêncial dos registros. São mais adequadas a grande volume de dados.Declaração de variáveis, tabelas internas,ranges e constants
  61. 61.  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
  62. 62. Estruturas:São modelos de tabelas sem dados. Esses modelos podem serutlizados com referências para criação de tabelas internas, parâmetros defunção e etc.Declaração de variáveis, tabelas internas,ranges e constants
  63. 63.  EstruturasTYPES: BEGIN OF <typename>,var1 TYPE _,var2 LIKE tab1-campo,.....END OF <typename>.TYPES BEGIN OF <typename>,.INCLUDE STRUCTURE<tabbanco>.TYPES END OF <typename>,. ExemploTYPES: BEGIN OF TP_BANCOnumero 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
  64. 64.  RegistrosTYPES: BEGIN OF <typename>,var1 TYPE _,var2 LIKE tab1-campo,.....END OF <typename>.DATA: T_TAB1 TYPE <typename>. ExemploTYPES: BEGIN OF TP_BANCOnumero 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
  65. 65. Definição de parâmetros de entradaParâmetros de entrada :Essa instrução é muito parecida com a instrução data, mas quando você executa oprograma, o sistema exiberá os parâmetros como campos de entrada em uma tela deseleção antes que o programa realmente comece a ser executado. O usuário pode digitarou modificar seus valores e então pressionar o botão execute, para iniciar oprocessamento.PARAMETERS: É uma forma de entrada de dados que o usuário poderá escolherapenas 1 valor em cada execução.SELECT-OPTIONS: Select-Options é uma forma de entrada de dados que o usuáriopoderá escolher N valores em cada execução. No parâmetro SELECT-OPTIONSpodemos também definir faixas de dados, valores individuais, exclusão de valoresindividuais, 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.
  66. 66. 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 grpnameOBLIGATORY. SELECTION-SCREEN:BEGIN OF BLOCK bl_name WITH FRAMETITLE title_text.END OF BLOCK bl_name.BEGIN OF LINE.END OF LINE.COMMENT pos(dim) textPOSITION pos.
  67. 67.  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
  68. 68. Principais comandos ABAPComando/Função DescriçãoADD Adiciona um valor a outro camponuméricoAPPEND Gravar em tabela internaAPPEND LINES Gravar linhas em tabela internaAPPEND SORTED BY Usado para classificar linhas emordem durante o appendAT END OF Identifica o ultimo registro de umasequência (quebra)AT EXIT-COMMAND Usado para definir a execução demódulos com botõesAT FIRST Identifica o primeiro registro da tabelapercorridaAT LAST Identifica o ultimo registro da tabelapercorrida
  69. 69. Principais comandos ABAPComando/Função DescriçãoAT LINE-SELECTION Evento para abrir uma segunda teladentro de um relatórioAT NEW Identifica o primeiro registro de umasequênciaAT SELECTION-SCREEN ON Analisar o resultado de uma variávelAT USER-COMMAND Evento para inicializar os botõescriadosAUTHORITY-CHECK OBJECT Para verificar a autorização paradeterminado objetoAS TEXT Usado para classificar caracteresacentuadosASSIGN f1 TO <f> Atribuição dinâmicaAS SYMBOL / AS ICON / AS LINE Comandos usados para formataçãoem relatórios
  70. 70. Principais comandos ABAPComando/Função DescriçãoCALL TRANSACTION Comando usado para chamartransaçõesCASE... WHEN... ENDCASE Comando para tomadas de decisãoCHECK Substitui o comando IFCLEAR Limpar o conteúdo de uma variávelCLOSE DATASET Fecha um arquivo externoCLOSE_FORM Função usada para fechar umformulário sapscriptCOLLECT Organiza a tabela com todas asdescrições à esquerda totalizando oscampos numéricosCOMMIT WORK Efetiva as alterações no banco
  71. 71. Principais comandos ABAPComando/Função DescriçãoCONCATENATE Agrupa vários campos em um sóCONSTANTS Criar constantes para serem usadasem todo o programaCONTINUE Volta ao início de um loop após averificação de uma condiçãoCONDENSE Remove os espaços em branco emum textoDATA Criar tabelas internas e variáveisDELETE Deleta um registro de uma tabelainternaDESCRIBE TABLE Determina o número de linhas deuma tabela internaDO... ENDDO Usado para criar um loop
  72. 72. Principais comandos ABAPComando/Função DescriçãoGUI_DOWNLOAD Função para download de arquivoEND_FORM Função usada para finalizar umformulário sapscriptEND-OF-PAGE Evento executado ao finalizar aimpressão de uma páginaEND-OF-SELECTION Evento executado logo após o eventoSTART-OF-SELECTIONEXIT Comando usado para sair de um loopou sub-rotinaFORM Indica o início de uma sub-rotinaFORMAT COLOR Usado para formatar a saída docomando write(COR)FREE Libera espaço de memória utilizadopor uma tabela interna
  73. 73. Principais comandos ABAPComando/Função DescriçãoHIDE Usado para definir campos para umasegunda janela em relatóriosID... FIELD... Objetos de autorizaçãoIF... ELSE... ENDIF Comando de decisãoIF NOT... IS INITIAL Verifica se uma variável está vaziaINITIALIZATION Primeiro evento executado dentro deum programaINSERT Insere o conteúdo de um registro emuma tabela transparenteINSERT LINES Insere mais de uma linha em umatabela transparente
  74. 74. Principais comandos ABAPComando/Função DescriçãoLEAVE PROGRAM Comando encerra um programaLEAVE TO SCREEN Comando que direciona a ida de umatela para outraLINE-COUNT Limita o número de linhas por páginaLINE-SIZE Limita o número de colunas porpáginaLOOP AT Loop no conteúdo de uma tabelainternaMESSAGE Usado para mostrar mensagens natelaMESSAGE-ID Usado para definir uma classe demensagemMODIFY Modifica o conteúdo de uma linha databela interna
  75. 75. Principais comandos ABAPComando/Função DescriçãoMODULE Usado para a criação de sub-rotinasem programas on-lineMOVE Move o conteúdo de uma variávelpara outraMOVE-CORRESPONDING Move apenas campos com o mesmonomeNEW-PAGE Força quebra de página em umrelatórioNO STANDARD PAGE HEADING Ignora a impressão do cabeçalhostandard do SAP em relatóriosOPEN DATASET Para abrir arquivo externo(somentepara UNIX)OPEN_FORM Função para abrir formuláriosapscript
  76. 76. Principais comandos ABAPComando/Função DescriçãoPARAMETERS Criar parâmetros de seleçãoPERFORM Usado para chamar sub-rotinasREAD DATASET... INTO Usado para ler e importar dados deum arquivo externo (UNIX)READ TABLE Ler registro em tabela internaREFRESH Limpa todo o conteúdo de umatabela internaREPLACE Substitui um texto dentro de outrotextoREPORT Início de um relatório(programa)SEARCH Procura um texto dentro de outrotextoSELECT Usado para selecionar dados emuma tabela
  77. 77. Principais comandos ABAPComando/Função DescriçãoSELECT-OPTIONS Declarar parâmetros de seleção comopçõesSELECTION-SCREEN Criar BOX na telaSET PF-STATUS Comando usado para definir menu aser usadoSET TITLEBAR Criar títulos em janelasSKIP Saltar linhaSORT Ordenar o conteúdo de uma tabelainternaSPLIT... AT... INTO Comando usado para separarconteúdo de uma variável e outra(s)START_FORM Função para iniciar formuláriosapscriptSTART-OF-SELECTION Evento para marcar início da rotinaprincipal do programa
  78. 78. Principais comandos ABAPComando/Função DescriçãoSTRLEN Retorna o tamanho de um textoSUBTRACT Subtrai um valor numérico de outrovalorSUM Totaliza um campo numéricoSY-BATCH Indica execução em backgroundSY-DATUM Retorna a data atual do sistemaSY-LANGU Retorna o idioma de logonSY-LINNO Linha corrente em um relatórioSY-LISEL Linha selecionada em relatóriosinterativosSY-MANDT Retorna o mandanteSY-PAGNO Faz paginação automática(num.Pagina)
  79. 79. Principais comandos ABAPComando/Função DescriçãoSY-SUBRC Retorna o resultado de umaexecução(OK ou Não OK)SY-TABIX Linha corrente de uma tabela internaSY-UCOMM Retorna o nome de um botãoSY-UNAME Retorna o usuário logadoSY-UZEIT Retorna a hora atual do sistemaSY-VLINE Serve para fazer o fechamento debordas de um relatórioSY-ULINE Imprime uma linha com n posiçõesSY-CPROG Retorna o nome do programaprincipalSY-TCODE Retorna o código da transaçãoTABLES Usado para declarar tabelas
  80. 80. Principais comandos ABAPComando/Função DescriçãoTOP-OF-PAGE Evento para início de cabeçalho emum relatórioTRANSFER... TO... Usado para ler e gravar em arquivoexterno (UNIX)TYPES Define estrutura para tabelas internasUPDATE Atualiza o conteúdo de uma tabelatransparenteWHILE... ENDWHILE Cria laços de execuçãoWRITE Saída em relatórioWRITE_FORM Função para escrever no formuláriosapscriptWS_UPLOAD Função para fazer upload de umarquivo externo
  81. 81. Executando um programa report
  82. 82. Capítulo 4CONCEITO DE PROCEDURES, FUNÇÃO EINCLUDES
  83. 83. 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.
  84. 84. • Procedures: módulos internos do programa, que possuem uma interface.Com uma declaração ABAP, é possível chamar um subprograma em umprograma, a partir de qualquer outro bloco de processamento.• Módulos de função: módulos com uma interface transparente, disponíveisem todo o sistema. Esses módulos podem ser chamados de qualquerbloco de processamento e em qualquer programa ABAP que utilize umadeclaração ABAP especial.Conceito de Procedures, função e includes
  85. 85. • ProceduresO 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 declararos dados locais. Se um objeto local tem o mesmo nome de um objetoglobal, o global será invisível dentro do subprograma.Conceito de Procedures, função e includes
  86. 86. - A interface é definida da seguinte maneira:• Após USING, deve-se relacionar em uma lista todos os parâmetros que osubprograma só precisa ler.• Após CHANGING, deve-se relacionar em uma lista todos os parâmetrosque o subprograma vai modificar e cujos valores serão transferidos para oprograma de chamada.• Após TABLES, deve-se relacionar em uma lista todas as tabelas internasque irá modificar e cujos valores serão transferidos para o programaprincipal.Conceito de Procedures, função e includes
  87. 87. • 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
  88. 88. • As rotinas FORM podem ser chamadas a partir de qualquer bloco deprocessamento 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 naseqüência em que estão relacionados na lista.• Quando um subprograma é chamado com a declaração PERFORM, osistema verifica se os tipos dos parâmetros atuais de PERFORM sãocompatíveis com os parâmetros formais.Conceito de Procedures, função e includes
  89. 89.  Existe a possibilidade de omitir o tipo. Nesse caso, o parâmetro formalherda o tipo do parâmetro atual correspondente.Conceito de Procedures, função e includes
  90. 90. 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 stringp2 TYPE stringCHANGING p3 TYPE stringp4 TYPE string.p1 = b1.p2 = b2.p3 = b3.p4 = b4.ENDFORM.
  91. 91. Testando a execução de uma função Também podemos executar procedures relacionadas em outros programasutilizando a sintaxe abaixo:- PERFORM <nome da procedure> IN PROGRAM <nome do programa>CHANGING <valor> IF FOUND.
  92. 92. Criando um report chamando procedurese funções- Submit :O comando submit é utilizado para chamar de dentro de um programa outroprograma 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.
  93. 93. Funções :-Módulos de função são subprogramas externos com uma interfacetransparente. A interface é considerada transparente porque não está incluídanas declarações do programa ABAP para a parte executável do módulo defunção. A interface é definida separadamente e pode ser atualizadaindependentemente do texto.-Com os parâmetros opcionais, acréscimos à interface podem tornar asdeclarações do programa ABAP completamente executáveis sem qualquermodificaçã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 programascustomizados (Pesquisa na SE37).Criando um report chamando procedurese funções
  94. 94. - Transação SE37A transação SE37 é responsável pela criação de funções.Criando um report chamando procedurese funções
  95. 95. 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 umafunção internamente pelo sistema.- Módulo de acesso remoto – é definida quanto a função é chamadaremotamente de outra plataforma – Não SAP.Parâmetros da interface: é possível utilizar objetos de dados elementares, estruturas outabelas internas como parâmetros de importação, exportação e modificação. Os módulosde função utilizam os mesmos métodos de transmissão de parâmetros que as rotinasFORM.Exceções: se, durante o processamento, ocorre um erro em um módulo, é possível inserira 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ãocausem erros de tempo de execução. As possíveis exceções são denominadas nainterface do módulo de função e acionadas a partir do texto de programa, por meio dadeclaração RAISE. Cada programa que chama o módulo de função consulta sy-subrcpara interpretar as exceções.Criando um report chamando procedurese funções
  96. 96. Valor proposto : Valor inicial para o parâmetro caso não seja passadonenhum valor na interface.Opcional: Parâmetro não é obrigatório.Transf.Valores: A transferência do parâmetro é efetuada com transferênciade valor. Isto significa que o conteúdo do parâmetro é copiado durante atransferência. Em estruturas que contêm tabelas, isto pode levar a fortesreduções de performance e, se possível, não deve ser utilizado.Criando um report chamando procedurese funções
  97. 97. Criar uma função z_busca_price. Essa função deverá buscar o campo priceda 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 = 1Criando um report chamando procedurese funções
  98. 98. - Includes:Programas do tipo include, pode se modularizar um programa utilizandocódigos fontes não executáveis e chama-se esses código de dentro doprograma principal. É utilizado para declarações de variáveis em programasmuito extensos.Criando um report chamando procedurese funções
  99. 99. - Criar um programa utilizando função e procedures.Criando um report chamando procedurese funções
  100. 100. Capítulo 5SQL
  101. 101. Capítulo 5 – SQL• Comandos SQL.• Performance.
  102. 102. Comandos SQL• Comandos SQL
  103. 103. Comandos SQL
  104. 104. Comandos SQLDATA: BEGIN OF WA,CARRID TYPE SPFLI-CARRID,CONNID TYPE SPFLI-CONNID,CITYFROM TYPE SPFLI-CITYFROM,CITYTO TYPE SPFLI-CITYTO,END OF WA,ITAB LIKE SORTED TABLE OF WAWITH NON-UNIQUE KEYCITYFROM CITYTO.SELECT CARRID CONNID CITYFROM CITYTOINTO CORRESPONDING FIELDS OF TABLEITABFROM 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.
  105. 105. Comandos SQL• ALGUNS TIPOS DE SELECTSELECT …FROM <table> INTO TABLE <INTERNAL TABLE> .A estrutura da tabela interna deve corresponder à estrutura da tabela queestá sendo acessada. O sistema lê os registros em conjunto, nãoindividualmente, e os coloca dentro de uma internal table. Este processoé mais rápido que ler individualmente através de um LOOP e ir gravandoos registros, um a um.
  106. 106. Comandos SQLSELECT * 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 internaltable. Movimentará os registros para as colunas definidas na internal tableque possuam nome igual ao da tabela acessada).Obs.: corresponding ou appending corresponding não exigem o endselect.
  107. 107. Comandos SQLSELECT ….. APPENDING CORRESPONDING FIELDS OF TABLE <itab>.Lê e grava (não sobrepõe) os dados em uma internal table que possuanomes 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 serespecificada. 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 * … upto 1 row. Neste caso não é necessário especificar a chave completa.
  108. 108. Comandos SQLSELECT * FROM …<tabela>Quando não se impõe nenhum tipo de restrição, ocorre uma varredura sequencial dosregistros da tabela. Quando se utiliza grandes tabelas, isso obviamente afeta oruntime.Select * seleciona todas as colunas de uma tabela. É melhor sempre especificar ascolunas, 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údoespecificado. O ideal é que se qualifique a cláusula WHERE tanto mais quanto sejapossível. Atentar que isso é válido para tabelas do tipo Pool e Transparent. ParaCluster, seguir as recomendações dadas anteriormente.
  109. 109. Comandos SQLSELECT <a1> <a2> … INTO (<f1>, <f2>, … ) FROM ….<tabela>WHERE …… .Lê as colunas especificadas (a1, a2). Após INTO deverão ser especificadas as áreas detrabalho auxiliares (f1, f2). O número de colunas lidas deverá ser igual ao númerode 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ê trabalhacom o range.
  110. 110. Comandos SQL
  111. 111. Comandos SQL
  112. 112. Comandos SQL
  113. 113. Performance Para se obter uma otimização da performance em programas ABAP, deve-seminimizar 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 dadostodos 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 fortementeespecificada, com várias condições, visando restringir ;– Índices não utilizados;
  114. 114. Performance– Falta de índices;– Select em tabelas com alto número de registros utilizando cláusulawhere 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.
  115. 115. Performance• Comandos Select– Visando garantir a performance e evitar problemas futuros, cuidadocom os comandos empregados. Existem alguns tipos de select maiseficientes que outros. Analise a aplicação que será desenvolvida e façaa melhor escolha.
  116. 116. Performance• Dicas para otimização do código• Use o comando FREE para liberar espaço em internal tables; Sempre usar oscomandos Clear / Refresh após o fim de um LOOP;• Evite comparações num SELECT com campos numéricos versus camposalfanumé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. É interessanteque a tabela interna contenha os campos na sequência em que serãomovimentados;• Ao utilizar o comando CASE, codificar sempre a cláusula WHEN OTHERS;
  117. 117. Performance• Sempre identifique se um SORT é ascending ou descending e especifique aclá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 tabela3Para cada SORT fazer o LOOP correspondente. Aí então iniciar novo SORT eLOOP, e assim por diante.• Campos chave devem ser sempre os primeiros campos da tabela. Assim, todos osdemais campos serão comprimidos;
  118. 118. Performance• SELECT (para Transparent e Pool Tables): a cláusula WHERE deve conter,preferencialmente, os campos chaves e demais campos que possam restringir apesquisa;• SELECT (para Cluster Tables): só os campos chaves devem ser especificados naclá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 dacodificação do comando select. O campo que ocorrer em número menor de vezesdeverá constar na cláusula where antes daquele que ocorre um número maior devezes, caso seja necessário satisfazer a ambas condições. Isso faz com que oprocessamento seja mais ágil.• Manuseio de tabelas: Estudar a possibilidade de manuseio em tabelas internas paraagilizar o processo. Analisar também o uso de comando select, sendo o que melhorse adapte a situação em questão.
  119. 119. 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 deprocessos, estruturas de dados e modelos de dados! Qualidade é a chave! Planeje e execute um bom plano de testes A Experiência sempre ajuda!
  120. 120. PerformancePara mais informações chame a Transação SE30Botão Tips & Tricks
  121. 121. Capítulo 6PROGRAMAS ON-LINE
  122. 122. 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.
  123. 123. 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 etelas.No pool de módulo você encontrará apenas os includes que por sua vezcontêm os módulos e sub-rotinas que formam o programa. Cada móduloestá associado a uma tela, e a tela possui sua parte gráfica que pode serdesenhada usando a transação SE80(screen painter).A SE80 é a transação usada para se gerar on-lines, pois nela todos osobjetos e programas podem ser criados e manipulados facilmente.Um programa do tipo módulo pool só pode ser executado através de umatransação, o que é uma particularidade deste tipo de programa.
  124. 124. 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íveisdistintos: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) e4º) Contém as subrotinas chamadas pelos módulos "PERFORM".
  125. 125. 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 eprogramas 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ê podeacessar essas estruturas do programa ABAP/4 e quando define campos detela. O processador de diálogo controla o fluxo do seus programa diálogo.
  126. 126. 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 oprocessador ABAP/4. Depois do processamento, o controle é retornadopara o processador de diálogo.
  127. 127. Como criar um programa ON-LINE• Quando todos os módulos do PBO forem processados, o conteúdo doscampos da área de trabalho (work área) ABAP/4 são copiados para oscampos de mesmo nome da área de trabalho (work área) da tela.• Antes do módulo PAI é processado. O conteúdo dos campos na área detrabalho da tela (work área) são copiados para campos de mesmo nomena área de trabalho (work área) ABAP/4.
  128. 128. 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).
  129. 129. Criando telas no ON-LINE• Definindo o Layout (Graphical Screen Painter)– A interface do Graphical Screen Painter contém funções fáceis de usarpara definir os vários elementos da tela (ex.: campos de entrada esaída, campos textos, caixas, etc.).Você escolhe cada elemento da tela e posiciona na tela usando omouse.– Para deletar elementos da tela, você seleciona o elemento com omouse e então escolhe Delete.– Para mover elementos da tela, você usa o mouse para arrastar oelemento para a posição desejada.
  130. 130. Criando um ON-LINE• Transação SE80
  131. 131. Capítulo 7LISTAS E ALV
  132. 132. 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
  133. 133. Formatação de relatóriosO que é o ALV• O Abap List Viewer(ALV) é uma ferramenta que padroniza e simplifica ouso de listas e relatórios no sistema R/3 tanto para o desenvolvedor tantopara o usuário que interage com o relatório.• O ALV através de suas funções e estruturas torna o desenvolvimento maissimples na medida que economiza significativas linhas de código comopor exemplo no tratamento de quebras,totais,subtotais,cores e outrasvantagens que veremos a seguir.• Principais estruturas de montagem do relatório ALV– slis_layout_alv– slis_sortinfo_alv– slis_t_fieldcat_alv
  134. 134. Formatação de relatóriosCALL FUNCTION REUSE_ALV_LIST_DISPLAYEXPORTINGi_callback_program =c_repidi_callback_pf_status_set =SET_PF_STATUSi_callback_user_command =USER_COMMANDis_layout =s_layout2it_fieldcat =it_inf_campos2it_sort =t_qbr_campos[]TABLESt_outtab =it_lote2.
  135. 135. Principais comandos para uma lista• SLIS_LAYOUT_ALV• Criar estrutura do tipo SLIS_LAYOUT_ALVEx: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 dorelatório.Passar o nome real do(s) campo(s) checkbox.– window_titlebar – Título na barra de título
  136. 136. Principais comandos para uma lista• SLIS_SORTINFO_ALV• Criar estrutura do tipo SLIS_SORTINFO_ALVEx.: 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’
  137. 137. 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 databela 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 dopadrã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)
  138. 138. 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
  139. 139. Capítulo 8CONCEITO DE BATCH-INPUT E BAPI´S
  140. 140. 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
  141. 141. Qual a função de um Batch-input• Batch Input• O Batch Input é uma técnica standard para a transferência de grandes volumes dedados para o Sistema R/3. O fluxo transacional é simulado ( SHDB) e os dados sãotransferidos como se entrassem de forma online. A vantagem é que são executadostodas 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;
  142. 142. Qual a função de um Batch-inputFunções para criar Sessões:call function BDC_OPEN_GROUPexportingclient = <cliente>group = <nome_pasta>user = <usuário>keep = X. (manter pasta)call function BDC_INSERTexportingtcode = <cod_trans>tablesdynprotab = <bdc_tab>.call function BDC_CLOSE_GROUP.
  143. 143. Qual a função de um Batch-inputExecutar 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 - parecidocom 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
  144. 144. 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 dedados.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)
  145. 145. O que é uma BAPI• BAPI´s são funções disponibilizadas pela SAP para realizar processos dentro doR/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 egerenciadas 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 batchinput ou call transaction.
  146. 146. Criar um mapeamento.• Transação SHDB
  147. 147. Capítulo 9DEBUG
  148. 148. Capítulo 9 – Debug• Qual a função do Debug.• Principais comandos para utilizar um Debug.• Executar um Debug
  149. 149. Qual a função do Debug• O ABAP Debugger é uma ferramenta integrada de teste dentro do ABAPWorkbench. É 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 oprograma 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.
  150. 150. • Para chamar o debugger do SAP (R/3) basta inserir o /h como umatransação.• Verificar a barra de status.• A partir deste momento o “mode debugger” do SAP está emfuncionamento, em qualquer transação, que estivermos, poderemosvisualizar código-a-codigo, o que o compilador, ABAP está interpretando.Principais comandos para utilizar um Debug
  151. 151. • Observe no modo Debug a seguinte tela:• Nesta tela que poderemos “EXIBIR” e “MODIFICAR” valores das variáveisem tempo de execução do programa, Lembre-se estamos em mododebug onde cada comando segue passo a passo o que pedimos.Principais comandos para utilizar um Debug
  152. 152. • 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 subrotinaou da função foi processado, o controle retorna ao comando seguinte doCALL 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 dalinha corrente são processados em um único passo. Se estiver posicionado emuma linha que chama uma subrotina, o Debugger processa a subrotina emmodo oculto e retorna para a linha seguinte a chamada da subrotina. Issopermite que pule nos comandos dentro da subrotina.– Não entra nas subrotinasPrincipais comandos para utilizar um Debug
  153. 153. • Retorno: Botão ou F7:– O debugger retorna de uma rotina para o ponto de controle definido noprograma principal. Use esta opção para retornar de uma subrotina, módulode 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ãoexistir mais breakpoints no programa e nenhum cursor for definido o sistemasai do modo debugging e executa o resto do programa normalmente.– Executa toda a rotina até o final, sem parar.Principais comandos para utilizar um Debug

×