Andreas Unkelbach
Werbung
Smart Home im Alltag


Sonntag, 27. Mai 2018
15:03 Uhr

SAP BC: Transaport von eCATT Objekten wie Testskript, Testdaten, Testkonfiguration und Systemdatencontainer beim Umzug eines SAP ERP System

Durch ein größeres Projekt beschäftige ich mich derzeit einmal wieder ausführlicher mit Migrationstools in SAP Systemen. Dabei haben wir bisher neben der Legacy System Migration Workbench (LSMW) auch das erweiterte computergestützte Test-Tool (eCATT) über die Transaktion SECATT verwendet.

Dieses Tool bietet die Möglichkeit in mehreren Schritten Transaktionen aufzuzeichnen und diese über eine Variante als Textdatei ins SAP System einzuspielen. Dabei wird eine Aufzeichnung als Testskript angelegt, die Terstdaten als Parameter zu den einzelnen Feldern zugeordnet und über eine Testkonfiguration diese Daten dann entweder lokal oder über einen Systemdatencontainer auf ein Ziel-SAP System abgespielt.

Exkurs Elemente SECATT:

  • Unter TESTSKRIPT wird die eigentliche Aufzeichnung ihres Testfalls angelegt. Das Testskript weist dabei auf, welche Daten Sie später im System anlegen oder ändern wollen.
  • Unter TESTDATEN  wird eine Datei erzeugt, die sie später als Grundlage für ihren Upload verwenden können.
  • Unter TESTKONFIGURATION werden dann Testskript und Testdaten zusammengeführt und der eigentliche Test ausgeführt
  • Der SYSTEMDATENCONTAINER ermöglicht es, dass der eCATT auch auf anderen Systemen die entsprechend verbunden sind, ausgeführt werden kann.

Gerade letzterer Punkt (Systemdatencontainer) ist oftmals ein Grund solche eCATT auf einen Entwicklungssystem zu entwickeln und diese dann im Test/Qualitätssicherung oder später auch Produktivsystem abzuspielen.

Transport von eCATT Objekten in andere Systeme

Durch Veränderungen am Entwicklungssystem stellt sich nun die Frage, wie aus einen bisherigen System die Testfälle transportiert werden können, damit diese auch weiterhin genutzt werden können.

Hier besteht in der Transaktion SECATT über das Menü
  • ECATT Objekt
  • Weitere Funktionen
entweder die Testobjekte herunterzuladen (jeweils für Testkonfiguration, Testskript, Testdaten und ggf. Systemdaten) einzeln und diese später an gleicher Stelle in einen anderen System über Hochladen wieder einzuspielen oder alternativ einen Transportauftrag für diese Objekte zu schreiben.

Das Herunterladen und Hochladen erfolgt über eine XML Datei, so dass hier tatsächlich schnell SECATT auf ein anderes System übertragen werden können.

Lokale Objekte oder Paket

eCATT können entweder als lokale Objekte angelegt werden (dann sind diese im Paket §TEMP zugeordnet) oder aber als zusammengehörende Objekte der ABAP Workbench zu einem Paket zusammengefaßt werden. In diesen Fall sind sie aber auch dem Transportsystem zugeordnet. Damit werden diese vom Entwicklungssystem über einen Transportauftrag ins Qualitätssicherungssystem und ggf. Produktivsystem übertragen.

Sofern solche eCATT herunter- und wieder hochgeladen werden muss entsprechend ebenfalls ein neuer Transportauftrag als Workbenchauftrag angelegt werden.

Allerdings kann dieser auch im Entwicklungssystem als erledigt gesetzt werden. Eine Änderung beim hochladen des Objektes ist leider nicht möglich.

 

Massenpflege von Stammdaten und Datenmigration

Gerade bei der Massenpflege von Stammdaten sind sowohl LSMW als auch eCATT sehr hilfreich auch wenn das Einarbeiten in beide Tools etwas Zeit beansprucht.

LSMW - Dokumentation

Dank FICO-Forum.de gibt es eine schöne Dokumentation der LSMW in Form eines Videos unter "LSMW: Kostenstellenstammsätze auf Basis von Excel anlegen". Ebenso ist aber auch das Buch "SAP Legacy System Migration Workbench (LSMW)" * von Antje Kunz

* Amazon Partnerlink
Als Amazon-Partner verdiene ich an qualifizierten Käufen über Amazon.

 



