"
Categoria > Dicas
Apoiado por

Injectar comandos ABAP num sistema produtivo

O vídeo abaixo demonstra como é simples criar condições para facilmente injectar comandos ABAP em programas em produtivo.

Ponderei sobre partilhar este vídeo pois o seu conteúdo pode ser usado para fins menos nobres. Mas, como já aconteceu no passado, acredito que é preferivel que isto seja divulgado pois é fundamental que os administradores de sistema estejam conscientes desta possibilidade e protejam os seus sistemas dela. Pois é algo verdadeiramente perigoso.

Obrigado Ricardo Monteiro pela dica.

O Abapinho saúda-vos.

Transporta uma tabela local com os ecrãs de manutenção

Criaste uma tabela e os seus ecrãs de manutenção como objectos locais.

Quando mais tarde te arrependeres e decidires transportar a tabela, como fazes para os transportar também os ecrãs de manutenção?

Transportar só o grupo de funções não chega, vai dar erro.

Ler o resto do artigo! »

Testa uma sequência de funções na SE37

Podia jurar que já tinha feito um post sobre isto mas não consigo encontrá-lo por isso aqui vai.

Há funções que guardam dados globais que serão depois usados por outra função do mesmo grupo. Ora se quiseres testar as duas juntas é fundamental que corram sequencialmente dentro da mesma transacção.

Toda a gente sabe que a transacção SE37 permite testar uma função. O que pouca gente sabe é que a transacção SE37 permite testar uma sequência de funções dentro da mesma transacção. Quem não sabe isto normalmente acaba por criar um pequeno programa de testes para chamar as várias funções em sequência. Fica agora a saber como o pode evitar.

Ler o resto do artigo! »

Controla mais o teu ecrã de selecção

Os PARAMETERS e os SELECT-OPTIONS até têm algumas opções de configuração. Mas muitas vezes dava jeito conseguir configurá-los ainda mais. E curiosamente, ainda que não seja assim tão simples, é possível fazê-lo, através de uma função standard.

Ler o resto do artigo! »

Debug em utilizador sem permissões para debug

Num sistema bem protegido, os utilizadores não têm permissões para debug. Mas muitas vezes isso complica a vida dos ABAPers que, ao quererem resolver um problema desse utilizador, não podem fazer debug à sua sessão.

Mas há uma forma legítima, ainda que pouco óbvia, de contornar o problema.

Ler o resto do artigo! »

Altera programas standard sem precisar de chave

Estamos perante mais um daquelas dilemas: esconder porque é perigoso e alguém pode fazer o mal usando esta informação ou ensinar porque não o fazer é paternalista porque presume que os leitores não são responsáveis. O regimes de ditadura costumam optar pela primeira: queimam livros e censuram. O Abapinho gosta de acreditar que os seus leitores são pessoas responsáveis que merecem ter acesso ao conhecimento.

E, por isso, aqui está. Não, não é um manual de como criar urânio enriquecido nem uma fórmula para nitroglicerina caseira. Mas anda perto: é um truque para conseguir alterar objectos standard sem precisar de chave.

Ler o resto do artigo! »

Altera ordens de transporte mesmo que não te deixem

Como todos nós sabemos os administradores de sistemas são pessoas más, insensíveis e crueis. A prová-lo está o incontornável BOFH.

Nós, programadores ABAP, somos vítimas indefesas nas mãos destas criaturas maléficas.

Mas nem sempre somos obrigados a deixar-nos esmagar pelos dedos peludos dos seus caprichos.

Ler o resto do artigo! »

Mostra valores não convertidos na SE16N

A SE16N mostra-te os valores dos campos no formato externo. Até há pouco tempo eu usava a arcaica SE17 para ver os valores no formato interno. Mas o Rui Nunes explicou que há uma forma de o conseguir fazer na SE16N.

Ler o resto do artigo! »

Abracadabra revela parâmetro secreto

Aqui está uma forma pouco ortodoxa de lidar com o ecrã de selecção de um programa.

