*&---------------------------------------------------------------------*
* 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.
* ).
* 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(animal) = replace( val = texto
sub = 'F'
with = 'G' ).
BREAK-POINT."Esse é para vermos o valor da variável animal e ver o que houve
* 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(animal) = replace( val = 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_occ) = replace( val = texto_2
sub = 'to'
with = ''
occ = 2 ).
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(oscar) = replace( val = replace( val = cadeado
sub = |lima|
with = ||
occ = 0 )
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(vingador) = to_upper( replace(
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!
* 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_occ) = replace( val = texto_2
sub = 'to'
with = ''
occ = 2 ).
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(oscar) = replace( val = replace( val = cadeado
sub = |lima|
with = ||
occ = 0 )
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(vingador) = to_upper( replace(
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!