Prévia do material em texto
em 5 passos INTRODUÇÃO O que é o debug O Debug é uma ferramenta de análise de código fonte ABAP disponibilizada pela SAP para facilitar a vida de analistas e desenvolvedores na compreensão das rotinas do sistema. Com a ferramenta de Debug da SAP, é possível identificar o fluxo de processamento dos programas e qual o exato comportamento que ele está exercendo no momento da execução em que o problema aconteceu, ou da situação analisada. Quando se utiliza o Debbug no ABAP O Debug é muito utilizado quando há um problema na execução do código que não está claro para os analistas ou desenvolvedores. Com a ferramenta de Debug, as rotinas desenvolvidas são compreendidas mais facilmente e os problemas são encontrados de forma muito mais rápida do que uma busca manual. O Debug tem grande utilidade nas equipes de trabalho pois caso um problema passe despercebido por um desenvolvedor, o próprio analista pode identificar e corrigir a falha ao rodar a ferramenta. Como ele pode te ajudar? O debug ajuda a compreender nos mínimos detalhes o código de um programa ABAP. Com ele é possível saber por exemplo, qual a lógica empregada e quais as regras de negócio estão implementadas nas rotinas. Além disso, é possível descobrir os valores de tabelas, variáveis e campos de tela para entender como está sendo executada a manipulação dos dados internos dos programas, passagem de parâmetros, etc. Por conta disso, o debug é uma poderosa ferramenta para análise e simulação de cenários em tempo de execução dos programas. Um alerta aos profissionais que utilizam ou desejam utilizar o Debug é sobre os cuidados necessários ao executá-lo no ambiente de produção. Na verdade, é aconselhável que nunca se faça debug em produção, porque podem ser efetuadas determinadas consistências ou a manipulação de alguma informação que poderá impactar nas áreas de negócio. Em ambientes de desenvolvimento e qualidade não há essa dificuldade e preocupação. QUER SE TORNAR UM MESTRE EM DEBUG? Leia este material e se torne um em apenas 5 passos! 1. O que é um break-point e um watch-point 1.1 O break-point Um break-point é a marcação de um ponto de parada em uma linha de código do programa ABAP. Essa marcação pode acontecer implícita ou explicitamente no programa. Se você sabe mais ou menos o ponto do programa que você deseja debugar essa funcionalidade é muito útil, agilizará o processo e te ajudará no restante da sua análise. Um break-point implícito é uma funcionalidade que você poderá acessar pelas transações de desenvolvimento (SE37, SE38, SE24 e etc) e poderá adicionar pontos de parada internos ou externos. Um break-point implícito interno você poderá adicionar em qualquer programa e função que seja chamado e executado dentro da sua seção SAP. Já um break-point implícito externo você poderá adicionar um usuário e quando determinada linha de código for executada por aquele usuário ele abrirá o debug para você. Isso é muito útil para trabalhar com cenários de teste que um usuário chave está executando ou com alguma integração ou job esteja sendo executada em background sem controle manual de pessoas. Para ativar o usuário desejado você deverá acessar os seguintes passos, na transação de desenvolvimento: Para ativar um processo de debugger explícito você precisa clicar na linha desejada do código e posteriormente a isso clicar nos botões conforme mencionado anteriormente e conforme a sua necessidade (interno ou externo). O seu resultado será da seguinte forma: Dessa forma você acaba de adicionar um break-point implícito interno. Quando você executar esse programa ou essa transação seu debug será acionado. Um debug explícito é um pedaço de código inserido dentro do programa ABAP que determinará um ponto de debug fixo dentro do seu programa. Esse ponto de parada poderá ser genérico ou controlado por usuário. Deve-se evitar esse tipo de ponto de parada, porque se você acabar esquecendo o código dentro do seu programa poderá afetar o funcionamento dos desenvolvimentos no ambiente de produção. O uso do código do break-point você criará um ponto de parada genérico, qualquer usuário que executar o programa ou transação quando chegar na linha onde estiver o código será aberto o debug, independentemente das condições do programa. Outra maneira de criar um debug explícito é atribuir uma condição de break-point para um usuário específico. Se apenas você deseja executar essa avaliação esse método é mais interessante que o anterior. Isso se da pelo fato de o debugger ser ativado apenas para o usuário determinado no código, sem interferência para os demais usuários do sistema. 3.2 O watch-point O Watch-point como a tradução literal sugere é um ponto de visualização. Você pode programar o debug para monitorar uma variável específica sem saber o ponto exato do erro. Imagine que você tenha um erro em um programa, que na sua tela aparece um valor errado por exemplo de um imposto. Você não sabe onde esse imposto é calculado e alterado mas você conhece o campo da tela, que por de traz dos panos é uma variável no programa ABAP. Poderá então, configurar o debug para que quando essa variável for alterada, ou quando atingir um valor específico o debug seja acionado, agilizando seu processo de avaliação. Essa estratégia é muito utilizada para se trabalhar com um grande número de registros, onde na estrutura de repetição inviabiliza a análise de todos os registros. Para acioná-lo você deverá entrar no debug e acessar a seguinte aba. Quando você estiver nessa tela você poderá criar um novo watch-point para uma variável. Neste caso vamos criar um teste para a tabela PT_OBJECTS, quando essa tabela for alterada em algum momento do programa queremos que o debug seja acionado. Você deverá clicar no botão criar e posteriormente abrirá uma tela que você poderá colocar a variável que deseja controlar. Adicione o nome do objeto e clique em confirmar, posteriormente a isso você poderá clicar na ABAP Desktop 1 e apertar o botão F8. Quando a variável for alterada o debugger abrirá exatamente no ponto do programa que aconteceu a ação. Para controlar o valor da variável, você deverá seguir os mesmos passos anteriores com apenas uma diferença, conforme na imagem abaixo. Você deverá indicar a variável e abaixo deverá colocar o valor da variável que você deseja controlar. Neste caso queremos que o debug seja acionado quando a variável V_SEPARATOR seja igual a X. Basta clicarmos em confirmar, depois irmos a aba Desktop 1 e apertar o F8 que o Debug irá parar no momento que essa variável contiver o valor de X. Outra possibilidade de watch-point é controlar algum tipo de código ABAP. Por exemplo você tem um programa que tem uma verificação de autorização de acesso e você não sabe onde essa avaliação está. Você pode criar um watch-point para o código AUTHORIT-CHECK e durante a execução do programa encontrar esse código será iniciado o debugger. Essa ação também é valida para pesquisar funções, exits, mensagens e etc. Para acioná-la você terá que clicar no botão F9 durante o debug, então abrirá uma tela onde você poderá adicionar as informações conforme a imagem abaixo. Neste caso adicionamos um watch-point para o comando message, quando acontecer um comando message o debugger será acionado. Isso você poderá colocar em métodos, funções, forms, exceções e todos os casos que você achar necessário para resolver o seu problema. Chegou a hora de desbravarmos o debug e as formas de acioná- los e como avaliar as informações contidas nele. Para acionar o debugger você poderá criar break-points implícitos ou explícitos, ou então, watch-points. Outra maneira para acionar o debugger é no momento desejado da execução do programa você utilizar o comando /h, ele forçará o inicio do debugger na próxima ação que você executar. Esse talvez seja a forma mais convencional de executaro modo de debugger, quando você apertar o enter colocando o código /h você receberá uma mensagem de confirmação que o debugger está ligado. Caso não seja uma mensagem positiva, talvez você não possua o perfil de acesso ao debugger, neste caso você deverá procurar a equipe de basis ou então o superior da área responsável por liberar os acessos. Posteriormente a mensagem qualquer ação que você executar abrirá uma tela de debuger conforme a imagem abaixo. Agora vamos entender o que temos de informação nessa tela e que poderão nos auxiliar na avaliação do seu problema. E principalmente as principais funções encontradas na tela e que farão a diferença. 4.1 Barra de interação Na barra de interação teremos as funcionalidades que ajudaram a executar o debuger, principalmente os quatro primeiro botões que farão você seguir na avaliação do código. Esses botões poderão ser alterados por teclas de função (Usadas com maior frequência). Por exemplo a tecla F5 é uma etapa individual, correspondente ao primeiro botão, nesta função você percorrerá linha a linha, entrará em todos os performs, funções e métodos sem distinção. A função F6 ou o segundo botão, é um debugger individual por linha, no entanto quando encontrar um perform, função ou método ele não entrará, executará o código lá dentro e você verá apenas o resultado final e poderá seguir linha a linha com seu debugger. A função F7 ou o terceiro botão, é uma função de retorno. Imagine que você entrou em uma função em determinado momento do seu código, se você clicar no botão F7 ele voltará para o código anterior que fez a chamada da função. Todo o código dentro da função será executado e você verá o resultado final apenas. Isso servirá para performs e classes também. A função F8 ou o quarto botão, é uma função de finalização do debugger. Quando você apertar o F8 seu debugger será finalizado e todo o código será executado e você verá o resultado final da sua transação ou programa. Outra função importante que auxilia muito no momento do debug é ir para instrução desejada. Imagine que durante o debug você passou por um código e não entendeu o que aconteceu naquela linha de código. Você pode voltar para a linha desejada e reexecutar a linha sem ter que finalizar o debug e reinicializar. Ou então, se você precisa forçar a entrada dentro de um if, você consegue forçar o ponteiro do debug para aquela linha. Para que isso aconteça você precisa clicar na linha desejada, clicar com o botão direito e escolher a opção ir para instrução. Neste momento o ponteiro será direcionado para a linha que você desejar. Outra forma de atalho que fará a mesma função é você selecionar a linha desejada e clicar Shift+F12. Você terá o mesmo resultado com as duas formas. 4.2 Informações de ambiente Nesse espaço temos alguns campos que nos dão informações super importantes. Nos primeiros quatro campos temos as informações do programa principal, subprograma ou tela, e sua linha. Logo abaixo temos a informação do Form que está sendo executado naquele momento. Logo ao lado você possui duas variáveis de ambiente, sy-tabix e su-subrc. O sy- tabix será responsável por controlar o volume de registros e iterações executadas no debugger, exemplo, quando você executar um select em alguma tabela e você tiver 10 registros no retorno, o seu sy-tabix terá o valor 10. Caso você esteja dentro de um loop, você poderá ver em qual registro que ele está executando naquele momento. Já o sy-subrc é uma variável que controla o sucesso ou falha na execução de algum código, como por exemplo funções, select, read table, modify, loop e etc. Por exemplo, num select caso na tabela não tenha nenhum registro o seu sy- subrc será igual a 8, caso não encontre o registro desejado será 4 e caso encontre o que você pesquisa será 0. Essas variáveis de ambiente são muito utilizadas durante o desenvolvimento ABAP e são muito úteis para o entendimento rápido do que está sendo executado na sua lógica. 4.3 Abas de avaliação Para essas abas, explanaremos as principais e mais importantes num primeiro momento. As abas Desktop 1, Desktop 2, Desktop 3 e Standard você terá o controle da execução do seu código, poderá avaliar variáveis locais e globais, e o fluxo de execução do seu programa. Já na aba Ptos.par/Watchpts você terá como configurar seus pontos de parada ou seu watch-point para auxiliar você no processo de debuger. 4.4 Código fonte ABAP Nesta área você verá o código ABAP do programa em execução. Nesta área você poderá acompanhar a execução do seu código com as teclas de função F5, F6, F7 e F8. Você terá ainda algumas opções como o duplo clique sobre a variável que desejar. Se você deixar a seta do mouse sobre a variável desejada você terá informação sobre ela também, conforme a imagem abaixo. E por fim você te acesso a várias outras funcionalidades clicando com o botão direito nessa área. Algumas dessas funcionalidades também são importantes e auxiliarão no seu debug. 4.5 Abas de manipulação Nessas abas é possível escolher a visualização de variáveis. Nas abas locais, serão listadas todas as variáveis locais disponíveis na seção de debug que você tem aberta. Na aba globais você terá todas as variáveis globais disponíveis para a sua seção. Nas abas variáveis 1 você poderá escolher as variáveis que você deseja avaliar dentro do seu programa de forma livre. 4.6 Avaliação de variáveis Nesta área é possível avaliar o conteúdo das variáveis. Para escolher a variável você pode dar duplo clique na variável na área de código fonte ABAP ou simplesmente digitar nessa área o nome da variável desejada. Para avaliar o valor que elas possuem, você poderá dar duplo clique sobre a variável. Nesse momento você será direcionado para uma outra tela que conterá maiores informações. Nessa tela você verá o tipo da sua variável e também o valor dela. Neste ponto é possível alterar o valor dela, caso você deseja executar um teste e simular uma situação diferente. Outra forma de alterar o valor da variável poderá ser feito diretamente na aba de manipulação das variáveis. Só não será permitido alterar parâmetros de importação e exportação ou constantes. Temos situações de tabelas com header line, que tem um comportamento diferente. Você vai avaliar essa situação da seguinte maneira, com este símbolo de tabela. Neste caso se você clicar sobre o nome da variável XTAUUM, você vai ter acesso aos valores da work área, conforme visto na imagem abaixo. Se você der duplo clique sobre o símbolo da tabelinha você verá os dados da tabela, da seguinte forma. 5 Para facilitar vamos catalogar os atalhos F5 – Executar todas as linhas F6 – Executar as linhas sem entrar em perform, função ou método F7 – Voltar ao nível anterior, pulando código de perform, função ou método F8 – Finalizar Debug F9 – Criar Watch-point para comandos ABAP SHIFT+F12 – Ir para a instrução desejada BREAK-POINT – Ponto de parada Explícito