24
DEBUGGER R/3 Básico UDERSON LUIS “tudo posso naquele que me fortalece” (Filipenses 4:13). Sumario Este artigo descreve a execução de programa em modo DEBUGGER, descrevendo os passos necessários para encontrar valores de variáveis, tabelas, estruturas. Sobre o Autor: Uderson Luis Fermino, formado em Ciências da Computação pela Faculdade de Pesquisa e Ensino IPEP, atua no mercado a 2 anos como desenvolvedor Java nas plataformas: (J2SE, J2EE e J2ME), com participação em grandes projetos envolvendo estas tecnologias. É consultor ABAP com experiências em REPORT, ALV (GRID, LIST, BLOCK, OO, TREE, HIERARQUICK), IDOC, ALE, ONLINE, SAPSCRIPT, SMARTFORM, NETWEAVER (JCO, BSP, WebDynpro). Email: [email protected]

DEBUGGER R/3 Básico UDERSON LUIS · PDF fileDEBUGGER R/3 Básico UDERSON LUIS “tudo posso naquele que me fortalece” (Filipenses 4:13). Sumario Este artigo descreve a execução

Embed Size (px)

Citation preview

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Sumario

Este artigo descreve a execução de programa em modo DEBUGGER,

descrevendo os passos necessários para encontrar valores de variáveis,

tabelas, estruturas.

Sobre o Autor:

Uderson Luis Fermino, formado em Ciências da Computação pela Faculdade de Pesquisa e Ensino IPEP, atua no mercado a 2 anos como desenvolvedor Java nas plataformas: (J2SE, J2EE e J2ME), com participação em grandes projetos envolvendo estas tecnologias. É consultor ABAP com experiências em REPORT, ALV (GRID, LIST, BLOCK, OO, TREE, HIERARQUICK), IDOC, ALE, ONLINE, SAPSCRIPT, SMARTFORM, NETWEAVER (JCO, BSP, WebDynpro). Email:

[email protected]

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

DEBUGGER ABAP

Debug é o ato de corrigir erros,dentro de um determinado artefato, onde este

artefato pode ser um simples ou complexo programa. O Debug é usado para verificar e

visualizar instruções códigos-a-codigo.

O abap é uma linguagem puramente interpretada, todos os módulos da

linguagem são interpretados, onde é a principal ferramenta de trabalho aos

programadores abap, está tarefa de codificação facilita a customização do sistema em

tempo real.

Para chamar o debugger do SAP (R/3) basta inserir o /h como uma transação.

Verifica a barra de status.

A partir deste momento o “mode debugger” do SAP está em funcionamento, em

qualquer transação, que estivermos, poderemos visualizar código-a-codigo, o que o

compilador, ABAP está interpretando.

Iremos DEBUGAR a partir do código abaixo:

Entre na transação SE38 crie um programa executável de aplicação

desconhecida.

De o Nome de ZFUNCIONARIO e siga o exemplo da figura:

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Copie este código para dentro do EDITOR *&---------------------------------------------------------------------* *& Report ZFUNCIONARIO * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* REPORT ZFUNCIONARIO. TABLES: ZFUNCIONARIO. BREAK-POINT. DATA: BEGIN OF T_ZFUNCIONARIO OCCURS 0, MATRICULA LIKE ZFUNCIONARIO-MATRICULA, NOME LIKE ZFUNCIONARIO-NOME, DATANASCIMENTO LIKE ZFUNCIONARIO-DATANASCIMENTO, RG LIKE ZFUNCIONARIO-RG, CPF LIKE ZFUNCIONARIO-CPF, END OF T_ZFUNCIONARIO. SELECTION-SCREEN BEGIN OF BLOCK bl001 WITH FRAME. PARAMETER: P_MATRI LIKE ZFUNCIONARIO-MATRICULA OBLIGATORY. PARAMETER: P_NOME LIKE ZFUNCIONARIO-NOME OBLIGATORY. PARAMETER: P_DATNA LIKE ZFUNCIONARIO-DATANASCIMENTO OBLIGATORY. PARAMETER: P_RG LIKE ZFUNCIONARIO-RG OBLIGATORY. PARAMETER: P_CPF LIKE ZFUNCIONARIO-CPF OBLIGATORY. SELECTION-SCREEN END OF BLOCK bl001. T_ZFUNCIONARIO-MATRICULA = P_MATRI. T_ZFUNCIONARIO-NOME = P_NOME. T_ZFUNCIONARIO-DATANASCIMENTO = P_DATNA. T_ZFUNCIONARIO-RG = P_RG .

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

