*&---------------------------------------------------------------------*
*&Sreeni Meka's program for OLE Automation
*& Dated 01/11/98.
*&---------------------------------------------------------------------*
REPORT ZOLEXCL.
* Including OLE types
INCLUDE OLE2INCL.
* Tables and variables for later use
TABLES: KNA1.
DATA: APPLICATION TYPE OLE2_OBJECT,
WORKBOOK TYPE OLE2_OBJECT,
SHEET TYPE OLE2_OBJECT,
CELLS TYPE OLE2_OBJECT.
DATA: Z_INTKNA1 LIKE KNA1 OCCURS 0 WITH HEADER LINE .
* Creating an object
CREATE OBJECT APPLICATION 'excel.application'.
IF SY-SUBRC NE 0.
WRITE: / 'Error when opening excel.application', SY-MSGLI.
ENDIF.
* Setting properties
SET PROPERTY OF APPLICATION 'Visible' = 1.
* Calling methods
CALL METHOD OF APPLICATION 'Workbooks' = WORKBOOK.
PERFORM ERRORS.
CALL METHOD OF WORKBOOK 'Add'.
PERFORM ERRORS.
CALL METHOD OF APPLICATION 'Worksheets' = SHEET EXPORTING #1 = 1.
PERFORM ERRORS.
CALL METHOD OF SHEET 'Activate'.
PERFORM ERRORS.
PERFORM FILL_SHEET.
* Subroutine for filling the spread sheet
FORM FILL_SHEET.
DATA: ROW_MAX TYPE I VALUE 256,
INDEX TYPE I.
FIELD-SYMBOLS: <NAME>.
SELECT * FROM KNA1 INTO TABLE Z_INTKNA1 UP TO 50 ROWS. "UP TO 50 ROWS.
LOOP AT Z_INTKNA1.
INDEX = ROW_MAX * ( SY-TABIX - 1 ) + 1. "TABIX IS COUNTER FOR INTTAB
DO 10 TIMES.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE Z_INTKNA1 TO <NAME>.
CALL METHOD OF SHEET 'Cells' = CELLS
EXPORTING #1 = INDEX.
SET PROPERTY OF CELLS 'Value' = <NAME>.
ADD 1 TO INDEX.
ENDDO.
ENDLOOP.
ENDFORM.
* Subroutine for error handling
FORM ERRORS.
IF SY-SUBRC NE 0.
WRITE: / 'Error in OLE call', SY-MSGLI.
EXIT.
ENDIF.
ENDFORM.