Guia de introdução
Aplicação de técnicas básicas e conceitos
Trabalhar com classes locais
Ler dados do banco de dados
Trabalhar com objetos de dados estruturados
Trabalhar com tabelas internas complexas
Implementar atualizações do banco de dados utilizando business objects
Descrição do modelo de programação de aplicativos ABAP RESTful

Depuração de um programa ABAP

Objectives

After completing this lesson, you will be able to:
  • Entre no modo de depuração.
  • Controlar a execução do código.
  • Analisar o conteúdo de objetos de dados.

O modo de depuração

Assista a este vídeo para entender a necessidade de depuração.

Iniciar o depurador

Para depurar um programa ABAP, você define um ponto de parada e, em seguida, executa o programa normalmente. Quando o programa alcança o ponto de parada, o sistema interrompe-o e abre a perspectiva de depuração ABAP no ADT. Você pode então executar cada instrução subsequente de maneira individual para verificar que efeito ela tem sobre o programa. Você também pode inspecionar o conteúdo de todas as variáveis no programa para verificar se algum dos valores é inesperado.

Para definir ou remover um ponto de parada, clique com o botão direito do mouse na margem esquerda do editor e selecione Comutar ponto de parada. Como alternativa, você pode clicar duas vezes na margem esquerda. Considere que o programa deve ser ativado antes de você poder definir pontos de parada.

Os pontos de parada são específicos do usuário e persistentes - eles permanecem ativos mesmo depois de você ter efetuado logoff do ADT e de novo. Para evitar que o depurador comece em um ponto de parada, você deve excluir o ponto de parada (usando a função Comutar ponto de parada) ou desativá-lo usando a função correspondente no menu de contexto.

Nota

Dependendo de suas configurações de personalização, o ADT solicitará confirmação, primeiro, antes de abrir automaticamente a perspectiva de depuração.

A perspectiva de depuração no ADT

Quando você depura um programa ABAP usando as ferramentas de desenvolvimento ABAP, utiliza a perspectiva de depuração. Essa é uma versão personalizada da perspectiva de depuração padrão em Eclipse e contém visões e funções particularmente importantes para depuração.

Vejamos alguns elementos importantes da perspectiva do depurador.

Como iniciar o depurador

Controle da execução do código

Algumas funções de navegação

Assim que você tiver iniciado a depuração, utilize as funções de navegação para controlar a execução do código.

Algumas funções de navegação importantes são as seguintes:

Entrar (F5)

Selecione Step Into ou pressione F5 para executar uma única etapa. Utilize esta função para uma análise passo a passo. Se, por exemplo, você quiser ver que bloco de código de uma estrutura de controle é realmente executado.

Continuar (F8)

Selecione Continuar ou pressione F8 para executar o programa até o próximo ponto de parada. Se o depurador não atingir mais pontos de parada, o programa é executado até o fim e a sessão de depuração é cancelada.

Executar para linha (Shift+F8)

Selecione Executar para linha ou pressione Shift+F8 para executar o programa até a posição atual do cursor. Clicar em uma linha de código e selecionar esta função é uma alternativa conveniente para definir um ponto de parada, selecionando Retomar e removendo o ponto de parada novamente.

Ir para linha (Shift+F12)

Selecione Ir para linha ou pressione Shift+F12 para ignorar algumas linhas de código ou para voltar para algum código já executado. Esta função pode ser útil para simular o que aconteceria se um determinado pedaço de código fosse removido ou para repetir a depuração de um pouco de código que você perdeu a análise pela primeira vez. Tenha em mente que isso está realmente saltando, não executando codificação. Quando você pula para trás, as modificações em objetos de dados não são anuladas.

Finalizar

Selecione Finalizar se você tiver concluído a depuração e não quiser executar o programa restante. A sessão de depuração é encerrada imediatamente.

Pontos de parada especiais

Você aprendeu que pode criar e gerenciar pontos de parada clicando na margem esquerda da visão do editor ABAP. Isso também funciona com a visão do editor ABAP na perspectiva de depuração.