T_ZFUNCIONARIO-CPF = P_CPF. APPEND T_ZFUNCIONARIO. MOVE: T_ZFUNCIONARIO-MATRICULA TO ZFUNCIONARIO-MATRICULA, T_ZFUNCIONARIO-NOME TO ZFUNCIONARIO-NOME, T_ZFUNCIONARIO-DATANASCIMENTO TO ZFUNCIONARIO-DATANASCIMENTO, T_ZFUNCIONARIO-RG TO ZFUNCIONARIO-RG, T_ZFUNCIONARIO-CPF TO ZFUNCIONARIO-CPF. INSERT ZFUNCIONARIO. IF SY-SUBRC = '0'. COMMIT WORK. MESSAGE I368(00) WITH 'DADOS SALVOS COM SUCESSO'. ELSE. ROLLBACK WORK. MESSAGE I368(00) WITH 'ERRO AO SALVAR DADOS'. ENDIF. CLEAR: T_ZFUNCIONARIO, T_ZFUNCIONARIO[]. SELECT MATRICULA NOME DATANASCIMENTO RG CPF FROM ZFUNCIONARIO INTO TABLE T_ZFUNCIONARIO. LOOP AT T_ZFUNCIONARIO. WRITE: / '|', T_ZFUNCIONARIO-MATRICULA, '|', T_ZFUNCIONARIO-NOME, '|', T_ZFUNCIONARIO-DATANASCIMENTO, '|', T_ZFUNCIONARIO-RG, '|', T_ZFUNCIONARIO-CPF, '|'. ULINE. ENDLOOP.

Após ter copiado o código, clique em DIRETO ou F8. (Lembre-se de SALVAR, CHECAR e ATIVAR).

Logo em seguida aparecera a seguinte tela:

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Preencha os campos conforme a figura a baixo ou a tabela

Matricula 123456789

Nome Teste de Debug

Data de Nascimento 17.05.2007

Rg 2233445

CPF 21177889900654534322

Após ter preenchido, insira o código /N , na caixa de transações:

Verifica a barra de status.

Clique em executar, e siga passo a passo este HowTo.

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Observe, que tem um ponteiro no primeiro código do programa, e o editor

encontre-se em modo não editavel.

Passo 2:

Tecle uma vez F5, observe que o ponteiro irá para o comando BREAK-POINT,

este comando é usado, para parar uma determinada instrução e mostrar está em modo

debug,

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Observe que o comando não parou na linha TABLES: ZFUNCIONARIO, pois

esta é uma instrução interna do abap.

Tecle F5 e observe que o ponteiro irá direto para o comando de atribuição:

T_ZFUNCIONARIO-MATRICULA = P_MATRI.

Observe que no modo Debug a seguinte tela:

Nesta tela que poderemos “EXIBIR” e “MODIFICAR” valores das variáveis em

tempo de execução do programa, Lembre-se estamos em modo debug onde cada

comando segue passo a passo o que pedimos.

Antes de prosseguir clique sobre os objetos: P_MATRI, P_NOME,

P_DATNAS, como segue a figura.

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Observe que os valores destes objetos podem ser visualizados na tela:

Para limpar os campos de visualização clique na lixeira, é CAMPO será limpa, a

limpeza não é feita no objeto e sim no campo de visualização, logo a frente, será

mostrado como limpara ou alterar o valor do objeto.

Fincado:

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Observer que o ponteiro está apontado ainda para o objeto

T_ZFUNCIONARIO-MATRICULA = P_MATRI., onde P_MATRI contem o

valor “0000000000123456789”.

Clique sobre o objeto T_ZFUNCIONARIO-MATRICULA e observe que o valor de P_MATR, ainda não foi atribuído ao objeto T_ZFUNCIONARIO-MATRICULA.

Tecle F5, e observe que agora o objeto T_ZFUNCIONARIO-MATRICULA contem

o mesmo valor de P_MATRI.

Para treinar, faça os mesmos passos, para os objetos :

