#13
|
||||
|
||||
Gracias, oie tambien soy de Mexico, de muy certa de tu estado de TAmaulipas !. Oie larmadovr, fijate que ya lo intente y solo me mete un registro y dentro de el solo el mandante esta escrito... ningun campo mas se escribio, nose que estoy haciendo mal..... te dejo mi codigo para ver si le puedes hechar un vistaso: *&---------------------------------------------------------------------* *& Report ZVACIAR_A_TABLA_Z *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZVACIAR_A_TABLA_Z. **---------------------------------------------------------------------* ** INCLUDE PARA DEFINICIÓN DE DATOS * **---------------------------------------------------------------------* *INCLUDE zpruebas_lavr_t001. * **---------------------------------------------------------------------* ** INCLUDE PARA DEFINICIÓN SUBRUTINAS * **---------------------------------------------------------------------* *INCLUDE zpruebas_lavr_f001. *---------------------------------------------------------------------* * EVENTO START-OF-SELECTION * *---------------------------------------------------------------------* START-OF-SELECTION. * Lee un archivo xls y lo carga en una tabla interna PERFORM f_lee_archivo. * Recorre tabla interna y va cargando datos en tabla Z PERFORM f_modifica_tabla_z. *----------------------------------------------------------------------* * ZPRUEBAS_LAVR_T001 * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Definición de parámetros de entrada * *----------------------------------------------------------------------* SELECTION-SCREEN BEGIN OF BLOCK param WITH FRAME TITLE text-001. PARAMETERS: ruta LIKE rlgrap-filename OBLIGATORY DEFAULT 'C:\Documents and Settings\kayros FI\Escritorio\BDD NORTHWIND\customers.xlsx' LOWER CASE. SELECTION-SCREEN END OF BLOCK param. *----------------------------------------------------------------------* * Definición de tablas internas * *----------------------------------------------------------------------* * Tabla que almacena los registros de las filas y columnas de xls DATA: BEGIN OF i_excel OCCURS 0, fila LIKE alsmex_tabline-row, columna LIKE alsmex_tabline-col, valor LIKE alsmex_tabline-value, END OF i_excel. * Tabla que almacena los campos que vienen del archivo * Estos pueden variar de acuerdo a la tabal que deseamos llenar DATA: BEGIN OF ti_archivo OCCURS 0, mandt LIKE sy-mandt, customerid LIKE ZNW_CUSTOMERS-ZNW_CUSTOMERID, companyname LIKE znw_customers-znw_companyname, contactname LIKE znw_customers-znw_contactname, contacttitle LIKE znw_customers-znw_contacttitle, address LIKE znw_customers-znw_address, city LIKE znw_customers-znw_city, region LIKE znw_customers-znw_region, postalcode LIKE znw_customers-znw_postalcode, country LIKE znw_customers-znw_country, phone LIKE znw_customers-znw_phone, fax LIKE znw_customers-znw_fax, END OF ti_archivo. *----------------------------------------------------------------------* * Definición de estructuras * *----------------------------------------------------------------------* * Se crea una estructura para poder hacer el modify directo a la tabla Z * y evitar errores por tipos de datos DATA: BEGIN OF s_zruta_arch. INCLUDE STRUCTURE znw_customers. DATA: END OF s_zruta_arch. *----------------------------------------------------------------------* * ZPRUEBAS_LAVR_F001 * *----------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form F_LEE_ARCHIVO *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM f_lee_archivo. * Función que descarga datos desde archivo excel CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = ruta i_begin_col = '1' i_begin_row = '1' i_end_col = '4' " NUMERO DE CAMPOS DE ARCHIVO i_end_row = '65000' TABLES intern = i_excel EXCEPTIONS inconsistent_parameters = 1 upload_ole = 2 OTHERS = 3. IF sy-subrc EQ 0. * Función para llenar datos descargados en tabla interna PERFORM f_llena_tabla. ELSE. *MESSAGE i001 WITH text-002. ENDIF. ENDFORM. " F_LEE_ARCHIVO *&---------------------------------------------------------------------* *& Form f_llena_tabla *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM f_llena_tabla. LOOP AT i_excel. CASE i_excel-columna. WHEN '1'. MOVE i_excel-valor TO ti_archivo-mandt. WHEN '2'. MOVE i_excel-valor TO ti_archivo-CUSTOMERID. WHEN '3'. MOVE i_excel-valor TO ti_archivo-companyname. WHEN '4'. MOVE i_excel-valor TO ti_archivo-contactname. WHEN '5'. MOVE i_excel-valor TO ti_archivo-contacttitle. WHEN '6'. MOVE i_excel-valor TO ti_archivo-address. WHEN '7'. MOVE i_excel-valor TO ti_archivo-city. WHEN '8'. MOVE i_excel-valor TO ti_archivo-region. WHEN '9'. MOVE i_excel-valor TO ti_archivo-postalcode. WHEN '10'. MOVE i_excel-valor TO ti_archivo-country. WHEN '11'. MOVE i_excel-valor TO ti_archivo-phone. WHEN '12'. MOVE i_excel-valor TO ti_archivo-fax. ENDCASE. AT END OF fila. APPEND ti_archivo. CLEAR ti_archivo. ENDAT. ENDLOOP. ENDFORM. " f_llena_tabla *&---------------------------------------------------------------------* *& Form F_MODIFICA_TABLA_Z *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM f_modifica_tabla_z. LOOP AT ti_archivo. IF sy-subrc EQ 0. * Se mueven el registro de la tabal interna a la estructura MOVE-CORRESPONDING ti_archivo TO s_zruta_arch. * Se utiliza el modify en lugar de insert, para que haya problemas si se * duplica algun registro por error, o por que lo ejecutes N veces MODIFY znw_customers FROM s_zruta_arch. * Graba en tabla transparente COMMIT WORK. CLEAR: ti_archivo, s_zruta_arch. ENDIF. ENDLOOP. ENDFORM. " F_MODIFICA_TABLA_Z Úlima edición por bacha fecha: 29/02/08 a las 21:12:44. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|