"
Apoiado por

Programas poliglotas que sabem o que dizem

O SAP é um grande poliglota. Mas o ABAP nem sempre. O ABAP até tem muita facilidade em aprender e falar várias línguas, mas às vezes os programadores não o deixam.

Muitos programadores cinzelam os textos literais directamente no programa, deixando-o irremediavelmente incapaz de comunicar em vários idiomas. Imagino duas razões para se agrilhoar um programa a uma única língua:

  • A preguiça, que é a principal razão para se fazerem as coisas mal feitas;
  • A legibilidade. Realmente a forma de tornar um programa ABAP localizável é pejá-lo com referências a textos, tipo TEXT-001, o que pode torná-lo bastante ilegível.

Então aqui fica uma dica para ter o melhor dos dois mundos: um programa localizável que não perca a legibilidade:

Em vez de seres preguiçoso e fazeres:


WRITE: 'Eu quero ver auroras boreais'.

E em vez de seres obscuro e fazeres:


WRITE: TEXT-001.

Sê esperto e faz:


WRITE: 'Eu quero ver auroras boreais'(001).

E já está.

Se o text TEXT-001 estiver definido na língua em que o programa estiver a correr este TEXT-001 será usado. Caso contrário, o texto literal escrito directamente no programa será usado. Assim mantém-se a legibilidade do código, pode traduzir-se os textos à vontade e ainda por cima temos a certeza de que, mesmo quando faltar traduzir algum texto, mesmo assim aparecerá o texto que está no programa.

Obrigado Sérgio Lopes pela dica.

(E obrigado doug88888 pela foto)

O Abapinho saúda-vos.

4 comentários a “Programas poliglotas que sabem o que dizem”

  1. Bruno Esperança Diz:

    Boas Abapinho!

    Por falar em poliglotismo… existe um cenário que tenho visto frequentemente (muito mais que o que gostaria) e não sei se já falaste dele ou se já te deparaste com o mesmo, que tem a ver com o formato dos números…

    Ora, o que vejo muito frequentemente é a substituição dos pontos por um espaço, das vírgulas por um ponto, e um belo condense no fim para embelezar a coisa. Claro que isto é um autêntico assassínio do programa, pois assim que for utilizado por alguém num país que funcione ao contrário (como os nossos colegas do outro lado do Atlântico) isto vai funcionar muito mal… normalmente até resulta em erro em tempo de execução…

    Para ultrapassar este problema existe um módulo de função muito simpático chamado MOVE_CHAR_TO_NUM, este módulo de função pergunta ao SAP qual é o formato configurado pelo utilizador para os separadores dos milhares e décimais e faz a conversão consoante esta configuração. Se o utilizador tiver o SAP configurado duma maneira e fizer um upload ou inserção dum número ao contrário aí já não há nada a fazer, mas ao menos fizémos o nosso trabalho como deve ser.

    Abraço, espero que a dica seja útil.

  2. admin Diz:

    Olá Bruno, obrigado, vou experimentar e depois hei-de fazer disso uma dica ;)

  3. Bruno Esperança Diz:

    Dispõe sempre, o prazer é todo meu.

    Atenção a uma questão, este módulo de função tem um parâmetro estranho de saída, que se adapta ao tipo usado na chamada à função. Quando usado na SE37 parece que não devolve decimais, mas quando usado programaticamente ele funciona como deve ser com o número de casas decimais da variável utilizada :)

    Abraço!

  4. admin Diz:

    obrigado!

Deixe um comentário


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