PDA

Ver la Versión Completa : Concatenar Tres Campos Y Que Uno De Ellos Muestre La Edicion 0


zavarmi
04/09/07, 22:15:01
Hola a todos,

Tengo el siguiente caso. esto imprimiendo un cod. de Barra (sapscript) el cúal esta compuesto por tres campos: Material + Cantidad + Lote, el cuál lo generó por medio de concatenación, todo OK.
el caso es que el campo cantidad es char de 8 Posiciones, y quiero que este se muestre con los ZEROS que van delante de él : ejemplo cantidad = 115 como el campo es de 8 char, que muestre 00000115..ya que necesito todas las posiciones ocupadas e impresas para que el lector pueda hacer lo que deseamos (por configuaración de este).

gracias por al ayuda.

bktr
05/09/07, 10:13:29
mira esta funcion a ver si te sirve: CONVERSION_EXIT_ALPHA_INPUT

Gregoryg
06/09/07, 01:34:40
Hola

Chequeate estas funciones
CONVERSION_EXIT_ALPHA_INPUT
CONVERSION_EXIT_ALPHA_OUTPUT
Una te sirve para completar de ceros a la izquierda y otra para eliminanrlos

Saludos:D
Gregory

melerogalan
07/09/07, 11:25:30
tambien existe las sentencias pack y unpack, que quita los ceros o los elimina por la izquierda respectivamente(o al reves, no me acuerdo, :rolleyes: ). Ejemplo:

pack variable_inicial to variable_final.

Con una sola linea lo tienes.

Variable inicial y fianl puede ser la misma sin problemas.

Espero que te sirva.

Saludos :)

zavarmi
07/09/07, 20:17:30
No funciona ni el PACK UNPACK ni la función..Alguna otra manera??

prendtorff
10/09/07, 19:25:28
la funcion CONVERSION_EXIT_ALPHA_INPUT tiene que funcionar, si lo qeu hace es llenar de 0 ( ceros ) del lado izq una variable.

no debes haberla usado bien.

probala en se37 y vas aver...

saludos y suerte resolviendo tu problema.

caparase
11/09/07, 04:42:13
no sé si sea posible, pero ¿puedes cambiar el tipo de dato de texto a numérico?...si puedes hacer eso, el campo númérico solo te muestra los ceros a la izquierda y lo puedes concatenar sin problemas.

de no ser posible el cambio de tipo, puedes utilizar el comando STRLEN, con el que puedes calcular el largo del texto dentro del campo CANTIDAD y le concatenas los ceros que te hagan falta. Esto es, si tienes 115 en CANTIDAD:

largo = strlen( cantidad ).

* el valor que toma LARGO es 3.

* después le restas el 3 a 8 y te da 5:

largo = 8 - largo.

do largo times.

concatenate '0' cantidad to cantidad.
condense cantidad no-gaps. "elimina los espacios que pueden quedar con
el concatenar
enddo.

espero te sirva.

saludos.

zavarmi
11/09/07, 16:47:40
Listo ya quedo Muchas gracias...

caparase
11/09/07, 18:24:22
...y cómo lo resolviste?

zavarmi
11/09/07, 22:17:38
de la siguiente manera: declare una variable de la long. que necesito con valor inicial '0'. Luego de asignar el valor del campo a mi variable 2 (v_qtyc), realice un OVERLAY a mi variable v_qtyc con la variable v_ceros, y luego concateno los campos que quiero (v_matnr V_QTYC p_lote )

DATA: v_ceros(8) VALUE '00000000'.

v_qtyc = mseg-erfmg.

OVERLAY v_qtyc WITH v_ceros.

CONCATENATE v_matnr v_qtyc p_lote INTO v_cblar IN CHARACTER MODE.