Mejor solución para asignación de valor entre variables

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • kerberos
    Junior Member
    • mar
    • 26

    #1

    Mejor solución para asignación de valor entre variables

    Saludos amigos,

    Tengo dos variables:

    - V1 de tipo Decimal. Longitud 13,9
    - V2 de tipo Decimal. Longitud 9,5

    La variable V1 tiene el valor: 1.275000000 (El punto es el separador de decimales)

    Cuando asigno V1 a V2 el valor en esta ultima variable queda de esta manera 12750.00000

    Lo he solucionado enviando el valor a una variable CHAR y haciendo un procesamiento de caracteres, pero pienso que debe existir una solución mejor haciendo CASTING o algo parecido, aunque nada más me ha funcionado.

    Agradezco me indiquen una forma para hacer esta asignación de la mejor manera posible.

    Gracias.
  • Mike
    Senior Member
    • mar
    • 144

    #2
    La diferencia entre V1 y V2 es de 4

    - V1 de tipo Decimal. Longitud 13,9
    - V2 de tipo Decimal. Longitud 9,5

    entonces divide entre 10000

    Comentario

    • kerberos
      Junior Member
      • mar
      • 26

      #3
      Originalmente publicado por Mike
      La diferencia entre V1 y V2 es de 4

      - V1 de tipo Decimal. Longitud 13,9
      - V2 de tipo Decimal. Longitud 9,5

      entonces divide entre 10000
      Muchas gracias Mike por tu idea. Tambien me gustaría escuchar otras donde no se toque o modifique el valor para poder asignarlo a la nueva variable.

      Comentario

      • luis999
        Member
        • jun
        • 82

        #4
        Yo creo que v2 debería tomarte 1.27500 y no 12750.00000


        Originalmente publicado por kerberos
        Saludos amigos,

        Tengo dos variables:

        - V1 de tipo Decimal. Longitud 13,9
        - V2 de tipo Decimal. Longitud 9,5

        La variable V1 tiene el valor: 1.275000000 (El punto es el separador de decimales)

        Cuando asigno V1 a V2 el valor en esta ultima variable queda de esta manera 12750.00000

        Lo he solucionado enviando el valor a una variable CHAR y haciendo un procesamiento de caracteres, pero pienso que debe existir una solución mejor haciendo CASTING o algo parecido, aunque nada más me ha funcionado.

        Agradezco me indiquen una forma para hacer esta asignación de la mejor manera posible.

        Gracias.

        Comentario

        • DavidXD_XD
          Moderator
          • ago
          • 1255

          #5
          Hola, puedes colocar la manera en la cual has declarado las variables v1 y v2
          David Carballido Córdova

          Comentario

          • kerberos
            Junior Member
            • mar
            • 26

            #6
            Originalmente publicado por luis999
            Yo creo que v2 debería tomarte 1.27500 y no 12750.00000
            Pues yo tambien lo creería, sino es porque veo en el Debug que no lo hace.
            Editado por última vez por kerberos; 04/06/2009, 07:12:04.

            Comentario

            • kerberos
              Junior Member
              • mar
              • 26

              #7
              Originalmente publicado por DavidXD_XD
              Hola, puedes colocar la manera en la cual has declarado las variables v1 y v2
              Es algo como así:

              DATA:
              V1 type tb_kkurs, " Dec 13,9
              V2 type KURSK. " Dec 9,5


              Lo único raro es que el Elemento de datos "tb_kkurs" tiene una rutina de conversión.

              Comentario

              • bisonye
                Senior Member
                • ago
                • 635

                #8
                Originalmente publicado por kerberos
                Pues yo tambien lo creería, sino es porque veo en el Debug que no lo hace.
                Aunque parezca mentira esto ocurre. Yo he tenido que hacer divisiones para que los importes cuadrasen. No se por que sap hace esa cosas extrañas con las variables....

                A ver si alguien tiene una solución sin dividir sería interesante.

                Saludos
                http://sapymas.blogspot.com/

                Comentario

                • paraujo
                  Member
                  • dic
                  • 42

                  #9
                  Mejor solución para asignación de valor entre variables

                  Como tenes definido en tu usuario, en los valores fijos el Formato de punto decimal? Porque para mi no te está tomando los decimales como corresponde.
                  Yo controlaría eso.

                  Sds.

                  Comentario

                  • bisonye
                    Senior Member
                    • ago
                    • 635

                    #10
                    Originalmente publicado por paraujo
                    Como tenes definido en tu usuario, en los valores fijos el Formato de punto decimal? Porque para mi no te está tomando los decimales como corresponde.
                    Yo controlaría eso.

                    Sds.
                    No tiene nada que ver. Estamos hablando de variables en tiempo de ejecución. En Abap no tienen nada que ver los parametros de usuario.
                    http://sapymas.blogspot.com/

                    Comentario

                    • paraujo
                      Member
                      • dic
                      • 42

                      #11
                      Mejor solución para asignación de valor entre variables

                      Te pido mil disculpas "bisonye", seguramente tenes razón.
                      Lo único que puedo aportar es que yo corro este programa y el resultado en la variable V2 es el que corresponde.
                      A lo mejor esto ayuda en algo.
                      Sds.

                      *&---------------------------------------------------------------------*
                      *& Report Y_PRU
                      *&
                      *&---------------------------------------------------------------------*
                      *&
                      *&
                      *&---------------------------------------------------------------------*

                      REPORT Y_PRU.
                      DATA: V1 type tb_kkurs, " Dec 13,9
                      V2 type KURSK. " Dec 9,5

                      V1 = '1.275000000'.
                      V2 = V1.

                      WRITE V2.

                      Resultado del Write:

                      PRUEBA

                      1.27500

                      Comentario

                      • ballan
                        Senior Member
                        • oct
                        • 671

                        #12
                        Pues lo unico que se me ocurre seria hacer

                        write v1 to v2 using no edit mask.

                        Asi no ejecutaria la rutina de conversion que es lo que probablemente este alterando el resultado

                        Comentario

                        • ifloresb
                          Junior Member
                          • dic
                          • 29

                          #13
                          Saludos,
                          Yo creo que más bien tu problema va por el número de decimales, en V1 tienes 9 decimales así que te va a tomar nueve posiciones antes de poner el punto como separador entonces tu valor 1.275000000 en V2 toma el valor '12750.00000 a causa del número de decimales de V2, entonces lo que te recomiendo hacer es usar la sentecia SHIFT --- RIGHT DELETING o algo así para poder eliminar los últimos 4 numeros y asi lograr que V2 tome el mismo valor de V1.

                          Espero te sirva mi consejo.

                          Comentario

                          • bisonye
                            Senior Member
                            • ago
                            • 635

                            #14
                            Originalmente publicado por paraujo
                            Te pido mil disculpas "bisonye", seguramente tenes razón.
                            Lo único que puedo aportar es que yo corro este programa y el resultado en la variable V2 es el que corresponde.
                            A lo mejor esto ayuda en algo.
                            Sds.

                            *&---------------------------------------------------------------------*
                            *& Report Y_PRU
                            *&
                            *&---------------------------------------------------------------------*
                            *&
                            *&
                            *&---------------------------------------------------------------------*

                            REPORT Y_PRU.
                            DATA: V1 type tb_kkurs, " Dec 13,9
                            V2 type KURSK. " Dec 9,5

                            V1 = '1.275000000'.
                            V2 = V1.

                            WRITE V2.

                            Resultado del Write:

                            PRUEBA

                            1.27500
                            No hace falta disculparse, tu has dado una posible solución que creías válida y lo que he hecho es corregirte por que la respuesta no era correcta.
                            Creo que el foro tiene que ser así, con participación.
                            Revisando el post es un poco brusco pero no está escrito con mala intención, a veces me pasa, sobre todo cuando me apretan en el trabajo.
                            Espero no haberte ofendido, si es así me disculpo yo.

                            He puesto el código en mi sistema y la variable pasa correctamente pero yo tengo algún código parecido en el que tengo que hacer divisiones.

                            A ver si alguien tiene alguna otra idea.
                            http://sapymas.blogspot.com/

                            Comentario

                            • paraujo
                              Member
                              • dic
                              • 42

                              #15
                              Mejor solución para asignación de valor entre variables

                              Todo bien, bisonye, en verdad mi respuesta fue muy rápida y no pensé, en realidad tenías razón.
                              Pero lo extraño es que en la prueba funciona bien.
                              Esperaremos a ver que otra explicación al tema nos dan.

                              Sds.

                              Comentario

                              Trabajando...