CONECTIVIDAD SAP R/3 Ejemplo de comunicación entre SAP R/3 y Microsoft Excel mediante tecnología OLE2 |
||
1. INTRODUCCION
|
REPORT zexcel. ************************************************************************ * Include necesario para la declaracion de objetos OLE2 ************************************************************************ INCLUDE ole2incl. ************************************************************************ ************************************************************************ * Declaraciones para la llamada a EXCEL. DATA hoja_excel TYPE ole2_object. DATA excel TYPE ole2_object. DATA libro TYPE ole2_object. DATA ole_sheets TYPE ole2_object. DATA ole_sheet TYPE ole2_object. DATA ole_libro TYPE ole2_object. DATA libros_trabajo TYPE ole2_object. DATA ole_datasheet TYPE ole2_object. DATA ole_datacells TYPE ole2_object. DATA l_lines TYPE i. DATA l_lineas(10) TYPE c. DATA rango TYPE ole2_object. DATA row TYPE ole2_object. DATA ventana TYPE ole2_object. DATA end(10) TYPE c. * Se crea el objeto Hoja Excel. CREATE OBJECT hoja_excel 'Excel.Sheet'. * Se llama a la aplicación Excel. CALL METHOD OF hoja_excel 'Application' = excel. * Se hace visible la aplicación Excel SET PROPERTY OF excel 'Visible' = 1. CALL METHOD OF excel 'Workbooks' = libros_trabajo. * Se abre el archivo con los datos del listado CALL METHOD OF libros_trabajo 'Open' = libro EXPORTING #1 = 'C:\DOCS\PRUEBA.XLS'. CALL METHOD OF libro 'Worksheets' = ole_sheets. * Se crea un nuevo libro y se copian los datos del fichero al libro CALL METHOD OF ole_sheets 'Item' = ole_datasheet EXPORTING #1 = 1. CALL METHOD OF ole_datasheet 'Copy'. ! * Se cierra el fichero de trabajo con los datos. call method of libro 'Close' exporting #1 = 0. GET PROPERTY OF excel 'ACTIVESHEET' = ole_sheet. CALL METHOD OF ole_sheet 'RANGE' = rango EXPORTING #1 = 'C1' #2 = 'H1'. * Se formatea el ancho de columna SET PROPERTY OF rango 'COLUMNWIDTH' = 21. GET PROPERTY OF excel 'ACTIVEWINDOW' = ventana. * Se muestra el libro con el formato en rejilla SET PROPERTY OF ventana 'DISPLAYGRIDLINES' = -1. FREE OBJECT rango. * Se obtiene el total de líneas de la tabla para crear * un rango con todas las celdas númericas y formatearlas DESCRIBE TABLE i_detmedi LINES l_lines. WRITE l_lines TO l_lineas. TRANSLATE l_lineas USING '. '. * Se aplica el formato numérico con decimales en los miles a * las celdas que contienen importes. CONCATENATE 'H' l_lineas INTO end. CONDENSE end NO-GAPS. CALL METHOD OF ole_sheet 'RANGE' = rango EXPORTING #1 = 'C1' #2 = end. SET PROPERTY OF rango 'NUMBERFORMAT' = '#,##0'. FREE OBJECT rango. *Se informa la cabecera del listado, insertando una fila en blanco al principio del mismo CALL METHOD OF ole_sheet 'RANGE' = rango EXPORTING #1 = 'A1'. CALL METHOD OF rango 'ENTIREROW' = row. CALL METHOD OF row 'INSERT'. FREE OBJECT rango. FREE OBJECT row. * Creando un rango con cada una de las celdas e informando el texto * en las celdas se obtiene la cabecera call method of ole_sheet 'RANGE' = rango exporting #1 = 'A1'. SET PROPERTY OF rango 'FORMULAR1C1' = text-003. FREE OBJECT rango. CALL METHOD OF ole_sheet 'RANGE' = rango EXPORTING #1 = 'B1'. SET PROPERTY OF rango 'FORMULAR1C1' = text-012. FREE OBJECT rango. CALL METHOD OF ole_sheet 'RANGE' = rango EXPORTING #1 = 'C1'. SET PROPERTY OF rango 'FORMULAR1C1' = text-007. FREE OBJECT rango. CALL METHOD OF ole_sheet 'RANGE' = rango EXPORTING #1 = 'D1'. SET PROPERTY OF rango 'FORMULAR1C1' = text-008. FREE OBJECT rango. CALL METHOD OF ole_sheet 'RANGE' = rango EXPORTING #1 = 'E1'. SET PROPERTY OF rango 'FORMULAR1C1' = text-013. FREE OBJECT rango. CALL METHOD OF ole_sheet 'RANGE' = rango EXPORTING #1 = 'F1'. SET PROPERTY OF rango 'FORMULAR1C1' = text-010. FREE OBJECT rango. CALL METHOD OF ole_sheet 'RANGE' = rango EXPORTING #1 = 'G1'. SET PROPERTY OF rango 'FORMULAR1C1' = text-011. FREE OBJECT rango. CALL METHOD OF ole_sheet 'RANGE' = rango EXPORTING #1 = 'H1'. SET PROPERTY OF rango 'FORMULAR1C1' = text-013. FREE OBJECT rango. * Se liberan todos los objetos creados FREE OBJECT libro. FREE OBJECT libros_trabajo. FREE OBJECT ventana. FREE OBJECT ole_sheet. FREE OBJECT rango. FREE OBJECT ole_sheets. FREE OBJECT ole_datasheet. FREE OBJECT hoja_excel. FREE OBJECT excel. |