T_ZFUNCIONARIO-NOME = P_NOME. T_ZFUNCIONARIO-DATANASCIMENTO = P_DATNA. T_ZFUNCIONARIO-RG = P_RG . T_ZFUNCIONARIO-CPF = P_CPF.

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Siga os passos até que o ponteiro fique apontado sobre o comando:

APPEND T_ZFUNCIONARIO.

Antes de prosseguir limpe todos os campos:

Ainda com o ponteiro, apontado ao comando APPEND , clique duas vezes sobre a

tabela interna T_ZFUNCIONARIO.

Observe que no campo de exibição e modificação de variáveis e objetos apareceu a

linha.

Para ver os valores da tabela clique sobre o ícone:

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Observe que os campos de exibição e modificação mudaram:

Pois agora estamos em estrutura multidimensional, cujo o formato é uma

estrutua de tabela, onde cada campo contem um determinado tamanho de

armazenamento de dado.

O ABAP trata todas as tabelas tanto tabelas internas como tabelas

reais(chamadas de tabelas standard ou tabelas Z) iguais, onde todas as tabelas contem

uma HEADER LINE.

HEADER LINE

Toda tabela manipulada, dentro do sap é criada uma HeaderLine, que é um vetor

de dado do tipo de uma tupla,de uma determinada tabela, a Header Line é uma copia

dos dados do registro em que o ponteiro, está posicionado no momento, uma header line

pode ser visualizada claramente dentro de um loop

HeaderLine da TabelaX Matnr Datnam Nome Descrição 00001 10.10.2000 Cana de Açúcar Matéria Prima

LOOP AT TabelaX

Matnr Datnam Nome Descrição 00001 10.10.2000 Cana de Açúcar Matéria Prima 00002 14.12.2006 Álcool Matéria Prima 00003 20.25.2000 Gasolina Matéria Prima

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

00004 11.09.1997 Óleo Diesel Matéria Prima 00005 13.08.2005 BioDiesel Matéria Prima

ENDLOOP

HeaderLine da TabelaX Matnr Datnam Nome Descrição 00002 14.12.2006 Álcool Matéria Prima

LOOP AT TabelaX

Matnr Datnam Nome Descrição 00001 10.10.2000 Cana de Açúcar Matéria Prima 00002 14.12.2006 Álcool Matéria Prima 00003 20.25.2000 Gasolina Matéria Prima 00004 11.09.1997 Óleo Diesel Matéria Prima 00005 13.08.2005 BioDiesel Matéria Prima

ENDLOOP

HeaderLine da TabelaX Matnr Datnam Nome Descrição 00003 20.25.2000 Gasolina Matéria Prima

LOOP AT TabelaX

Matnr Datnam Nome Descrição 00001 10.10.2000 Cana de Açúcar Matéria Prima 00002 14.12.2006 Álcool Matéria Prima 00003 20.25.2000 Gasolina Matéria Prima 00004 11.09.1997 Óleo Diesel Matéria Prima 00005 13.08.2005 BioDiesel Matéria Prima

ENDLOOP Observação:

LOOP AT

O Comando LOOP AT .... ENDLOOP.

Serve para andar em cada registro de uma tabela interna, podendo alterar,

excluir, incluir dados nos campos deste registro, atual, o exemplo acima mostra o LOOP

AT, em uma tabela interna, chamada de TabelaX, Cada iteração em um registro, a

HeaderLine é modificado para a posição atual, do LOOP AT, a variável SY-TABIX, é a

variável, que armazena o numero atual da iteração.

O ícone chapéu é a indicação da tabela

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Somente os dados estarão dentro da tabela interna T_ZFUNCIONARIO

quando o comando APPEND for passado.

Tecle F5 Veja que a tabela agora conte registros;

A HEADERLINE esta com o valor e a tabela interna também.

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Agora a tabela interna conte valores, neste caso apenas um registro, porem mais

a frente a tabela interna terá mais de um registro.

O ponteiro está apontado sobre o comando MOVE, onde está movendo cada

valor,

Diretamente a HeaderLine da Tabela ZFUNCIONARIO.

Antes de prosseguir clique duas vezes sobre a tabela real ZFUNCIONARO.

Veja que novamente mudou os campos de EXIBIÇÃO E MODIFICAÇÃO:

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Observe que cada vez que o ponteiro mover dentro do comando Move será

