#1
|
||||
|
||||
Espacios a la derecha archivo TXT
Buenas tardes,
Tengo definida una ta bla interna REC de la siguiente forma: DATA: BEGIN OF REG OCCURS 100, CAMPO(100) TYPE C, END OF REG. y otra ADIC así: DATA: BEGIN OF ADIC OCCURS 100, TIPO_REG(1) TYPE N VALUE 3, NUM_FAC(10) TYPE C, REFER(10) TYPE C, SIG_BRU(1) TYPE C, VAL_BRU(10) TYPE N, SIG_AJUS(1) TYPE C, VAL_AJUS(10) TYPE N, SIG_NET(1) TYPE C, VAL_NET(10) TYPE N, FILLER(41) TYPE C VALUE SPACE, END OF ADIC. Con el siguiente código, paso el contenido de ADIC a REG: CLEAR REG. REG = ADIC. APPEND REG. El conenido de FILLER son espacioes en blanco. ¿Que debo hacer para que cuando pase el contenido de ADIC a REG se conserven los espacios en blanco del campo FILLER?. Muchas Gracias |
#2
|
||||
|
||||
No Entiendo Por Que Tiene El Space Dentro De Tu Tabla Interna O Para Que Lo Usas….
Y Por Que Tan Largo (41.) Si Lo Que Desea Es Que Haya Un Espacio Entre Cada Uno De Tus Campos, Es Decir, Tabular….seria Asi: Loop At Adic. Clear Reg. Concatenate Adic- Tipo_reg Adic- Num_fac Adic- Refer Adic- Sig_bru Adic- Val_bru Adic- Sig_ajus Adic- Val_ajus Adic- Sig_net Adic- Val_net Into Reg-campo Separated By Space. Endloop. O Puedes Declara Antes} Data: Filler(41) Type C Default Space.. Y En La Ultima Parte Poner: Into Reg-campo Separated By Filler. |
#3
|
||||
|
||||
Espacios a la derecha archivo TXT
Aclarando un poco mas lo que necesito es que al generar un archivo plano a partir de una tabla interna, todas las líneas del archivo plano deben quedar de la misma longitud. Ej. Si genero el siguiente archivo plano donde el acho máximo es 15 caracteres.
XXXXXXXXXXXXXXX YYYYYYYY ZZZZZZZZZZZZZZZ Necesito que la abrirlo en algún editor de textos, al recorrer caracter a caracter la línea de las Y, al llegar a la última Y no salte a la siguiente línea sino que me permita llegar a la posición 15 de esa línea. Es decir que me deje espacios en blanco a la derecha y me pueda desplazar sobre ellos. Espero haber sido más claro. No es muy común que se requieran espacios en blanco al final de una línea pero por algún tipo de validación requieren que este archivo los tenga. Muchas gracias por su atención. |
#4
|
|||
|
|||
que tal.
Aqui tambien utilizamos la transferencia mediante archivos de texto y asi es como la manejamos. Se declara la tabla interna con los caracteres necesarios: DATA: BEGIN OF t_inter OCCURS 0, line(225), END OF t_inter. se define la tabla donde se guardan los valores que necesitas: DATA: BEGIN OF ti_inter OCCURS 10, lifnr LIKE reguh-lifnr, " proveedor zbnkn LIKE reguh-zbnkn, " Cta. Destino blanc5(5) TYPE c, " espacio en blanco ubknt LIKE reguh-ubknt, " Cta. Origen blanc5_2(5) TYPE c, " espacio en blanco rwbtr LIKE reguh-rwbtr, " Monto blan_nom(30) TYPE c, " Información adicional para la transferencia. blanc10(10) TYPE c, " espacio en blanco laufd LIKE reguh-laufd, " Fecha de aplicación de la transferencia END OF ti_inter. Se declara una variable con los espacios necesarios. DATA: line(93). " LINEA PARA BAJAR ARCHIVO. Despues haces la asignacion de la tabla interna a la variable. MOVE: ctaorig TO line, ti_inter-blanc5 TO line+11(5), ctadest TO line+16(11), ti_inter-blanc5_2 TO line+27(5), monto TO line+32(13), ti_inter-blan_nom TO line+45(30), ti_inter-blanc10 TO line+75(10), ti_inter-laufd TO line+85(8). MOVE line TO t_inter. APPEND t_inter. CLEAR t_inter. Y bajamos el archivo de texto con la función DOWNLOAD CALL FUNCTION 'DOWNLOAD' EXPORTING filetype = 'ASC' item = 'COMER_INTER' IMPORTING cancel = cancel TABLES data_tab = t_inter EXCEPTIONS invalid_filesize = 1 invalid_table_width = 2 invalid_type = 3 no_batch = 4 unknown_error = 5 gui_refuse_filetransfer = 6 others = 7. Saludos |
#5
|
|||
|
|||
Yo probaria a hacer un CONCATENATE de todos los campos en la tabla REG
CONCATENATE TIPO_REG NUM_FAC REFER SIG_BRU VAL_BRU SIG_AJUS VAL_AJUS SIG_NET VAL_NET FILLER INTO REG APPEND REG. Asi funcionaria. Saludos. |
#6
|
||||
|
||||
Espacios a la derecha archivo TXT
Probé con lo mencionado por DANO y por MIGUELONIBUS y aún no he podido resolver mi problema. De antemano muchas gracias
Este es un ejemplo más real resumido de lo que estoy haciendo: PARAMETERS: P_DSN1(40) TYPE C LOWER CASE DEFAULT '/sapusers/bancos/pcol'. DATA: BEGIN OF REG OCCURS 100, CAMPO(100) TYPE C, END OF REG. DATA: BEGIN OF ADIC OCCURS 100, TIPO_REG(1) TYPE N VALUE 3, NUM_FAC(10) TYPE C, REFER(10) TYPE C, SIG_BRU(1) TYPE C, VAL_BRU(10) TYPE N, SIG_AJUS(1) TYPE C, VAL_AJUS(10) TYPE N, SIG_NET(1) TYPE C, VAL_NET(10) TYPE N, FILLER(41) TYPE C VALUE SPACE, END OF ADIC. CLEAR ADIC. ADIC-TIPO_REG = '3'. ADIC-NUM_FAC = '0000000000'. ADIC-REFER = '0000000000'. ADIC-SIG_BRU = '+'. ADIC-VAL_BRU = '0000000000'. ADIC-SIG_AJUS = '+'. ADIC-VAL_AJUS = '0000000000'. ADIC-SIG_NET = '+'. ADIC-VAL_NET = ‘125000000’. ADIC-FILLER = ‘TABORDA TAMAYO NELSON HERNAN ‘. APPEND ADIC. CLEAR REG. REG = ADIC. APPEND REG. CONCATENATE P_DSN1 SY-DATUM+4(2) SY-DATUM+6(2) '.txt' INTO P_DSN1. OPEN DATASET P_DSN1 FOR OUTPUT IN TEXT MODE. LOOP AT REG. TRANSFER REG-CAMPO TO P_DSN1. ENDLOOP. CLOSE DATASET P_DSN1. Observen que el campo ADIC-FILLER tiene espacios en blanco al final. Estos son los que quiero que me queden en el archivo plano. Los espacios en blanco que puedan llegar a existir entre los diferentes campos sí los esta conservando. Nuevamente muchas gracias |
#7
|
|||
|
|||
usa RESPECTING BLANKS
Yo tenía un problema similar y lo solucioné como menciona miguelonibus sólo que utilicé el CONCATENATE con la opción RESPECTING BLANKS.
|
#8
|
||||
|
||||
Quiza te sirve lo siquiente:
TYPES: text3 TYPE c LENGTH 101. DATA: T_CONT TYPE TABLE OF text3. DATA: BEGIN OF IT_CONT OCCURS 0, DATO(101) TYPE C. DATA: END OF IT_CONT. DATA: BEGIN OF IT_EXPORT OCCURS 0, DATO TYPE STRING. DATA: END OF IT_EXPORT. ................. llenas los datos ................. IT_CONT-DATO+18(15) = VL_WRBTRT. *Cantidad de registros de beneficiarios IT_CONT-DATO+33(15) = '000000000000000'. *Cantidad de registros enviados IT_CONT-DATO+48(15) = LINEASTC. APPEND IT_CONT-DATO TO T_CONT. concatenate LINES OF T_CONT into IT_EXPORT-dato respecting blanks. APPEND IT_EXPORT. CLEAR IT_EXPORT. CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING filename = l_filename filetype = 'ASC' * trunc_trailing_blanks = ' ' trunc_trailing_blanks_eol = ' ' "Deja los espacios en blanco TABLES data_tab = IT_EXPORT.
__________________
Luis Lipa
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|