Patrocinado por
Patrocinado por Inetum

Debug em utilizador sem permissões para debug

images/thumbnail.jpg - Thumbnail

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.

Altera programas standard sem precisar de chave

images/thumbnail.jpg - Thumbnail

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.

Altera ordens de transporte mesmo que não te deixem

images/thumbnail.jpg - Thumbnail

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.

Mostra valores não convertidos na SE16N

images/thumbnail.jpg - Thumbnail

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.

Serialização - Clona a Dolly em ABAP

images/thumbnail.jpg - Thumbnail

Este artigo é da autoria de José Vília. A ovelha Dolly está no ABAP e eu não sabia. Depois de criar uma instância de uma classe, gostava de partilhá-la com outro programa totalmente independente para que este outro programa posso usá-la como se a tivesse instanciado. Como se de uma fábrica de ovelhas Dollies se tratasse, o ABAP pode utilizar serialização para resolver o problema.

Abracadabra revela parâmetro secreto

images/thumbnail.jpg - Thumbnail

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.

Protocolo de erros da ALV Grid

images/thumbnail.jpg - Thumbnail

A lei do menor esforço, esse grande axioma da Humanidade, tem, no mundo da programação, a particularidade de, em muitos casos, acabar por ser simplesmente a lei do esforço adiado. Porque é muito provável que algo que tenha sido desenvolvido de acordo com esta lei venha mais tarde a precisar de um grande esforço extra. Seja dos utilizadores que vão utilizar esse algo ou dos programadores que mais tarde terão de o manter. Atire a primeira pedra aquele que não se deixou guiar por esta lei ao desenvolver este ou aquele programas. Eu não atiro.

PlantUML - Finalmente o UML dá para usar

images/thumbnail.jpg - Thumbnail

Prólogo Quando digo que gosto de usar diagramas de classes UML para documentar o meu código as pessoas acham que sou maluco. Introdução O UML ganhou má fama porque as pessoas pensam que primeiro se faz o diagrama de classes todo em UML e só depois o programa. Mas isso era em 1996, quando se achava que a primeira coisa a fazer era o desenho técnico todo, mesmo que na práctica ninguém nunca o fizesse. Hoje em dia felizmente já não temos vergonha de dizer que o próprio acto de programar é já em si uma forma de desenhar.

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

images/thumbnail.jpg - Thumbnail

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:

Relatório de consistência da SALV

images/thumbnail.jpg - Thumbnail

À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:

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

images/thumbnail.jpg - Thumbnail

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: Entras no ecrã de selecção da transacção escrevendo lá em cima /NXD03 Introduzes o número do cliente que queres visualizar e carregas em ENTER Fazes lá o que tens a fazer e depois sais da transacção Mas… de repente… precisas de ver mais qualquer coisa desse cliente

Copiar variante do Code Inspector para outro sistema

images/thumbnail.jpg - Thumbnail

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.

Pasta física vs pasta lógica

images/thumbnail.jpg - Thumbnail

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?

Fechar automaticamente as portas que tu abres

images/thumbnail.jpg - Thumbnail

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.

Dantes o ABAP gostava de inverter datas

images/thumbnail.jpg - Thumbnail

Todos os dias o ABAP me revela coisas novos. Às vezes coisas que mais valia eu nem saber que existem. Como esta. A tabela T056P tem um campo com uma data. Fazendo um SELECT a esta tabela filtrando pela data não conseguia obter nada de jeito. Mas o código parecia correcto. Na SE16N descobri que o intervalo de datas também não funcionava conforme esperado: só apresentava resultados quando a data final era colocada no LOW e a inicial no HIGH. Bizarro.