"
Apoiado por:

Artigos etiquetados com ‘segredo’

Cria variantes de teste em funções a partir do debugger

maquina_lavar_roupa

Imagina que estás a fazer debug de uma transacção e entras numa função e encontras algo interessante. Tão interessante que tens de lhe fazer debug várias vezes. A via convencional é tornar a iniciar o debug da transacção desde o início. Que seca.

Mas há uma via mais directa. Quando estás a fazer debug de uma função podes, directamente a partir do debugger, criar dados de teste para essa função com os valores com que a função tiver sido chamada nessa instância. É assim:

Ler o resto do artigo »

O histórico do SAPGui não funciona ainda que activo?

torre-belem

Já te aconteceu o SAPGui não guardar um histórico dos valores que vais introduzindo nos vários campos ainda que, nas configurações, a opção de Histórico esteja activa?

Ler o resto do artigo »

Debug em janelas de diálogo modais

atirar-para-cima

Há determinados momentos em que não é possível fazer /H para iniciar o debugger. O caso mais comum é durante uma janela de diálogo modal (aquilo que os estrangeiros chamam de popup). Mas há uma forma simples, ainda que rocambolesca, para o conseguires:

Ler o resto do artigo »

Macros globais

makro

Noutro artigo falámos de macros, uma funcionalidade relativamente obscura e pouco utilizada que tanto pode ser útil como criar uma grande salganhada. Mas estas não são as únicas macros do ABAP. Há outras, ainda mais obscuras e com ainda maior potencial de enfarelhamento de um sistema: as macros globais.

Nem sei se revele isto de tão esquisito que é…
Mas também não me parece bem escondê-lo…
Seja, revelarei.

É possível definir macros a nível global do sistema que podem ser utilizadas em qualquer programa ABAP. Para isso existe a tabela TRMAC:

A utilização é evidente: NAME é o nome do macro, NUMM é o número da linha e LINE representa uma linha de código. Um macro com 3 linhas deverá ter 3 entradas na tabela TRMAC.

Agora que já sabes da existência destas macros, faz o favor de te esquecer delas. E se para ti o perigo da utilização destes macros não é evidente então tu também és um perigo. Porque é que me dou então ao trabalho de falar sobre esta aberração? Acima de tudo porque isto revela que o famoso comando “BREAK user” não é mais do que uma macro global, como podem ver pela imagem da tabela. Muito curioso.

(Obrigado ao Bruno Filipa pela dica)

O Abapinho saúda-vos.

Começar com o pé direito

pes-praia

Quando se faz login no SAP normalmente vai parar-se ao menu. Mas pode usar-se o módulo de função NAVIGATION_SET_START_TCODE para pré-definir uma transacção inicial. Vale o que vale, mas é melhor saber que existe do que não saber que existe e ainda melhor do que sabe que não existe. Quem sabe dê jeito a alguns utilizadores. Existe também o módulo de função NAVIGATION_GET_START_TCODE para ver qual está pré-definida.

O Abapinho saúda-vos.

Nem o Luís de Matos faria melhor

chaves

Às vezes acontece querermos aceder a uma transacção e não termos permissões. É uma chatice. Felizmente existe o módulo de função ALINK_CALL_TRANSACTION que alivia a situação. Mas usa com cuidado, não vá alguém zangar-se. Bem-vindo ao lado negro do Abapinho. Se disserem que fui eu que disse, nego tudo.

O Abapinho saúda-vos.

(obrigado ao Bohman pela foto)

Testar na SE37 não grava dados? Grava.

Uma forma prática de aprender a usar um módulo de funções ou verificar se este nos é útil é através da funcionalidade de teste da transacção SE37. Escolhe-se o módulo de função, faz-se F8 (Executar) e tem-se uma forma interactiva de testar uma função.

Isto é óbvio.

O que não será óbvio para toda a gente é que este teste não faz COMMIT à transacção e, por isso, qualquer alteração que a função possa fazer à base de dados – como gerar um documento por exemplo – não é gravada.

Bem, se isto também é óbvio para muita gente, menos óbvia será talvez a solução para esta limitação:

  1. Escolher a função e fazer F8 para a testar;
  2. Preencher os parâmetros desejados e fazer F8 novamente para a executar;
  3. Seleccionar a opção de menu “Módulos de Função->Outro Módulo de Função”;
  4. Escolher o módulo de função “BAPI_TRANSACTION_COMMIT” e fazer F8.

Agora as alterações feitas pela primeira função estão gravadas na base de dados.

O Abapinho saúda-vos.

A transacção N

É intrigante o porquê de, nos dias que correm, a transacção SE16 continuar a ser tão utilizada, quando já existe há tantos anos uma muito melhor, a SE16N.

A transacção SE16N tem mais:

  • sainete: tem um interface mais dinâmico e sofisticado;
  • simpatia: mostra em simultâneo a descrição funcional e o nome técnico dos campos;
  • sabedoria: mostra em simultâneo o valor interno e externo dos campos com rotinas de conversão;

E pode, vejam só, ser também invocada através da transacção N.

Se no entanto continua a usar a SE16 por ser masoquista, então sugiro que experimente a SE17. Doerá ainda mais.

O Abapinho saúda-vos.


Acerca do Abapinho
O Abapinho é suportado pelo WordPress
Artigos (RSS) e Comentários (RSS).