MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 21/04/08, 19:42:57
Avatar de vsuarezo
vsuarezo vsuarezo is offline
Member
 
Fecha de Ingreso: abr 2006
Localización: Bogotá - Colombia
Mensajes: 47
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
Responder Con Cita
  #2  
Viejo 24/04/08, 17:17:12
Avatar de Edd_401
Edd_401 Edd_401 is offline
Senior Member
 
Fecha de Ingreso: may 2007
Mensajes: 119
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.
Responder Con Cita
  #3  
Viejo 24/04/08, 22:01:25
Avatar de vsuarezo
vsuarezo vsuarezo is offline
Member
 
Fecha de Ingreso: abr 2006
Localización: Bogotá - Colombia
Mensajes: 47
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.
Responder Con Cita
  #4  
Viejo 24/04/08, 22:30:04
Dano Dano is offline
Junior Member
 
Fecha de Ingreso: abr 2006
Localización: Queretaro
Mensajes: 13
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
Responder Con Cita
  #5  
Viejo 25/04/08, 08:34:53
miguelonibus miguelonibus is offline
Junior Member
 
Fecha de Ingreso: mar 2007
Mensajes: 13
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.
Responder Con Cita
  #6  
Viejo 25/04/08, 15:37:36
Avatar de vsuarezo
vsuarezo vsuarezo is offline
Member
 
Fecha de Ingreso: abr 2006
Localización: Bogotá - Colombia
Mensajes: 47
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
Responder Con Cita
  #7  
Viejo 02/03/11, 23:32:19
karinastolen karinastolen is offline
Member
 
Fecha de Ingreso: mar 2010
Localización: México
Mensajes: 60
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.
Responder Con Cita
  #8  
Viejo 04/03/11, 18:54:06
Avatar de luis999
luis999 luis999 is offline
Member
 
Fecha de Ingreso: jun 2008
Localización: Lima - Perú
Mensajes: 82
Cool

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
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 23:34:47.


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