-Cambiar las comas y puntos de un número decimal?
DATA: V_IMPORTE TYPE P DECIMALS 2.
DATA: V_IMPORTE_CONV(20) TYPE C .
V_IMPORTE = '-99999999' / 7.
PERFORM F_FORMATEAR_IMPORTE USING
'.'
V_IMPORTE
CHANGING V_IMPORTE_CONV.
WRITE:/ 'v_importe : ', V_IMPORTE.
WRITE:/ 'v_importe_conv: ', V_IMPORTE_CONV.
*-----------------------------------------------------------------------
* FORM F_FORMATEAR_IMPORTE
*-----------------------------------------------------------------------
* Mueve el signo adelante del importe y setea el separador
* decimal solicitado.
*-----------------------------------------------------------------------
* INPUT:
* --> vp_separador_decimal : '.' punto
* ',' coma
*
* --> vp_importe_orig : nro. decimal.
* OUTPUT:
* <-- vp_importe_conv : cadena con el valor convertido
*-----------------------------------------------------------------------
FORM F_FORMATEAR_IMPORTE
USING
VP_SEPARADOR_DECIMAL
VP_IMPORTE_ORIG
CHANGING
VP_IMPORTE_CONV.
*-DATA DECLARATION------------------------------------------------------
DATA: V_IMPORTE_AUX(20) TYPE C.
*-MAIN PROCESSING SECTION-----------------------------------------------
* Inicializa variables.
CLEAR: V_IMPORTE_AUX,
VP_IMPORTE_CONV.
* Mueve el importe recibido a una cadena auxiliar.
WRITE VP_IMPORTE_ORIG TO V_IMPORTE_AUX.
* Se pasa el signo para adelante del importe.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
VALUE = V_IMPORTE_AUX
EXCEPTIONS
OTHERS = 1.
* Cuando se copia un nro a una cadena usando el write,
* queda siempre con el siguiente formato: NNN.NNN.NNN,DD.
* Cambia puntos por espacios. Ejemplo 9.888.777,01 --> 9 888 777,01.
TRANSLATE V_IMPORTE_AUX USING '. '.
* Quita los espacios en blanco. Ejemplo 9 888 777,01 --> 9888777,01.
CONDENSE V_IMPORTE_AUX NO-GAPS.
IF VP_SEPARADOR_DECIMAL = '.'.
* Cambia la coma decimal por punto decimal.
TRANSLATE V_IMPORTE_AUX USING ',.'.
ENDIF.
* Justifica el número a derecha.
* Ejemplo '9888777,01 ' --> ' 9888777,01'.
SHIFT V_IMPORTE_AUX RIGHT DELETING TRAILING SPACE.
* Devuelve el número.
VP_IMPORTE_CONV = V_IMPORTE_AUX.
ENDFORM. " F_FORMATEAR_IMPORTE