Sofern nur einzelne Stammdaten geändert werden sollen gibt es auch Möglichkeiten der Massenänderung von Stammdaten durch den Punkt innerhalb der SAP Modul - Komponenten (wie zum Beispiel in der Kostenstellenrechnung die Transaktion KS12N oder für Profit-Center die Transaktion KE55). Dahinter stecken jedoch auch nur eine Parametertransaktion (siehe "Transaktion anlegen (Report, Parameter) bspw. für SAP Query / Unterschied Parameter- oder Reporttransaktion") in der direkt das Objekt BUS0012 bzw. BUS0015  an eine Transaktion MASS übergeben wird. Entsprechend universeller im Einsatz ist hier die Transaktion MASS die auf thinkdoforward im Artikel "SAP MASS – so einfach könntest du das Projekt retten." vorgestellt wird.

Das Thema CATT oder eCATT war für mich damals mit die erste praktische Erfahrung der Massenpflege im SAP System (im Rahmen eines berufspraktischen Semester). Die Aufzeichnungen des Berichtes und die entsprechenden Dokumentationen sind noch immer vorhanden und ich hoffe, dass in absehbare Zeit auch das Thema Dokumentation und Beschreibung eines solchen Migrationstool hier ebenfalls in schriftlicher Form zu finden ist.

Soweit ich das sehe ist das letzte Mal das Thema beim Artikel "Einbuchung statischer Kennzahlen per CATT / Deaktivieren Excelintegration" aktuell gewesen, so dass ich hier bei Gelegenheit sicher noch aktuellere Artikel schreiben werde.

Handbuch zu eCATT

Nun ist ein kurzes Handbuch zur Nutzung von eCATT und LSMW im Artikel "Massenstammdatenpflege mit LSMW oder SECATT dank Transaktionsaufzeichnung - Handbuch erweiterte computergestützte Test-Tool (eCATT) und LSMW" nachgeholt worden.

Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionen und Bestellmöglichkeit zu finden.
Diesen und weitere Texte von Andreas Unkelbach finden Sie auf http://www.andreas-unkelbach.de


Sonntag, 20. Mai 2018
12:37 Uhr

Spuk in Excel erst Geistermappen und nun Geisterfelder in Pivot-Tabellen loswerden

Während der Erstellung eines Finanzberichtes über eine Pivot-Tabelle zu den einzelnen Berichten kam auch ein altbekanntes Problem wieder auf, auf dass ich gleich noch einmal eingehen mag.

Zum Hintergrund der Finanzbericht beruht im wesentlichen auf die Auswertungen und Probleme die ich auch schon in folgenden Artikeln beschrieben habe:

Exkurs: Welche Daten wurden als Grundlage zusammen gestellt?
Auswertungen in Excel: Auswertungen in SAP:


Datenzeile gelöscht in Grundtabelle mit Grunddaten für Pivotauswertung

Im Ergebnis erhalte ich eine Grundtabelle, die ich auch als T_Grunddaten benannt habe und zu der ich eine Pivot-Tabelle angelegt habe. Wie in der folgenden Abbildung zu sehen sind hier für die Kostenstellen A bis Kostenstelle E diverse Werte vorhanden.

Grunddaten Kostenstelle, Budget, Einnahmen, Aufwand, Saldo

Allerdings gehört die Kostenstelle D einen anderen Fachbereich an, so dass in der Pivot-Tabelle hier später nur Kostenstellen A bis C ausgewiesen werden sollen. Wie in der folgenden Abbildung zu sehen ist hier aber auch die Kostenstelle D vorhanden.

Pivottabelle mit Kostenstelle D

Für die einzelnen Fachbereiche lösche ich nun in der Grundtabelle die nicht relevanten Datenzeilen (hier Kostenstelle D) und aktualisiere die Pivottabelle.

Geisterfelder in Filterauswahl

Wenn ich aber über die Zeilenbeschriftung (Kostenstelle) einen Filter setze erscheint hier immer noch die Kostenstelle D obgleich ich den Eintrag in den Grunddaten gelöscht habe, zur Verdeutlichung ist hier in den Grunddaten eine leere Zeile.

Welche in folgender Abbildung als (1) sowohl in den Grunddaten als auch in der Pivot-Tabelle zu sehen ist. Dennoch ist die Kostenstelle D weiterhin als (2) im Wertfilter vorhanden.

