PDA

Ver la Versión Completa : contar caracteres en variable


Angela27
12/06/12, 12:13:20
Buenos días a todos,
Necesito contar los caractares de una variable, para despùes, si no tiene una
cantidad determinada rellenar con ceros a la izquierda.
por ejemplo: variable(10) type c. tiene '1234' y yo necesito que si es menor a 6, como es este caso, que son 4 caracteres, que se quede así '001234'
Me dijeron de usar contador = strlen(variable)
pero no me funciona.:confused:
Por fi... alguien me puede ayudar?

Muchas graciassssss:)

mysmb2
12/06/12, 13:25:21
Hola Angela, usando el contador de esta manera funciona.
Saludos.

data variable(10) TYPE c VALUE '1234'.
data contador TYPE i.
contador = strlen( variable ).
SHIFT variable RIGHT DELETING TRAILING space.
OVERLAY variable+4(6) WITH '000000' ONLY space.
WRITE variable.

kilysap
12/06/12, 13:44:32
Hola Angela, te paso un ejemplo, no se si tus campos son tipo i. . . pero strln es para caracters

data: variable(6) TYPE c,
tamano(2) TYPE c,
aux(6) TYPE c.

variable = '1234'.

tamano = STRLEN( variable ).

IF tamano le 5 .
UNPACK variable to aux.
ENDIF.

WRITE aux.

Espero te ayude

Mauricio Hidalgo
12/06/12, 18:37:28
Estimada lo más simple es que:

en lugar de declarar su variable tipo C:
data variable(10) type c

lo haga como tipo N, es decir :
data variable(10) type N

asi no importa que cantidad de digitos ingreses, siempre te quedara por la izquierda los ceros hasta completar el largo de la variable.

Saludos

Angela27
13/06/12, 08:43:25
Muchas gracias a todos,
a si da gusto... tener compis así:)

amiretti
13/06/12, 19:38:59
Existe una función standard para esto, es bien genérica y sirve para muchos casos...

DATA: lv_entrada type n.
DATA: lv_salida(5) type n.

ventrada = 10.

Call function 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = lv_entrada
IMPORTING
output = lv_salida.

* La variable lv_salida quedaría: 00010. Esta variable la podes declarar del tipo de dato que quieras, por lo que veo estas trabajando con algún tipo de documento, podes asignarle ese tipo...


Tambien existe una función para quitar los ceros, te comento por si alguna vez te hace falta... es la CONVERSION_EXIT_ALPHA_OUTPUT y trabaja de igual manera...

Espero te sirva! Saludos!

Onisap
30/08/17, 09:07:01
Para esto no hace falta contar los caracteres de la variable.

Este código deja los espacios a la izquierda y los cambia por ceros.

SHIFT variable RIGHT DELETING TRAILING space.
TRANSLATE variable using ' 0'.