PDA

Ver la Versión Completa : Rellenar con espacios campos de archivo plano


Jarpi
17/02/09, 21:30:19
Buenas tardes,

Los molesto en esta oportunidad porque estoy teniendo problemas con la composición de un archivo plano para procesar luego en su respectivo aplicativo.

Este aplicativo me pide un formato en particular para cada campo de su estructura. En algunos de ellos me pide que se complete con espacios en blanco hasta el final de los mismos.

Por ejemplo: tengo el campo t_datos-namee = 'NO INTERVIENE', que es un char de 30. Lo que necesito es que el campo se autocomplete con espacios en blanco hasta llegar a los 30, o sea 'NO INTERVIENE '.

Alguien sabría como hacer esto?

Desde ya muchas gracias,
Saludos.

negrogho
17/02/09, 22:41:12
Hola jarpi

En esos casos yo lo que es usar el + y los "()" para indicar la posiciones que van a avarcar cada dato, ejemplo:

t_textoplano(8) = t_tabla-codigo
t_textoplano+8(30) = t_tabla-nombre
t_textoplano+38(10) = t_tabla-telefono
...

No se si te sirva

DavidXD_XD
18/02/09, 13:57:11
Hola, pruebale con lo q comento negrogho y con la funcion GUI_DOWNLOAD utiliza el parametro TRUNC_TRAILING_BLANKS, espero te pueda servir :D

Jarpi
18/02/09, 14:55:00
Muchas gracias a ambos.

Voy a probar lo que me dicen y luego les cuento.

Saludos.

gugutin
19/02/09, 08:18:34
Hola Jarpi,

Quizas con esta instruccion te sea mas facil y rapido.

SHIFT it_name left DELETING LEADING ' '.

te justifica a izquierda y resto a blancos, espero que te haya podido ayudar.

Saludos

Jarpi
20/02/09, 11:20:51
Bueno, les cuento que me sirvió la info que me pasaron. Fue un trabajo largo ya que el archivo plano cuenta con 56 campos! Pero bueno, ya está resuelto.

Muchas gracias,
Saludos.

cosagaucha
05/08/10, 15:02:31
hola jarpi, de que forma lo resolviste? con el shift?

ya que yo estoy en la misma, pero con el ultimo campo de mi linea, donde tengo que asignarle 42 espacios en blanco,

wa_archivo+48(42) = v_reserva_c.

y no logro que me asigne ni uno..

gracias!!
CG

Jarpi
05/08/10, 15:56:17
Hola cosagaucha,

Te cuento que lo que hice fue hacer un move. Te muestro.

move t_datos-tcpte to wa_lineas-linea.
move t_datos-ncpte to wa_lineas-linea+1(12).
move t_datos-codet to wa_lineas-linea+13(6).

Y así me respetó el tamaño de los espacios. Deberías probar de hacerlo así, pero no se si funcionará porque tu campo es sólo un espacio en blanco.

Espero te sirva.

Saludos.

Jarpi
05/08/10, 19:57:48
Creo que sé como podés resolverlo.

Tenés que ir al Mapa de caracteres de Windows y copiate el espacio en blanco (lo seleccionas y copias). Cuando tenes eso, dentro del programa ponés

OVERLAY VARIABLE WITH '******************************' (pegas 42 veces el caracter copiado).

Espero que te sirva esto.

Saludos.

alberto06
29/11/11, 18:29:08
Hola cosagaucha me puedes decir si pudiste solucionar problema de rellenar con espacios en blanco al final de la linea del archivo, yo tengo el mismo problema y no encuentro la solucion he intentando con concatenate, OVERLAY, shift, replace, etc. y nunca me imprime los espacios en blanco al finasl de la línea, si alguien ha encontrado la forma sería de gran ayuda, saludos.

cosagaucha
30/11/11, 10:54:55
hola Alberto,

si bien hace bocha de esto, -ya ni trabajo en esa consultora-, si mal no recuerdo, me parece que lo habia resuelto agregandole -ademas de lo que comentaron aca- un campo mas, de solo un caracter, a la estructura que me recibe los datos de la linea.. y con eso creo que me respeto el ancho que yo deseaba,..

Espero que de algo sirva..
Saludos

agarrido
12/04/12, 01:35:45
Declaras una variable para asignar el caracter Enter y al final de los campos que van al archivo, creas otro para asignar esa variable que contiene el Enter.

Nota: en el GUI_DOWNLOAD, debes mandar este parámetro así:

trunc_trailing_blanks_eol = 'X'

--------------------------------------------
data: c_newline(1) type c value cl_abap_char_utilities=>newline.

data: begin of it_fin occurs 0 ,
linea(25) ,
end of it_fin.

data: begin of it_c occurs 0, "
tipreg(3) type c, " Tipo de Registro
ctacar(20) type c, " Cuenta
center(1) type c, " Caracter enter
end of it_c.


it_c-tipreg = 'A'.
it_c-ctacar = ''.
it_c-center = c_newline.
append it_c.

insert it_c into it_fin index 1 .


call function 'GUI_DOWNLOAD'
exporting
filename = w_namefile
filetype = 'ASC'
trunc_trailing_blanks_eol = 'X'
header = '00'
write_lf = 'X'
write_lf_after_last_line = 'X'
tables
data_tab = it_fin[].

assai
04/02/13, 08:42:35
Hola,

Esto funciona seguro....

Con la función 'GUI_DOWNLOAD'
fijar el parámetro TRUNC_TRAILING_BLANKS_EOL = ' '

Te crea el fichero relleno de blancos al final de cada registro con la longitud del campo.

Saludos