Além disso, você pode mudar para a visão Pontos de parada e administrar aí seus pontos de parada.

Na visão Pontos de parada, você também pode criar pontos de parada especiais:

Ponto de parada de instrução

Um ponto de parada de instrução não está anexado a uma linha de código específica, mas a uma instrução ABAP específica. Um ponto de parada de instrução na instrução CLEAR, por exemplo, faz com que o programa pare no depurador sempre que uma instrução CLEAR é executada - independentemente de onde esta instrução esteja localizada.

Para criar um ponto de parada de instrução, abra a lista de opções na barra de ferramentas da visão Pontos de parada e selecione Adicionar ponto de parada de instrução …

Ponto de parada de exceção

Um ponto de parada de exceção é anexado a uma exceção específica. Isso faz com que o programa seja interrompido no depurador sempre que esta exceção específica é criada - independentemente de esta exceção ser tratada pelo programa ou causar um erro em tempo de execução. Para criar um ponto de parada de exceção, abra a lista de opções na barra de ferramentas da visão Pontos de parada e selecione Adicionar ponto de parada de exceção….

Ponto de parada condicional

Você transforma um ponto de parada em um ponto de parada condicional adicionando uma condição. Se a execução do programa atingir um ponto de parada condicional, o programa só é interrompido no depurador se a condição for cumprida. Se, por exemplo, um ponto de parada estiver localizado entre DO e ENDDO, ele fará com que o programa pare no depurador em cada iteração. Mas se você adicionar uma condição sy-index > 20, o depurador ignorará esse ponto de parada durante as primeiras 20 iterações e só interromperá nas seguintes iterações.

Para adicionar uma condição a um ponto de parada, selecione a mesma na lista de pontos de parada e insira a condição no campo Condição. Pressione Enter para salvar o ponto de parada com a condição.

Watchpoints

Se um valor inesperado de uma variável estiver causando problemas, você pode monitorar seu valor durante o curso do programa usando um watchpoint.

Assista a este vídeo para ver como.

Como controlar a execução do código

Análise de objetos de dados

Exibir conteúdo de objetos de dados

Assista a este vídeo para saber como exibir o conteúdo de objetos de dados no depurador.

Exibir conteúdo de tabelas internas

Assista a este vídeo para saber como exibir o conteúdo de tabelas internas.

Modificação dos valores de variáveis

Dependendo de suas autorizações, você pode modificar o valor de variáveis durante a depuração.

Para variáveis simples, localize a variável na visão Variáveis, clique com o botão direito do mouse nela e selecione Modificar valor….

Para modificar o conteúdo de uma tabela interna, é necessário distinguir entre modificar o valor de uma linha existente e adicionar ou eliminar linhas.

Como mostrado na figura, as seguintes funções estão disponíveis quando você clica com o botão direito do mouse na visão Tabela interna ABAP:

Modificar valor...
Selecione Modificar valor… para modificar o conteúdo de uma linha existente.
Inserir linha…
Selecione Inserir linha… para adicionar uma nova linha. Você pode decidir se quer anexar a nova linha ou inseri-la na posição selecionada.
Excluir linhas selecionadas
Selecione Eliminar linhas selecionadas para remover as linhas que você selecionou antes de clicar com o botão direito do mouse. Para selecionar uma linha, clique nela à esquerda. Para selecionar mais de uma linha, mantenha pressionada a tecla Ctrl ou a tecla Shift quando clicar com o botão esquerdo do mouse em linhas adicionais.
Excluir linhas...
Selecione Eliminar linhas… para remover um intervalo maior de linhas ou mesmo todas as linhas. É solicitado o número da linha inicial e a linha final que você quer eliminar.

Como analisar o conteúdo de objetos de dados

Depuração de codificação ABAP

Neste exercício, você analisará a codificação ABAP usando o ABAP debugger.

Modelo:

  • /LRN/CL_S4D400_BTT_DEBUG (classe global)

Solução:

  • Nenhuma, a classe permanece inalterada.