Geisterfelder

Martin Weiß (tabellenexperte.de) hat diese Felder treffenderweise im Buch "Excel Pivot-Tabellen für dummies" * als "Geisterfelder" bezeichnet.

Gerade im Controlling sind Pivottabellen weiterhin sehr hilfreich und  weitere Informationen zum Buch sind sowohl in den Buchempfehlungen "Excel Pivot-Tabellen (Excel, Pivot-Tabellen/Charts, Datenmodelle, Dashboard)"  als auch im Artikel "Buchempfehlung »Excel Pivot-Tabellen für dummies« von Martin Weiß ( tabellenexperte.de )" zu finden.

Da ich an der Arbeit selbst immer wieder nach der Ursache für diese Geisterfelder im Buch blättere mag ich die Lösung hier ebenfalls kurz vorstellen, obgleich diese auch schon Lukas Rohr (excelnova.org) im Artikel "Alte Elemente in Pivot Tabelle löschen" erläutert hat.

Über die Eigenschaften der Pivot-Tabelle ist im Register Daten der relevante Punkt zu finden:

Keine Geister in Pivottabelle
Unter den Punkt Elemente behalten, die aus der Datenquelle gelöscht wurden ist die Option "Anzahl der pro Feld beizubehaltenden Elemente" auf KEINE zu setzen und alle Geisterfelder sind verschwunden.

Fazit: es spukt in Excel

Offensichtlich scheinen derzeit wirklich viele Geister in Excel zu stecken, denn neben Geisterfelder haben auch schon Geistermappen ihr Unwesen in meiner Tabellenkalkulation getrieben, wie auch im Artikel "Geistermappen in Excel durch alte Version der persönlichen Markroarbeitsmappe PERSONAL.XLSB und Frohe Ostern" zu sehen war.

Man könnte also tatsächlich sagen "In Excel sind die Geister los" und verwirren mich im Controlling und Berichtswesen.

Hier bin ich sehr dankbar, dass mir manch andere bei der Geisterjagd helfen.

Allerdings bin ich an der Arbeit auch noch auf ein anderes Problem aufmerksam gemacht worden und vielleicht hat hier ja jemand eine Idee:

Knobelaufgabe für Excelanwendende

In einer Grundtabelle für eine Pivottabelle wurden folgende Zeilen als Datenherkunft definiert:

Datengrundlage

Diese Pivottable bezieht sich auf eine Grundtabelle (Zelle A2 bis CG99643). Da dieses doch sehr viele Datensätze sind möchte ich am Anfang einige Zeilen löschen.

Also markiere ich diese Zellen Bspw. Zeile 3 - 180 und möchte diese per "Zeile löschen" entfernen.

Hier erhalte ich dann aber die Fehlermeldung:
Fehlermeldung


"Wir können diese Änderung an den ausgewählten Zellen nicht vornehmen, da sie sich auf eine PivotTabelle auswirken. Wenn Sie Zellen einfügen oder löschen mögen, verschieben Sie die PivotTable, und versuchen Sie es dann erneut."

Vielleicht hat ja jemand hier eine Idee über einen Kommentar oder Mail würde ich mich sehr freuen.

Lösung:
Die Ursache dieser Fehlermeldung war dann tatsächlich überraschend simpel. Etwas verschoben von den Grunddaten war testweise eine Pivot-Tabelle eingefügt worden, so dass die nicht die Pivottabelle auf den einzelnen Blättern gemeint war sondern die Rumpfstruktur auf Höhe der Datengrundlage.... hier muss ich tatsächlich einen Kollegen gratulieren, der die Ursache gefunden hatte :-)

Über eine Rückmeldung als Kommentar oder per Mail (gerne auch per Facebook, Twitter oder Google) freue ich mich.


* Amazon Partnerlink
Als Amazon-Partner verdiene ich an qualifizierten Käufen über Amazon.



Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionen und Bestellmöglichkeit zu finden.
Diesen und weitere Texte von Andreas Unkelbach finden Sie auf http://www.andreas-unkelbach.de


Samstag, 19. Mai 2018
13:36 Uhr

Report Painter Bericht für Obligo auf CO-Objekten mit interaktive Stammdatengruppen

