SELECT com CASE
O ABAP está a permitir fazer coisas cada vez mais interessantes em SQL. A última que descobri foi que agora se pode usar CASEs.
O ABAP está a permitir fazer coisas cada vez mais interessantes em SQL. A última que descobri foi que agora se pode usar CASEs.
O meu querido amigo Sérgio Fraga faleceu. O Abapinho também é dele. Para sempre. Obrigado amigo por tudo o que foste.
Os RANGEs têm propriedades interessantes.
Vamos por partes. Imagina um cenário em que tens uma tabela de parametrização com vários níveis de detalhe que podem ou não estar definidos: BUKRS (empresa) WERKS (plant) LGORT (depósito) Quando um dos campos está vazio, é um wildcard, ou seja, é válido para todos os valores.
Quantas vezes na tua vida de consultor tiveste de lidar com dumps que aconteceram em consequência de um programa tentar inserir duas linhas com a mesma chave numa tabela interna definida com UNIQUE KEY? Chega.
Em 2012 lamentei que a LISTBOX fosse tão pouco usada. Ensinei a usá-la com elementos de dado standard, que a populam automaticamente. Hoje vou-te ensinar como a podes popular tu próprio se quiseres listar opções que não venham de um elemento de dados.
Há tantas coisas que se podem fazer nos ecrãs de selecção. Aqui está mais uma: cinco botões na barra de ferramentas.
Quando tens de enviar o mesmo email para mais do que um endereço, o mais comum é guardar a lista de endereços numa tabela qualquer e depois adicionar todos os endereços como recipientes. Mas aprendi recentemente uma forma muito mais bonita para conseguir o mesmo resultado.
Embora muitos ABAPers ainda se esqueçam disto, quanto menos textos forem fixados no programa mais fácil será traduzi-lo. Aqui está uma forma simples mas relativamente obscura de alterar os textos para, por exemplo, adicionar-lhes ícones, mantendo-os traduzíveis.
Imagina que chamas um módulo de função por RFC várias vezes seguidas. Se calhar julgas que cada chamada é completamente independente. Mas não é. O grupo de funções fica carregado em memória no sistema remoto e os mesmos dados globais serão reutilizados em todas as chamadas. Isto não deverá constituir um problema na maior parte dos casos. Mas haverá cenários em que, por uma razão ou outra, o módulo de funções chamado guarda dados em variáveis globais que podem interferir negativamente com as chamadas subsequentes.
Como é que se há-de traduzir dummy? Fica manequim. Comecei a trabalhar recentemente num cliente novo e reparei que fazem aqui uma coisa que me agradou. Quando precisam de invocar por RFC módulos de função em outros sistemas SAP, criam localmente um módulo de função com o mesmo nome mas sem código, apenas com um comentário explicando que é uma função remota noutro sistema. A virtude disto é que assim pode usar-se a ferramenta where-used para descobrir todos os sítios onde é invocada.
Depois de 10 anos a usar o Evernote, este ano comecei a procurar alternativas. No início o Evernote era fantástico. Mas parou no tempo e deixou-se ultrapassar. Entretanto apareceram tantos conceitos novos: jardins digitais, backlinks , Zettelkasten , Evergreen notes , MOCs, etc. E o Evernote lá continua, igual ao que sempre foi, condicionando-nos a tirar notas em vez de criar notas.
Sou do tempo em que as notas da SAP se introduziam à mão. Copy paste e rezar para não errar. Granda maluquice. Lembro-me de um projecto que, por alguma razão que nunca ficou clara, em vez de se fazer upgrade, decidiu-se implementar várias centenas de notas à mão. Imprimiram as notas todas, fizeram num monte gigante com elas e uns 10 consultores passaram um fim-de-semana inteiro a tentar acabar com o monte. Conseguímos. Não faço ideia do que aconteceu a seguir mas de certeza que criámos montes de bugs.
Um dos primeiros artigos do Abapinho foi sobre o Evernote. Ou melhor, foi sobre a importância de tomar notas. Mas nele eu explicava como uso o Evernote para tirar essas notas. Parece mentira mas passaram 10 anos. 10 anos a tirar notas no Evernote. Infelizmente parece que quem faz o Evernote deve ter parado de tirar notas há muitos anos porque o Evernote pouco evoluiu desde que o adoptei. Aliás, na versão iOS, piorou. Já lá vão 10 anos e ainda não conseguiram sequer (tentar?) implementar uma forma decente para editar tabelas. Burros.
Antes do 7.40 ter modernizado o ABAP, um lookup a uma tabela obrigava a declarar uma variável auxiliar e a pelo menos 4 linhas de código.