MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Cargar un archivo EXCEL (foro/showthread.php?t=274)

josefon 30/03/06 17:25:34

Cargar un archivo EXCEL
 
Que tal! como estan??

Bueno les comento que necesito cargar en una tabla interna un archivo en excel pero no encuentro como cargarlo alguien sabe que funcion puedo utilizar???

Gracias
saludos

Mike 30/03/06 18:19:13

Josefon

Esta Función se encarga de pasar lo que tienes en un documento excel a una tabla interna

CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
EXPORTING
FILENAME = 'Ruta y nombre del archivo excel'
I_BEGIN_COL = Columna en donde comienza el archivo
I_BEGIN_ROW = Fila e donde comienza el archivo
I_END_COL = Ultima columna del archivo
I_END_ROW = Ultima fila del archivo
TABLES
INTERN = Tabla interna a llenar
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2.

Ya ahi lo que tienes que hacer es jugar con la tabla interna, dependiendo de lo que quieras hacer..

Saludos,
Mike

josefon 30/03/06 18:40:04

Muchas gracias Mike!!

ya la habia encontrado esa.. lo que me causa ruido es el hecho de que tengo que decirle en que columna empezar y cual terminar.. no???

gracias
saludos

Mike 30/03/06 20:57:14

Si, es verdad pero bueno eso es lo que hay, y hasta los momentos me ha funcionado, claro tienes que saber la fila y columna en la que empieza y termina el archivo... Si consigues otra me gustaria saberla.

Suerte,


Saludos,
Mike

josefon 03/04/06 15:43:03

Que tal!! pues despues de 2 dias de busqueda pues por fin encontre una forma de subir un archivo en excel a una tabla interna.
la funcion se llama TEXT_CONVERT_XLS_TO_SAP. aki el ejemplo.

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_line_header = 'X' "Si dejan este campo te quita una linea de tu archivo como header
i_tab_raw_data = it_raw " WORK TABLE
i_filename = p_entra
TABLES
i_tab_converted_data = t_upload[] "ACTUAL DATA
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.

lo malo es que si se tarda un poco.. por ejemplo con
150 lineas se tardo 1.48 minutos y con 1350 se tardo 10.40 minutos

se me habia ocurrido que si tu sabes cuantas lineas y columnas tiene tu EXCEL pues ocupar la funcion propuesta por MIKE pero si no sabes cuantas trae pues ocupar la TEXT_CONVERT_XLS_TO_SAP voy a invertigar si hay una forma de mejorar esta funcion para reducir el tiempo de carga..

en fin ojala les funcione...

saludos

Marco 11/04/06 06:35:06

Hola, :)
Claro... la funcion en donde poner parametros es mas rapida, el otro modo te levanta todo el Excel al parecer (muy lento). Lo q se tiene q definir seria un standard en el formato excel, para de esa manera saberla y subir solo lo especifico (es lo recomendado).. Ahora si no sabes y quieres subir Excel de cualquier tamaño, como que se tardará tu mismo lo haz visto. Mas bien si quieres hacer eso por ahi se me acurre que crees un paso mas, el de convertir tu Excel a Texto y subirlo como texto (separado por espacios), es mucho mas rapido comparado con el Excel y tienes el mismo resultado. :rolleyes:

Saludos
Cuidense,

ominorca 11/03/08 08:53:58

Buenas estoy usando la misma funcion pero me da un error.
Mi codigo es este:
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = p_file
def_path = 'c:\'
mask = ',*.* ,*.*.'
mode = 'O'
IMPORTING
filename = p_file
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.

START-OF-SELECTION.

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
* I_LINE_HEADER =
i_tab_raw_data = w_tabla
i_filename = p_file
tables
i_tab_converted_data = t_tabla
* EXCEPTIONS
* CONVERSION_FAILED = 1
* OTHERS = 2


P_file lleva el fichero.
T_tabla la tabla a cargar.
w_tabla esta definido como en la funcion pero no se que le tengo que pasar.
Un saludo.

mamt 20/10/08 15:50:51

Carga Archivo Excel
 
hola sabes que al ejecutar el programa que carga la funcion , me da un error


Type conflict when calling function module "KCD_EXCEL_OLE_TO_INT_CONVERT".

sabes a qe se debe este error, ahora si tienes otra funcion te lo agradeciria
gracias



DavidXD_XD 20/10/08 16:21:41

Hola ... yo cargo una tabla interna desde un excel con la funcion:
ALSM_EXCEL_TO_INTERNAL_TABLE


lauracarolina 12/02/09 20:33:11

pregunta
 
hola david...dime y si no sabes cual es el final de la tabla en excel??se el inicio de la tabla en un formato que me dan pero no se cuantas filas pueda tener ya que varian....gracias de antemano

bisonye 13/02/09 08:24:57


