#1
|
|||
|
|||
Ayuda a rellenar un Char con ceros Izq
Hola a todos , si aca nuevamente consultando a ustedes como se hacen las cosas...
he intentado resolver mi problema, pero no doy con la solucion, a lo mejor es mas facil de lo que yo creo. Bueno mi problema es el siguiente, tengo un campo declarado como char de largo 20 (data a7_1 like ztbl-char20.) el dato que se agrega a ese campo por ejemplo es 1-k... este dato tiene un largo de 3, es decir, me quedan 17 espacio en el total del largo del campo que ocupar, aca la pregunta, como lo hago para que este char se rellene los 17 espacios que quedan con ceros a la izquierda. data a7_1 like ztbl-char20. *asi esta ahora a7_1 = '1-k'. *debe quedar asi a7_1 = '000000000000000001-k'. Que hago para que el campo quede completo, en su largo total. de ante mano Gracias |
#2
|
||||
|
||||
Hola,
si tu texto inicial no contiene ningún espacio, puedes usar la sentencia OVERLAY. Primero define una constante del mismo tipo que tu campo (CHAR20) cuyo valor sea todo ceros. Y usala para sobreescribir sobre tu campo, de la siguiente forma: OVERLAY a7_1 WITH c_ceros. Los caracteres que esten en blanco en tu campo serán reemplazados por los ceros de la constante. Si quieres que los ceros queden al principio antes tendras que justificar el texto a la derecha. Espero te sirva de ayuda. Un saludo.
__________________
¿Pero nadie me va a preguntar por las bolas Vique? |
#3
|
|||
|
|||
Otra es usar FM: CONVERSION_EXIT_ALPHA_INPUT
|
#4
|
|||
|
|||
puedes usar la función anterior (x lo general la uso)
o puedes intentar escribir tu variable sobre otra d tipo N: var_final(20) TYPE N. WRITE var_orig TO var_final. y var_final se completará con 0
__________________
Jaime Zegarra V. ________________ ABAP Developer |
#5
|
|||
|
|||
gracias voy a probar
ahi les cuento como me fue Gracias |
#6
|
|||
|
|||
no funciono ninguna de las que aca expusieron...nada de nada aun continuo con el problema.....si me pueden ayudar...
GRacias |
#7
|
|||
|
|||
data: a7_1 TYPE string,
val TYPE i, val1 TYPE string. a7_1 = '1-k'. val1 = strlen( a7_1 ). IF val1 < 20. val = 20 - val1. ENDIF. DO val TIMES. CONCATENATE '0' a7_1 INTO a7_1. ENDDO. WRITE a7_1. |
#8
|
|||
|
|||
O también podrias manejarlo de esta forma:
data: a7_1 TYPE string, a7_2 TYPE char20, val TYPE i, val1 TYPE string. a7_1 = '1-k'. val1 = strlen( a7_1 ). IF val1 < 20. val = 20 - val1. DO val TIMES. CONCATENATE '0' a7_1 INTO a7_1. ENDDO. ENDIF. a7_2 = a7_1. WRITE a7_2. Espero haber podido ayudar. Saludos. |
#9
|
|||
|
|||
Lo primero es que la funcion CONVERSION_EXIT_ALPHA_INPUT, no funciona si hay caracteres alfabeticos en la cadena.
Y por otro lado, si el valor que vas a añadir es siempre '1_K', una manera sencilla es la siguiente: DATA: lv_numc20(20) TYPE n, lv_char20 TYPE char20. lv_char20 = lv_numc20. lv_char20+17(3) = '1_K'. Un saludo. |
#10
|
|||
|
|||
prueba:
shift <var> RIGHT DELETING TRAILING space. transalte <var> using ' 0'. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|