Ausgangslage:
Im Rahmen einer Vereinfachung des Berichtswesen unterscheiden wir zwischen CO Objekten die nur budgetrelevante Kosten und solche die alle Kosten auswerten. Hierzu wurden einige Set Variablen für die Auswertung der budgetrelevnaten und nicht alle Objekte über eigene Gruppen zu Profit-Centern angelegt.

Die Vorgehensweise ist dabei im Artikel "Grundlagen: Set-Variablen im Report Painter / Report Writer am Beispiel Kostenstellengruppe und Innenauftragsgruppe" beschrieben. Jedoch wurden hier statt Kostenstellen- oder Innenauftragsgruppen Setvariablen für Profit-Center angelegt. Als Vorlage ist hier die SetVariable 8A-PCGR verwendet worden (Tabelle GLPCOP, Feldname PRCTR)  wobei hier sowohl als Setvariable ZPCB "Budgetr-Konten L-Profit-Center" als auch ZPCA "Allle Konten L-Profit-Center" angelegt worden sind.

Fehlendes Obligo beim Bericht über Profit-Center (Ausgabe nach CO Objekt Kostenstelle / Innenauftrag

Bei beiden wurden als Eingabefelder auf Selektionsbild sowohl Set- und Werteingabe zugelassen. Im Ergebnis können im Reprort Painter Bericht dann aus der Profit-Center-Rechnung zu diesen Profit-Centern die zugeordneten CO-Objekte wie Kostenstelle und Innenauftrag ausgewertet werden. Der entsprechende Bericht ist im Artikel "Erweiterung Bibliothek 8A2 Ausweis Kostenstelle und Innenauftrag bei Selektion Profit-Center in ReportWriter" vorgestellt worden und um die Auswertung von Investitionen sowie Wertpapiere wie im Artikel "Auswertung Anlagenzugänge als Investitionen im Report Painter mit Ausweis CO Objekte Innenauftrag und Kostenstelle" beschrieben umgesetzt.

Problematisch ist nun aber, dass in der Auswertung von Profit-Center-Belegen keine Obligos ausgewiesen sind. Hier muss die Auswertung dann tatsächlich im CO-OM (Gemeinkostencontrolling) auf Ebene der Kostenstellen und Innenaufträge erfolgen.

Der Artikel "Obligo Verwaltung im SAP Modul CO - Customizing, Standardberichtswesen, Report Writer/Painter und SAP Query" stellt dabei die Behandlung von Obligo im Modul CO ausführlich dar.

Für eine Auswertung der Obligos habe ich in der Biblitothek 6o1 "Innenaufträge" folgenden Bericht angelegt.

Report Painter Bericht ZOBLIGO zur Auswertung von Obligo-Belegen auf CO Objekten

Die einzelnen Elemente haben dabei folgende Eigenschaften:

Allgemeine Selektionskriterien:
Merkmal KostRechKreis (Variable) 6-KOKRS
Merkmal Version 0

Schlüsselspalte
Basiskennzahl Kosten

Kostenart (Gruppe, Set) 1KSTAR
(Alternativ kann auch eine Gruppe der relevanten Kostenarten fix vergeben werden)
Periode 1 bis Variable 1PERIB
Geschäftsjahr (Variable) 1GJAHLH (laufendes Geschäftsjahr)
Werttyp
1 bis 24
2A
2B

1. Zeile Kostenstelle
Merkmal Kostenstelle (Gruppe) BUCH
Dieses ist die oberste Hierarchie der Kostenstellenstandardhierarchie damit alle Kostenstellen ausgewertet werden.

2. Zeile Innenauftrag
Merkmal Auftrag (Set, Variable) 6-AUFGR

Beide Zeilen erhalten über die Schaltfläche Expandieren (UMSCH+F9) die Option EINZELWERT, so dass am Ende nur die Nummer des CO Objekt ausgegeben wird.

Dazu wurde im Berichtslayout FORMATIERUNG->BERICHTSLAYOUT in Register Schlüsselspalte als Inhalt SCHLÜSSEL gewählt.

Beim Aufruf des Berichtes können nun Kostenrechnungskreis, Geschäftsjahr und Bis Periode sowie die Auftragsgruppe angegeben werden.

Interaktive Stammdatengruppe durch Selektionsvariante

Für unseren Finanzbericht sollen die Landesmittel ausgewertet werden. Diese werden über alle Kostenstellen, sowie alle Innenaufträge mit L-Profit-Center abgebildet. Hier könnte nun natürlich immer eine Auftragsgruppe gepflegt werden, aber dieses ist recht aufwändig, so dass hier eine schönere Variante in SAP vorhanden ist.

Beim Feld Auftragsgruppe kann über die Wertauswahlhilfe (F4 Taste) durch Markierung von "Mit Selektionsvarianten" auf angelegte Selektionsvarianten zugegriffen werden. Unter anderen haben wir hier eine Selektionsvariante .Z_FINB-LPCTR angelegt in der alle Innenaufträge mit zugeordneten L-Profit-Center zur Laufzeit als Selektion ausgewählt werden.

Diese Vorgehensweise habe ich im Artikel "Selektionsvariante KOK5 und Statusselektionsschemata zur Auswertung gesperrter Innenaufträge" für gesperrte Innenaufträge beschrieben, was eine Anforderung eines Kollegen einmal war. Dieses funktioniert natürlich auch mit einfacheren Abfragen.

Die Selektionsvarianten können über KS13 für Kostenstellen und KOK5 für Innenaufträge angelegt werden.

Im Buch »Berichtswesen im SAP®-Controlling« bin ich ausführlich auf das Thema Varianten von Berichten zur Vorbelegung von Selektionsfeldern sowie auf die Selektionsvarianten (zum Beispiel über Kostenstellen mit der Transaktion KS13 oder über Innenaufträge in der Transaktion KOK5) eingegangen durch die über vordefinierte Merkmale Stammdaten wie Kostenstellen oder Innenaufträge in Berichte selektiert werden können.
 
Berichtswesen im SAP®-Controlling
Verlag: Espresso Tutorials GmbH
1. Auflage
(01. Juni 2017) Paperback ISBN: 9783960127406

Für 19,95 € direkt bestellen

Oder als SAP Bibliothek-Flatrate *

Oder bei Amazon *

Vielleicht finden sich hier ja auch noch weitere Anregungen für den Aufbau eines Berichtswesen mit SAP nicht nur für CO im Buch. Manchmal können solche Anforderungen ja auch außerhalb des Hochschulberichtswesen und Hochschulcontrolling aktuell sein.

Manchmal können solche "kleinen" Kniffe dann tatsächlich das Berichtswesen oder Controlling, nicht nur an Hochschulen, erweitern.



* Amazon Partnerlink
Als Amazon-Partner verdiene ich an qualifizierten Käufen über Amazon.

Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionen und Bestellmöglichkeit zu finden.
Diesen und weitere Texte von Andreas Unkelbach finden Sie auf http://www.andreas-unkelbach.de


Mittwoch, 9. Mai 2018
17:44 Uhr

SUMMEWENN über mehrere Spalten in Excel oder Personalkostenhochrechnung auf Innenauftrag zusammenfassen

Wie schon am Ende im Artikel "Index und Vergleich statt SVERWEIS endlich verstanden und Suche über Verweis nur, wenn es auch etwas zu finden gibt" angekündigt sind die Verweisfunktionen (SVERWEIS oder auch INDEX,VERGLEICH) eingeschränkt wenn mehr als eine Übereinstimmung übernommen werden soll.

Hier bietet sich dann tatsächlich die Formel SUMMEWENN an.

Anhand des Syntax

=summewenn(BEREICH;SUCHKRITERIEN;SUMMEBEREICH)

hatte ich die Hoffnung, dass als Summenbereich tatsächlich mehr als eine Spalte genommen werden kann und so habe ich meine Hochrechnung als Tabelle formatiert und als Hochrecnung benannt.

Um ein einfaches Beispiel zu haben sieht diese Tabelle wie folgt aus:

Tabelle T_Hochrecnung

Hier sind für einzelne Innenaufträge mehrere Hochrechnungen erfasst. Da es sich dabei aber um eine Hochrechnung von Personalkosten handelt kann ein Innenauftrag auch mehrfach vorkommen. Im Beispiel bekommt hier Andreas sowohl in Zeile 3 als auch Zeile 8 entsprechende Zahlungen. Ziel der Auswertung ist nun die zu erwarteten Kosten für Mai bis Dezember für den Innenauftrag Andreas zu erhalten.

Mein erster Versuch war hier tatsächlich statt SVERWEIS oder INDEX die Formel SUMMEWENN.

=SUMMEWENN(T_Hochrechnung[Innenauftrag];D3;T_Hochrechnung[[Mai]:[Dezember]])

Hier sollte eine Summe über die Spalten Mai bis Dezember für den Eintrag Andreas  beziehungsweise das Suchkriterium in der Zelle D3 erstellt werden.

Das Ergebnis von 10, wie in folgender Abbildung zu sehen war dann aber enttäuschend.

SUMMEWENN Fehler

Offensichtlich kann der Summenbereich nur eine Spalte umfassen.

Zum Glück gibt es aber die Seite excelformeln.de auf der dann eine Lösung für mein Problem zu finden war.

Mal wieder eine Matrixfunktion, die im Beitrag "Nach Suchkriterium suchen und mehrere Spalten summieren (193)" erklärt wird.

In folgender Abbildung ist dann auch tatsächlich der zutreffende Wert von 80 berechnet worden.

Summe als Matrixformel

Wichtig ist dabei, dass die Formel

=SUMME((T_Hochrechnung[Innenauftrag]=D3)*T_Hochrechnung[[Mai]:[Dezember]])

durch die Tastenkombination STRG + SHIFT und ENTER

als Matrixformel gespeichert wird.

Der Trick funktioniert dabei wie folgt:
Im ersten Teil der Summenfunktion wird geprüft ob die Spalte Innenauftrag mit der Zelle D3 übereinstimmt. Ist dieses der Fall ist das Ergebnis 1 (WAHR) sonst 0 (Falsch) dieses wird dann mit den Werten der Spalte Mai bis Dezember multipliziert, so dass hierdurch ein Ergebnis erzielt wird.

Der Nachteil dieser Vorgehensweise ist jedoch, dass man bei Änderung des Berichtszeitraum hier ebenfalls daran denken muss, dass es sich um eine Matrixformel handelt und diese mit der Tastenkombination angepasst werden muss, so dass aus Versehen diese, sofern nicht als Matrixformel abgeschlossen, einen Fehler hervorruft.

Wenn die Formel nicht als Matrixformel abgeschlossen wird ist das Ergebnis #WERT! (Fehler in Wert) und das mag auch niemand.

Fehler in Wert

Nur als Matrixformel erscheint die {} im Formelfeld (ein manuelles Eingeben dieser Klammer hilft leider auch nichts).

Um etwaige Fehler zu vermeiden habe ich mich dazu entschlossen die Tabelle Hochrechnung um eine weitere Spalte zu erweitern:

Berichtszeitraum

Das schöne an "Als Tabelle formatierte" Tabellen ist ja, dass solche Formeln auch automatisch für jede Zeile mit ausgefüllt werden.

Damit habe ich also für jeden Innenauftrag die Formel
=SUMME(T_Hochrechnung[@[Mai]:[Dezember]])

und kann nun mit Summewenn wieder arbeiten, da ich hier ja nur nach einer Spalte suchen muss.

Summewenn mit Bereichsauswahl

Durch die Unterstützung von Excel kann ich sogar direkt die Spalte Berichtszeitraum auswählen und erhalte so die Formel:

=SUMMEWENN(T_Hochrechnung[Innenauftrag];D3;T_Hochrechnung[Berichtszeitraum])

Summewenn mit mehrere Spalten als Ergebnis

Diese Variante ist dann tatsächlich noch etwas einfacher als eine Matrixformel, auch wenn eine solche natürlich etwas cleverer ist.

Insgesamt erleichtert der Umgang mit der Funktion "Als Tabelle formatieren", wie im Artikel ""Als Tabelle formatieren" um eine dynamische Datenquelle für Pivot-Tabellen zu erhalten", an vielen Stellen der Zugang auch zu komplexeren Formeln und Funktionen :-)

Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionen und Bestellmöglichkeit zu finden.
Diesen und weitere Texte von Andreas Unkelbach finden Sie auf http://www.andreas-unkelbach.de


