Pasar signo - de derecha a izquierda

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • bealoal
    Senior Member
    • ene
    • 123

    #1

    Pasar signo - de derecha a izquierda

    Hola!
    ¿Alguien sabe cómo puedo hacer para pasar de:
    1.483,200- a
    -1.483,200 ?
    Es decir, cambiar el signo - hacia la izquierda.

    Gracias
  • bealoal
    Senior Member
    • ene
    • 123

    #2
    Ya me ha salido, pongo el código por si a alguien le puede servir

    ntgew = 1.483,200-
    value_text(18).

    write ntgew to value_text. (con esto consigo que value_text = 1.483,200-)

    call function 'CLOI_PUT_SIGN_IN_FRONT'
    CHANGING
    value = value_text.


    (esta función me devuelve value_text = -1.483,200)

    NOTA: si en lugar del write hacemos value_text = ntgew entonces
    value_text = 1483,200-) perdía el '.' por eso no me funcionaba

    Saludos

    Comentario

    • karinastolen
      Member
      • mar
      • 60

      #3
      Alternativa propuesta por Blag

      Hace tiempo se me presentó el mismo problema, y encontré esta solución
      en el blog de ALVARO "BLAG" TEJADA GALINDO

      Y decía así:

      Si alguna vez han querido cambiar la posición del signo negativo
      en ABAP (El standard es 100-) para que quede así -100, habrán buscado
      y encontrado la función CLOI_PUT_SIGN_IN_FRONT y claro, se habrán dado cuenta de que no sirve para todos los casos e inclusive no funciona
      en modo de test...Por eso, hice un pequeño form para solucionar los
      pequeños inconvenientes -

      Código:
      REPORT z_dummy_atg_3.
      
      DATA: value TYPE p DECIMALS 2,
      value_text(18) TYPE c,
      text1(18) TYPE c.
      
      value = '15.2-'.
      WRITE value TO value_text.
      
      PERFORM cambiar_signo CHANGING value_text.
      
      WRITE:/ value_text.
      
      *&--------------------------------------------------*
      *& Form CAMBIAR_SIGNO 
      *&--------------------------------------------------*
      * Cambia la posición del signo 
      *---------------------------------------------------*
      FORM cambiar_signo CHANGING value_text.
      
      SEARCH value_text FOR '-'.
      IF sy-subrc = 0 AND sy-fdpos <> 0.
      SPLIT value_text AT '-' INTO value_text text1.
      CONDENSE value_text.
      CONCATENATE '-' value_text INTO value_text.
      ELSE.
      CONDENSE value_text.
      ENDIF.
      
      ENDFORM. "CAMBIAR_SIGNO
      Espero les sea útil...
      "Experience is what you get when you didn't get what you wanted." Randy Pausch

      Comentario

      Trabajando...