Bevor Sie aus Ihrer Anwendung auf Excel zugreifen können müssen
Sie mit regedit und SOLE prüfen ob die OLE
- Applikation die Sie verwenden wollen ( Excel ), sowohl im R/3 -
System, als auch beim Betriebssystem registriert ist.
Wenn beide Registrierungseinträge vorhanden sind kann es losgehen. Wenn wir auf Objekte außerhalb des R/3 Systems zugreifen wollen ( wollen wir, nämlich auf Excel auf der Workstation ) brauchen wir eine Möglichkeit dieser Anwendung Anweisungen zu übermitteln. Dies bedeutet wir müssen auf den Arbeitsspeicher den diese Anwendung oder Teile dieser Anwendung verwenden zugreifen. Dies geschiet über Zeiger ( c läßt grüßen ), sogenannte handles. Für diese handles brauchen wir besondere Variablen, sogenannte Pointer. Diese sind im Include ole2incl definiert. Variablen Type - Definition Variable für die Applikation
Wir haben sowohl für die Applikation, die Zelle als auch für die Tabelle den selben Variablentyp. Dies funktioniert weil wir bei allen drei Objekten nicht den Platz im Arbeitsspeicher Ansprechen sondern immer nur die Startadresse des belegten Arbeitsspeichers. Mit den 4 Zeilen Quellcode haben wir schon die Voraussetzungen geschaffen um Daten mit Excel auszutauschen. In dem folgenden Beispiel werden wir aus der Tabelle ZKUNDEN
für alle Einträge die Namen in einer Tabelle in Excel ablegen,
anschließen Excel ermitteln lassen wieviel Einträge vorhanden
sind.
Die Verwendung von OLE - Anweisungen erzeugt häufig ein Commit
Work, deshalb können wir die OLE - Anweisungen nicht in einer SELECT
... ENDSELECT - Schleife bearbeiten, sondern müssen eine Interne Tabelle
verwenden.
Die Felder der Excel-Tabelle sollen dynamisch erst zur laufzeit des
Programmes bestimmt werden.
Das Excel Dokument soll auf dem Rechner des Anwenders gespeichert werden.
Dafür benötigen wir eine Variable die einen Dateinamen beschreiben
kann.
Der nun folgende Befehl löscht die Datei auf dem Rechner des Anwenders,
falls die Datei vorhanden ist. Ich habe den Befehl hier aufgenommen, weil
es mir eine Fehlerbehandlung in Excel erspart. Ich muß nicht mehr
feststellen, ob die Datei schon vorhanden ist und überschrieben werden
soll, oder ob noch garkeine Datei vorhanden ist.
Und jetzt gehts los. Als erstes muß Excel auf dem Rechner des Anwenders gestartet werden.
hierbei erhalte ich ein handle der in der Variablen excel gespeichert wird,
so das ich später auf die Anwendung zugreifen kann.
Für unseren Fall wollen wir sehen was geschied, deshalb lassen
wir alle Aktionen am Bildschirm ausführen. Für eine echte Anwendung
sollte man aus Performance Gründen das Füllen der Tabellen nicht
sichtbar laufen lassen, da die meiste Zeit für das Anzeigen am Bildschirm
benötigt wird.
Bis jetzt haben wir lediglich Excel ohne einen Arbeitsbereich gestartet.
Als nächstes brauchen wir von Excel ein handle für die Verwaltung
der Arbeitsbereiche.
Nach dem wir nun auf den Verwaltungsbereich von Excel zugreifen können,
lassen wir von Excel einen neuen Arbeitsbereich erstellen in dem wir dan
unsere Daten bearbeiten können.
Alles was wir jetz noch brauchen ist die Information, wo nun der
neue Arbeitsbereich ist.
Jetzt holen wir uns die Daten die wir in Excel weiterverarbeiten wollen,
und bearbeiten diese in einer Loop-Schleife
Als erstes ermitteln wir die Zeile in der die Daten Abgelegt werden.
genauso kann natürlich auch die Spalte ermittelt werden. Für
unser Beispiel nehmen wir aber konstant die 3 Spalte der Excel-Tabelle.
Nun muß die Zelle in der wir die Datenablegen wollen bestimmt
werden. Je nach dem ob wir deutsche oder englische *.dll verwenden muß
die Notation entweder Z(eile) und S(palte) oder R(ow) und C(olum) sein.
Ich habe englische *.dll wird meine Zelladresse wie folgt zusammen gesetzt.
Anschließend muß die Zelle in Excel zur aktiven Zelle werden.
Von Excel holen wir uns jetzt die Adresse des Speicherplatz dieser
Zelle
und füllen die Zelle mit dem Inhald des Feld namen der Kopfzeile
unserer internen Tabelle.
Und beenden jetz unsere Schleife.
Etwas umständlicher ist es jetzt Excel feststellen zu lassen wieviele
Einträge jetzt vorhanden sind.
Die nächsten Zeilen dienen wieder zur Auswahl der aktiven Zelle.
Der Wert der jetzt in die Zelle geschrieben wird ist eine Formel die
sich auf einen Bereich bezieht.
Als nächstes speichern wir die Tablle, drucken Sie auf dem Standarddrucker
des Anwenderrechners aus und Beenden Excel.
Zum Schluß müssen wir noch den für die Anwendung reservierten
Speicherplatz freigeben.
|