adcionado um valor dentro do campo selecionado da figura.

Observe que determinados comandos não é possível verificar seu dados internos.

Tecle F5, até apontar no comando:

CLEAR: T_ZFUNCIONARIO, T_ZFUNCIONARIO[].

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

O comando clear como o próprio nome diz, serve para limpar campos de variáveis,

tabelas internas e headerline, a Sintaxe é:

CLEAR: TABELA_INTERNA = Limpa a Header Line de uma tabela Interna

CLEAR: TABELA_INTERNA[] = Limpa a tabela interna sem limpar a Header Line

Antes de prosseguir clique duas vezes sobre a tabela interna T_ZFUNCIONARIO.

Observe que podemos ver os valores da HeaderLine e da Tabela Interna, tecle

F5 para prosseguir o ponteiro, e observe que os valores foram excluídos da HeaderLine

e da Tabela:

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Estes valores com 0 (Zeros), são valores Default que os tipos de dados

primitivos possuem.

O ponteiro agora está sobre o comando select, onde será inserido valores na

tabela interna T_ZFUNCIONARIO novamente.

Antes de prossegui com o ponteiro clique duas vezes da tabela interna que está

dentro do select:

Observe que a tabela interna e a sua HeaderLine, não contem valores.

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Tecle F5.

Observe que agora a tabela interna contem diverso registros, pois todos os

registros que estava na tabela real ZFUNCIONARIO, foi passado para está tabela.

Agora muita atenção pois a parte mais cautelosa deste HowTo com certeza é

está.

Mova a tela para baixo, conforme indicado pela cor VERMELHA, até que a

visualização do código fique idêntico a figura, observe que o ponteiro está apontando o

comando LOOP é no fim da tela temos a finalização do comando LOOP com a

instrução ENDLOOP.

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Observe que a HeaderLine está vazia, mais a cada iteração um determinado

registro será colocado na HeaderLine, o ponteiro de registro é interno da tabela não

conseguimos visualizar ele, somente visualizamos o registro atual na HeaderLine.

Tecle F5 para prosseguir e observe a HeaderLine.

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Observe que a HeaderLine contem o mesmo valor do registro 1, pois é a

primeira iteração, o comando write, escreve os valores da HeaderLine, A variável de

controle de iteração é SY-TABIX.

Tecle F5 até que o ponteiro aponte a instrução ENDLOOP, como é uma iteração

o ponteiro apontará ao prosseguir, teclando F5 para o comando LOOP AT

tabela_interna, internamente ele verifica será mais registros, caso contem registro ele

entra dentro do loop, e assim por diante observer que sempre a HeaderLine armazena os

valores do registro atual,

A assim até o fim dos ultimo registro, quando não ter mais registro o ponteiro

apontara para o próximo comando, caso exista mais comando depois do comando

LOOP...ENDLOOP.

Estes são os passos básicos do MODO DEBBUGER da linguagem ABAP, mais

passos a seguir, porem serão apenas descritos a segui, sem exemplificação de seu usos.

Mudar valor da variável, objetos, antes de inserir ou antes de escrever, ou antes

de executar a instrução que fará a leitura deste dado: use o lápis, basta modificar o valor

no campo de inserção de dado e clicar no lápis que o valor será alterado, use antes de

alguma instrução usar o valor atual, pois se o valor for modificado após alguma

instrução ter utilizado o valor, não fará sentido alterar o mesmo.

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Watchpoint:

Utilizado dentro de uma estrutura de iteração (LOOP, DO, WHILE), para fazer a

parada em um determinado valor, é necessário especificar o campo ou (variavel), o

valor de parada e o operador lógico que usará:

Exemplo:

Clique duas vezes sobre o campo da tabela interna, conforme a figura:

Clique em Watchpoint

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Onde

Programa = nome do programa

Nome do campo = Nome do campo da tabela ou variável

Operador relacional =Operador lógico de condição, clique sobre o MATCHCONDE

date e abrirá um lista.

De dois clique sobre o campo escolhido.

DEBUGGER R/3 Básico

UDERSON LUIS

“tudo posso naquele que me fortalece” (Filipenses 4:13).

Campo ou valor de comparação = o valor que o campo escolhido deverá possui

para fazer a parada (lembrando do operador relacional escolhido)