quinta-feira, 2 de abril de 2026

Introdução a Built-In Functions REVERSE - Here it comees a new Challeengeerrr

*--------------------------------------------------------------------*
*  Fala galera!!O Mauro(Membro raiz do Clã) foi lá na minha casa me chamar
* para ajudar com os posts aqui no blog, Prazer a todos meu nome é Felipe
* estou no ABAP a cerca de 4 anos e um dos meus hobbies favoritos é
* quebrar os programinhas Z dos colegas. Brincadeiras a parte, adoro
* ensinar e ajudar as pessoas por isso devo estar participando de
* posts futuros !Vamo junto nessa jornada.

*  OBS: Gosto de animes e games então quaisquer referência é apenas
* coincidência.

*  Galera alguma vez você ja se encontrou na situação de fazer achar uma
* posição de um delimitador, letra ou caractere porem ele se repete várias
* vezes e voce só quer a ultima vez que ele da as caras ?
* então com a versão 7.4+ o abap trouxe algo muito popular em outras
* linguagens que é BUILT-IN functions

*  Felipão, nunca toquei em outra linguagem o que é uma built-in function ?"
* Então as built-in's functions
* são a salvação dos DEV's pois elas agilizam o que antes tinha classes,
* plugins ou funções que precisavam
* de pacotes ou serviços especificos mas que foram imbutidas diretamente
* na linguagem.

* Hoje vamos usar a funcionalidade REVERSE.

*--------------------------------------------------------------------*

REPORT zfelipe_domi_reverse.

DATA(uma_string|Laranja;Maca;Banana;Tomate;Picles|.
*  Se voce ainda não se acostumou com string templates relaxa pois elas
* são bem simples os 'PIPES' ou barras verticais dão inicio tudo que fica
* dentro delas serão strings."e claro a declaração inline é algo que já
* devemos começar a introduzir no dia a dia

DATA(uma_string_invertidareverseuma_string ).
* Não esquece dos espaços porque o reverse é como um metodo

BREAK-POINT.
*  Nesse momento da uma olhada na variavel string invertida e
* repare que ela literalmente inverte no melhor estilo Stranger Things.

*  Vamos agora encontrar o OFFSET "Felipão, o que é OFFSET?" - É a posição de
* index ou seja a posição colunar exata do caractere na string

FIND ';' IN uma_string_invertida MATCH OFFSET
DATA(ultima_aparicao_do_cara).
BREAK-POINT.
*  Repare que eu crio o OFFSET inline para trazer as boas práticas e claro
* facilitar minha vida. - Da um duplo clique nesse cara.Voce vai notar
* que o numero 6 é exatamente a posição do ultimo ";"
*  Mas Felipão para que eu uso isso ? - Muitas coisas vocepode garantir que
* o ultimo cara seja deletado ou o ponto de partida.
* Exemplo vou usar ele para deletar o que vem depois para
* isso vou fazer um calculo simples

DATA(delimitador_finalstrlenuma_string ultima_aparicao_do_cara.
BREAK-POINT.
*  Usei o string length outra built-in para calcular o
* tamanho da string, da um duplo clique voce vai ver que ele é um INT e
* se eu subtrair o valor que eu achei no reverse vou deletar o que vem
* depois

 write uma_string(delimitador_final).
*  Essa variavel é um INT então posso jogar ele aqui.

*  Legal Ne ? isso pode ser útil quando voce não quer fazer um contador
* com um loop de while = true. Por favor deem sugestões de uso para esse
* recurso e claro deixem os comentários de dúvidas e dicas.
*  Valeu Galera até a proxima.