MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Ayuda a rellenar un Char con ceros Izq (foro/showthread.php?t=32333)

vamp_01 12/09/09 03:52:00

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
:eek:

Vique 14/09/09 16:33:29

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.

jmenendez 14/09/09 17:48:30

Otra es usar FM: CONVERSION_EXIT_ALPHA_INPUT

eljota 14/09/09 19:02:32

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

vamp_01 14/09/09 20:17:35

gracias voy a probar

ahi les cuento como me fue
Gracias

vamp_01 15/09/09 14:43:06

no funciono ninguna de las que aca expusieron...nada de nada aun continuo con el problema.....si me pueden ayudar...

GRacias

Tonnyman 15/09/09 15:07:46

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.

Tonnyman 15/09/09 17:18:14

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.

DLR 16/09/09 09:30:30

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.

Atlas 16/09/09 12:43:32

prueba:

shift <var> RIGHT DELETING TRAILING space.

transalte <var> using ' 0'.


Husos Horarios son GMT. La hora en este momento es 01:33:46.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web