MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   De excel a tabla (foro/showthread.php?t=10864)

Heran 08/02/08 09:41:26

De excel a tabla
 
Hola,

Me han pedido hacer un programa que me cargue los datos de un excel en una tabla de sap. Pero, la cuestion es: No sabemos como va a ser el excel y la tabla de destino tb es desconocida.
Conoceis algun codigo que haga algo parecido?
Algun vinculo donde pueda encontrarlo?

Muchas gracias.

ballan 08/02/08 10:53:11

Yo me crearia la estructura de la tabla en tiempo de ejecucion y luego cargaria esa tabla con la funcion TEXT_CONVERT_XLS_TO_SAP

Heran 11/02/08 07:00:13

Tengo problema con los campos tipo fecha... me dice: Indique una fecha valida (ejemplo 01.01.2006)

Esto es una linea de mi excel.
20000000 01.01.2007 01.01.2006 DDDD EEEEEEEEEEEEEEEE 20 15
Tb he probado con las fechas 01012007, 20070101 2007.01.01...


DATA: it_raw TYPE truxs_t_text_data.
FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE.


CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = it_raw " WORK TABLE
i_filename = p_file
TABLES
i_tab_converted_data = <dyn_table>[] "ACTUAL DATA
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

¿¿que puedo hacer??

ballan 11/02/08 10:33:32

Las fechas en excel se almacenan como un numero en coma flotante asi que te estara dando algun error de formato, pon las fechas como texto y luego las tratas en tu programa en R3

quicir en lugar de 02.12.2008 pon 02122008, que te lo lleve a r3 como texto y tu ahi haces con ello lo que sea

Heran 11/02/08 15:54:04

Nada que no lo consigo hacer... no se que mas puedo probar... Y solo me falla cuando la tabla DB tiene tipos dats. El resto los coge sin problemas.

Resumo los pasos...

Creo 2 parametros, uno para indicar la Tabla DB y otro para el fichero excel.

Creo dinamicamente la Tabla interna de tipo Tabla DB.

Cargo los datos del excel en la Tabla interna dinamica.(Me da fallo fecha)

Por ultimo visualizo los registros insertados en la Tabla interna.

Alguna idea brillante??

Gracias por todo.

ballan 12/02/08 08:57:26

Heran creo que el problema es que en sap un tipo de dato fecha se almacena como un string de 8 y en excel los datos de tipo fecha son un numero en coma flotante por lo que da error de tipo y peta, prueba a colocar en tu excel de carga la fecha como si fuera un texto, para introducir un literal en una celda de excel tienes que poner la comilla simple delante ' algo asi:

'01012008 asi te introduce el literal 01012008 en la celda y lo toma como texto y no como fecha o numero entero

Heran 12/02/08 13:55:55

Gracias Ballan, pero sigue sin funcionarme...

Voy a ha cargar los datos deste un TXT. A ver cuando me libere de carga resuelvo lo de la fecha...

Nuevamente muchas gracias.

ballan 12/02/08 14:55:34

Esa seria la solucion mas rapida, cuando tengas tiempo puedes investigar otras dos vias de trabajo:

OPCION 1
La funcion ALSM_EXCEL_TO_INTERNAL_TABLE le das una ruta de fichero y una fila y columna inicial y fila y columna final y te devuelve una tabla con las celdas, por ejemplo

call function ALSM_EXCEL_TO_INTERNAL_TABLE
ruta del fichero
begin_row = 1
begin_col = 1
end_row = 25
end_col = 25
tables
t_celdas

Te devolveria una tabla (t_celdas) con los siguientes valores

Fila Columna Valor
1 1 Valor celda 1,1
1 2 Valor celda 1,2
...

Podrias mirar si esos valores te los recupera correctamente y luego con los valores de la tabla los vas insertando en tu tabla con field-symbols


OPCION 2

Acceder al excel por medio de objetos, para no hacer un post kilometrico te dejo un enlace para que veas ejemplos

la idea seria si asi te recupera correctamente los campos de fecha y los pasas a tu tabla por medio de field-symbols

Suerte!


Husos Horarios son GMT. La hora en este momento es 17:10:07.

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