"
Supported by

Multilingual programs that know what they are talking about

SAP is multilingual. But ABAP not always. ABAP does have some ability to learn and speak a few languages, but sometimes the programmers do not let it.

A lot of programmers whack literal texts directly into the program, leaving it forever unable to communicate in multiple languages. I can think of two reasons for shackling a program to just one language:

  • Laziness, the main reason for doing things badly;
  • Legibility. In fact the way to make an ABAP program localizable is to pack it full of text references, like TEXT-001, which can get a bit illegible.

So here is a tip to get the best of both worlds: a localizable program that does not lose legibility:

Instead of being lazy and doing this:


WRITE: 'I want to see the aurora borealis'.

And instead of being obscure and doing this:


WRITE: TEXT-001.

Be smart and do this:


WRITE: 'I want to see the aurora borealis'(001).

Done.

If the text TEXT-001 is defined in the language in which the program is running, this TEXT-001 will be used. Otherwise, the literal text written directly in the program will be used. Thus the code’s legibility is retained, the texts can be translated freely, AND we can be sure that where some text is untranslated, the text stored in the program will appear.

Thanks to Sérgio Lopes for the tip.
(And thanks to doug88888 for the photo.)

Greetings from Abapinho.

4 comentários a “Multilingual programs that know what they are talking about”

  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


About Abapinho
Abapinho runs on WordPress
Articles (RSS) e Comments (RSS).