Dienstag, 8. Mai 2018
20:46 Uhr

VBA Fehlermeldung Index außerhalb des gültigen Bereich beim Zugriff auf Tabellenblätter in Excel 2016

Im Rahmen einer Makroarbeitsmappe werden über ein Makro "Ergebnisdateien erzeugen" für die jeweiligen Berichtsempfänger Dateien erstellt und über ein zweites Makro "Ergebnisdateien befüllen" aus einer Hochrechnung Daten gefiltert und in den entstehenden Arbeitsmappen eingefügt.

Mit den Wechsel auf Office 2016 (siehe dazu auch meinen Artikel "Arbeitsrechner neu einrichten Wechsel auf Windos 10, aktuelle Office Version sowie SAP und Excel anpassen") funktioniert zwar noch die Erstellung der Ergebnisdateien aber nicht mehr das Makro "Ergebnisdateien befüllen".

Hier kommt es zum "Laufzeitfehler 9 Index außerhalb des gültigen Bereichs" und das Makro stoppt im Debugmodus bei der Anweisung wbErgebnisdatei.Worksheets(2).Activate . Da das Makro auch noch mit unterschiedlichen Funktionen arbeitet fällt es etwas Schwer hier im VBA-Coding die einzelnen Schritte nachvollziehen zu können insbesondere, da die Lösung doch sehr spezifisch für einen Bericht ist.