Yo creo que la mejor forma de cargarlo es transformando el excel en fichero de texto y luego cargarlo a sap. Es un paso que cualquiere usuario puede hacer y la carga del archivo es mucho más rápida.

Saludos

lauracarolina 13/02/09 16:16:38

alguna otra solucion????

Rodolfo Montiel Rivera 13/02/09 17:27:33

Otra función para opción a tu desarrollo
 
4 Adjunto(s)
Puedes utilizar esta a mi me sirvio muy bien solo te describo algunos detalles:

1.- Cada registro de tu excel te lo inserta en un solo campo string pero para diferenciar los campos este lo separa con su slash '|' por lo cual tendras que validar algunos aspectos como ancho de columnas desde el layout de excel.

2.- Debes tener cuidado al acomodar ya que este toma encuenta el primer valor que encuentre en tu registro y de ahi es donde te empieza a tomar la columna osea si tiene columna A B C D pero tu llenas el valor desde la B1 no contara la columna A y te marcara menos columnas.

Pero eso ya solo en concepto de validacion pero en realidad la funcion se adpata muy bien a tu requerimiento ya que puedes tener la cantidad de calomnas y valores que quieras despues ya solo es cosas de un buen split y acomodar bien las caidas en su campo correspondiente.


PD. Te adjunto todo el programa para mayor referencia ya que lo hice y esta muy bien validado. Saludos!!

lauracarolina 13/02/09 17:50:03

gracias por tu ayuda, pero cuando intento poner esa funcion en SAP me dice que no existe :S ...

javi_polo 16/02/09 11:57:28

Prueba con la función FILE_READ_AND_CONVERT_SAP_DATA
 
Hola,

Creo que te podría servir la función FILE_READ_AND_CONVERT_SAP_DATA. Como argumento a esta función le tienes que pasar una tabla interna con una estructura de columnas igual a la estructura de columnas de tu excel pero la función ya contiene la rutina que lee sólo el número de filas que tiene la excel.

Te paso un ejemplo de un programa que lee un fichero excel con dos columnas de un caracter e imprime el contenido de dichas columnas:


Ya nos contarás si te funciona :)

acha3318 16/02/09 14:38:49

Saludos, me podrias hacer el favor de mostrarme como definiste la tabla t_upload[] , me esta dando un error creo en la definición de la tabla.

Este es el error:
An exception occurred. This exception is dealt with in more detail below
. The exception, which is assigned to the class 'CX_SY_MOVE_CAST_ERROR', was
neither
caught nor passed along using a RAISING clause, in the procedure
"TEXT_CONVERT_XLS_TO_SAP" "(FUNCTION)"
.
Since the caller of the procedure could not have expected this exception
to occur, the running program was terminated.
The reason for the exception is:
A 'CAST' operation ('?=' or 'MOVE ?TO') tried to assign an object or
interface variable to a reference variable.
However, the contents of the source variable do not fit in the target.
Source type. "\CLASS=CL_ABAP_ELEMDESCR"
Target type: "\CLASS=CL_ABAP_STRUCTDESCR"



ballan 16/02/09 15:50:00

Podrias probar a utilizar la funcion GUI_UPLOAD poniendo en el tipo DAT en lugar de ASC aver si funciona

jjsm 17/02/09 11:39:50

Estoy en se37 "Tes del modulo de funciones:Resultados"

Estoy bien??

(Nose de programacion, soy muy basico), me aparece datos similares..

Que hago??

O debo ir a otro lado? Llegue ahi por la biblioteca de funciones.
Ahy me figura la tabla, pero para hacer funcionar esto, o para darle uso a donde me dirijo?

****************************
Por lo visto no tengo autorizacion para modificar... nada que hacer?

saludos

Ivan_Delfino 17/11/09 21:24:27

Funcion ALSM_EXCEL_TO_INTERNAL_TABLE
 
Hola que tal le eh estado haciendo pruebas a la funcion ALSM_EXCEL_TO_INTERNAL_TABLE y solo lee las columnas que tengan valor los vacios no los lee, por lo tanto no es necesario saber exactamente el tamaño con dejar un tamaño grande solo tomara los que tengan valor.

Saludos

sebasap2014 21/07/15 15:15:40

consulta sobre indicador de columnas en la funcion de subir excel
 
Bueno queria preguntar, si uso una funcion en la cual tengo que indicar el comienzo y fin de las columnas y filas, como hago para el caso en el que por parametro de seleccion indique esto, pero en el caso de las columna lo hago haciendo referencia a las letras del EXCEl es decir columna A B C etc, manualemente asignar un valor a cada letra seria programar una biblia.

AnonymousPMP 16/06/17 03:30:18

El problema aqui en esta solucion es cuando la columna tiene mas de 50 caracteres en la tabla alsmex_tabline.


DATA: lt_excel TYPE TABLE OF alsmex_tabline,








Husos Horarios son GMT. La hora en este momento es 07:09:22.

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