Formato de Edicion

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • CRISTINO.GARCIA
    Senior Member
    • ago
    • 101

    #1

    Formato de Edicion

    Hola a Todos

    Tengo un problema en un programa el cual al cargar un campo cuya data es un monto y dar el resultado con decimales da un stop ya que me indica "Entrada solo en la forma --,--,--,--.-- " y debo cambiar manualmente el monto colocandole en vez de coma como punto decimal el punto para que procese. Me meti por la su01 y le cambie al usuario que ejecuta dicho programa y le coloque como separador decimal el punto y asi si se ejecuta pero el usuario no quiere estar cambiando su pefil cada vez que use ese programa quiere que desde el programa verifique que si el resultadoi da decimal le convierta ese valor de "," a ",". Me podrian ayudar.

    Muchas Gracias

    Saludos

    Cristino
  • Mari.Sole
    Senior Member
    • nov
    • 121

    #2
    Hola CRISTINO.GARCIA,
    Lo que podrías hacer antes de visualizar el monto en tu programa, detectes cual es la configuracion del usuario y desde el código hagas la conversión del separador "," o "." según necesites.
    Para ello puedes hacer la siguiente selección de datos:

    SELECT SINGLE dcpfm
    FROM usr01
    INTO var_dcpfm
    WHERE bname = sy-uname.

    En la variable VAR_DCPFM te devuelve un valor de 3 posibles (espacio en blanco, X o Y): Te paso a lo que equivale cada valor.

    1.234.567,89
    X 1,234,567.89
    Y 1 234 567,89


    a partir entonces de que valor obtengas deberás convertir tu importe antes de mostrarlo en tu programa para que no te de error.

    Espero te sirva.

    Saludos.

    Comentario

    • CRISTINO.GARCIA
      Senior Member
      • ago
      • 101

      #3
      Hola Mari

      Muchas Gracias por tu informacion. Esto lo puedo aplicar a un bacth input, Y este campo que trae esos (blanco, X, Y) de que tipo se declara?

      Nuevemanete Muchas Gracias

      Saludos

      Cristino

      Originalmente publicado por Mari.Sole
      Hola CRISTINO.GARCIA,
      Lo que podrías hacer antes de visualizar el monto en tu programa, detectes cual es la configuracion del usuario y desde el código hagas la conversión del separador "," o "." según necesites.
      Para ello puedes hacer la siguiente selección de datos:

      SELECT SINGLE dcpfm
      FROM usr01
      INTO var_dcpfm
      WHERE bname = sy-uname.

      En la variable VAR_DCPFM te devuelve un valor de 3 posibles (espacio en blanco, X o Y): Te paso a lo que equivale cada valor.

      1.234.567,89
      X 1,234,567.89
      Y 1 234 567,89


      a partir entonces de que valor obtengas deberás convertir tu importe antes de mostrarlo en tu programa para que no te de error.

      Espero te sirva.

      Saludos.

      Comentario

      • Mari.Sole
        Senior Member
        • nov
        • 121

        #4
        CRISTINO.GARCIA,
        El valor que devuelve la selección de datos antes citada es un carácter, con que lo declares como CHAR1 es suficiente. Y si se puede usar en un Batch Input, todo esto debes realizarlo antes de pasar los valores a la dynpro y campo correspondiente de la misma.

        Saludos.

        Comentario

        • CRISTINO.GARCIA
          Senior Member
          • ago
          • 101

          #5
          Muchas Gracias ya resolvi con lo que me indicaste.

          Saludos

          Cristino

          Originalmente publicado por Mari.Sole
          CRISTINO.GARCIA,
          El valor que devuelve la selección de datos antes citada es un carácter, con que lo declares como CHAR1 es suficiente. Y si se puede usar en un Batch Input, todo esto debes realizarlo antes de pasar los valores a la dynpro y campo correspondiente de la misma.

          Saludos.

          Comentario

          • mauro_ARG
            Member
            • abr
            • 87

            #6
            Código:
            REPORT y_test.
            
            PARAMETERS p_param(10) TYPE c OBLIGATORY.
            
            DATA: l_numero TYPE esecompavg.
            
            START-OF-SELECTION.
            * Esta funcion chequea si el dato puede puede ser convertido a nro.
              CALL FUNCTION 'CATS_NUMERIC_INPUT_CHECK'
                EXPORTING
                  input = p_param.
            
              IF ( sy-subrc EQ 0 ).
                "Si el campo tiene caracteres validos para convertirlo a un nro,
                "lo convertimos con esta funcion.
                CALL FUNCTION 'C14W_CHAR_NUMBER_CONVERSION'
                  EXPORTING
                    i_string = p_param
                  IMPORTING
                    e_dec    = l_numero.
                IF ( sy-subrc EQ 0 ).
                  "en l_numero esta el dato convertido a formato nro de SAP.
                ELSE.
                  "Dió error la conversion.
                ENDIF.
              ELSE.
                "Dió error el chequeo, hay caracteres inválidos.
              ENDIF.

            Comentario

            Trabajando...