Patrocinado por
Patrocinado por Inetum

Manipula textos de selecção sem os fixar no programa

images/thumbnail.jpg - Thumbnail
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.

Chama função remotas AS SEPARATE UNIT

images/thumbnail.jpg - Thumbnail
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.

Funções manequins

images/thumbnail.jpg - Thumbnail
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.

Adeus Evernote, olá Obsidian

images/thumbnail.jpg - Thumbnail
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.

Desfazer implementação de nota SAP

images/thumbnail.jpg - Thumbnail
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.

Adeus Evernote, olá Notion

images/thumbnail.jpg - Thumbnail
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.

Lookup em tabela sem ter de lidar com a excepção CX_SY_ITAB_LINE_NOT_FOUND

images/thumbnail.jpg - Thumbnail
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.

Converter montante para formato externo numérico

images/thumbnail.jpg - Thumbnail
Como é conhecido, o SAP guarda internamente os montantes e variáveis com 2 casas decimais. Quando queremos convertê-los no formato externo costumamos usar o WRITE com a opção CURRENCY. Mas o WRITE escreve numa variável alfa-numérica. E se quisermos escrever numa variável numérica?

Cortar e inserir rapidamente

images/thumbnail.jpg - Thumbnail
Lá aprendi mais uma pequena funcionalidade obscura do SAPGui. Como acelerar o corte e costura.

Clean ABAP

images/thumbnail.jpg - Thumbnail
Durante muitos anos, quando entrava em discussões sobre ABAP OO ser melhor do que FORMs, INCLUDEs e CALL FUNCTIONs, o mais comum é a pessoa do lado de lá continuar convencida de que OO é bom nas outras linguagens mas não traz vantagens para o ABAP. Logo a começar pelo atroz código standard SAP que parece ter sido escrito para provar que é possível fazer algo que viola todas as boas prácticas de programação e mesmo assim funciona.

NÃO

images/thumbnail.jpg - Thumbnail
Não, o ABAP nunca vai ter o operador NOT.

MOVE-CORRESPONDING entre duas tabelas respeitando a chave

images/thumbnail.jpg - Thumbnail
O Abapinho não tem falado muito sobre o 7.40 porque as suas novidades têm já sido amplamente descritas em vários sites. Tentamos não inventar a roda. Mas há pequenas pérolas úteis que ainda são pouco conhecidas. Esta é sobre uma delas.

Obtém valores únicos de campo de tabela interna

images/thumbnail.jpg - Thumbnail
Em SQL consegue-se obter os valores únicos de um campo recorrendo ao DISTINCT. Quando os dados já estão numa tabela interna, antes do ABAP 7.40 tinha de se fazer um LOOP e um COLLECT. Mas agora que vivemos em tempos mais modernos, há uma forma simples e elegante que consegue o mesmo com um único comando.

Como correr uma CL_GUI_ALV_GRID em background

images/thumbnail.jpg - Thumbnail
Alguém decidiu correr em background uma ALV editável. Deu dump. A solução é simples mas pouco óbvia.

Usa CL_GUI_ALV_GRID sem ter de criar um ecrã

images/thumbnail.jpg - Thumbnail
Hoje em dia é raro usar o CL_GUI_ALV_GRID porque uso quase sempre a SALV. Mas quando é preciso fazer ALVs editáveis continuo a recorrer à CL_GUI_ALV_GRID. Durante muito tempo julguei que, para a usar, tinha de criar um ecrã com um container, o que é uma chatice. E como eu uso ABAP OO, precisava de criar um function group para alojar o ecrã e um function module para o chamar, o que era outra chatice.