Se tiveres um parâmetro que pretendes manter escondido dos olhos dos utilizadores e mesmo assim poder ter acesso a ele (ex.: um pisco para entrar em modo de debug) podes usar a palavra mágica ABRACADABRA para lhe aceder.

Funciona assim:


DATA: unhide_parameters TYPE flag.

PARAMETERS: p_debug AS CHECKBOX.

AT SELECTION-SCREEN.
  CASE sy-ucomm.
    WHEN 'ABRACADABRA'.
      unhide_parameters = abap_true.
    WHEN 'NORMAL'.
      CLEAR unhide_parameters.
  ENDCASE.

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF screen-name = 'P_DEBUG' AND unhide_parameters IS INITIAL.
      screen-active = 0.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.

Quando estiveres no ecrã de selecção basta escreveres ABRACADABRA no campo de comandos e o teu parâmetro secreto aparece magicamente. Se for preciso depois podes escrever NORMAL e ele torna a desaparecer.

O Abapinho saúda-vos.

Classe para garantir segurança em programação dinâmica

No outro dia encontrei um programa que gerava um comando SQL com base em várias variáveis fixadas no código. Mas, por distracção ou ignorância, a alminha que fez aquilo achou que fazia sentido associar essas variáveis a símbolos de texto. Algo assim:

Ler o resto do artigo! »

Relatório de consistência da SALV

Às vezes uma SALV pode ter inconsistências que passam despercebidas a quem as programa. Um exemplo é uma estrutura com um campo WRBTR sem um campo de moeda associado:

Ler o resto do artigo! »

Entra numa transacção sem passar pelo ecrã de selecção

Mais uma vez o SAPGui me surpreende com mais um atalho obscuro que desconhecia.

Usemos a transacção de visualização de clientes XD03 como exemplo:

  1. Entras no ecrã de selecção da transacção escrevendo lá em cima /NXD03
  2. Introduzes o número do cliente que queres visualizar e carregas em ENTER
  3. Fazes lá o que tens a fazer e depois sais da transacção
  4. Mas… de repente… precisas de ver mais qualquer coisa desse cliente
  5. Em vez de /NXD03 fazes /*XD03
  6. Como que por magia apareces dentro da transacção já mostrando os detalhes do último cliente

É extraordinário como até hoje nunca ninguém me falou nisto.

Também já experimentei na FB03 por isso deve funcionar numa boa parte das transacções funcionais. Infelizmente já constatei que não funciona na que uso mais: SE24, SE38 e SE11. Pena.

Ide e espalhai a notícia!

Obrigado Sérgio Fraga pela dica.

Foto: Leonard J Matthews.

O Abapinho saúda-vos.

Copiar variante do Code Inspector para outro sistema

No meu cliente tenho três ambientes de desenvolvimento. Dantes tinha só um. E foi nesse que configurei a variante do Code Inspector que uso para correr o Abap Test Cockpit.

Quando apareceram os outros dois, antes de me decidir a replicar a variante à mão em cada um deles, decidi investigar um pouco. Para minha surpresa encontrei no GitHub o projecto upDOWNci que faz exactamente o que eu precisava: exportar e importar variantes do Code Inspector.

Trigo limpo, farinha amparo.

Obrigado Lars por teres feito esta singela mas útil ferramenta. Aliás, obrigado pelas dúzias de de ferramentas úteis que já ofereceste à comunidade. São notáveis.

O Abapinho saúda-vos.

Pasta física vs pasta lógica

Se num relatório chamado APP1 precisares de gravar um ficheiro numa determinada pasta do servidor (ex.: /export/app1/) e não quiseres que esta pasta seja um parâmetro, como fazes?

Ler o resto do artigo! »

Fechar automaticamente as portas que tu abres

Estas no editor. Introduzes um ( ou [ ou { ou ‘ e o SAP é mongo e não o fecha certo?

Ora bem,

Clica no ícone em baixo à direita que acede às opções do SAPGui onde adicionamos template.

Na opção formatting, activas o Enable Auto Brackets e voilá, o SAP começa a fechar automaticamente as portas que tu abres.

Mais valia que isto viesse activado de raiz.

Obrigado Sérgio Fraga pela dica.

O Abapinho saúda-vos.


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