Baixe o app para aproveitar ainda mais
Prévia do material em texto
ABAP PARA FUNCIONAIS Rio de Janeiro, 2016 Instrutor: Edgar de Souza Oliveira ABAP para Funcionais ABAP para Funcionais ÍNDICE CONCEITOS GERAIS ........................................................................................................................................................4 CONSIDERAÇÕES GERAIS SOBRE O SAP ABAP ............................................................................................................................. 5 AMBIENTE ABAP ............................................................................................................................................................6 REPOSITORY ....................................................................................................................................................................... 11 WORKBENCH ORGANIZER ..................................................................................................................................................... 13 PRINCIPAIS TRANSAÇÕES....................................................................................................................................................... 13 DICIONÁRIO DE DADOS ............................................................................................................................................... 15 Domínio ...................................................................................................................................................................... 15 Elemento de Dados .................................................................................................................................................... 16 Tabela Transparente .................................................................................................................................................. 16 Estrutura .................................................................................................................................................................... 17 Categoria de Tabela ................................................................................................................................................... 18 Visão ........................................................................................................................................................................... 18 Ajuda de Pesquisa ...................................................................................................................................................... 20 Objetos de Bloqueio ................................................................................................................................................... 21 AMPLIAÇÕES ............................................................................................................................................................... 22 EM PROGRAMAS ABAP ........................................................................................................................................................ 22 User Exits .................................................................................................................................................................... 22 Function Module Exit.................................................................................................................................................. 23 Enhancement Point .................................................................................................................................................... 23 EM INTERFACES GUI ............................................................................................................................................................ 24 Menu Exit ................................................................................................................................................................... 24 EM TELAS .......................................................................................................................................................................... 24 Screen Exit .................................................................................................................................................................. 24 Field Exit ..................................................................................................................................................................... 24 EM TABELAS E ESTRUTURAS .................................................................................................................................................. 26 Customer Include ....................................................................................................................................................... 26 Append Structure ....................................................................................................................................................... 26 BUSINESS ADD-INS (BADI) ................................................................................................................................................... 26 CARGAS E INTERFACES................................................................................................................................................. 29 SHDB........................................................................................................................................................................... 29 BAPI ............................................................................................................................................................................ 29 DIÁLOGO DE ATUALIZAÇÃO (SM30) ............................................................................................................................. 31 .................................................................................................................................................................................... 31 SAPSCRIPT X SMARTFORMS ........................................................................................................................................ 33 Sapscript ..................................................................................................................................................................... 33 Smartforms ................................................................................................................................................................ 34 LOCALIZAÇÃO DE INFORMAÇÕES NO AMBIENTE SAP .................................................................................................. 35 Lista de Utilização ...................................................................................................................................................... 35 Campos na Tela .......................................................................................................................................................... 37 ABAP para Funcionais ABAP para Funcionais Mensagens ................................................................................................................................................................. 38 Function Module Exit.................................................................................................................................................. 39 Business Add-Ins (BADI) ............................................................................................................................................. 42 CONHECIMENTO BÁSICO DE PROGRAMAS .................................................................................................................. 43 Reports .......................................................................................................................................................................43 Pool de Módulos (Online) ........................................................................................................................................... 43 Função ........................................................................................................................................................................ 43 Grupo de Função ........................................................................................................................................................ 44 Include ........................................................................................................................................................................ 44 Objetos da programação ABAP .................................................................................................................................. 44 Fluxo de Processamento ............................................................................................................................................. 50 PRINCIPAIS INSTRUÇÕES DA PROGRAMAÇÃO ABAP ................................................................................................... 52 ABAP DEBUGGER ......................................................................................................................................................... 59 Entendendo as Teclas do Debug ................................................................................................................................ 62 Visualizar Variáveis, Tabelas e Outros. ...................................................................................................................... 63 O que são Variáveis de Sistema ................................................................................................................................. 64 Como Colocar Pontos de Parada em Mensagens ....................................................................................................... 66 Como criar Watchpoint .............................................................................................................................................. 68 TRACE .......................................................................................................................................................................... 69 INTERPRETANDO UM DUMP ....................................................................................................................................... 71 ABAP QUERY ............................................................................................................................................................... 73 DICAS PARA UMA ESPECIFICAÇÃO FUNCIONAL ........................................................................................................... 74 4 ABAP para Funcionais ABAP para Funcionais Conceitos GeraisConceitos GeraisConceitos GeraisConceitos Gerais Pacotes (Classe de desenvolvimento): Armazenam conjunto de objetos de repositório de acordo com a sua aplicação. Representam uma forma de organização dos objetos de acordo com a sua aplicação e direcionam a forma de transporte com que eles serão transportados para as demais instâncias do sistema. Quando um objeto de repositório é criado, é obrigatória a informação do pacote no qual ele será criado e, caso este pacote precise ser posteriormente alterado, pode-se realizar esta operação através da entrada de menu “Ir para > Entrada catálogo objetos”. Exemplo de Pacote: Request: Armazena as modificações ou customizações feitas e que se deseja transportar para um determinado ambiente. Uma vez liberada a ordem de transporte mantém as alterações feitas até aquele momento. Novas alterações/customizações no mesmo lugar irão solicitar nova ordem de transporte. Objetos Client Dependent: Dependentes do mandante, por exemplo formulários de Sapscript, Relatórios de Report Writer/Painter, ABAP QUERY (se criada na área Standard), parametrização / customizações, conteúdo de tabelas etc. Objetos Client Independent: Independentes de mandante, por exemplo programas Z*, todos os programas standards, todas as funções, estrutura de tabelas etc. 5 ABAP para Funcionais ABAP para Funcionais Processamento em Background: Execução do programa de forma não interativa, ou seja, execução via job ou execução que não acontece através de telas de diálogo. Não é visível para o usuário. Variantes: Grupo de características previamente selecionados e armazenados, muito usado para execução em background. Spool: Registro criado quando uma informação é enviada para impressora ou outro dispositivo. Quando executamos um relatório em Background a informação gerada pode ficar armazenada no spool para consulta ou pode ser direcionada para a impressora caso o programa esteja preparado para isso, numa execução normal geralmente a informação vai para o spool. Job: Cadeia de programa(s) executado(s) cronologicamente um após o outro em background. Um job é constituído de um ou mais steps. O job pode ser criado quando se deseja: - Executar um ou mais programas periodicamente; - Executar programas demorados; - Executar um conjunto de passos sequenciados, vários programas que dependam da execução um dos outros; - Executar programas em paralelo. Considerações gerais sobre o SAP ABAPConsiderações gerais sobre o SAP ABAPConsiderações gerais sobre o SAP ABAPConsiderações gerais sobre o SAP ABAP • Todo comando ABAP termina com um ponto; • Toda instrução ABAP pode ser utilizada para mais de um comando. Para isso, deve ser sucedida por um “:”. Cada comando deve ser separado por uma “,”, sendo que o último comando do grupo de comandos deve ser finalizado por um ponto; • As linhas de comentário são iniciadas com o caractere “*” (asterisco). Neste caso, toda a linha do código é desconsiderada no momento da execução do programa; • Caso seja necessário incluir um comentário a partir de um determinado ponto da linha, utiliza-se o caractere “”” (aspas duplas). A partir deste caractere, todo o restante da linha é considerado comentário e não é executado; • Aspas simples são utilizadas para a definição de valores fixos e literais dentro de um programa ABAP; • Todos os programas ABAP devem ser ativados antes de serem executados; • A não observância dos padrões de sintaxe geram um erro que impedem a ativação do programa. 6 ABAP para Funcionais ABAP para Funcionais Ambiente ABAPAmbiente ABAPAmbiente ABAPAmbiente ABAP O Ambiente de trabalho ABAP constitui a plataforma de trabalho para desenvolvimentos baseados em ABAP, e disponibiliza uma série de ferramentas. As principais estão agrupadas abaixo: OBJECT NAVIGATOR O Object Navigator inclui todas as ferramentas necessárias para a criação, edição e visualização dos objetos do repositório, tais como pacotes, programas, grupos de funções, classes / interfaces, componentes Web Dynpro / interfaces, dentre outros. Pode ser acessado da transação SE80 ou do caminho de menu Ferramentas > ABAP Workbench > Síntese > Object Navigator. A tela do Object Navigator é dividida em duas partes, sendo uma área de navegação (à esquerda) e a área da ferramenta (na parte direita da tela). Em ambas está disponível o menu de contexto (funções acionadas pelo botão direito do mouse). Quando um objeto é selecionado através da área de navegação, automaticamente o Object 7 ABAP para Funcionais ABAP para Funcionais Navigator apresenta-o na ferramenta adequada na área direita da tela. A barra de ferramentas é atualizada de acordo com a ferramenta selecionada. ABAP DICTIONARY O ABAP Dictionary é a ferramenta utilizada para a criação das definições de dados do SAP ERP, tais como tabelas, estruturas, elementos de dados, categorias de tabelas, domínios e ajudas de pesquisa. Pode ser acessado através da transação SE11, ou docaminho de menu “Ferramentas > ABAP Workbench > Desenvolvimento > Dictionary”. 8 ABAP para Funcionais ABAP para Funcionais ABAP EDITOR O ABAP Editor é utilizado para a criação, edição e visualização de programas e seus demais componentes, tais como elementos de textos, variantes ou características técnicas. Diferentemente da SE80, não apresenta os componentes de maneira hierárquica, o que pode dificultar a navegação. Pode ser acessado através da transação SE38, ou do caminho de menu Ferramentas > ABAP Workbench > Desenvolvimento > Editor ABAP. FUNCTION BUILDER O Function builder é utilizado para a criação, edição e visualização de módulos de função. É possível também acessar os grupos de função, através da utilização da barra de menus. É acessado através da transação SE37, ou do caminho de menu “Ferramentas > ABAP Workbench > Desenvolvimento > Function Builder”. 9 ABAP para Funcionais ABAP para Funcionais CLASS BUILDER O Class Builder é utilizado para a criação, edição ou visualização de classes e interfaces do repositório (ABAP Objects), bem como os seus componentes (atributos, métodos, parâmetros de métodos, exceções, dentre outros). As classes e interfaces acessíveis através do Class Builder são apenas as globais, uma vez que as locais são definidas via código ABAP diretamente no programa onde são utilizadas. Pode ser acessado através da transação SE24, ou do caminho de menu “Ferramentas > ABAP Workbench > Desenvolvimento > Class Builder”. 10 ABAP para Funcionais ABAP para Funcionais SCREEN PAINTER O Screen Painter é utilizado para a criação, edição e visualização de telas ABAP. Nele é possível visualizar os atributos da tela e de cada um de seus elementos, bem como a sua lógica de processamento. A transação utilizada para o acesso ao Screen Painter é a SE51 e o caminho de menu é Ferramentas > ABAP Workbench > Desenvolvimento > Interface > Screen Painter. Para a visualização de uma tela no Screen Painter é necessário informar o nome do programa ao qual a tela pertence, bem como o seu número. O Screen Painter permite a visualização em modo gráfico das telas do repositório, se a opção “Screen Painter gráfico” estiver habilitada. Para habilitá-la, deve-se utilizar a entrada de menu “Utilitários > Opções” – e acionar a aba Screen Painter. 11 ABAP para Funcionais ABAP para Funcionais MENU PAINTER O Menu Painter é utilizado para criar, editar ou visualizar status de telas, objetos de interface, lista de status, barras de menu, listas de menu, definição de teclas de função, lista de funções e lista de títulos. Os objetos criados através do Menu Painter são utilizados para construir as interfaces para programas ABAP (menus, teclas de função, barra de títulos, dentre outros). Pode ser acessado através da transação SE41, ou do caminho de menu Ferramentas > ABAP Workbench > Desenvolvimento > Interface > Menu Painter. RepositoryRepositoryRepositoryRepository O Repositório R/3 é o ponto central onde os componentes desenvolvidos no ABAP/4 Development Workbench são armazenados. O repositório ABAP é onde fica todos os objetos desenvolvidos no ambiente SAP. Alguns dos objetos de desenvolvimento são: • Programas; • Grupos de função; • Tabelas; • Componentes Web dynpro; • Pacotes. Os objetos de repositório são independentes de mandante e são armazenados de acordo com a sua aplicação. Desta forma, é importante a introdução do conceito de pacotes, ou classes de desenvolvimento. A estrutura do repositório e subdividida de acordo com os componentes do aplicativo. Dentro de um componente de aplicação (por exemplo, FI), existem vários pacotes contendo uma subdivisão mais detalhada e logica dos objetos relevantes para aquele pacote. Transação SE84. 12 ABAP para Funcionais ABAP para Funcionais 13 ABAP para Funcionais ABAP para Funcionais Workbench OrganizerWorkbench OrganizerWorkbench OrganizerWorkbench Organizer Fornece funções para organizar projetos de desenvolvimento, registrar alterações em objetos e transportá-las para Qualidade e Produção. Está totalmente integrada com as ferramentas de customização o Customizing Organizer e é designada para suportar projetos de todos os tamanhos. Transações: SE09 e SE10. Principais TransaçõesPrincipais TransaçõesPrincipais TransaçõesPrincipais Transações BAPI BAPI Explorer CMOD Ampliações GS03 Exibir set SE09 Transport Organizer SE10 Transport Organizer SE11 ABAP Dictionary: atualização SE14 Utlitários para tabelas Dictionary SE15 Sistema info Dictionary SE16 Data Browser SE16N Data Browser New SE18 BADI Builder - definições SE19 BADI Builder - implementações SE24 Class Builder SE30 Análise tempo execução objetos ABAP SAT Análise tempo execução objetos ABAP SE32 ABAP/4 Atualização elementos texto SE35 Módulos de diálogo ABAP/4 SE36 Logical Database Builder SE37 Módulos de função ABAP/4 SE38 Editor ABAP SE39 Editor de tela dividida (novo) SE41 Menu Painter SE43 Atualização de menu de área SE51 Screen Painter SE54 Geração visão de tabela SE61 Documentação R/3 SE62 Utilitários setor industrial SE63 1ª tela tradução SE71 Formulário SAPscript SE72 Estilos SAPscript SE78 Administração de Imagens para Sapscript SE80 Object Navigator SE81 Hierarquia de aplicações SE82 Hierarquia de aplicações SE84 Sistema info Repository R/3 SE85 ABAP/4 Dictionary sistema info SE91 Atualização de mensagem 14 ABAP para Funcionais ABAP para Funcionais SE92 Nova atual.mensags.SysLog a part.4 SE93 Atualização de códigos de.transação SHD0 Variantes de transação e de tela SM04 Lista de usuários SM12 Exibir e eliminar bloqueios SM13 Administrar registros de atualização SM30 Chamada da atualização de visões SM36 Escalonar job em background SM37 Síntese da seleção de jobs SM50 Síntese do processo operacional SM51 Lista dos sistemas SAP SM59 Destinos RFC (exib.e atualização) SMARTFORMS SAP Smart Forms SFP Formulários interativos Adobe SMOD Administração de ampliações SAP SO10 SAPscript textos standard SQVI SAP Query: Criação de queries SQ00 SAP Query: executar queries SQ01 SAP Query: atualizar queries SQ02 SAP Query: atualizar InfoSet SQ03 SAP Query: atualização de grupos usuários SQ07 SAP Query: ajuste de idiomas ST05 Performance Trace ST22 ABAP análise dump SU20 Atualização dos campos autorização SU21 Atualizar objetos de autorização SU24 Verific.obj.autoriz.em transações SU53 Análise da verificação autorização SWO1 Business Object Builder 15 ABAP para Funcionais ABAP para Funcionais Dicionário de DadosDicionário de DadosDicionário de DadosDicionário de Dados O dicionário de dados representa as definições de modelos de dados no SAP. Nele são realizadas as definições de tabelas, seus campos, e características técnicas relacionadas a cada um destes campos. Os principais componentes são os seguintes: DomínioDomínioDomínioDomínio O domínio contém o tipo de dado e comprimento do campo. Podem conter os valores válidos para o campo, através de valores fixos entrados no domínio ou por uma tabela de valores. Algumas outras características importantes podem estar associadas diretamente ao domínio, como rotinas de conversão (que são executadas a cada vez que um campo com referência ao domínio é impresso ou exibido numa tela), informação se o campo aceita valores negativos, no caso de campos numéricos, ou se aceitam caracteres maiúsculos e minúsculos, no caso de textos. 16 ABAP para Funcionais ABAP para Funcionais Elemento de DadosElemento de DadosElemento de DadosElemento de Dados Os elementos de dados descrevem o significado de um campo no SAP. Nele são armazenados os textosdescritivos do campo e ele pode ou não estar relacionado a um domínio. Caso o elemento de dados esteja relacionado a um domínio, o campo assume as características técnicas do domínio. É possível a criação do elemento de dados como tipo incorporado, neste caso, as características técnicas do elemento de dados são definidas diretamente. O elemento de dados possui uma seção específica para os textos que o identificam no sistema: - Texto breve: texto de 10 posições; - Texto médio: texto de 20 posições; - Texto longo: texto de 40 posições; - Título: título de 55 posições. Tabela TransparenteTabela TransparenteTabela TransparenteTabela Transparente As tabelas transparentes são as tabelas que existem fisicamente no banco de dados e que armazenam dados no sistema. Na definição de uma tabela estão relacionados os seguintes componentes: - Campos: define o nome e o tipo dos campos da tabela. - Chave primária: define o registro de forma única. - Chaves Estrangeiras (Check Table): define o relacionamento entre a tabela e outras tabelas do sistema, usadas para manter a integridade dos dados no BD. - Opções Técnicas: controla como a tabela deve ser criada no Banco de Dados. - Índices: Para melhorar a performance nos acessos a tabela, pode-se criar índices secundários para ela. Uma tabela armazena dados de forma persistentes. 17 ABAP para Funcionais ABAP para Funcionais Uma tabela pode conter ainda declarações do tipo INCLUDE e do tipo APPEND, que são estruturas que são incorporadas à definição da tabela e representam campos criados no banco de dados. É desta forma que a SAP disponibiliza possibilidades para ampliação de tabelas standard. EstruturaEstruturaEstruturaEstrutura São aquelas em que os dados são preenchidos quando efetuamos cálculos em programas, passamos dados de um programa para outro, movimentamos campos em telas, etc. Os dados gravados em estruturas só são válidos em tempo de execução e não serão necessariamente armazenados em bancos de dados como nas tabelas transparentes. Apesar de sua definição ser bastante semelhante à de uma tabela transparente, com a presença de campos, elementos de dados e uma descrição, a principal diferença entre uma estrutura e uma tabela transparente é que a estrutura não é criada ao nível de banco de dados, ou seja, ela não possui nenhum tipo de conteúdo, mas apenas uma definição lógica de um agrupamento de informações. 18 ABAP para Funcionais ABAP para Funcionais Categoria de TabelaCategoria de TabelaCategoria de TabelaCategoria de Tabela Caracterizam-se por ser representações lógicas no dicionário de dados que não são criadas no banco de dados. Possuem uma estrutura associada e diferem destas pelo fato de poderem apresentar mais de um registro. São utilizadas principalmente como referência em definições de dados em programas e como parâmetros em funções ou classes. VisãoVisãoVisãoVisão É uma representação de relacionamento entre tabelas transparentes. Uma visão pode utilizar dados de uma ou mais tabelas transparentes. A visão não possui conteúdo em banco de dados, apenas reflete as informações que estão armazenadas nas tabelas transparentes relacionadas. Tipos de Visão: - Visão de Banco de Dados: é definida através do ABAP Dictionary (transação SE11) e pode acessar dados de uma ou mais tabelas transparentes. Esse tipo de visão é o mais comum e mais utilizado pelo SAP. 19 ABAP para Funcionais ABAP para Funcionais - Visão de projeção: é utilizada para ocultar campos de uma tabela de banco de dados. Desta forma, quando uma visão de projeção é criada, ela associa uma tabela transparente e os campos desnecessários podem ser omitidos. - Visão de Ajuda: utilizada para a criação de métodos de seleção em ajudas de pesquisa. Desta forma, quando uma ajuda de pesquisa é criada para um determinado campo, a visão de ajuda é acionada para a seleção dos dados que devem ser exibidos. 20 ABAP para Funcionais ABAP para Funcionais - Visão de Manutenção: utiliza uma ou mais tabelas dentro de uma lógica e podem criar, modificar ou exibir dados deste agrupamento de tabelas relacionadas. Uma grande diferença entre visões de banco de dados e visões de manutenção é que as visões de manutenção permitem a edição das informações das tabelas. Este tipo de visão é muito utilizado para a manutenção de informações de tabelas de configuração mas também podem ser utilizadas para a manutenção de informações em tabelas criadas (Transação SM30). Ajuda de PesquisaAjuda de PesquisaAjuda de PesquisaAjuda de Pesquisa A ajuda de pesquisa (F4) é uma função standard do sistema R/3. O usuário pode exibir uma lista de todas as entradas possíveis para um campo na tela de acordo com parâmetros indicados por ele. Podem possuir parâmetros de importação e parâmetros de exportação, que são utilizados como chaves para obter as informações no banco de dados disponibilizando, desta forma, os valores possíveis. 21 ABAP para Funcionais ABAP para Funcionais Objetos de BloqueioObjetos de BloqueioObjetos de BloqueioObjetos de Bloqueio Os objetos de bloqueio são elementos criados no dicionário ABAP utilizado para realizar controle de bloqueio, ou lock, em registros de tabelas do SAP. Quando um objeto de bloqueio é criado no SAP, dois módulos de função são automaticamente disponibilizados, um para bloquear e outro para desbloquear os registros. No caso do objeto de bloqueio EMMARAE, os módulos de função disponibilizados para controlar o bloqueio são: • ENQUEUE_ EMMARAE – realiza o bloqueio do registro; • DEQUEUE_ EMMARAE– realiza o desbloqueio do registro. Quando um registro é bloqueado através da função ENQUEUE, é criado um registro lógico em todo o sistema SAP, que pode ser visualizado e administrado através da transação SM12: 22 ABAP para Funcionais ABAP para Funcionais AmpliaçõesAmpliaçõesAmpliaçõesAmpliações O SAP disponibiliza possibilidades de ampliação no código e nos processos standard. Podemos ampliar o sistema nos seguintes níveis: • Em programas ABAP (User Exits, Function Module Exit and Enhancement Point) • Em interfaces de GUI (Menu exit) • Em telas inserindo uma “subscreen” em uma área especificada pela SAP (Screen-Exit) • Em telas processando um código que se refere a um campo específico na tela (Field-Exit) • No dicionário ABAP em tabelas ou estruturas (Table enhancement) • Business Add-Ins (BADI) Em programas ABAPEm programas ABAPEm programas ABAPEm programas ABAP User ExitsUser ExitsUser ExitsUser Exits As USEREXITs constituem subrotinas previstas pela SAP em pontos específicos de programas standard que podem receber código de cliente. São utilizadas para ampliações nos módulos e geralmente disponibilizam um include que armazenam todas as subrotinas previstas. Alguns exemplos de user exits são: Programa Objetivo MV45AFZZ For entering installation-specific FORM routines and for using user exits, which may be required and can be used if necessary. MV45ATZZ For entering metadata for sales document processing. User-specific metadata must start with "ZZ". MV45AOZZ For entering additional installation-specific modules for sales document processing which are called up by the screen and run under PBO (Process Before Output) prior to output of the screen. The modules must start with "ZZ". MV45AIZZ For entering additional installation-specific modules for sales document processing. These are called up by the screen and run under PAI (Process After Input) after data input (for example, data validation). The modules must start with "ZZ". MV45EFZ1 For entering installation-specific FORM routines and for using user exits, which may be required and can be used if necessary. O include é aberto para modificações pelo cliente e o código contido nas subrotinas é chamado emmomentos específicos de acordo com a sua aplicação. Nota: Para mais informações, consulte: http://help.sap.com/saphelp_46c/helpdata/en/1c/f62c7dd435d1118b3f0060b03ca329/content.htm 23 ABAP para Funcionais ABAP para Funcionais Function Module ExitFunction Module ExitFunction Module ExitFunction Module Exit Exits de função, também chamadas de exits de cliente, são ampliações disponibilizadas sob a forma de grupos de função, disponível para um grande número de aplicações standard. As exits de cliente são reunidas em projetos de ampliação, que possuem componentes associadas. Para visualizar os projetos ampliações disponíveis, utiliza-se a transação SMOD. Geralmente são nomeadas utilizando o padrão “EXIT” + nome do programa standard a que se aplicam + sequencial numérico dentro do grupo de funções. As exits de programa podem ser visualizadas através da transação SE37 e são chamadas no código standard através da instrução CALL CUSTOMER FUNCION. Transação SMOD: Aqui você tem acesso a todas as ampliações que a SAP disponibiliza para que você possa colocar seu código Z no meio do processamento Standard. Nessa transação você também pode acessar todos os componentes de uma ampliação, que são as funções, áreas de telas, includes e etc, onde você vai codificar de verdade. Transação CMOD: Onde você irá criar um novo projeto, que pode agrupar várias ampliações. Enhancement PointEnhancement PointEnhancement PointEnhancement Point A partir do ECC 6.0 a SAP disponibilizou uma nova forma de ampliação em programas standard, os enhancements. Esta modalidade de implementação tornou mais flexível e ampliou as possibilidades de criação de código do cliente nos códigos standard da SAP. Entre os enhancements, podem-se distinguir os pontos de ampliação explícitos e os pontos de ampliação implícitos. Os pontos de ampliação explícitos são pontos de ampliação previstos pela SAP, que podem estar presentes em qualquer parte do código de um programa standard: 24 ABAP para Funcionais ABAP para Funcionais Nos pontos de ampliação implícitos, determinadas seções da maior parte dos programas standard da SAP estão preparadas para receber um enhancement, que podem ser utilizados pelo desenvolvedor. Os principais pontos de ampliação implícito previstos são: Após o final de linhas de código em programas executáveis, grupos de função, module pools, pools de subrotinas e programas include; o Antes da primeira e depois da última linha em subrotinas; o Antes da primeira e depois da última linha em módulos de função; o No final de declarações de classes locais; o No final de declarações de dados em programas, antes da cláusula END. Para uma visualização completa dos pontos de ampliação existentes no código, deve-se acionar a opção de menu “Programa > Ampliar” e em seguida “Processar > operações de ampliação > Visualizar pontos de ampliação implícitos” Em interfaces GUIEm interfaces GUIEm interfaces GUIEm interfaces GUI Menu ExitMenu ExitMenu ExitMenu Exit Utilizada para a inclusão de funções específicas do cliente em menus da SAP. Em Em Em Em TelasTelasTelasTelas Screen ExitScreen ExitScreen ExitScreen Exit Disponibilizam uma área de tela chamada pela aplicação standard na qual é possível incluir campos específicos do cliente. Field ExitField ExitField ExitField Exit Utilizada para inserir lógicas em programas standard. Ex: para validar a entrada de determinado Campo de um programa Standard. São criadas com referência ao elemento de dados e podem ser realizadas para qualquer campo de tela presente numa tela SAP. Para a ativação, é necessário acessar a transação CMOD. Em seguida, deve-se digitar na tela de comandos o código “PRFB”. Após estes passos, é exibida uma lista de todas as field exits criadas no sistema: Para todas as field exits criadas, existe um módulo de função associado, nomeada através do padrão 25 ABAP para Funcionais ABAP para Funcionais “FIELD_EXIT” + descritivo, onde o código de validação para o campo pode ser inserido. Uma restrição em field exits é que apenas mensagens de erro podem ser utilizadas. Mensagens de informação ou aviso não são processadas. 26 ABAP para Funcionais ABAP para Funcionais Em Em Em Em Tabelas e EstruturasTabelas e EstruturasTabelas e EstruturasTabelas e Estruturas Customer IncludeCustomer IncludeCustomer IncludeCustomer Include Podem ser disponibilizados customer includes para a inclusão de campos específicos do cliente em tabelas standard. Geralmente são disponibilizadas via projetos de ampliação. Append StructureAppend StructureAppend StructureAppend Structure Utilizada para a inclusão de campos específicos em uma tabela Standard. Quando uma APPEND structure é criada, os campos nela previstos são automaticamente incorporados à tabela standard ao nível de banco de dados. Business AddBusiness AddBusiness AddBusiness Add----Ins (BADI)Ins (BADI)Ins (BADI)Ins (BADI) Mais recentemente a SAP ampliou o conceito de modificações em seu código e, neste contexto, surgiram as Business Add Ins, ou BADI’S. A principal diferença das BADIs em relação às suas predecessoras é que elas são implementadas no conceito de orientação a objetos e permitem a reutilização de ampliações. Desta forma, se a BADI aceitar implementações múltiplas, pode-se criar uma implementação para cada aplicação específica, o que torna mais organizada a implementação de códigos de ampliação. As definições de BADIs disponíveis no sistema SAP estão relacionadas através da transação SE18. Para implementá-las, deve-se utilizar a transação SE19. 27 ABAP para Funcionais ABAP para Funcionais 28 ABAP para Funcionais ABAP para Funcionais Assim como as exits de programa, as BADI’s podem disponibilizar: • Ampliações de programas; • Ampliações de menu; • Ampliações de tela. Quando se utiliza uma BADI, o sistema cria automaticamente uma classe, que contém uma interface (atributos, métodos, parâmetros), conforme disponibilizado em sua definição. O código ABAP é inserido nos métodos desta classe. É necessário ativar a BADI para que o código seja chamado pelas aplicações standard. 29 ABAP para Funcionais ABAP para Funcionais Cargas e InterfacesCargas e InterfacesCargas e InterfacesCargas e Interfaces O SAP ERP disponibiliza diversas tecnologias para integração com outras aplicações. As mais comuns são: • RFCs (remote function call) - são módulos de função que permitem acesso remoto; • IDOC (intermediate Document) - proporcionam conexão entre aplicações de diferentes aplicações usando um sistema de informações baseadas em mensagens; • Webservices – interfaces implementadas sob a forma de serviços, que suportam os padrões XML (eXtensible Markup Language), SOAP (Simple Object Access Protocol); Web Service Definition Language (WSDL) e Universal Description, Discovery, and Integration (UDDI); • SHDB (Batch Input) – O Batch Input é uma técnica standard para a transferência de grandes volumes de dados para o Sistema R/3; • BAPI – APIs standard SAP implementadas sob a forma de RFC que podem ser utilizadas para comunicação entre o SAP e outros sistemas; • Interfaces inbound e outbound via transferência de arquivos. SHDBSHDBSHDBSHDB O SAP ABAP disponibiliza algumas ferramentas de migração de dados de sistemas legados (sistemas não SAP) para sistemas SAP. Uma destas ferramentas é o método BDC (Batch Data Comunication). Esta ferramenta trabalha, geralmente, realizando uma leitura das informações a serem migradas para uma determinada transação SAP a partir de um arquivo de texto ou em formato de planilha e realizando a sua entrada no SAP através do processo BDC. Este processo nada mais representa do que a emulação de uma transação SAP. Para realizar um processo BDC é necessário realizar a gravaçãodo mapeamento dos processos (transações) a serem utilizados. Esta gravação pode ser realizada através da transação SHDB. BAPIBAPIBAPIBAPI BAPI, abreviação de Businness Application Programming Interface, são módulos de função standard que proporcionam processamentos específicos para diversos processos do SAP ERP. São implementados como métodos API de objetos de negócio relacionados a um determinado cenário de negócio e implementadas sob a forma de módulos de função, que podem ser acessados via SE37. Foram disponibilizadas pela SAP desde o release 4.5 A e podem ser utilizadas para a criação de interfaces, uma vez que os módulos de função que implementam as BAPIs são do tipo RFC. As BAPIs, quando utilizadas para processamento de informações (carga de dados) possuem algumas vantagens em relação aos processos BDC: • Não é necessário o mapeamento de telas, uma vez que os parâmetros da BAPI são informados através dos parâmetros do módulo de função; • O tratamento de erros e feito de forma automática, e retorna sob a forma de uma tabela, nomeada RETURN para o programa de chamada; 30 ABAP para Funcionais ABAP para Funcionais • BAPIs costumam ter performance superior aos processos BDC, uma vez que os processamentos são realizados internamente, e não através da emulação de telas. Para obter uma lista das BAPIs disponíveis, deve-se utilizar a transação BAPI. A navegação pode ser realizada através da hierarquia de aplicações SAP ou em ordem alfabética pelo nome do objeto de negócios. Quando o objeto de negócio referente à aplicação desejada é localizado, uma lista dos métodos disponíveis para o objeto pode ser obtida. Cada um dos métodos existentes geralmente representa uma BAPI, e toda a documentação para o método pode ser obtida. As BAPIs podem ser previamente testadas no ambiente de testes do Function Builder (transação SE37), e se o resultado esperado for o que a BAPI realiza, podem ser implementadas no código ABAP via chamada através de CALL FUNCTION. Teste de BAPI via Function Builder: 31 ABAP para Funcionais ABAP para Funcionais Diálogo de Diálogo de Diálogo de Diálogo de Atualização (SM30)Atualização (SM30)Atualização (SM30)Atualização (SM30) O SAP ABAP disponibiliza uma ferramenta de automatização de criação de diálogos para atualização de tabelas do cliente. Esta opção está disponível através do dicionário de dados, através da opção “Utilitários > Gerador de atualização de tabelas”, ou através da transação SE54. Quando se opta pela criação, uma tela adicional é exibida e devem ser informados, obrigatoriamente: • O grupo de atualizações do diálogo de manutenção; • Um grupo de funções para a criação da tela; • Se a atualização será realizado em nível único (apenas uma tela), ou em dois níveis (duas telas de manutenção); • O número das telas de manutenção a serem criadas. Após informação os campos necessários e o botão novo, o sistema automaticamente gera um diálogo de manutenção para a tabela, que pode ser utilizado através da transação SM30. 32 ABAP para Funcionais ABAP para Funcionais 33 ABAP para Funcionais ABAP para Funcionais Sapscript x SmartformsSapscript x SmartformsSapscript x SmartformsSapscript x Smartforms SapscriptSapscriptSapscriptSapscript SAPscripts é uma ferramenta de processamento de textos disponibilizada pelo SAP que tem a finalidade de realizar saída de informações em layouts elaborados. Podem ser utilizadas para a saída de textos em formulários pré-impressos e também para saída de informações em formato gráfico. Os SAPscripts podem ser criados através da transação SE71 e, para a sua execução, necessitam de um programa de impressão, que realizam a seleção das informações e acionam os eventos de impressão definidos dentro do formulário. Os componentes principais de um programa SAPscript são: • Cabeçalho: armazena informações de controle do SAPscript e definições gerais de impressão; • Parágrafos e formatos de caracteres: local onde são definidas as características das fontes e parágrafos, bem como alinhamento, espaçamento, entre outros; • Janelas e elementos de textos: são as áreas de texto do formulário, onde são armazenados os textos a serem impressos e os comandos de controle do SAPscript; • Páginas: são definições individuais de páginas de um formulário e informações; • Janelas de páginas: informação sobre a distribuição das janelas dentro da página, que ajuda a determinar o layout de saída do formulário. O programa de impressão do formulário utiliza as funções OPEN_FORM, WRITE_FORM e CLOSE_FORM para realizar a impressão do SAPscript, e as informações entre o formulário e as variáveis e tabelas internas globais definidas no SAPscript são visíveis no formulário para utilização na impressão. 34 ABAP para Funcionais ABAP para Funcionais SmaSmaSmaSmartformsrtformsrtformsrtforms Os smartforms foram introduzidos no SAP a partir da versão 4.6C como os sucessores dos SAPscripts. Eles provêm uma interface gráfica amigável para a criação de programas que necessitam efetuar saídas de relatórios elaborados. Esta ferramenta possui algumas vantagens em relação à sua predecessora: • Criação mais rápida de relatórios; • Adaptação de relatórios sem a exigência de conhecimento de programação baseada numa interface gráfica com o usuário; • Presença de relatórios previamente disponibilizados pela SAP. Os smartforms são disponíveis através da transação de mesmo nome, SMARTFORMS. Ao contrário dos SAPscripts, em que a sequência e o fluxo de processamento do formulário é determinado pelo programa de impressão, os smartforms recebem os parâmetros do programa de chamada através de uma interface e trabalham as informações internamente para a saída mais adequada do layout. São sempre associados a um estilo, onde estão definidas as informações de parágrafos (tamanho de fonte, alinhamento). Exemplo de definição de smartform: 35 ABAP para Funcionais ABAP para Funcionais Localização de Informações no Ambiente SAPLocalização de Informações no Ambiente SAPLocalização de Informações no Ambiente SAPLocalização de Informações no Ambiente SAP Na maior parte das telas do SAP ERP está disponível a opção de menu “Sistema > Status”, que apresenta uma tela conforme a seguinte: Lista de Utilização Lista de Utilização Lista de Utilização Lista de Utilização A partir de qualquer objeto do repositório (programas, tabelas, estruturas, transações), é possível criar uma lista de utilizações, e obter uma lista de onde o objeto é utilizado. 36 ABAP para Funcionais ABAP para Funcionais 37 ABAP para Funcionais ABAP para Funcionais Campos na TelaCampos na TelaCampos na TelaCampos na Tela A partir de uma tela SAP, pode-se acionar a ajuda para o campo e obter o nome do campo onde se encontra a informação no sistema. Quando a informação apresentada for parte de uma estrutura, é possível, através da navegação SAP, chegar à tabela transparente em que o campo ocorre, através de pesquisa pelo elemento de dados. F1 para um campo Clicar em “Informação técnica” 38 ABAP para Funcionais ABAP para Funcionais MensagensMensagensMensagensMensagens Quando uma mensagem ocorre em um programa ABAP, é possível obter o número da mensagem gerada e navegar até os programas onde a mensagem é prevista. 39 ABAP para Funcionais ABAP para Funcionais Function Module ExitFunction Module ExitFunction Module ExitFunction Module Exit 1º Passo) Como Encontrar a User-Exit? • /H no standard, e colocar um Breakpoint no comando CALL CUSTOMER-FUNCTION. Esse comando e o que chama as funções registradas como componentes em aplicações da SMOD. • Preencher com *vendas* o campo texto breve assim irátrazer algumas ampliações de SD. 40 ABAP para Funcionais ABAP para Funcionais Para o exemplo, utilizar a ampliação V45P0001 de SD: 2º Passo) Criar o Projeto na CMOD: Criar um projeto Z para agrupar ampliações. Acessar a transação SMOD, de um nome Z para o projeto. • Clicar em Criar, colocar uma descrição; 3º Passo) Adicionar as ampliações da SMOD: Dentro da tela do Projeto, clicar em modificar, e depois em “Ampliação atribuição” Colocar a ampliação que foi encontrada na SMOD e Salvar. 4º Passo) Implementar os componentes da ampliação: Ainda dentro da tela de ampliações do seu projeto, coloque a linha sobre a ampliação que foi inserida e clicar em “Componentes”: Será dentro deste componente que deve-se inserir o Código Abap desejado. Um duplo-clique no nome da “Exit da Função”, te levara para a criação do Código Z: 41 ABAP para Funcionais ABAP para Funcionais Uma Include Z já estará vinculada ao Componente selecionado. Apesar de ela estar codificada, ela ainda não existe. Deverá ser criada, e para isso basta dar dois cliques sobre o nome do include. Depois de criar a INCLUDE, incluir o código ABAP desejado, ativar e salvar. Voltando a tela de Componentes dentro do projeto criado, Note que o “Impl” agora tem um check verde, indicando que aquela exit tem um código. Note também que tem botões de Ativar. Pode-se ativar/desativar componentes individualmente em suas ampliações. 5º Passo) Ativando Implementação Z: Clicar na linha da Exit da Função que foi criada, e clicar no botão de Ativar. 42 ABAP para Funcionais ABAP para Funcionais Business AddBusiness AddBusiness AddBusiness Add----Ins (BADI)Ins (BADI)Ins (BADI)Ins (BADI) O modo mais fácil e procurando na transação SPRO. Outra maneira e procurar dentro do código do programa standard pelo método da Classe que instancia as BADIs (CL_EXITHANDLER-GET_INSTANCE). Buscando a declaração da variável passada ao parâmetro instance você descobre a interface da BADI que está sendo instanciada. Podemos também encontrar uma BADI colocando um Break-Point na Função SXV_GET_CLIF_BY_NAME. 43 ABAP para Funcionais ABAP para Funcionais Conhecimento Básico de ProgramasConhecimento Básico de ProgramasConhecimento Básico de ProgramasConhecimento Básico de Programas Um programa ABAP é basicamente constituído por 2 seções, definições de dados onde estão contidas as definições de variáveis que serão utilizadas no seu processamento, sua seção principal, onde está contida a lógica de processamento. A lógica principal é a seção do programa onde estão contidas as instruções principais do programa, tais como acessos ao banco de dados, tratamento das informações, gravação de arquivos, chamada de funções de atualização, saídas de lista ou mensagens de informação ao usuário. O programa pode ou não possuir uma saída de lista, ou conter uma interação com o usuário sob a forma de telas. Há diferentes tipos de programas ABAP. Cada um deles tem uma finalidade e aplicação específicas, que são detalhadas abaixo. ReportsReportsReportsReports São programas executáveis podem conter todos os blocos de processamento possíveis em ABAP, com exceção de módulos de função. São iniciados com o comando REPORT e podem ser chamados a partir de outros programas a partir do comando SUBMIT. Podem ser criados códigos de transações para associação a um programa do tipo executável. Pool de Módulos (Online)Pool de Módulos (Online)Pool de Módulos (Online)Pool de Módulos (Online) São iniciados através do comando PROGRAM. Com exceção dos blocos de eventos e de módulos de função, podem conter todos os blocos de processamento suportados pelo ABAP. Um programa do tipo pool de módulos é também conhecido como um programa online, uma vez que são utilizados para a criação de diálogos com o usuário. A característica principal de um programa do tipo pool de módulos é a presença de uma tela, com suas respectivas lógicas de processamento. Só podem ser iniciados a partir de um código de transação, e este código de transação necessariamente deve estar associado a um número de tela. FunçãoFunçãoFunçãoFunção Função é uma ferramenta usada para otimizar programas como rotinas podendo ser usado em vários programas ao mesmo tempo. 44 ABAP para Funcionais ABAP para Funcionais Grupo de FunçãoGrupo de FunçãoGrupo de FunçãoGrupo de Função São introduzidos com o comando FUNCTION-POOL e neste tipo de programa é permitida a existência de módulos de função. Como o nome já diz, agrupa funções. IncludeIncludeIncludeInclude Ao contrário dos demais tipos de programa, os programas do tipo include não podem ser compilados separadamente. Funcionam unicamente como um repositório de código fonte ABAP e ajudam na organização e modularização dos demais tipos de programa. Objetos da programação ABAPObjetos da programação ABAPObjetos da programação ABAPObjetos da programação ABAP Telas de Seleção Uma tela de seleção é uma tela criada por código ABAP, e é utilizada basicamente como a primeira tela de um programa, para a entrada de informações iniciais, particularmente nos programas do tipo REPORT. Quando a definição de uma tela de seleção é incluída num programa ABAP, a tela é automaticamente criada e exibida no momento da chamada do programa. Os principais comandos utilizados para a criação de telas de seleção são: Comando Descrição SELECTION-SCREEN Utilizado para opções de formatação de layout numa tela de seleção, tais como blocos, frame, linhas divisórias, linhas de comentário, linhas em branco, entre outros. Pode ser utilizado também para definir telas de seleção em programas do tipo pool de módulos. Neste caso o número da tela deve ser explicitamente declarado. Para mais detalhes, consultar a documentação em http://help.sap.com/saphelp_45b/helpdata/en/34/8e73f26df74873e1000 0009b38f9b8/content.htm PARAMETERS Declara um campo do tipo parâmetro que recebe um valor único na tela. Tem algumas opções de formatação, tais como: • Referência direta a um tipo ABAP; • Referência a um campo de tabela ou estrutura do dicionário; • Saída do tipo checkbox; • Saída do tipo radiobutton SELECT-OPTIONS Declara um campo do tipo parâmetro que pode receber valores múltiplos. O campo utilizado como referência no SELECT-OPTIONS deve estar declarado no programa ABAP (instruções TABLES ou DATA). 45 ABAP para Funcionais ABAP para Funcionais Exemplo de Parameters: SELECTION-SCREEN BEGIN OF BLOCK bloco1 WITH FRAME. PARAMETERS p_lifnr TYPE lfa1-lifnr. SELECTION-SCREEN END OF BLOCK bloco1. Exemplo de Select-Options: TABLES lfa1. SELECTION-SCREEN BEGIN OF BLOCK bloco2 WITH FRAME. SELECT-OPTIONS s_lifnr FOR lfa1-lifnr. SELECTION-SCREEN END OF BLOCK bloco2. Tipos de Dados O ABAP possui um conjunto de tipos de dados elementares, que são utilizados na definição das informações que serão utilizadas pelo programa. Tipo de Dados Tamanho inicial do campo Tamanhos válidos para o tipo de campos Valor Inicial Significado Tipos numéricos I 4 4 0 Número inteiro F 8 8 0 Número ponto flutuante P 8 1 - 16 0 Número compactado Tipos alfanuméricos C 1 1 - 65535 ' … ' Campo de texto (alfanumérico) D 8 8 '00000000' Campo data (Formato: YYYYMMDD) N 1 1 - 65535 '0 … 0' Caracteres numéricos T 6 6 '000000' Campo hora (formato: HHMMSS) Hexadecimal 46 ABAP para Funcionais ABAP para Funcionais X 1 1 - 65535 X'0 … 0' Campo hexadecimal Além dos tipos de dados elementares, existem outras formas para a declaração de informações num programa ABAP. As principais são: • Referência direta a um elemento de dados; • Referência a um campo de tabela ou estrutura; • Referência a uma outra variável do próprio programa. Definições de Tipos Além dos tipos elementares, tipos complementares podem ser definidosdentro de um programa ABAP. Estas definições são realizadas através das instruções TYPES. Os tipos declarados dentro de um programa somente podem ser utilizados dentro do próprio programa. As definições de tipos são utilizadas principalmente para a criação de tipos de dados complexos que não precisam ser definidos sucessivas vezes dentro de um programa e podem ser utilizados na definição de diferentes variáveis e / ou tabelas internas. TYPES: BEGIN OF ty_lfa1, lifnr TYPE lfa1-lifnr, name1 TYPE lfa1-name1. TYPES: END OF ty_lfa1. Variáveis As variáveis são definições utilizadas num programa ABAP para a criação de uma área de memória identificada que pode ser utilizada para o tratamento de informações em tempo de execução. Quando um programa ABAP é executado, as variáveis definidas são criadas pelo interpretador ABAP em tempo de execução e podem ser utilizadas para receber e tratar valores que o programa recebe, acessa ou calcula. São definidas através da instrução DATA e devem ter um tipo associado. Caso a informação do tipo seja omitida na definição de uma variável, o interpretador ABAP criará automaticamente uma variável do tipo C de uma posição. Exemplos de definições de variáveis: DATA: v_char(20) TYPE c, v_number_int TYPE i, v_lifnr TYPE lfa1-lifnr, v_name1 TYPE lfa1-name1. Além das variáveis simples, que representam uma área de memória unicamente identificada no tempo de execução de um programa, podem ser definidas também variáveis complexas, que caracterizam- se principalmente pela existência de mais de um campo com uma identificação em comum. Seguem alguns exemplos de definições de variáveis complexas num código ABAP: 1. Definições a partir de tipos definidos no programa TYPES: BEGIN OF ty_lfa1, lifnr TYPE lfa1-lifnr, name1 TYPE lfa1-name1. TYPES: END OF ty_lfa1. DATA wa_lfa1 TYPE ty_lifnr. 47 ABAP para Funcionais ABAP para Funcionais 2. Definições através do comando DATA: DATA: BEGIN OF wa_lfa1, lifnr TYPE lfa1-lifnr, name1 TYPE lfa1-name1. DATA: END OF wa_lfa1. 3. Definições a partir de estruturas do dicionário: DATA wa_lfa1 TYPE lifnr. Tabela Interna Além das variáveis planas, conceituadas previamente, podem ser definidas também tabelas internas num programa ABAP. As tabelas internas caracterizam-se pelo fato de, ao contrário das variáveis planas, poderem receber várias linhas de características semelhantes. Isto significa que, quando uma tabela interna é definida dentro de um programa, a área de memória criada pode receber n registros. Há diferentes tipos de tabelas internas que podem ser definidos em um programa: Standard É o tipo mais elementar de tabela interna e também o mais utilizado. Este tipo de tabela permite a criação de vários registros e as operações nestes registros são realizadas através de operações de índice. Sorted Uma tabela do tipo SORTED caracteriza- se por possuir uma chave, e os registros são automaticamente ordenados quando criados na tabela através desta chave Hashed Uma tabela do tipo HASHED caracteriza- se por também possuir uma chave e pelo fato de que todas os seus registros deverem possuir uma chave única. Ou seja, este tipo de tabela não permite a existência de existir mais de um registro com chaves repetidas. Uma tabela interna pode ou não possuir uma linha de cabeçalho. Quando a tabela interna é definida com cabeçalho, as operações de leitura, modificação de informações ou criação de linhas são realizadas através de sua linha de cabeçalho. Quando a tabela interna é definida sem uma linha de cabeçalho, é necessário definir uma área de trabalho separadamente para que se possa trabalhar com as informações da tabela interna. Há diversas maneiras de se declarar uma tabela num programa ABAP. As principais são: 1. Definição de uma tabela interna a partir de um tipo: TYPES: BEGIN OF ty_lfa1, lifnr TYPE lfa1-lifnr, name1 TYPE lfa1-name1. TYPES: END OF ty_lfa1. DATA: it_lfa1 TYPE TABLE OF ty_lifnr, wa_lfa1 TYPE ty_lifnr. A tabela interna IT_LFA1 é criada sem uma linha de cabeçalho e, neste caso, é necessária a declaração de WA_LFA1 para que se possa trabalhar com o seu conteúdo. Definição de uma tabela interna com os seus campos através do comando DATA e suplemento OCCURS: 48 ABAP para Funcionais ABAP para Funcionais DATA: BEGIN OF it_lfa1 OCCURS 0, lifnr TYPE lfa1-lifnr, name1 TYPE lfa1-name1. DATA: END OF it_lfa1. Quando se utiliza o suplemento OCCURS na declaração de uma tabela interna, uma linha de cabeçalho é automaticamente criada. 2. Definição de uma tabela interna a partir de uma estrutura: DATA: it_lfa1 TYPE TABLE OF lfa1, wa_lfa1 TYPE lfa1. Neste caso, a tabela é criada sem uma linha de cabeçalho, sendo necessário a declaração de uma estrutura auxiliar para se trabalhar com as informações do conteúdo da tabela. 3. Definição de uma tabela interna utilizando o comando INCLUDE STRUCTURE: DATA: BEGIN OF it_lfa1 OCCURS 0. INCLUDE STRUCTURE lfa1. DATA: END OF it_lfa1. Neste caso, a tabela é criada com todos os campos existentes na tabela transparente LFA1. 4. Definição de uma tabela interna a partir de uma categoria de tabela: DATA it_lfa1 TYPE bbp_lfa1_t. Neste caso, a tabela é criada a partir de uma categoria de tabela do dicionário de dados, não sendo necessária o suplemento OCCURS, uma vez que o interpretador ABAP já compreende que trata-se de uma tabela interna. Neste caso, também é necessário definir uma estrutura auxiliar, uma vez que a tabela é criada sem uma linha de cabeçalho. 5. Definição de tabelas internas com linha de cabeçalho: DATA it_lfa1 TYPE bbp_lfa1_t WITH HEADER LINE. DATA: it_lfa1 TYPE TABLE OF lifnr WITH HEADER LINE. TYPES: BEGIN OF ty_lfa1, lifnr TYPE lfa1-lifnr, name1 TYPE lfa1-name1. TYPES: END OF ty_lfa1. DATA: it_lfa1 TYPE TABLE OF lifnr. WITH HEADER LINE. 49 ABAP para Funcionais ABAP para Funcionais Constantes Uma constante é um tipo de variável que possui um único valor durante todo o tempo de execução do programa. Este valor não pode ser alterado pela lógica de programa. A sua definição é realizada através da instrução CONSTANTS. Na definição de uma constante, o suplemento VALUE é obrigatório. CONSTANTS: c_pi TYPE p DECIMALS 10 VALUE '3.1415926536'. CONSTANTS: BEGIN OF myaddress, name TYPE c LENGTH 20 VALUE 'Enhancement ', street TYPE c LENGTH 20 VALUE 'Rua sobe e desce', number TYPE p VALUE 12, postcode TYPE c LENGTH 9 VALUE '11111-000', city TYPE c LENGTH 20 VALUE 'Rio de Janeiro', END OF myaddress. Estrutura de Sistema (SYST) O ambiente SAP disponibiliza em tempo de execução a estrutura SYST, que contém informações de sistema que podem auxiliar no desenvolvimento. Pode ser mapeada também através da nomenclatura SY + “-“ + nome do campo. Algumas das informações disponíveis são: • Usuário corrente (SY-UNAME); • Data do sistema (SY-DATUM); • Hora do sistema (SY-UZEIT); • Idioma de logon (SY-LANGU). Uma lista mais abrangente dos campos de sistema disponíveis através da estrutura SYST. 50 ABAP para Funcionais ABAP para Funcionais Fluxo deFluxo deFluxo deFluxo de ProcessamentoProcessamentoProcessamentoProcessamento Um programa ABAP do tipo executável possui uma sequência lógica de processamento que é definida de acordo com a definição de alguns eventos. A sequência de comandos contida no evento determina a ordem em que ele será executado pelo processador ABAP. Alguns dos principais eventos são: INITIALIZATION O evento INITIALIZATION é executado logo após a execução do evento LOAD- OF-PROGRAM e antes da exibição da tela de seleção, caso ela exista. Pode ser utilizado para definir valores iniciais para parâmetros. AT SELECTION-SCREEN O evento AT SELECTION-SCREEN é relacionado ao processamento da tela de seleção doprograma, e pode ser executado em diferentes momentos ou ações do usuário. Algumas de suas variações são: AT SELECTION-SCREEN OUTPUT: Executado no momento em que a tela está sendo construída AT SELECTION- SCREEN ON: Executado no momento em que há alguma ação associada ao elemento de tela relacionado ao suplemento ON AT SELECTION-SCREN ON VALUE-REQUEST HELP- REQUEST FOR: relacionado à ação do usuário (ajuda para pesquisa ou ajuda para o campo) relacionada ao campo associado ao suplemento FOR AT SELECTION- SCREEN: executado em toda e qualquer operação na tela START-OF-SELECTION O evento START-OF-SELECTION é executado imediatamente após a tela de seleção e geralmente contém as instruções principais de um programa ABAP END-OF-SELECTION O evento END-OF-SELETION é executado imediatamente após a execução do START-OF-SELECTION. No caso dos programas definidos com bancos de dados lógicos, somente é executado após a finalização das atividades de seleção. 51 ABAP para Funcionais ABAP para Funcionais TOP-OF-PAGE Executado para cada início de página num programa onde há a saída de lista. Sua aplicação principal é a construção de cabeçalhos de listas END-OF-PAGE Executado para cada fim de página num programa onde há a saída de lista. Sua aplicação principal é a construção de rodapés de listas AT USER-COMMAND Executado quando alguma ação da tela relacionada a um botão é executada AT LINE-SELECTION Executado quando uma linha da lista da tela é selecionada PERFORM (FORM) As sub-rotinas são blocos de processamento que tem a finalidade de proporcionar uma modularização do código ABAP bem como proporcionar a sua reutilização dentro do próprio programa ou em programas externos. 52 ABAP para Funcionais ABAP para Funcionais Principais instruçõePrincipais instruçõePrincipais instruçõePrincipais instruções da Programação ABAPs da Programação ABAPs da Programação ABAPs da Programação ABAP Operações aritméticas / matemáticas São comandos utilizados para a realização de operações aritméticas em ABAP. As principais variações são: ADD dobj1 TO dobj2. SUBTRACT dobj1 FROM dobj2. MULTIPLY dobj1 BY dobj2. DIVIDE dobj1 BY dobj2. Existem outras operações aritméticas além das elementares suportadas pelo ABAP. A saber: Operações condicionais O comando IF contém uma estrutura que pode conter sequencias de comandos que serão executadas de acordo com uma condição. Pode conter ELSE’s e ELSEIF’s. IF log_exp1. [statement_block1] [ELSEIF log_exp2. [statement_block2]] ... [ELSE. [statement_blockn]] ENDIF. O comando CASE tem uma finalidade semelhante ao comando IF, com a diferença que contém um operador único e uma sequência de operações definida para cada um dos valores previstos através da cláusula WHEN. CASE operand. [WHEN operand1 [OR operand2 [OR operand3 [...]]]. [statement_block1]] ... [WHEN OTHERS. [statement_blockn]] ENDCASE. 53 ABAP para Funcionais ABAP para Funcionais O comando CHECK contém uma operação condicional, e o código seguinte somente é executado se a operação for atendida. CHECK log_exp. Operadores condicionais suportados pelo ABAP: EQ ou = Igual NE ou <> Diferente GT ou > Maior que LT ou < Menor que GE ou >= Maior ou igual a LE ou <= Menor ou igual a CO Contains only CN Contais not any CA Contains any NA Contains not any CS Contains string NS Contains no string CP Cotains pattern CL Contains no pattern Operações com tabelas internas O comando LOOP percorre todas as linhas de uma tabela interna e executa a sequência de comandos contida entre as cláusulas LOOP e ENDLOOP. Pode conter o suplemento WHERE, que contém uma condição para que o passo corrente seja executado. LOOP. ... ENDLOOP. O comando READ realiza a leitura de apenas uma linha da tabela interna informada, de acordo com um índice ou a partir de uma chave. READ TABLE itab { table_key | free_key | index } result. O comando APPEND cria uma linha na última posição da tabela interna. APPEND line_spec TO itab [SORTED BY comp] [result]. O comando INSERT cria numa posição específica de uma tabela interna. INSERT line_spec INTO itab_position [result]. O comando COLLECT considera um campo do tipo texto para definir a chave da tabela, criando um novo registro a cada vez que ela é alterada, e somando os valores dos campos numéricos. COLLECT wa INTO itab [result]. O comando DELETE elimina uma ou mais linhas de uma tabela interna a partir de uma condição. 54 ABAP para Funcionais ABAP para Funcionais DELETE { itab_line | itab_lines | duplicates }. O comando SORT realiza a classificação dos registros de uma tabela interna a partir – pode ser ascendente ou descendente e considerar qualquer número de colunas. SORT itab [STABLE] { { [ASCENDING|DESCENDING] [AS TEXT] [BY {comp1 [ASCENDING|DESCENDING] [AS TEXT]} {comp2 [ASCENDING|DESCENDING] [AS TEXT]} ... ] } | { [BY (otab)] } }. O comando DESCRIBE fornece informações de uma tabela interna, tais como o número de linhas, por exemplo. DESCRIBE TABLE ... Comandos de continuidade O comando WHILE executa sucessivas vezes as instruções contidas entre WHILE e ENDWHILE enquanto a operação lógica a ele associada seja atendida. WHILE log_exp [vary] [statement_block] ENDWHILE. O comando DO executa sucessivas vezes as instruções contidas entre DO e ENDDO enquanto a operação lógica a ele associada seja atendida. A determinação do número de vezes em que o DO será executado é opcional e, caso esta cláusula seja emitida, o DO executa até que um comando EXIT seja executado. DO [n TIMES] [varying]. [statement_block] ENDDO. Comandos de controle de fluxo O comando STOP somente pode ser executado em programas do tipo executável e passa imediatamente para o evento END-OF-SELECTION do programa, caso ele esteja definido. Caso este evento não esteja definido, interrompe o processamento do programa do ponto onde é chamado. STOP. O comando CONTINUE, quando dentro de um DO – ENDDO, LOOP – ENDLOOP ou WHILE – ENDWHILE, despreza o passo corrente da sequência de execuções e passa para o passo seguinte. CONTINUE. O comando EXIT finaliza uma sequência de processamento, quando dentro de um DO – ENDDO, LOOP – ENDLOOP ou WHILE – ENDWHILE. 55 ABAP para Funcionais ABAP para Funcionais Se utilizado dentro de uma sub-rotina ou módulo de função, sai do bloco de processamento processando o comando imediatamente seguinte. EXIT. Exemplo de utilização de EXIT: DATA limit TYPE i VALUE 10. DO. IF sy-index > limit. EXIT. ENDIF. WRITE / sy-index. ENDDO. O comando LEAVE é utilizado para o encerramento de programas. LEAVE PROGRAM. Comandos de reinicialização O comando CLEAR reinicializa o valor de uma área de memória, atribuindo a ela o valor inicial correspondente ao tipo de dados em que ela foi definida. CLEAR dobj. O comando REFRESH é utilizado para tabelas internas e elimina todo o conteúdo de uma tabela interna quando executado. REFRESH itab. O comando FREE tem o medo efeito do comando CLEAR, reinicializando o valor da área de trabalho. Quando executado para uma tabela interna, o comando FREE tem o mesmo efeito do comando REFRESH, com a diferença que desaloca o espaço de memória ocupado previamente pela tabela. FREE dobj. Comandos de atribuição O comando MOVE transfere o valor do campo de origem para o campo de destino. Atribuições diretas entre variáveis, sem a utilização da cláusula MOVE também são suportadas pelo ABAP. MOVE source TO destination. destination = source. O comando MOVE-CORRESPONDING transfere o valor dos campos da estrutura 1 para os campos da estrutura 2. São utilizados principalmente para movimentação de valores entre variáveis complexas. MOVE-CORRESPONDING struc1 TO struc2. 56 ABAP para Funcionais ABAP para Funcionais Chamadas de outros programas O comando CALL FUNCTIONé utilizada para a chamada de módulos de função a partir de um programa ABAP. Deve conter os parâmetros de importação e exportação do módulo de função a ser chamado. CALL FUNCTION func { parameter_list| parameter_tables }. O comando CALL METHOD é utilizado para a chamada de métodos de uma classe a partir de um programa ABAP. Deve conter a assinatura (parâmetros) do método. CALL METHOD static_meth parameter_list. O comando SUBMIT é utilizado para a chamada de programas do tipo executável a partir de um programa ABAP. SUBMIT {rep|(name)} [selscreen_options] [list_options] [job_options] [AND RETURN]. Passagem de informações entre programas Os comandos SET / GET PARAMETER são utilizados para exportar ou importar valores de campo para um ID de parâmetro (cadastrados na tabela TPARA). SET PARAMETER ID pid FIELD dobj. GET PARAMETER ID pid FIELD dobj. Os comandos EXPORT TO MEMORY e IMPORT FROM MEMORY são utilizados para exportar ou importar informações para a memória. TYPES: BEGIN OF tab_type, para TYPE string, dobj TYPE string, END OF tab_type. DATA: id TYPE c LENGTH 10 VALUE 'TEXTS', text1 TYPE string VALUE ̀ IKE`, text2 TYPE string VALUE ̀ TINA`, line TYPE tab_type, itab TYPE STANDARD TABLE OF tab_type. line-para = 'P1'. line-dobj = 'TEXT1'. APPEND line TO itab. line-para = 'P2'. line-dobj = 'TEXT2'. APPEND line TO itab. EXPORT (itab) TO MEMORY ID id. 57 ABAP para Funcionais ABAP para Funcionais IMPORT p1 = text2 p2 = text1 FROM MEMORY ID id. Comandos de saída de lista e mensagens O comando WRITE é utilizado para saída de informações em listas. WRITE {[AT] [/][pos][(len|*|**)]} dobj [int_format_options] [ext_format_options] [list_elements] [QUICKINFO info]. O comando ULINE é utilizado para impressão de uma linha na lista ABAP. ULINE. O comando SKIP é utilizado para a impressão de uma linha em branco numa lista ABAP. SKIP. O comando MESSAGE é utilizado para saída de mensagens numa tela ABAP. MESSAGE { msg | txt } [message_options]. Comandos para operações em telas O comando CALL SCREEN é utilizado para realizar chamadas de telas. CALL SCREEN dynnr [STARTING AT col1 lin1 [ENDING AT col2 lin2]]. O comando SET PF-STATUS é utilizado para definir uma barra de status em uma tela ABAP. SET PF-STATUS status [OF PROGRAM prog] [EXCLUDING fcode]. O comando SET TITLEBAR é utilizado para definir uma barra de títulos em uma tela ABAP. SET TITLEBAR title [OF PROGRAM prog] [WITH text1 ... text9]. O comando LOOP AT SCREEN é utilizado para percorrer todos os elementos de tela da tela corrente. LOOP AT SCREEN [INTO wa]. ... ENDLOOP. 58 ABAP para Funcionais ABAP para Funcionais O comando MODIFY SCREEN é utilizado para modificar propriedades de um elemento de tela dentro de um LOOP AT SCREEN. Os elementos de tela disponíveis para alteração ou para visualização são: Component Length Type Attribute Description Name 132 c Name Name group1 3 c Group1 Modification group group2 3 c Group2 Modification group group3 3 c Group3 Modification group group4 3 c Group4 Modification group required 1 c Required-entry field Mandatory field input 1 c Input input-enabled field output 1 c Output display field intensified 1 c Intensified intensified field invisible 1 c Invisible invisible element length 1 x visLength Field length active 1 c Input/Output/Invisible active field display_3d 1 c Two-dimensional Box value_help 1 c Input help Input help key request 1 c - Input exists values_in_combo 1 c Dropdown listbox Value help exists MODIFY SCREEN [FROM wa]. O comando SET CURSOR é utilizado para posicionar o cursor num numa determinada posição ou elemento da tela corrente. SET CURSOR { { FIELD field [LINE line] [[DISPLAY] OFFSET off] }| { col lin } }. O comando GET CURSOR é utilizado obter informações sobre a posição do cursor na tela corrente. GET CURSOR { { FIELD field [field_properties] }| { LINE line } }. O comando SET SCREEN é utilizado para determinar o número da tela a ser processado dentro de uma sequência de diálogo. SET SCREEN dynnr. O comando LEAVE sai da tela corrente e vai para a próxima. Pode ser utilizado com o número da próxima tela declarado de forma explícita. LEAVE { SCREEN | {TO SCREEN dynnr} }. 59 ABAP para Funcionais ABAP para Funcionais ABAP DebugABAP DebugABAP DebugABAP Debuggergergerger O Depurador ABAP é uma ferramenta integrada de teste do ABAP Workbench. No Depurador, podemos executar o código fonte passo a passo, permitindo que se verifique o processo lógico e o resultado individual dos comandos. Existem duas estratégias para inicializar o Depurador no ABAP Workbench: • Definindo pontos de paradas (breakpoints). • Rodando o programa em modo depurador. Podemos inicializar o Depurador das seguintes formas: • Através da transação SE38 ou qualquer tela. Selecione o programa e clique no menu: Sistema/Utilitários/Depuração. • A partir de qualquer tela, digitando "/h" + ENTER no campo de comando antes de clicar em algum botão Trace. 60 ABAP para Funcionais ABAP para Funcionais Podem-se definir vários break-point em um programa (limitando-se a 30). No Object Navigator (SE80), podemos usar o menu de contexto (clicando com o botão direito do mouse) e selecionar Executar e depois Depuração. 61 ABAP para Funcionais ABAP para Funcionais Continuando no object navigator, na área de edição, podemos selecionar uma linha e colocar um ponto de parada usando os ícones em destaque: Existe o comando BREAK-POINT e BREAK, que também podem ser inseridos no código: 62 ABAP para Funcionais ABAP para Funcionais Na tela abaixo podemos ver a interface do ABAP Debugger: No ABAP debuger podemos ver o conteúdo das variáveis, constantes, estruturas e tabelas internas. Podemos seguir acompanhando em tempo de execução linha a linha ou por bloco. Também existe a possibilidade de definir pontos de parada clicando duas vezes na linha que quisermos. Podemos definir um Watchpoint (ponto de observação) que consiste em dizer ao ABAP Debuger que a partir do momento que uma determinada variável tiver o valor “X”, ele pare neste ponto. Resumindo, é um breakpoint que depende do valor de uma variável. Entendendo as Teclas do DebugEntendendo as Teclas do DebugEntendendo as Teclas do DebugEntendendo as Teclas do Debug [ F5 ] Etapa Individual (Step by Step debugging) Visualiza linha a linha de um breakpoint, possível visualizar os valores passo-a-passo. [ F6 ] Executar (Skips loops and Subroutines) Quase o mesmo que o F5, porém pula as sub-rotinas, ou seja, não conseguirá visualizar o que acontece dentro de funções, Performs, Fórmulas, Bapis, etc. [ F7 ] Retorno (Skips the loop or subroutine and returns to the last cursor point) Esta opçao ignorar LOOPs ou qualquer subrotina e retornará ao último ponto do Cursor. [ F8 ] Avançar (Execute and come out of debugging) Executa e sai do modo de Depuração 63 ABAP para Funcionais ABAP para Funcionais Visualizar Variáveis, Tabelas e Outros.Visualizar Variáveis, Tabelas e Outros.Visualizar Variáveis, Tabelas e Outros.Visualizar Variáveis, Tabelas e Outros. Durante o debug uma das coisas mais importantes que temos que aprender é como visualizar o conteúdo das informações que estão sendo tratadas em tempo de execução. Toda e qualquer variável ou tabela tem o seu conteúdo exibido na janela da direita. Veja destacado abaixo. Basta dar duplo clique nos objetos que podem ser visualizados, que automaticamente eles irão para a janela da direita. Veja abaixo que após um duplo clique na variável FCODE, a mesma foi adicionada na janela da direita. Da mesma forma que visualizamos as variáveis, podemos fazer para tabelas. Veja abaixo que depois de dar um duplo clique na tabela VALUES, a mesma
Compartilhar