#3
|
||||
|
||||
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. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|