1
Programación ABAP / Re: conectividad OLE
« en: 17 de Septiembre de 2008, 06:26:14 pm »
Para mí la manera más rápida y fácil de hacer cosas con excel desde sap ha sido grabando una macro en un documento plantilla de excel y llamándola desde sap. Por ejemplo, hago download del contenido de unas tablas de sap en ficheros locales. La macro de excel lo que hace es abrir esos ficheros, ponerles el formato que sea, hacer algún gráfico...lo que sea...
INCLUDE ole2incl.
DATA: excel_obj TYPE ole2_object,
workbook_obj TYPE ole2_object,
fichero(50),
macro(20).
fichero = 'nombre del fichero'.
macro = 'nombre_del_fichero.xls!Nombre_de_la_macro'.
PROCESO
PERFORM abrir_excel USING excel_obj.
PERFORM abrir_workbook USING excel_obj workbook_obj fichero.
PERFORM ejecutar_macro USING excel_obj macro.
FORM abrir_excel USING excel .
CREATE OBJECT excel 'EXCEL.APPLICATION'.
SET PROPERTY OF excel 'DISPLAYALERTS' = 0. "no muestre ventanas
SET PROPERTY OF excel 'VISIBLE' = 1. "mostrarlo visible
ENDFORM.
FORM abrir_workbook USING excel workbook nom_fich.
DATA: works TYPE ole2_object.
CALL METHOD OF excel 'WORKBOOKS' = works.
CALL METHOD OF works 'OPEN' EXPORTING #1 = nom_fich.
GET PROPERTY OF excel 'ACTIVEWORKBOOK' = workbook.
ENDFORM.
FORM ejecutar_macro USING excel macro.
CALL METHOD OF excel 'RUN' EXPORTING #1 = macro.
ENDFORM.
INCLUDE ole2incl.
DATA: excel_obj TYPE ole2_object,
workbook_obj TYPE ole2_object,
fichero(50),
macro(20).
fichero = 'nombre del fichero'.
macro = 'nombre_del_fichero.xls!Nombre_de_la_macro'.
PROCESO
PERFORM abrir_excel USING excel_obj.
PERFORM abrir_workbook USING excel_obj workbook_obj fichero.
PERFORM ejecutar_macro USING excel_obj macro.
FORM abrir_excel USING excel .
CREATE OBJECT excel 'EXCEL.APPLICATION'.
SET PROPERTY OF excel 'DISPLAYALERTS' = 0. "no muestre ventanas
SET PROPERTY OF excel 'VISIBLE' = 1. "mostrarlo visible
ENDFORM.
FORM abrir_workbook USING excel workbook nom_fich.
DATA: works TYPE ole2_object.
CALL METHOD OF excel 'WORKBOOKS' = works.
CALL METHOD OF works 'OPEN' EXPORTING #1 = nom_fich.
GET PROPERTY OF excel 'ACTIVEWORKBOOK' = workbook.
ENDFORM.
FORM ejecutar_macro USING excel macro.
CALL METHOD OF excel 'RUN' EXPORTING #1 = macro.
ENDFORM.