miércoles, 1 de junio de 2011

Convertir caracteres extraños en ABAP

La entrada de hoy no tiene nada que ver con CRM. Se trata de reemplazar caracteres extraños. En ocasiones al importar o exportar archivos o incluso en la comunicación entre módulos o sistemas (para quien no hay lo sepa el módulo de CO-PA es un poco "especial") se transportan caracteres que no son representables.
Realmente es muy frustrante ver como un caracter extraño puede deshacer todo un desarrollo. Estos caracteres no se puede atacar mediante un REPLACE ya que no pueden ser entrados por teclado y el cambio a hexadecimal no suele dar muy buenos resultados.
En el ejemplo que os pongo cambiremos esos caracteres por el caracter '/' con lo que ya lo podeis tratar como un texto normal. Yo lo que haré despues es sutiruirlo por espacio y condensar:

 Definimos un integer con el valor hexadecimal de la barra:

DATA lv_int TYPE i VALUE 47.

Llamo a la función:

CALL FUNCTION 'SCP_REPLACE_STRANGE_CHARS'
  EXPORTING
    intext      = "Texto_a_tratar"
    replacement = lv_int
   IMPORTING
    outtext     ="texto_salida"
      .

REPLACE ALL OCCURRENCES OF '/' IN "texto_salida" WITH space.
CONDENSE "texto_salida" NO-GAPS.