Anuncio

Colapsar
No hay anuncio todavía.

Validación de caracteres extraños en rutina abap

Colapsar
X
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • BW 7.x Validación de caracteres extraños en rutina abap

    Que tal,
    Estoy tratando de validar la entrada de caracteres con la función : SCP_REPLACE_STRANGE_CHARS, el objetivo es que la función acepte caracteres validos en BW ademas de estos ya agregados en la RSKC : |–O ÁÉÍÓÚÑ°ºÜ"~$@#ÁÉÍÓÚ-ALL_CAPITAL'[' ][/\¦.“*
    y los caracteres extraños los remplace por un guión "-" y esto ya lo hace solo que la función no esta respetando los acentos y la "ñ", al ingresarle una letra con acento elimina el acento y solo pasa la letra lo mismo sucede con la "ñ" la pasa como "n", esperando me puedan ayudar..
    Saludos...Gracias !!!

  • #2
    Hola,

    esa función donde la estás poniendo? dentro de una transformación? si es así en la PSA el dato lo ves correctamente o ya directamente ahí no se ve bien?

    Comentario


    • #3
      Koken, es correcto la función esta dentro de la transformación.
      Hice una prueba cargando desde un Flat File, excluyendo la función y solo cargando como asignación directa y si acepta los caracteres (acentos, ñ) en el PSA, DSO y el Cubo.
      Después volví a hacer la prueba cargando del mismo Flat File usando la rutina con la función SRC_REPLACE_STRANGE_CHAR y me arroja lo siguiente en el DSO: Haga clic en la imagen para ver una versión más grande  Nombre:	Capture6.PNG Visitas:	1 Size:	24,7 KB ID:	37086



      estos son los datos que estoy cargando del Flat File:
      Capture7.PNG

      (En el DSO el campo división no trae nada porque no esta mapeado en la transformación)
      Esperando me puedas ayudar analizarlo
      MUCHAS GRACIAS!!!
      SALUDOS.
      Editado por última vez por HEVELAZQUEZ; http://www.forosap.com/member/50430-hevelazquez en 07/08/17, 18:01:00.

      Comentario


      • #4
        Hola, probá en la RSKC poner sólo esto: ALL_CAPITAL_PLUS_HEX, de esa manera te debería funcionar, en caso que no avisanos y lo seguimos analizando.

        SAludos!

        Comentario


        • #5
          Gracias.. ya probé agregando ALL_CAPITAL_PLUS_HEX pero tengo el mismo resultado.
          Esta es la manera en que estoy implementando la función:

          temp = SOURCE_FIELDS-***XX. "pasar cadena a una variable
          call function 'SCP_REPLACE_STRANGE_CHARS'
          exporting
          intext = temp
          replacement = 45

          importing
          outtext = RESULT.
          Editado por última vez por HEVELAZQUEZ; http://www.forosap.com/member/50430-hevelazquez en 07/08/17, 17:53:08.

          Comentario


          • #6
            Probaste no usar esa función para ver como llega al DSO?

            Comentario


            • #7
              Si ya intente de esa manera y si lo hace correcto, pero necesito la función para que valide si hay un carácter extraño, por ejemplo letras de alfabeto chino, lo sustituya por el guión (-), te muestro el resultado que me da de manera directa sin usar la función:
              Haga clic en la imagen para ver una versión más grande

Nombre:	Capture8.PNG
Visitas:	1
Size:	26,8 KB
ID:	37084

              y usando la función si me cambia los caracteres extraños por el guión:
              Haga clic en la imagen para ver una versión más grande

Nombre:	Capture9.PNG
Visitas:	1
Size:	4,9 KB
ID:	37085
              Editado por última vez por HEVELAZQUEZ; http://www.forosap.com/member/50430-hevelazquez en 07/08/17, 17:59:15.

              Comentario


              • #8
                Muy raro tu caso.

                Podrías hacer lo siguiente:

                1- Usá esta función: RSKC_ALLOWED_CHAR_GET entonces validás que no haya ningún caracter de ese registro que sea extraño.
                2- Si encuentra un caracter que es extraño, recién ahí utilizar la función SCP_REPLACE_STRANGE_CHARS

                Espero que de esta manera puedas resolverlo.

                Comentario


                • #9
                  Hey que tal !!
                  Si ya había encontrado la forma de resolverlo con esa función (RSKC_ALLOWED_CHAR_GET), quedó de la siguiente manera:


                  IF g_allowed_char is INITIAL.
                  CALL FUNCTION 'RSKC_ALLOWED_CHAR_GET'
                  IMPORTING
                  e_allowed_char = g_allowed_char.

                  ENDIF.

                  RESULT = SOURCE_FIELDS-/BIC/ZCPEXC092.

                  TRANSLATE RESULT TO UPPER CASE.

                  CHECK g_allowed_char NE 'ALL_CAPITAL'.

                  DO.
                  IF not RESULT CO g_allowed_char.
                  result+sy-fdpos(1) = '-'.
                  ELSE.
                  exit.
                  ENDIF.

                  ENDDO.



                  Muchas Gracias!!! SALUDOS!!!

                  Comentario


                  • #10
                    Originalmente publicado por HEVELAZQUEZ Ver Mensaje
                    Hey que tal !!
                    Si ya había encontrado la forma de resolverlo con esa función (RSKC_ALLOWED_CHAR_GET), quedó de la siguiente manera:


                    IF g_allowed_char is INITIAL.
                    CALL FUNCTION 'RSKC_ALLOWED_CHAR_GET'
                    IMPORTING
                    e_allowed_char = g_allowed_char.

                    ENDIF.

                    RESULT = SOURCE_FIELDS-/BIC/ZCPEXC092.

                    TRANSLATE RESULT TO UPPER CASE.

                    CHECK g_allowed_char NE 'ALL_CAPITAL'.

                    DO.
                    IF not RESULT CO g_allowed_char.
                    result+sy-fdpos(1) = '-'.
                    ELSE.
                    exit.
                    ENDIF.

                    ENDDO.



                    Muchas Gracias!!! SALUDOS!!!
                    Excelente, esperamos tenerte más seguido por acá.

                    Saludos!

                    Comentario

                    Trabajando...
                    X