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.

O SAP ajuda-te a traduzir para qualquer lingua

images/thumbnail.jpg - Thumbnail

Volta não volta encontro mais uma virtude escondida do SAP. Então não é que fiquei a saber que existe uma transacção em que podemos introduzir uma determinada palavra numa determinada lingua e o SAP ajuda-nos a traduzi-la para outra lingua qualquer mostrando-nos noutras traduções que já existam para essa mesma palavra.

Não é fixe? Ok, não é o Google Translate, mas é uma bela ajuda.

Ah, já me esquecia, a transacção chama-se STERM.

Abapinho Dev Tools: Translator

images/thumbnail.jpg - Thumbnail

O Nuno Morais desenvolveu uma ferramenta muito útil que auxilia na tradução em massa da maioria dos objectos SAP.

A ferramenta não faz tradução automática entre línguas. Antes, permite:

  • Exportar um ficheiro Excel com textos

  • Importar um ficheiro Excel com textos

  • Copiar textos de uma língua para uma ou mais línguas de destino

  • Criar uma ordem de transporte com as alterações

  • Encontrar dependências de objectos a que faltem traduções

  • Práctico interface de navegação para tradução manual

Usarás literais prontos a traduzir nos programas

images/thumbnail.jpg - Thumbnail

Em programas, em vez de WRITE TEXT-001, usa WRITE ‘bla bla bla’(001). Assim, terás sempre um texto por defeito e além disso o programa será mais legível. https://abapinho.com/en/2011/11/programas-poliglotas/

Não substituirás simplesmente ‘.’ por ‘,’

images/thumbnail.jpg - Thumbnail

Se precisas de adaptar o conteúdo de um ficheiro com valores (CURR) tem sempre em consideração a parametrização do utilizador (USR01-DSCFM). Se precisares de converter um alfa-numérico num número, usa o FM MOVE_CHAR_TO_NUM. Se precisares de converter um número num alfa-numérico, usa WRITE curr TO str [CURRENCY waers].

Lê os textos de um programa

images/thumbnail.jpg - Thumbnail

Aqui está uma forma simples de programaticamente ter acesso aos textos de um programa qualquer.

DATA: t_textos TYPE TABLE OF textpool.
READ TEXTPOOL sy-repid INTO t_textos
  LANGUAGE sy-langu STATE 'A’.

Agora tens os textos todos disponíveis na tabela interna T_TEXTOS.

Como se isto não bastasse, podes também alterar os textos programaticamente. Com os seguintes comandos:

INSERT TEXTPOOL sy-repid FROM t_textos LANGUAGE sy-langu.
DELETE TEXTPOOL PROGRAM LANGUAGE 'E’.

A SAP diz que estes dois últimos comandos são só para uso interno. Se os quiseres usar, fá-lo por tua conta e risco. Não tenho nada a ver com isso. Eu, a não ser que me obriguem, fico-me pelo READ.

Decimais para alfa-numéricos sem depender do utilizador

images/thumbnail.jpg - Thumbnail

Ao ler um ficheiro com valores numéricos para uma tabela interna ou vice-versa, o sucesso da conversão destes depende de o utilizador tem definido o ponto ou a vírgula como separador decimal. É costume ir então ler a configuração do utilizador e depois, adaptar os valores vindos do ficheiro com ponto ou vírgula conforme.

Mas isto é lamentável e pouco elegante. Devia haver uma forma de não fazer a coisa depender do utilizador.

E há.

Mete variáveis dentro de textos standard

images/thumbnail.jpg - Thumbnail

Textos standard toda a gente usa. Mas sabias que os textos standard podem ter campos dinâmicos lá pelo meio? A SAP chama-lhes “símbolos de texto”. A forma de o conseguir é igual à dos velhos formulários da nefasta SE71, ou seja, envolvendo-os com o símbolo &. Assim: &KNA1-NAME1;&. Dá um jeitão. Vou mostrar-te como se faz.

Automatizar catálogo de campos de ALV

images/thumbnail.jpg - Thumbnail

Às vezes pergunto-me qual será, no mundo, a percentagem de código ABAP desnecessário. Um exemplo paradigmático de como se pode desperdiçar tempo a escrever código que não serve para nada e só prejudica é a tão frequente definição das descrições dos campos de uma ALV directamente em ABAP.

Programas poliglotas que sabem o que dizem

images/thumbnail.jpg - Thumbnail

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: