Ver Mensaje Individual
  #3  
Viejo 30/01/19, 13:38:23
Avatar de vic3
vic3 vic3 is offline
Member
 
Fecha de Ingreso: mar 2017
Mensajes: 33
Ejemplo 2

Sí por en contrario me llega de tipo C con este aspecto "4.000,74-" y necesito transformarlo a "-4000,74" para por ejemplo hacer cálculos:

FORM cambiar_formato_2 USING p_bwwrt.

DATA: lv_contador TYPE i.
DATA: lv_num TYPE i,
lv_num_aux(30) TYPE c.
DATA: lv_entero(16) TYPE c,
lv_decimal(3) TYPE c.

CLEAR: lv_contador, lv_num_aux, lv_num, lv_entero, lv_decimal.

"4.000,74- >>> Puede ser negativo
SPLIT p_bwwrt AT ',' INTO lv_entero lv_decimal.

IF lv_decimal+2(1) <> '-'. "-----------------------------> Positivo

lv_contador = strlen( p_bwwrt ).

*** En mi caso no necesitaba las centenas... tú sácalas si lo necesitas

"Miles
IF lv_contador = 8. "1.111,11
CONCATENATE p_bwwrt(1) p_bwwrt+2(3) INTO lv_num_aux.
ELSEIF lv_contador = 9. "11.111,11
CONCATENATE p_bwwrt(2) p_bwwrt+3(3) INTO lv_num_aux.
ELSEIF lv_contador = 10. "111.111,11
CONCATENATE p_bwwrt(3) p_bwwrt+4(3) INTO lv_num_aux.

"Millones
ELSEIF lv_contador = 12. "1.111.111,11
CONCATENATE p_bwwrt(1) p_bwwrt+2(3) p_bwwrt+6(3) INTO lv_num_aux.
ELSEIF lv_contador = 13. "11.111.111,11
CONCATENATE p_bwwrt(2) p_bwwrt+3(3) p_bwwrt+7(3) INTO lv_num_aux.
ELSEIF lv_contador = 14. "111.111.111,11
CONCATENATE p_bwwrt(1) p_bwwrt+4(3) p_bwwrt+8(3) INTO lv_num_aux.

"Billones
ELSEIF lv_contador = 16. "1.111.111.111,11
CONCATENATE p_bwwrt(1) p_bwwrt+2(3) p_bwwrt+6(3) p_bwwrt+10(3) INTO lv_num_aux.
ELSEIF lv_contador = 17. "11.111.111.111,11
CONCATENATE p_bwwrt(2) p_bwwrt+3(3) p_bwwrt+7(3) p_bwwrt+11(3) INTO lv_num_aux.
ELSEIF lv_contador = 18. "111.111.111.111,11
CONCATENATE p_bwwrt(3) p_bwwrt+4(3) p_bwwrt+8(3) p_bwwrt+12(3) INTO lv_num_aux.
ENDIF.

lv_num = lv_num_aux.

ELSE. "-----------------------------> Negativo
"Algo parecido a lo anterior pero concatenando el "-" delante... juega un poco con los 2 ejemplos
ENDIF.

ENDFORM.
__________________
Consultor técnico SAP

Úlima edición por vic3 fecha: 30/01/19 a las 13:41:53.
Responder Con Cita