Professional Documents
Culture Documents
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 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.
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:
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).
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,
Tecle F5 e observe que o ponteiro ir direto para o comando de atribuio: T_ZFUNCIONARIO-MATRICULA = P_MATRI.
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.
tudo posso naquele que me fortalece (Filipenses 4:13).
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:
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 T_ZFUNCIONARIO-DATANASCIMENTO T_ZFUNCIONARIO-RG T_ZFUNCIONARIO-CPF = P_NOME. = P_DATNA. = P_RG . = P_CPF.
Siga os passos at que o ponteiro fique apontado sobre o comando: APPEND T_ZFUNCIONARIO.
Ainda com o ponteiro, apontado ao comando APPEND , clique duas vezes sobre a tabela interna T_ZFUNCIONARIO.
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 00001 Datnam 10.10.2000 Nome Cana de Acar Descrio Matria Prima
LOOP AT TabelaX
Matnr 00001 00002 00003 Datnam 10.10.2000 14.12.2006 20.25.2000 Nome Cana de Acar lcool Gasolina Descrio Matria Prima Matria Prima Matria Prima
HeaderLine da TabelaX
Matnr 00002 Datnam 14.12.2006 Nome lcool Descrio Matria Prima
LOOP AT TabelaX
Matnr 00001 00002 00003 00004 00005 ENDLOOP Datnam 10.10.2000 14.12.2006 20.25.2000 11.09.1997 13.08.2005 Nome Cana de Acar lcool Gasolina leo Diesel BioDiesel Descrio Matria Prima Matria Prima Matria Prima Matria Prima Matria Prima
HeaderLine da TabelaX
Matnr 00003 Datnam 20.25.2000 Nome Gasolina Descrio Matria Prima
LOOP AT TabelaX
Matnr 00001 00002 00003 00004 00005 ENDLOOP Datnam 10.10.2000 14.12.2006 20.25.2000 11.09.1997 13.08.2005 Nome Cana de Acar lcool Gasolina leo Diesel BioDiesel Descrio Matria Prima Matria Prima Matria Prima Matria Prima Matria Prima
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.
Somente os dados estaro dentro da tabela interna T_ZFUNCIONARIO quando o comando APPEND for passado. Tecle F5
O ponteiro est apontado sobre o comando MOVE, onde est movendo cada valor, Diretamente a HeaderLine da Tabela ZFUNCIONARIO.
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[].
O comando clear como o prprio nome diz, serve para limpar campos de variveis, tabelas internas e headerline, a Sintaxe : CLEAR: TABELA_INTERNA CLEAR: TABELA_INTERNA[] = Limpa a Header Line de uma tabela Interna = Limpa a tabela interna sem limpar a Header Line
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:
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:
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.
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 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.
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 em Watchpoint
tudo posso naquele que me fortalece (Filipenses 4:13).
Onde Programa Nome do campo = nome do programa = Nome do campo da tabela ou varivel
Operador relacional =Operador lgico de condio, clique sobre o MATCHCONDE date e abrir um lista.