Sonntag, 18. November 2012

ALV - Excel Inplace/ Kundeneigenes Excel-Template/ eigene Pivottabelle II

Im ersten Teil wurde gezeigt, wie man eigene Excel-Templates erstellen und im System verfügbar machen kann. Doch was genau kann man mit diesen Templates alles tun?
Um diese Frage beantworten zu können empfiehlt sich ein genauer Blick auf das Template, das eine Kopie von sap_mm.xls ist.

Es stehen folgende Arbeitsblätter standardmäßig zur Verfügung:


- Format: "1:1"-Abbildung der Daten,  Summen- und Zwischensummenzeilen mit Interaktionsmöglichkeit (Auf- und Zuklappen), Keyeinfärbungen, etc.
- Header: wie Format plus Umsetzung eines existierenden HTML-Headers vom ALV Fullscreen. Allerdings muss dieser von der Anwendung nach bestimmten Regeln erstellt worden sein
- Pivot: Darstellung der Daten im Pivotformat
- SubN: Summenzeilen der Stufe N
- Rawdata: reine Tabellenanzeige der Daten aus dem Tabellenkörper
- RawHeader: Zeilen des HTML-Headers

Zusätzlich gibt es schon zwei vordefinierte Makros:



Das Makro ALV_CUS_EXIT ist für Kundenanpassungen vorgesehen und wird nach den Standardformatierungen automatisch aufgerufen. Im Originalzustand hat es folgenden Inhalt:



Dieser Code legt den benutzten Datenbereich im Sheet "RawData" als Datenbereich für alle Diagramm-Objekte in der Datei fest. Das gibt uns auch schon einen Hinweis darauf, welche Daten verwendet werden sollten als Basis für neue Objekte - die Daten im Arbeitsblatt "RawData".

In unserem Beispiel soll jetzt eine neue Pivottabelle in einem neuen Arbeitsblatt angelegt werden. Hierzu wird zunächst unserer Beispieldatei CUS_template.xls (Kopie von sap_mm.xls) ein neues Arbeitsblatt "Auswertung" hinzugefügt.



Das Anlegen der Pivottabelle sowie das Auswählen der Spalten und Zeilen erledigt das Makro. Hierzu sind einige Vorarbeiten zu erledigen:
Innerhalb der Unterroutine (sub) müssen zunächst Objekte deklariert werden für die Pivottabelle.
Das ist einmal die Tabelle selbst, die Felder und der temporäre Datenspeicher für die Pivottabelle, der Cache.



Dann empfiehlt es sich, einem Fehlerabbruch vorzubeugen und das Datenobjekt Pivottabelle "ZPT"- so wollen wir es nennen - zu initialisieren. Das wird durch folgendes Coding erreicht:



Dann wird der Cache definiert und die Pivottabelle angelegt:



Damit haben wir unser Ziel fast schon erreicht. Nun muss nur noch definiert werden welche Felder Zeilen und welche Spalten darstellen. Das hängt natürlich davon ab wie die Felder heißen. Als Beispiel soll hier eine Query benutzt werden, die die Felder Personalnummer, Vorname, Nachname, Lohnart und Betrag enthält. Die ersten drei Felder sollen dabei die Zeile markieren, das Feld Lohnart die Spalte und die Zelle sollte der Betrag sein. So sieht das aus mit der Standard Excel-Ausgabe im ALV:



Das wollen wir jetzt für unsere Pivottabelle verwenden und das bedeutet für das Coding:


Das Zeilen-/ Spaltenformatierung erfolgt in einer Schleife "With" und die Formatierungen sind Row, Column und Data.

Somit wären wir am Ende angelangt. Wenn alles funktioniert dann sieht das Ergebnis so aus:



Das Beispiel läßt sich noch beliebig verfeinern, formatieren etc. Um herauszufinden welche Befehle dazu verwendet werden können empfiehlt sich die Verwendung des Makrorekorders in Excel. Dieser zeichnet die Aktionen und setzt sie in VB um, allerdings muss die Schleifenverarbeitung selbst ergänzt werden um es im automatisierten Template verwenden zu können.

Weitere Informationen zu Excel und VBA: Microsoft Developer Network.

Hier können Sie sich den Code zum Beispiel und die Datei CUS_Template.xls herunterladen - Verwendung wie immer auf eigene Gefahr. 

Keine Kommentare:

Kommentar veröffentlichen