Categoria > Dicas
Patrocinado por
Patrocinado por Inetum

Exemplar exemplo de SALV

images/thumbnail.jpg - Thumbnail

A não ser que queiras fazer edição dos dados, a única forma digna de usar ALVs nos dias que correm é através das classes SALV. São mais modernas, mais elegantes e permitem a quem as usa alcançar um estatuto social até aqui apenas ao alcance daqueles que são donos de uma matrícula de carro.

Pára lá mas não já

images/thumbnail.jpg - Thumbnail

Estás a fazer um LOOP AT a uma tabela com 1000 linhas e sabes que a linha que te interessa é a 853. Até há pouco tempo tinhas duas hipóteses: ou carregavas 852 vezes na tecla F8, arriscando-te a carregar 853 e teres de começar tudo de novo ou então criavas um watchpoint com a condição SY-TABIX = 852 ou lá perto e rezavas para que funcionasse.

Agora tens uma terceira alternativa.

APPEND LINES OF classe->metodo() TO itbl

images/thumbnail.jpg - Thumbnail

O ABAP anda cada vez mais esperto. Ainda sou do tempo em que não se fazia nada dele. E agora, lentamente, com mais de um quinto de século de atraso, lá vai tentado imitar o C e o Java e ficando mais flexível.

Eu ia fazer algo deste tipo:

Teclado automático

images/thumbnail.jpg - Thumbnail

Todos os programadores conhecem a relação íntima que há entre batch-inputs e pisa-papéis, agrafadores e outros objectos pesados do tipo. São ajudantes preciosíssimos que evitam passarmos por vezes 8 horas a empurrar uma tecla chamada ENTER com um dedo.

Ainda que esse tipo de objectos tenha algum encanto, por vezes a lei da gravidade - a mesma que os torna úteis - fá-los cair para o lado e pararem assim de pressionar a tal tecla chamada ENTER.

Adicionar valor a domínio standard

images/thumbnail.jpg - Thumbnail

Se julgas que não é possível acrescentar valores a um domínio SAP standard sem pedir uma chave de activação, estás enganado.

Usa sempre classes de mensagens nas classe de excepção

images/thumbnail.jpg - Thumbnail

As classes de excepção permitem declarar múltiplos textos que descrevem os diferentes erros possíveis que elas podem representar.

Há no entanto uma opção para a associar a uma classe de mensagens (SE91). Isto permite que, em vez de os textos serem definidos directamente ali na classe de excepção, sejam antes definidos como clássicas mensagens da SE91. E tem vantagens.

O editor de ABAP tem boa memória

images/thumbnail.jpg - Thumbnail

No editor ABAP selecciona uma palavra e faz CTRL-C. Depois selecciona outra palavra e faz novamente CTRL-C. Depois outra e outra. Copiaste várias vezes palavras para o clipboard. Diz a experiência e o senso comum que agora, se fizeres CTRL-V só vais poder usar a última palavra que para lá copiaste.

Mas não é bem assim. Talvez não saibas mas o editor de ABAP tem boa memória.

Compara uma tabela entre dois sistemas

images/thumbnail.jpg - Thumbnail

A transacção SCMP permite comparar o conteúdo de uma tabela entre dois sistemas. Muito útil, principalmente para tabelas de parameterização. É muito simples de usar. Permite fazer uma pré-selecção dos registos bem como dos campos a comparar. Permite também mostrar apenas as diferenças, o que é conveniente para tabelas com muitos dados. E acho que não é preciso explicar mais. Ite et videte. Esta dica apareceu recentemente no ex-blog SAPtricks e é tão útil que vo-la ofereço aqui também, caso não a tenham lá visto já.

SELECT... ORDER BY PRIMARY KEY

images/thumbnail.jpg - Thumbnail

Embora já use ABAP desde 1998, todas as semanas aprendo novas funcionalidades ou opções ou mesmo novos comandos. Parece mentira. Hoje partilho uma pequena opção do SQL que descobri recentemente: SELECT * FROM T001 INTO TABLE T_T001 ORDER BY PRIMARY KEY. O SELECT e o FROM e o INTO e o TABLE e mesmo o ORDER BY já os conheço há muito tempo. Só não conhecia é o PRIMARY KEY.

Função para gerar bonecada

images/thumbnail.jpg - Thumbnail

Bonecada fica sempre bem num relatório. Num SAPGui que é um tédio azulado, quanto mais cores e bonecos melhor. O Luís Rocha mostrou-me uma função muito conveniente para atafulhar um relatório com ícones.

SELECT comparando 2 campos da própria tabela

images/thumbnail.jpg - Thumbnail

Esta dica é simples e rápida mas aposto 200$482 em como poucos a sabem.

Erro de sintaxe ao retornar tabela num método

images/thumbnail.jpg - Thumbnail

Quando, num método de uma classe, crias um parâmetro de retorno que é um TABLE TYPE baseado num tipo declarado na própria classe, às vezes aparece um erro que diz:

“Os parâmetros RETURNING devem ser completamente tipificados.”

Comando /HS

images/thumbnail.jpg - Thumbnail

Todo os funcional, até o mais funcional dos funcionais, sabe que para começar a depurar (vá, a fazer debug a) um programa ABAP se usa o comando /H. Mas raro será o programador, mesmo o mais programador dos programadores, que saberá para que serve o comando /HS.

Chama dinamicamente classes e métodos

images/thumbnail.jpg - Thumbnail

Ora aprende lá como invocar dinamicamente um método.

Vamos a isso.

Funções Z misturadas com vistas de manutenção, não!

images/thumbnail.jpg - Thumbnail

A dica de hoje não é uma dica. É um conselho.

Criada uma tabela, depois crias as suas vistas de manutenção. As vistas de manutenção vivem dentro de um grupo de funções. Grupo de funções esse que te é pedido aquando da criação delas. Porque afinal aquilo não passa de um conjunto de código gerado, sendo que a maior parte são ainda assim includes standard. Montes deles.

Apresento-te o problema: há quem crie funções Z suas e as coloque em grupos de função que contêm vistas de manutenção. É verdade. Há quem o faça.