quarta-feira, 29 de abril de 2026

REPLACE 2.0 - Trocando velhos hábitos (ABAP 7.4+)

 *&---------------------------------------------------------------------*

* Eai galerinhaaa, voltando para trazer um post importante para aqueles
* que estão precisando fazer aquela substituição precisa de final de copa.
* o replace veio com o abap 7.40+ para nos ajudar a acelerar na alteração
* de caracteres com facilidade e praticidade.

REPORT Z_TROCANDO_OS_PÉS.

* Antes de trazer o comando e o uso deixa eu explicar algumas coisinhas
* a função replace é utilizada da seguinte forma e com os parametros de forma
* opcional:
*
*DATA(resultado) = replace (
*                            val  = texto
*                            sub  = 'A'
*                            with = 'E'
*                            occ  = 0
*                            case = true
*                            regex = '^E-'
*                         ).

* Então descrevendo cada parametro:
*
* VAL -> Obrigatório! Será o texto/variavel original a ser substituido.
* SUB -> Obrigatório! Será o valor a ser trocado exemplo letra ou numero.
* WITH -> Obrigatório! Será o valor de substituição.
* OCC  -> Opcional! Será a ocorrencia que deve ser trocada e caso seja 0 será
* executado todas as vezes que aparecer o valor a ser trocado.
* CASE -> Opcional! determina se é case sensitive para não trocar letras em
* caso de maiúscula e minúscula.
* REGEX -> o regex é aquele treco complexo que remove caracteres diferenciados haha

* Beleza agora que ficou mais claro, vamos para a pratica!!

* Supondo que estamos com um problema, eu tenho um problema no meu programa
* que exige que eu substitua sempre a letra F por G por uma limitação, como
* fazer isso da melhor forma sem ter o replace antigão.


* Classico criando variaveis de texto.
DATA(texto|Fato|.

BREAK-POINT"Esse break é para entedendermos o valor do texto

DATA(animalreplaceval  texto
                        sub  'F'
                        with 'G' ).

BREAK-POINT."Esse é para vermos o valor da variável animal e ver o que houve

Continue Lendo...

* Se notarem trocamos rápidamente a variavel sem necessidade de usar o replace
* antigo. E agora voce fala "ta mas pra que isso ?" Agora que vem a magica
* digamos que preciso limpar apenas a segunda vez que uma letra/trecho
* aparecer.

DATA(texto_2|ratoto|.

DATA(segunda_occreplaceval texto_2
                             sub 'to'
                             with ''
                             occ  ).

BREAK-POINT"Olhe bem o que houve com a variável segunda_occ.
WRITE/segunda_occ.

* O replace não se limita a uma utilização por vez, também sendo possível usar
* de maneira encadeada se voce tiver mais de uma condição de remoção

* Exemplo:


DATA(cadeado|lima-oscar-lima|.

DATA(oscarreplaceval  replaceval  cadeado
                                       sub  |lima|
                                       with ||
                                       occ  )
                       sub  |-|
                       with ||
                       occ  0
                   ).

BREAK-POINT.
* É muito importante nesse momento voce selecionar as duas variáveis, oscar e
* cadeado pois é interessante ver o comportamento do replace aninhado.

WRITE/oscar.

* Quando utilizamos o replace inline adicionamos uma flexibilidade muito
* abrangente no seu código pois a possibilidade de utilizar em expressões
* é algo muito exigido para códigos de alta performance e com foco em clean
* code.

* Exemplo de expressão.

DATA(vingador_mais_forte|thor_deus_do_trovão|.

DATA(vingadorto_upperreplace(
                                    val vingador_mais_forte
                                    sub |_deus_do_trovão|
                                    with ||
                                   )
                          )"usando uppercase e replace para expressões
BREAK-POINT.
WRITE/vingador.

* Bom galera é isso que venho trazer para vocês hoje, espero que o replace
* seja de grande utilidade no seu dia-a-dia, não se esqueçam de contribuir
* com questionamentos, ideias de uso e casos que o replace salvo seu dia
* ou impressionou o senior no code-review hahaha.
* Abraço pessoal, fiquem com Deus, bebam água e comam frutas!! tmj!
Comentários
0 Comentários

Nenhum comentário:

Postar um comentário