Hier zahlt es sich aber aus, dass eine Dokumentation über das Makro und die Berichtsmappen erstellt worden ist und der Satz "Zuletzt wird die Ergebnisdatei formatiert und ihre Registerblätter mit den Werten aus dem Zellbereich beschriftet." brachte dann die Ursache hervor.

Manchmal kann ein Wechsel zu Office 2016 unerwartete Effekte haben. Im Standard ist in den Excel-Optionen (zu finden unter DATEI->OPTIONEN) im Register "Allgemein" im Abschnitt "Beim Erstellen neuer Arbeitsmappen" die Option "So viele Arbeitsblätter einfügen" mit 1 aktiviert.

Bei den vorherigen Excel-Versionen werden immer automatisch drei Tabellenblätter angelegt (Tabelle1, Tabelle2, Tabelle3).

Beim Erstellen eines Finanzberichtes werden automatisch über das Makro "Ergebnisdateien erzeugen" für jeden Berichtsempfänger eine eigene Datei erstellt in der über das zweites Makro die Tabellenblätter umbenannt und mit gefilterten Daten versorgt werden.  

Bei der Datenbefüllung kommt es im Makro nun aber zur oberen Fehlermeldung, da die Blätter "Tabelle2" und "Tabelle3" fehlen und hierauf Bezug genommen wird.

