Berechnung in Excel durchführen
Dieses Programm startet Excel im Hintergrund mit einer Datei, in der eine Formel hinterlegt ist. Per OLE werden zwei Werte nach Excel übergeben und das Ergebnis der Berechnung aus diesen zwei Werten wird an R/3 zurückgeliefert.
Das Programm kann gut dazu verwendet werden, um komplexe bereits bestehende Berechnungen weiterhin in Excel ausführen zu lassen.
|
REPORT ztestole NO STANDARD PAGE HEADING.
*====================================================================*
* *
* https://tricktresor.com *
* *
*====================================================================*
*
* Durchführen einer Berechnung in einem Excel-Arbeitsblatt.
*
* Erstellen Sie eine Excel-Datei, in der in Zelle
* C1 die Formel “=A1+B1” steht.
* Die Zellen A1 und B1 werden durch das Programm übergeben.
* Die Zelle C1, in der dann das Ergebnis steht, wird wieder ausgelesen
* und ausgegeben.
*
* Mit freundlicher Unterstützung von OliverS
*====================================================================*
* Excel-Sheet
PARAMETERS: var_file(30) DEFAULT ‘C:/temp/testole.xls’ LOWER CASE.
* Ergebnis
DATA: result(50).
TYPE-POOLS ole2 .
* Handles für OLE Objekte
DATA:
h_excel TYPE ole2_object, ” Excel object
h_book TYPE ole2_object, ” list of workbooks
h_active_window TYPE ole2_object,
cell_out TYPE ole2_object, ” cell
cell_in TYPE ole2_object. ” cell
*———————————————————-
START-OF-SELECTION.
* start Excel
CREATE OBJECT h_excel ‘EXCEL.APPLICATION’.
* Excel nicht sichtbar ausführen
SET PROPERTY OF h_excel ‘Visible’ = 0.
* Arbeitsblatt auswählen
CALL METHOD OF h_excel ‘Workbooks’ = h_book.
* bestehendes File öffnen
CALL METHOD OF h_book ‘OPEN’
EXPORTING
#1 = var_file.
*———————————————————–
* 1. Zelle, an die Wert übergeben wird (A1)
CALL METHOD OF h_excel ‘Cells’ = cell_out
EXPORTING
#1 = 1 “Zeile
#2 = 1. “Spalte
* Zellinhalt A1 setzen
SET PROPERTY OF cell_out ‘Value’ = ‘200’.
*———————————————————–
* 2. Zelle, an die Wert übergeben wird (B2)
CALL METHOD OF h_excel ‘Cells’ = cell_out
EXPORTING
#1 = 1 “Zeile
#2 = 2. “Spalte
* Zellinhalt B1 setzen
SET PROPERTY OF cell_out ‘Value’ = ‘500’.
* Object freigeben
FREE OBJECT cell_out.
*———————————————————–
* Zelle, aus der Ergebnis gelesen wird (C1)
CALL METHOD OF h_excel ‘Cells’ = cell_in
EXPORTING
#1 = 1 “Zeile
#2 = 3. “Spalte
* Zellinhalt lesen
GET PROPERTY OF cell_in ‘Value’ = result.
* Objekt freigeben
FREE OBJECT cell_in.
* Excel beenden
*———————————————————————–
* see http://support.microsoft.com/default.aspx?scid=kb;de;503541
* Close without saving
* get active window
CALL METHOD OF h_excel ‘ACTIVEWINDOW’ = h_active_window.
* set active_window visible
SET PROPERTY OF h_active_window ‘VISIBLE’ = 1.
*———————————————————————–
* close active_window without saving
CALL METHOD OF h_active_window ‘CLOSE’
EXPORTING #1 = 0.
* close Excel
CALL METHOD OF h_excel ‘QUIT’.
FREE OBJECT: h_excel, h_active_window.
WRITE: / ‘Ergebnis der Berechnung in Excel:’, result.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024