Tarefa 1: Preparação

Copie a classe que você deseja depurar.

Etapas

  1. Abra o texto fonte da classe global /LRN/CL_S4D400_BTT_DEBUG no editor ABAP.

    1. Na barra de ferramentas Eclipse, selecione Abrir objeto de desenvolvimento ABAP. Como alternativa, pressione Ctrl + Shift + A.

    2. Insira /LRN/CL_S4D400_BTT como cadeia de pesquisa.

    3. A partir da lista de objetos de desenvolvimento, selecione /LRN/CL_S4D400_BTT_DEBUG e, em seguida, Ok.

  2. Vincule a visão Explorador de projetos ao editor.

    1. Na barra de ferramentas do Explorador de projetos, localize o botão Link com editor. Se ainda não estiver pressionado, selecione-o. Como resultado, o objeto de desenvolvimento, que está aberto no editor, deve ser destacado no Explorador de projetos.

  3. Copie a classe /LRN/CL_S4D400_BTT_DEBUG para uma classe em seu próprio pacote (nome sugerido: ZCL_##_DEBUG, onde ## representa seu número de grupo).

    1. Na visão Explorador de projetos, clique com o botão direito do mouse na classe /LRN/CL_S4D400_BTT_DEBUG para abrir o menu de conteúdo.

    2. No menu de contexto, selecione Duplicar ....

    3. Insira o nome do seu pacote (ZS4D400_##, onde ## representa seu número de grupo) e o nome da nova classe (ZCL_##_DEBUG) e, em seguida, selecione Seguinte.

    4. Confirme a ordem de transporte e selecione Concluir.

  4. Ative e teste a classe.

    1. Pressione Ctrl + F3 para ativar a classe.

    2. Pressione F9 para executar a classe.

  5. Verifique a saída na visão Console.

    1. Verifique a visão Console que deve ter sido aberta como uma nova guia abaixo da visão do editor.

    2. Se a visão Console não estiver visível, abra-a selecionando JanelaMostrar visãoOutro. Clique duas vezes em Console na lista de ocorrências.

Tarefa 2: Analisar os valores iniciais

Insira o depurador na primeira instrução executável no método if_oo_adt_classrun~main( ) e analise os valores de alguns objetos de dados variáveis e constantes.

Etapas

  1. Defina um ponto de parada na primeira instrução que não defina um tipo ou declare um objeto de dados.

    Dica

    TYPES define um tipo de dados, CONSTANTS declara um objeto de dados constante, DATA declara um objeto de dados variável.
    1. Clique duas vezes na margem esquerda do editor ao lado da linha  loan_remaining = loan_total.para definir um ponto de interrupção.

  2. Execute a classe como um aplicativo de console e entre no depurador.

    1. Pressione F9 para executar a classe.

    2. Se você for perguntado se deseja mudar para a perspectiva de depuração, marque Lembrar minha decisão e clique em OK.

  3. Exiba o valor do objeto de dados loan_rest e loan_total na visão Variables.

    1. Na linha de código atual (aquela com fundo verde), clique duas vezes em loan_remaining.

    2. Na mesma linha de código, clique duas vezes em loan_total.

Tarefa 3: Execução do programa de controle

Defina pontos de interrupção e pontos de observação. Execute etapas individuais ou continue a execução até o próximo ponto de parada ou ponto de observação ser alcançado. Supervisionar as modificações de valor dos objetos de dados.

Etapas

  1. Execute uma etapa individual para depurar a avaliação na linha atual.

    1. Na barra de ferramentas, selecione Etapa em (F5) ou pressione F5.

    2. Verifique se o valor de loan_rest mudou de 0..00 para 5000,00.

  2. Exiba o conteúdo do objeto de dados spec_repay_mode. Em seguida, execute outra etapa individual para ver qual ramificação WHEN da estrutura de controle CASE é executada.

    1. Na linha de código seguinte, clique duas vezes em spec_repay_mode.

    2. Pressione F5 para ver que o programa salta para a linha de código WHEN 'Q'..

  3. Defina um ponto de observação para a variável loan_rest e retome a execução do programa. Onde a execução do programa é interrompida novamente?

    1. Na visão Variáveis, clique com o botão direito do mouse em LOAN_REMAINING e selecione Definir watchpoint.

    2. Na barra de ferramentas, selecione Continuar (F8) ou pressione F8.

    3. A execução do programa é interrompida imediatamente após a linha de código loan_remaining = loan_remaining - repayment_month., também para ser precisa, na próxima linha de código com código executável.

  4. Exiba o conteúdo do objeto de dados repayment_plan. Em seguida, execute outra etapa individual para ver como ela é preenchida com a instrução APPEND.

    Nota

    Uma vez que repayment_plan é uma tabela interna, ele não só é exibido na visão Variáveis, mas também na visão Tabela interna ABAP (depurador) abaixo do editor.
    1. Clique duas vezes em repayment_plan no final do extrato APPEND.

    2. Pressione F5 para ver como repayment_plan é preenchido com uma primeira linha.

  5. Inspecione o modelo de cadeia na instrução APPEND e relacione-o à primeira linha resultante na tabela interna repayment_plan. Exibir o conteúdo dos objetos de dados que aparecem nas expressões incorporadas.

    1. Clique duas vezes nos objetos de dados que aparecem entre as chaves para exibir o respectivo conteúdo.

  6. Defina outro ponto de observação para a variável repayment_plan e retome a execução do programa por algumas vezes. Sempre que a execução atingir um dos watchpoints, analise o valor de loan_left e novas linhas são adicionadas ao repayment_plan.

    1. Na visão Variables, clique com o botão direito em REPAYMENT_PLAN e selecione Set Watchpoint.

    2. Pressione F8 para retomar a execução do programa.

    3. Analise os objetos de dados na visão Variáveis e na visão Tabela interna ABAP (depurador).

  7. Depois de um tempo, defina um ponto de interrupção de instrução para todas as instruções EXIT e exclua os dois watch points.

    1. Navegue para a visão Pontos de parada.

      Dica

      Você encontra a visão Pontos de parada ao lado da visão Variáveis.
    2. Na barra de ferramentas da visão Pontos de parada, expanda o botão drop-down à esquerda e selecione Adicionar ponto de parada de instrução ....

    3. Na caixa de diálogo exibida, insira EXIT como cadeia de pesquisa, clique no valor EXIT na lista de ocorrências e selecione OK.

    4. Na visão Pontos de parada, clique com o botão direito do mouse no ponto de observação LOAN_REMAINING e selecione Remover.

    5. Na visão Pontos de parada, clique com o botão direito do mouse no ponto de observação REPAYMENT_PLAN e selecione Remover.

  8. Retomar a execução do programa até chegar à primeira instrução EXIT. Desative o ponto de parada da instrução EXIT. Em seguida, execute etapas individuais até chegar à parte de saída do programa.

    1. Pressione F8 para retomar a execução do programa.

    2. Mude para a visão Pontos de parada e desmarque a linha que diz EXIT [Instrução].

    3. Pressione F5 até chegar à primeira linha de código que começa com out->write(.

  9. Abra a visão Console. Execute o programa restante e prossiga com a saída na visão de console.

    Não pressione F5 para depurar a saída. Em vez disso, use F6.

    Nota

    Como você aprenderá mais tarde no curso out->write( ... ) não é uma instrução ABAP, mas um bloco de código reutilizável que consiste em muitas instruções ABAP. Pressionando F5, você pisa neste código para analisá-lo detalhadamente. Com F6 você pisa sobre o bloco de código, tratando-o como uma única instrução.
    1. Pressione F6 várias vezes até chegar ao fim do aplicativo.

    2. Analise a saída de adição na visão Console e compare-a com o modelo de cadeia na linha de código anterior.

  10. Quando a aplicação é encerrada, não se esqueça de comutar de volta para a perspectiva ABAP.

    1. Selecione ABAP à direita da barra de ferramentas do Eclipse.