Neben der Möglichkeit über die Optionen wieder drei Tabellenblätter automatisch anzulegen ist eine zweite Option im Makro "Ergebnisdateien erzeugen" die Anweisung zur Anlage von entsprechenden Berichtsdateinamen um die Anweisung

ActiveWorkbook.Sheets.Add Before:=Worksheets(Worksheets.Count)

vor der Anweisung

ActiveWorkbook.Close

hinzuzufügen, so dass weitere Tabellenblätter erstellt werden und im Ergebnis wieder drei Tabellenblätter vorhanden sind.

Danach können die erstellten Ergebnisdateien auch mit entsprechenden gefüllten Daten befüllt werden. Das Makro an sich ist natürlich wesentlich umfangreicher, aber zumindest anhand der Fehlermeldung war dann nachvollziehbar, woher dieser Fehler entstanden ist und weswegen es hier zu Problemen gekommen ist.

Zusammenfassend würde ich das gesamte Problem wohl unter "Kleine Änderung und große Wirkung" beschreiben. Insgesamt sind solche Änderungen aber wohl bei jeder Software, egal ob nun VBA Projekt in Excel oder eine Datenfeldänderung in SAP, ein Problem und zeigt die Notwendigkeit von Pflege und Wartung auch von bisher problemlos laufenden Programmen.
 

Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionen und Bestellmöglichkeit zu finden.
Diesen und weitere Texte von Andreas Unkelbach finden Sie auf http://www.andreas-unkelbach.de


<< Frühere Einträge Spätere Einträge >>



* Amazon Partnerlink
Als Amazon-Partner verdiene ich an qualifizierten Käufen über Amazon.
Hinauf




Werbung


Logo Andreas-Unkelbach.de
© 2004 - 2018 Andreas Unkelbach
Andreas Unkelbach

Stichwortverzeichnis
(Tagcloud)


Aktuelle Infos (Abo)

Facebook Twitter Google+

»Schnelleinstieg ins SAP Controlling (CO)« und »Berichtswesen im SAP ® ERP Controlling«
Privates

Kaffeekasse 📖 Wunschliste