Problema con conversión de tipos

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • davidr
    Member
    • ene
    • 72

    #1

    Problema con conversión de tipos

    Hola a todos,

    tengo un problema con el campo stko-base_quan. Cuando lo utilizo en abap sucede que si, por ejemplo, tiene un valor 1.345 al usarlo en abap el punto de los miles lo toma como el separador de decimales.

    El camplo es un quan(13, 3), lo podéis ver en la misma tabla.

    ¿Cómo puedo conseguir que me lo coja como un separador de miles y no de decimales?

    Gracias de antemano.
    Saludos.
  • crounly
    Senior Member
    • nov
    • 227

    #2
    He...creo que te estas equivocando....

    Una cosa es como se muestra la información ( la ',' o '.' como separador decimal se configura en el perfil del usuario ) y otra es la representación interna de los datos, donde SIEMPRE es el '.' separador decimal y no hay mas.

    Otra cosa es que pintes la variable en una variable de carcteres

    WRITE <VAR_NUMERICA> TO <VAR_CARACTERES> UNIT <CAMPO_QUAN>.

    Y luego uses el TRASLATE <VAR_CARACTERES> USING ',.' .

    Lo mismo al revés, si tienes '1000,98' porque tu usuario tiene la coma como decimal , pues TRASLATE <VAR> USIGN ',.' para que lo convierta en '1000.98' y eso a la variable numerica.
    http://codigoderetorno.blogspot.com.es/

    Comentario

    • davidr
      Member
      • ene
      • 72

      #3
      Problema con conversión de tipos

      Crounly,

      el problema que tengo no es a la hora de pintar la variable sino cuando opero con ella.
      Concretamente tengo lo siguiente:
      mat-unidad = ( t_stpo-comp_qty / t_stko-base_quan ) * t_stko-kausfb.

      Cuando estoy depurando el programa el contenido de los campos es el siguiente:
      t_stpo-comp_qty = 7,220
      t_stko-base_quan = 100
      t_stko-kausfb = 77.66

      Los campos t_stpo-comp_qty y t_stko-base_quan son de tipo quan(13, 3) y el t_stko-kausfb es de tipo decimal (5, 3).

      El dump que me da cuando intento hacer la operación es:
      CX_SY_CONVERSION_NO_NUMBER

      "The program attempted to interpret the value " 7,220 " as a number, but
      since the value contravenes the rules for correct number formats,
      this was not possible."

      Si se te ocurre cualquier idea será bienvenida.

      Muchas gracias.

      Comentario

      • crounly
        Senior Member
        • nov
        • 227

        #4
        ese t_stpo-comp_qty = 7,220, seguro que es una variable de caracter
        Y la coma, te aparece por el perfil de usuario ( SU01 -> pestaña valores fijos )

        Tendras que hacer un TRALATE t_stpo-comp_qty USING ',.' para sustituir la coma decimal por punto.

        Prueba y nos cuentas

        Suerte
        http://codigoderetorno.blogspot.com.es/

        Comentario

        • davidr
          Member
          • ene
          • 72

          #5
          Problema con conversión de tipos

          Buenas,

          pues al final lo he solucionado usando la función
          call function 'RS_CONV_EX_2_IN_NO_DD'
          exporting
          input_external = stko-base_quan
          importing
          output_internal = menge_cab
          exceptions
          error_message = 100
          others = 200.

          donde menge_cab lo tengo declarado como:
          data: menge_cab type p decimals 3.

          Muchas gracias por la ayuda.

          Saludos.

          Comentario

          Trabajando...