PDA

Ver la Versión Completa : excel a i_tab


xava
26/10/06, 08:38:53
Buenos días señores.

Estoy intentando bajarme un excel a una tabla interna y no hay manera.
El archivo en cuestion está en \\192.168.254.16\Des\TPV.

YA he probado de todo y la FILE_READ_AND_CONVERT_SAP_DATA y ALSM_EXCEL_TO_INTERNAL_TABLE me dan unos dumps horribles.

UN saludo.

xava
26/10/06, 09:19:02
el proceso tiene que ser en background

ballan
26/10/06, 10:11:26
En fondo tienes que utilizar dataset para leer los datos, p.e.

open dataset ruta_fichero

if sy-subrc = 0

do

read dataset ruta_fichero into linea

if sy-subrc <> 0
exit
else
append linea to tabla
endif

enddo

xava
26/10/06, 10:26:04
Ya lo intenté pero el excel no tiene salto de linea con lo que me carga una linea larguísima y caracteres # entre los campos con lo que no puedo controlar los datos.

Un saludo

ballan
26/10/06, 10:32:02
El excel internamente se almacena como campos separados por tabulador por lo que tendrias que añadir los tabuladores a tu tabla interna, p.e.

Tabla interna

data: begin of tabla occurs 0,

campo1 like ...
tabulador1 type x
campo2 like...
avance de linea type x
retorno de carro type x

end of tabla.

el codigo ascii del tabulador es 09
el codigo ascii del avance de linea es 0A
el codigo ascii del retorno de carro es 0D

tendrias que abrir el dataset en modo binario no en modo texto y prueba a volcar la linea en una tabla del estilo como te lo he escrito arriba y deberia funcionar

i_arnaiz
26/10/06, 13:35:21
Casi al principio de la función puedes ver en un trozo de código los tipos, que no extensiones, validos.

Código:

* filetype parameter gltig ?
CASE FILETYPE.
WHEN 'BIN' OR 'DAT' OR 'ASC' OR 'IBM' OR 'WK1' OR 'DBF' OR
'SPL' OR 'TRU'.
WHEN OTHERS.
RAISE INVALID_TYPE.
ENDCASE.



en cuanto a como cargarlo, echa un ojo a este include http://sap4.com/wiki/index.php?title=ZIFICHEROS y en especial al form:

Código:


Form f_cargar_fichero_excel_unix
Esta función carga un fichero del tipo excel del servidor, sera
obligatorio que la tabla interna en la que se cargue tenga el
mismo número de campos que columnas tiene el fichero.
ATENCIÓN: NO SE CONTROLAN LOS TIPOS NI TAMAÑOS DE LAS VARIABLES!



Un saludo.

Nacho.

ascs
13/12/06, 09:10:56
El excel internamente se almacena como campos separados por tabulador por lo que tendrias que añadir los tabuladores a tu tabla interna, p.e.

Tabla interna

data: begin of tabla occurs 0,

campo1 like ...
tabulador1 type x
campo2 like...
avance de linea type x
retorno de carro type x

end of tabla.

el codigo ascii del tabulador es 09
el codigo ascii del avance de linea es 0A
el codigo ascii del retorno de carro es 0D

tendrias que abrir el dataset en modo binario no en modo texto y prueba a volcar la linea en una tabla del estilo como te lo he escrito arriba y deberia funcionar
HOLa!!!
mi primera participacion en este foro que me esta sirviendo de gran ayuda....
como cojes el codigo ascii?
es que quiero hacer esto pero nose como definirle el tipo ni como tratarselo luego...
un saludo y gracias!