#1
|
|||
|
|||
Descargar una Tabla Interna a Excel
Buenos días a todos los miembros de esta comunidad.
Estoy tratando de guardar la información de una Tabla Interna a un Archivo Excel, para esto estoy usando el llamado al método CALL METHOD cl_gui_frontend_services=>file_save_dialog. Cuando corro el programa efectivamente me abre la ventana donde indico el nombre, el tipo y la ruta donde se guarda el archivo, pero después no me guarda ni me crea el archivo y no se que es lo que puede estar malo. PD: Las variables donde se indica la ruta, siempre se llenan por lo que el problema debe estar en otro lado. Gracias a todos por la ayuda que me puedan dar. |
#2
|
|||
|
|||
Ello se debe a que el método CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG únicamente te sirve para eso, mostrar el cuadro de diálogo donde ingresas la ruta donde el archivo se generará.
Uno de los parámetros del método tipo CHANGING es PATH (ruta del archivo) y otro es el FILENAME (nombre del archivo). Luego de la llamada a este método, tendrás en estos dos parámetros los datos que ingresaste en el cuadro de diálogo. Luego de obtenerlos, deberás concatenarlos en una variable 'v_nombre_completo' de tipo 'LIKE RLGRAP-FILENAME' y llamar a la siguiente función: CALL FUNCTION 'MS_EXCEL_OLE_STANDARD_DAT' EXPORTING FILE_NAME = v_nombre_completo TABLES DATATAB = <nombre de la tabla interna>. FIELDNAMES = <tabla con el nombre de las cabeceras> EXCEPTIONS OTHERS = 1. Notas: - La tabla con el nombre de las cabeceras es un parámetro opcional en caso quieras que aparezca el nombre del campo en el archivo Excel. Es una tabla con un sólo campo y un registro tipo LINE por cada campo que tenga tu tabla interna con los datos. - Si tu tabla interna tiene algún campo tipo quantity, la función arrojará un error en tiempo de ejecución porque me parece que ese tipo de datos no tiene compatibilidad con Excel, por lo que deberás modificar el tipo de datos en cuestión por un tipo Packet de dos decimales en tu tabla interna. Cualquier consulta puedes responderme. Saludos. Miguel Ángel Garcés
__________________
Miguel Ángel Garcés Ramírez |
#3
|
|||
|
|||
cargar tabla interna desde archivo excel
Hola, muy buenas. Hace poco que he empezado en este mundo, y ahora estoy con un modulpool,intentando llenar una tabla interna, desde un archivo excel. He encontrado una funcion pero no se lo que me falla. La funcion es bastante simple y me estoy volviendo loco. Si sabe alguien donde falla... He aqui la funcion:
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. Lo activo, sin errores, pero en cuanto entra a la funcion, da error. GRACIAS SAPEROS! |
#4
|
||||
|
||||
Hola,
¿que error te da? Un error muy frecuente al utilizar esa función es que declares el la variable que almacena el path del archivo como char. Debe ser de tipo string y lo mas comodo es que lo definas asi: Si se introduce por pantalla: DATA: fich_path LIKE rlgrap-filename. Aquí te dejo un ejemplo con otra función que tambien sirve para cargar excel a tablas internas, la única pega es que tiene un límite de lectura de 9999 celdas. Un saludo!! FORM read_excel_files TABLES itab USING fich ncol TYPE i. data: lap type i value 0. CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = fich_dat i_begin_col = '1' i_begin_row = '1' i_end_col = ncol i_end_row = '65000' TABLES intern = i_xlaux EXCEPTIONS inconsistent_parameters = 1 upload_ole = 2 OTHERS = 3. IF sy-subrc <> 0. IF sy-subrc = 1. MESSAGE s016(zdeloitte) WITH 'Los campos no coinciden'. STOP. ELSEIF sy-subrc = 2. MESSAGE s016(zdeloitte) WITH 'El fichero indicado no existe'. STOP. ENDIF. ENDIF. * la función anterior sólo permite lecturas de hasta 9999 celdas, a partir de ahi el campo filas se reinicia * lo solicunamos en el siguiente loop. loop at i_xlaux. st_xls2-fila = i_xlaux-fila + lap. st_xls2-columna = i_xlaux-columna. st_xls2-valor = i_xlaux-valor. append st_xls2 to itab. if st_xls2-fila = 9999. lap = lap + 9999. endif. clear st_xls2. endloop. ENDFORM. " read_excel_files |
Herramientas | Buscar en Tema |
Desplegado | |
|
|