Você está na página 1de 24

DEBUGGER R/3 Bsico

UDERSON LUIS

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









Sumario



Este artigo descreve a execuo de programa em modo DEBUGGER,
descrevendo os passos necessrios para encontrar valores de variveis,
tabelas, estruturas.





Sobre o Autor:


Uderson Luis Fermino, formado em Cincias da Computao pela
Faculdade de Pesquisa e Ensino IPEP, atua no mercado a 2 anos como
desenvolvedor Java nas plataformas: (J2SE, J2EE e J2ME), com participao
em grandes projetos envolvendo estas tecnologias. consultor ABAP com
experincias em REPORT, ALV (GRID, LIST, BLOCK, OO, TREE,
HIERARQUICK), IDOC, ALE, ONLINE, SAPSCRIPT, SMARTFORM,
NETWEAVER (JCO, BSP, WebDynpro).

Email:


Uderson@gmail.com












DEBUGGER R/3 Bsico
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 instrues cdigos-a-codigo.

O abap uma linguagem puramente interpretada, todos os mdulos da
linguagem so interpretados, onde a principal ferramenta de trabalho aos
programadores abap, est tarefa de codificao facilita a customizao do sistema em
tempo real.

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



Verifica a barra de status.



A partir deste momento o mode debugger do SAP est em funcionamento, em
qualquer transao, que estivermos, poderemos visualizar cdigo-a-codigo, o que o
compilador, ABAP est interpretando.
Iremos DEBUGAR a partir do cdigo abaixo:
Entre na transao SE38 crie um programa executvel de aplicao
desconhecida.
De o Nome de ZFUNCIONARIO e siga o exemplo da figura:

DEBUGGER R/3 Bsico
UDERSON LUIS

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


Copie este cdigo 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 Bsico
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.
Aps ter copiado o cdigo, clique em DIRETO ou F8.
(Lembre-se de SALVAR, CHECAR e ATIVAR).



Logo em seguida aparecera a seguinte tela:



DEBUGGER R/3 Bsico
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








Aps ter preenchido, insira o cdigo /N , na caixa de transaes:




Verifica a barra de status.



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




DEBUGGER R/3 Bsico
UDERSON LUIS

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



Observe, que tem um ponteiro no primeiro cdigo do programa, e o editor
encontre-se em modo no editavel.

Passo 2:

Tecle uma vez F5, observe que o ponteiro ir para o comando BREAK-POINT,
este comando usado, para parar uma determinada instruo e mostrar est em modo
debug,


DEBUGGER R/3 Bsico
UDERSON LUIS

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

Observe que o comando no parou na linha TABLES: ZFUNCIONARIO, pois
esta uma instruo interna do abap.

Tecle F5 e observe que o ponteiro ir direto para o comando de atribuio:
T_ZFUNCIONARIO-MATRICULA = P_MATRI.



Observe que no modo Debug a seguinte tela:



Nesta tela que poderemos EXIBIR e MODIFICAR valores das variveis em
tempo de execuo 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 Bsico
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 visualizao clique na lixeira, CAMPO ser limpa, a
limpeza no feita no objeto e sim no campo de visualizao, logo a frente, ser
mostrado como limpara ou alterar o valor do objeto.


Fincado:





DEBUGGER R/3 Bsico
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 no foi atribudo 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, faa 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 Bsico
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 exibio e modificao de variveis e objetos apareceu a
linha.



Para ver os valores da tabela clique sobre o cone:




DEBUGGER R/3 Bsico
UDERSON LUIS

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






Observe que os campos de exibio e modificao 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 Descrio
00001 10.10.2000 Cana de Acar Matria Prima

LOOP AT TabelaX

Matnr Datnam Nome Descrio
00001 10.10.2000 Cana de Acar Matria Prima
00002 14.12.2006 lcool Matria Prima
00003 20.25.2000 Gasolina Matria Prima
DEBUGGER R/3 Bsico
UDERSON LUIS

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

00004 11.09.1997 leo Diesel Matria Prima
00005 13.08.2005 BioDiesel Matria Prima

ENDLOOP




HeaderLine da TabelaX
Matnr Datnam Nome Descrio
00002 14.12.2006 lcool Matria Prima

LOOP AT TabelaX

