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.
|