PDA

Ver la Versión Completa : Fichero excel a tabla interna


yerotos
13/02/08, 14:53:11
Como se puede cargar los datos de un fichero excel en una tabla interna?

Gracias

ballan
13/02/08, 15:02:19
Text_convert_xls_to_sap

yerotos
13/02/08, 15:40:21
Podrias explicarme un poquito mas? Donde pongo el nombre de mi tabla interna?

ballan
13/02/08, 17:03:03
Aqui en el foro de programacion esta resuelta muchas veces esta pregunta, si buscas un poco seguro que encontraras otros posts donde te lo explican con pelos y señales, yo por ejemplo casi sin buscar he encontrado este

http://www.mundosap.com/foro/showthread.php?t=274

yerotos
13/02/08, 17:14:34
Muchas gracias Ballan, siento mucho las molestias.

He utilizado esta función:

CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
EXPORTING
FILENAME = Ruta_Archivo
I_BEGIN_COL = 1
I_BEGIN_ROW = 1
I_END_COL = 4
I_END_ROW = 2350
TABLES
INTERN = Tabla_Excel
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2.

Me llena la tabla pero de una forma muy rara, me explico:

Yo en mi archivo.xls tengo 2350 registros con 4 campos cada uno o sea:
1 JAVIER SOTO 26/09/1979
esto sería un registro.
El tema es que tras utilizar esta función, me rellena la I_Tab pero lo hace de una forma un poco "rara", me crea una tabla en el que cada registro del archivo excel, ocupa 4 registros en mi I_Tab, 1 registro por campo, o sea:
FILA COLUMNA VALOR
1 1 1
1 2 Javier
1 3 SOTO
1 4 26/09/1979

y asi con todos registros del excel.

Como podría hacer para rellenar mi tabla interna y dejarla como en excel, con un registro con 4 campos?

Gracias de nuevo y siento las molestias.

larmadovr
13/02/08, 22:44:22
Lee un archivo excel delimitado por comas o tabuladores.

Primero lo pasa a una tabla que contiene solo un registro, y despues lo reparte en los campos que sean necesario con el SPLIT dentro de un loop.


DATA: BEGIN OF I_REG OCCURS 0,
FIELD(200) TYPE C.
DATA: END OF I_REG.

DATA: BEGIN OF TI_DATOS OCCURS 0,
HAUS like BDCDATA-FVAL,
REGIOGROUP like BDCDATA-FVAL,
STR_SUPPL2 like BDCDATA-FVAL,
STREET like BDCDATA-FVAL,
HOUSE_NUM1 like BDCDATA-FVAL,
HOUSE_NUM2 like BDCDATA-FVAL,
REGPOLIT like BDCDATA-FVAL,
REGIOGROUP2 like BDCDATA-FVAL.
DATA: END OF TI_DATOS.


FORM F_CARGA_ARCHIVO.
CALL FUNCTION 'UPLOAD'
EXPORTING
FILETYPE = 'ASC'
IMPORTING
CANCEL = V_CANCEL
TABLES
DATA_TAB = I_REG
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7.
IF SY-SUBRC NE 0.

LOOP AT I_REG.
SPLIT I_REG AT ',' INTO TI_DATOS-HAUS
TI_DATOS-REGIOGROUP
TI_DATOS-STR_SUPPL2
TI_DATOS-STREET
TI_DATOS-HOUSE_NUM1
TI_DATOS-HOUSE_NUM2
TI_DATOS-REGPOLIT
TI_DATOS-REGIOGROUP2.
IF NOT TI_DATOS-HAUS IS INITIAL.
APPEND TI_DATOS.
ENDIF.
ENDLOOP.
ENDFORM. " F_CARGA_ARCHIVO


Espero te haya servido.

ballan
14/02/08, 10:03:53
Luego tendrias que ir recorriendo la tabla e ir agregando los campos a tu estructura, por eso es mas practica la funcion text_convert_xls_to_sap porque ella lo hace directamente, solo que tarda mas

larmadovr
14/02/08, 14:30:59
La solución anterior propuesta, resuelve la pregunta de como cargarlos a una tabla interna. He visto que haces una aportación respecto a después tener que cargarlos a una "estructura" pero no ví en la pregunta que dijera que desea cargarlo a una estructura, sino a una tabla interna.

Y en lo que te refieres a más práctico, puede ser que para el programador, pero regularmente me baso en que un programa tenga buen performance, aunque yo me tarde 5 minutos más en el código. Pero bueno, gracias por tus aportaciones, esta critica es constructiva, cuando ayudes hazlo bien por favor y no a medias.

Ten en cuenta que hay personas que van empezando, y necesitan apoyo, no regaños.

Saludos.

ballan
14/02/08, 15:13:32
Pues si te preocupa tanto la performance deberias dejar de usar la funcion UPLOAD ya que esta obsoleta desde hace mucho tiempo, para que la ayuda sea completa y no se quede a medias te cuento que la funcion que se utiliza ahora es la GUI_UPLOAD

Asi bien?

larmadovr
14/02/08, 15:18:20
En cuanto a obsoleto, depende la versión que uses. Yo estoy en ABAP/4 y a la mano esta UPLOAD, también he utilizado la 6.0, y la idea era que el vea la lógica de como bajar su información.

Gracias por tu aporte, es usted muy amable.

mcarrasco
19/02/08, 11:43:45
Cualquier cosa tengo un programa que hace eso.. es cortico! cualquier cosa enviame correo a bc.marcos03@gmail.com

yerotos
20/02/08, 13:17:34
Gracias a todos por vuestra ayuda, al final ya consegui hacerlo.

Un saludo