quarta-feira, 15 de abril de 2026

TRANSLATE 2.0 - Traduzindo velhos hábitos (ABAP 7.4+)

*&---------------------------------------------------------------------*
* Eaiii pessoal tudo bão ? Seguinte hoje eu vim renovar um post antigo do
* Mauro(Mestre ABAPssauro) do nosso coração, e o respectivo post é o do
* translate upper/ to lower case. A gente gosta de coisa vintage mas não da
* para ficar usando velharia em código moderno meus jovens, bora fazer
* aquela moral com o Senior e colocar as nossas queridas built-in functions
* na jogada !!

* Então vamo lá a premissa é a mesma, "Felipão estou controlando um parametro
* de entrada direto por uma variavel porém se ela não for maíuscula/minúscula
* vou ter vários problemas para cair nos meus CASES/WHEN/SWITCHS, o que
* fazer ? " Não temas, como o Mauro ja nos ensinou no passado, temos os
* comandos do TRANSLATE, se quiser saber mais da uma olhada nesse link
* abaixo:

TRANSLATE ... TO LOWER / UPPER CASE e USING

* Porem chegou a hora de modernizar a parada e trazer uma cara mais atual
* ao seu código abap.

REPORT ZFELIPE_UPPER_TO_LOWER_V2.


* Primeiro vamos criar uma variavel de texto digamos que ela será usada para
* controlar uma maquina de refrigerante. E meus cases utilizam tudo em Upper
* Case.
DATA(saboor_refrigerante|laranja|.

* Agora preciso convertela para upper case de forma rápida.Criarei mais uma
* variável para manter um fluxo mais visível para que voce possa visualizar
* depois.
DATA(saboor_maisculoto_uppersaboor_refrigerante ).

WRITEsaboor_maisculo.
* Viu só nem doeu, "Aaaa Felipe o outro tambem era só uma linha pra que vou
* usar assim ? " Agora que te explico jovem, esse carinha você pode usar
* de maneira mais dinâmica e durante execuções de outros comandos.

* Exemplo:

* vou criar uma tabela simples apenas para demonstrar e claro vamos deixar
* nossa sintaxe cada vez mais moderna.

data(tabela_de_saboresVALUE string_table|uva| )
                                              |cola|    )
                                              |limao|   ).

* Caso não esteja acostumado a criar tabelas assim, elas vieram com abap
* 7.5+ voce passa o VALUE e o tipo da tabela/estrutura e dentro
* dela preencherá as colunas e linhas com o que deseja, faremos um post
* mais detalhado logo logo , mas ja falo isso salva muito tempo em teste
* hahah.

LOOP AT tabela_de_sabores INTO DATA(sabor).

  WRITE/to_uppersabor )"Lembre de respeitar o espaço dentro dos
                               "parenteses.
ENDLOOP.

* viu ? não precisei colocar o translate, criar uma variável e por fim
* escrever o valor na tela, aqui fazemos tudo ao vivo e a cores

* "Tabeleza Felipão agora vi que da para usar o upper mas e o lower ? Mesma
* lógica rapaziada, apenas o nome muda usaremos o to_lower( ).

DATA(tabela_de_sabores_em_upperVALUE string_table|GUARANA| )
                                                       |ABACAXI| )
                                                       |FRAMBOESA| ).

LOOP AT tabela_de_sabores INTO DATA(saboor).

  WRITEto_lowersaboor )"Lembre de respeitar o espaço dentro dos
                                 "parenteses e as piadas.
ENDLOOP.

* "OKAYYY mas e o translate using que substituia as parada?" Então pessoal
* esse carinha não tem um substituto 1:1 mas a função não morreu calma,
* vamos usar um cara que vou apresentar aqui e focar mais em outro post.

* Esse cara é o replace( ) na tradução clara ja diz ele vai subtituir o valor
* por outro, e como usar ele é bem simples.

DATA(linha_toda_errada|betete|.

DATA(linha_certareplaceval  linha_toda_errada "origem
                             sub  |e|  " valor a ser substituído
                             with |a|  " valor a ser inserido
                             occ  )" occ é a ocorrencia

WRITE/linha_certa.

* Seguinte galera essa é versão 2.0 do uso do translate e ai ? o que acharam
* nos digam ai nos comentários, digam se faz sentido essa "inovação" da SAP
* e quais outros exemplos de uso existem para esses caras
*
* Um abraço pessoal, bebam água e comam frutas !! tmj.

Comentários
0 Comentários

Nenhum comentário:

Postar um comentário