remplazar '.' en un tipo quan

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • tate
    Senior Member
    • feb
    • 106

    #1

    remplazar '.' en un tipo quan

    Hola necesito remplazar '.' por ',' en un dato de tipo quan.

    Uso el replace pero no puedo dado que es para tipo char.

    Alguien sabria como podria hacerlo.

    Un saludo.
  • emerson.tosin
    Member
    • dic
    • 57

    #2
    Se la substituición és de QUAN para CHAR. És solo utilizar el comando "WRITE".
    Ejemplo: WRITE v_quan TO v_char.

    espero que ayude!

    Comentario

    • tate
      Senior Member
      • feb
      • 106

      #3
      El caso que yo tengo esto

      var1 tipo quan (13,3)
      var2 tipo int1 (3)

      move var1 to var2.

      El caso esque si var1 es 1,123 no da dump y va bien, pero si es 1.123 me da dump.

      Entonces no se como hacer para que sea ',' pero con replace no puedo.

      Lo que me dices no puedo ya que que es un INT1 y seguiria con la coma.

      Comentario

      • DavidXD_XD
        Moderator
        • ago
        • 1255

        #4
        Hola Tate ... primero q nada la configuracion de tu usuario esta predeterminado para usar la coma como separador de miles, ahora lo que necesariamente se tiene que hacer es:

        1. Crear un tipo char para pasar esa cantidad
        2. Usar la BAPI BAPI_USER_GET_DETAIL para saber la configuracion de usuario y ver si esta usando el '.' o ',' como separador de miles, eso lo ves en el campo DEFAULTS-DCPFM
        3. Si es . no realizar REPLACE sobre la variable de tipo CHAR, y si lo es realizar el REPLACE con la ,
        4. Una vez que este modificado el valor de tipo char con la cantidad puedes realizar el pase a la variable de tipo QUAN

        Espero te ayude
        David Carballido Córdova

        Comentario

        • nievesmp
          Member
          • abr
          • 95

          #5
          Originalmente publicado por tate
          El caso que yo tengo esto

          var1 tipo quan (13,3)
          var2 tipo int1 (3)

          move var1 to var2.

          El caso esque si var1 es 1,123 no da dump y va bien, pero si es 1.123 me da dump.

          Entonces no se como hacer para que sea ',' pero con replace no puedo.

          Lo que me dices no puedo ya que que es un INT1 y seguiria con la coma.
          Escribelo hacia una variable tipo char con un write (write var_quan to var_char) sólo con eso, ya lo pasa con coma, despues lo devuelves a la var_quan. O bien, carga el dato inicialmente en un char, aplicas el REPLACE y luego lo mueves hacia el tipo quan.

          Comentario

          • tate
            Senior Member
            • feb
            • 106

            #6
            DavidXD_XD ese campo me viene en blanco.

            No habria otra manera de poder cambiar el . por la , es lo q peta.

            Comentario

            • tate
              Senior Member
              • feb
              • 106

              #7
              esto es lo que realizo y no compila

              data var(17) TYPE c.
              ** wa_materiales-cantidad. ES quant 13 con 3 decimales
              write wa_materiales-cantidad to var.
              REPLACE '.' WITH ',' INTO var . "wa_materiales-cantidad.
              CONDENSE var NO-GAPS.
              WRITE var to wa_materiales-cantidad.



              ERROR QUE ME DA AL COMPLIAR <--"WA_MATERIALES-CANTIDAD" must be a character-type field (data type C,
              N, D, or T) . "INTERFACE". by "INTERFACE". by "INTERFACE". "INTERFACE".
              by "INTERFACE". by "INTERFACE".

              Comentario

              • DavidXD_XD
                Moderator
                • ago
                • 1255

                #8
                Pero ahi la variable de wa_materiales-cantidad ya tiene un valor

                write wa_materiales-cantidad to var.

                La idea es q lo tengas inicialmente en un valor de tipo var, y tbm por lo que veo lo estas llenando en un proceso de UPLOAD o de interfaces ... como inicialmente se esta llenando esa variable???
                David Carballido Córdova

                Comentario

                • tate
                  Senior Member
                  • feb
                  • 106

                  #9
                  es una funcion, que se le pasa la cantidad.

                  y cuando le iguala al int1 es cuando peta.

                  lo paso a var, que es de char, y cambio el punto por la coma, pero luego, ya no puedo pasar var al campo original cantidad, o al que quiero igualar que es de tipo int1

                  Comentario

                  Trabajando...