|
#1
|
||||
|
||||
Gracias ZOnanet.. me podrias dar una pequeña explicacion en como usar el programa esque esta en portugues o algo asi..... |
#2
|
|||
|
|||
Creo que te mandé mal la dirección, si me das tu correo te lo hago llegar, es en español y viene con un ejemplo aunque sencillo bien explicado. Saludos! |
#3
|
||||
|
||||
Claro, mira es: Espero respuesta ! |
#4
|
|||
|
|||
Que tal bacha, aqui va un ejemplo especial para ti y que puedas comprender facilmente
El siguiente ejemplo llena una tabla Z llamada ZRUTA_ARCH que tomé solo como un ejemplo, y te explico brevemente que hace.
1.- Tienes que tener un excel con los datos que deseas llenar en la tabla Z 2.- Tienes que tener tu tabla Z ya previamente creada con los tipos de datos homologados a tu access(como sabemos no son iguales, pero no pasa nada, por que el excel lo toma como cadena, solo ten cuidado que en la tabla Z haya numericos, char, string, package o N, de acuerdo a la necesidad) 3.- Modifica la tabla interna que hay en el programa de acuerdo a tus necesidades de campos 4.- La estructura tienes que hacer referencia a tu tabla Z 5.- Ya que esta llena la tabla interna hace un loop para empezar a pasar datos de la tabla interna a la estructura, esto para no tener problemas por compatibilidad de datos 6.- Hace un modify para que no haya duplicados, en el insert podria marcar error. 7.- Hace el commit work 8.- Listo, ve a ver tu tabla Z para que confirmes los registros que acabas de meter. Empezamos. REPORT zpruebas_lavr MESSAGE-ID zttl LINE-SIZE 130. *---------------------------------------------------------------------* * 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:\CARPETA\ARCHIVO.XLS' 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 zruta_arch-mandt, id LIKE zruta_arch-id, progname LIKE zruta_arch-progname, ruta LIKE zruta_arch-ruta, 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 zruta_arch. 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-id. WHEN '3'. MOVE i_excel-valor TO ti_archivo-progname. WHEN '4'. MOVE i_excel-valor TO ti_archivo-ruta. 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 inser, para que haya problemas si se * duplica algun registro por error, o por que lo ejecutes N veces MODIFY zruta_arch FROM s_zruta_arch. * Graba en tabla transparente COMMIT WORK. CLEAR: ti_archivo, s_zruta_arch. ENDIF. ENDLOOP. ENDFORM. " F_MODIFICA_TABLA_Z Listo, si tienes alguna duda, estoy para servirte. Saludos. |
#5
|
||||
|
||||
larmadovr MUCHAS GRACIAS... voy a probar este ejemplo !!!
|
#6
|
|||
|
|||
No hay de que mi cuate.
Saludos desde Mexico, no se donde estes tu.
"El conocimiento es como el fuego, que tiene que ser encendido por un agente externo, pero se propaga por si solo" |
#7
|
||||
|
||||
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. |
#8
|
|||
|
|||
Hola, mi caso es que tengo que hacer lo mismo pero guardar el batch input en la tabla mara. Como hago eso?
|
#9
|
|||
|
|||
Hola!
Se logró solucionar el tema? ya hice el codigo pero no se llena la tabla interna :/ saludos! |
#10
|
|||
|
|||
duda
hola soy phlypi y estoy comenzando con el mundo sap, solo que tengo la misma duda, me podrias mandar la URL del manual por favor. mi correo es te le agradeceria. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|