Matnr Datnam Nome Descrio
00001 10.10.2000 Cana de Acar Matria Prima
00002 14.12.2006 lcool Matria Prima
00003 20.25.2000 Gasolina Matria Prima
00004 11.09.1997 leo Diesel Matria Prima
00005 13.08.2005 BioDiesel Matria Prima

ENDLOOP



HeaderLine da TabelaX
Matnr Datnam Nome Descrio
00003 20.25.2000 Gasolina Matria Prima

LOOP AT TabelaX

Matnr Datnam Nome Descrio
00001 10.10.2000 Cana de Acar Matria Prima
00002 14.12.2006 lcool Matria Prima
00003 20.25.2000 Gasolina Matria Prima
00004 11.09.1997 leo Diesel Matria Prima
00005 13.08.2005 BioDiesel Matria Prima

ENDLOOP



Observao:
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 iterao em um registro, a
HeaderLine modificado para a posio atual, do LOOP AT, a varivel SY-TABIX, a
varivel, que armazena o numero atual da iterao.

O cone chapu a indicao da tabela
DEBUGGER R/3 Bsico
UDERSON LUIS

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



Somente os dados estaro 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 tambm.

DEBUGGER R/3 Bsico
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 EXIBIO E MODIFICAO:

DEBUGGER R/3 Bsico
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 no possvel verificar seu dados internos.
Tecle F5, at apontar no comando:

CLEAR: T_ZFUNCIONARIO, T_ZFUNCIONARIO[].

DEBUGGER R/3 Bsico
UDERSON LUIS

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



O comando clear como o prprio nome diz, serve para limpar campos de variveis,
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 excludos da HeaderLine
e da Tabela:

DEBUGGER R/3 Bsico
UDERSON LUIS

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




Estes valores com 0 (Zeros), so 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, no contem valores.
DEBUGGER R/3 Bsico
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 ateno pois a parte mais cautelosa deste HowTo com certeza
est.

Mova a tela para baixo, conforme indicado pela cor VERMELHA, at que a
visualizao do cdigo fique idntico a figura, observe que o ponteiro est apontando o
comando LOOP no fim da tela temos a finalizao do comando LOOP com a
instruo ENDLOOP.
DEBUGGER R/3 Bsico
UDERSON LUIS

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












DEBUGGER R/3 Bsico
UDERSON LUIS

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



Observe que a HeaderLine est vazia, mais a cada iterao um determinado
registro ser colocado na HeaderLine, o ponteiro de registro interno da tabela no
conseguimos visualizar ele, somente visualizamos o registro atual na HeaderLine.

Tecle F5 para prosseguir e observe a HeaderLine.


DEBUGGER R/3 Bsico
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 iterao, o comando write, escreve os valores da HeaderLine, A varivel de
controle de iterao SY-TABIX.

Tecle F5 at que o ponteiro aponte a instruo ENDLOOP, como uma iterao
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 no ter mais registro o ponteiro
apontara para o prximo comando, caso exista mais comando depois do comando
LOOP...ENDLOOP.

Estes so os passos bsicos do MODO DEBBUGER da linguagem ABAP, mais
passos a seguir, porem sero apenas descritos a segui, sem exemplificao de seu usos.


Mudar valor da varivel, objetos, antes de inserir ou antes de escrever, ou antes
de executar a instruo que far a leitura deste dado: use o lpis, basta modificar o valor
no campo de insero de dado e clicar no lpis que o valor ser alterado, use antes de
alguma instruo usar o valor atual, pois se o valor for modificado aps alguma
instruo ter utilizado o valor, no far sentido alterar o mesmo.

DEBUGGER R/3 Bsico
UDERSON LUIS

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




Watchpoint:



Utilizado dentro de uma estrutura de iterao (LOOP, DO, WHILE), para fazer a
parada em um determinado valor, necessrio especificar o campo ou (variavel), o
valor de parada e o operador lgico que usar:


Exemplo:

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




Clique em Watchpoint
DEBUGGER R/3 Bsico
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 varivel

Operador relacional =Operador lgico de condio, clique sobre o MATCHCONDE
date e abrir um lista.





De dois clique sobre o campo escolhido.
DEBUGGER R/3 Bsico
UDERSON LUIS

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

Campo ou valor de comparao = o valor que o campo escolhido dever possui
para fazer a parada (lembrando do operador relacional escolhido)

Você também pode gostar