09:40 Uhr
Office Integration - Excelansicht in SAP und Daten kopieren nach Excel
Einige dieser Probleme (und deren Lösung) möchte ich anhand von typischen exportierten Berichten erläutern.
- Fehlerhafte Farbinformationen
- Zahlen sind als Text formatiert
- Negative Zahlen werden mit hinten angestellten Negativzeichen dargestellt
- Anzahl an Zeilen oder Spalten einfügen
Ferner ist im Artikel "Grundlagen - Berichte von SAP nach Excel exportieren" der Weg von SAP nach Excel für Report Writer/Painter Berichte, Rechercheberichte und auch ALV Listen (bspw. für SAP Query) erläutert.
Fehlerhafte Farben beim Kopieren
Werden bei aktivierter Office-Integration Daten aus der in SAP dargestellten Excelmappe in eine andere Excelmappe kopiert werden hier die Hintergrundfarben der Datenzellen abweichend von der Ansicht in SAP dargestellt.
© SAP SE. Alle Rechte vorbehalten
Im Beispiel werden die blau hinterlegten Datenzeilen bei der Kopie in Lila (Schlüsselspalte) und Rot (Daten) anstatt in den Blautönen dargestellt. Die Summenzeilen werden nicht in Gelb sondern Grün dargestellt und die Berichtsinformationen sind in schwarzer Schrift auf schwarzen Hintergrund gehalten.
Ursache hierfür ist, dass in der generierten Excel-Mappe der Office-Integration die Farbpalette von Excel an die Farben des SAP GUI angepasst werden.
Dieses hat den Nachteil, dass beim Kopieren in eine "normale" Excelmappe diese Farbinformationen nicht mehr stimmen.
Um nun dennoch diese Daten ordentlich weiter bearbeiten zu können gibt es zwei Möglichkeiten:
1. Daten als Text über Inhalte einfügen kopieren
Excel bietet über die rechte Maustaste die Option Inhalte einfügen:
Sind aus der integrierten Excelmappe die Daten kopiert können diese hier als Text eingefügt werden. Hierzu ist die Option Einfügen Werte zu wählen.
Hierdurch werden die Daten als reiner Text in die neue Excelmappe eingefügt.
2. Als OpenDocument-Spreadsheet (*.ods) speichern
Eine zweite Möglichkeit, unter Beibehaltung der Formatierung, ist es die Daten über die Speichernfunktion in ein Format zu speichern in dem die Anpassung der Farbpalette nicht mitgespeichert wird.
Hierzu wird die Funktion
- Speichern unter
- Andere Formate
Die so gespeicherte *.ods Datei kann wiederum in Excel geöffnet werden und von dort als "normale" Exceldatei gespeichert werden, ohne dass hier die Farbpalette angepasst ist.
Diese Methode hat gleichzeitig den Vorteil, dass die Standardfarben (blau/gelb etc.) von SAP auch in der Tabelle erhalten bleibt. Sofern die ODS Datei dann in Excel geöffnet wird kann diese wieder als XLS gespeichert werden, so dass hier die zugewiesenen Farben von SAP erhalten bleiben, ohne dass künftig Probleme beim Kopieren der Werte entstehen.
Zahlen als Text in Zahlen umwandeln
Ein weiteres Problem können Zahlen (bspw. aus Stammdatenlisten) sein, die als Text formatiert sind. Auch wenn die Zahl als Zahl formatiert wurde (über die rechte Maustaste und "Zellen formatieren" oder die Symbolleiste Start in der Gruppe Zahl) weist Excel dennoch auf den Fehler hin, dass es sich hier um eine Zahl handelt, die als Text formatiert ist. Nun kann entweder aus den Kontextmenü der Hinweismeldung die "Textzahl" in eine richtige Zahl verwandelt werden:
Alternativ bieten sich auch hier zwei andere Alternativen an:
1. Multiplikation mit 1
Die Textzahlen können durch Multiplikation mit 1 in eine echte Zahl umgewandelt werden.
Hierzu ist in eine andere Zelle eine 1 einzutragen (und zu kopieren). Nun können die Textzahlen markiert werden und über "Inhalte einfügen" die Funktion "Multiplizieren" gewählt werden. Hierdurch werden die Textzahlen mit der 1 aus der Zwischenablage multipliziert und damit auch in eine Zahl umgewandelt.
Dadurch sind diese auch als Zahl markiert und können bspw. per SVERWEIS in einer anderen Tabelle verwendet werden.
2. Makro
Sofern häufiger Daten kopiert werden und diese in Zahlen umgewandelt werden müssen bietet es sich an, hierfür ein entsprechendes Makro zu verwenden.
Dieses sollte wie im Artikel Excel Umgang mit Makros und Visual Basic for Applications (VBA) in die Persönliche Makroarbeitsmappe gespeichert werden, so dass diese innerhalb aller Excelmappen zur Verfügung steht.
Folgender Makrocode kann hierbei helfen:
Hier können die "Textzahlen" markiert werden und durch Aufruf des Makros werden die Textzahlen als Zahlen ohne Dezimalstellen formatiert, was sich gerade für Stammdatenlisten (Innenaufträge oder Kostenstellen) anbietet. Das Makro formatiert die Werte als Nummern und weist den Wert erneut den Wert zu, womit der Wert erneut eingetragen wird.Sub SAP_Markierung_Text_in_Zahl()
'
' SAP_Markierung_Text_in_Zahl Makro
' Wandelt aus Markierung als Text formatierte Zahlen in Zahl um
'
'
For Each Wert In Selection
Selection.NumberFormat = "0"
Wert.Value = Wert.Value
Next Wert
End Sub
3. Nutzen der Funktion "Text in Spalten"
Eine weitere Alternative wurde mir per Kommentar empfohlen. Hierzu können die fraglichen Zahlen markiert werden und die Funktion "Text in Spalten" (zu finden innerhalb des Ribbon "Daten" in der Befehlsgruppe "Datentools" ) starten. Eigentlich ist diese Funktion dafür gedacht den Inhalt einer Zelle auf mehrere Zellen aufzuteilen um beispielsweise die Angabe von Kostenstelle und Kostenstellenbezeichnung über Trennzeichen oder feste Breite direkt aufzuteilen. Sofern hier direkt auf "Fertig stellen" geklickt wird, sollen ebenfalls die Daten in Zahlen umgewandelt werden.
Negativzeichen hinter Zahlenwert
Negative Werte werden in SAP beim Export nach Excel als Text formatiert und das Negativzeichen rechts vom Wert dargestellt.
Um nun mit diesen Zahlen (Beispielsweise 19,78-) zu rechnen ist es erforderlich das Negativzeichen vor der Zahl zu setzen.
Auch hier bieten sich zwei Möglichkeiten an:
1. Auslesen der Zahl ohne nachgestelltes - und Multiplikation mit -1
Hierzu kann die Zahl ohne nachgestelltes Negativzeichen genommen werden und mit -1 multipliziert werden. Dieses ist dann in einer Extraspalte erforderlich.
Befindet sich der Wert 19,78- in der Zelle A2 könnte die Formel wie folgt lauten
=LINKS(A2;LÄNGE(A2)-1)*-1
Dieses hat jedoch den Nachteil, dass hier auch positive Zahlen entsprechend verrechnet werden.
Optimiert wäre dieses in Kombination mit einer Wenn Funktion wie zum Beispiel
=WENN(UND(RECHTS(A2;1)="-";ISTZAHL(LINKS(A2;LÄNGE(A2)-1)*1));LINKS(A2;LÄNGE(A2)-1)*-1;A2)
Nun wird nur mit -1 multipliziert, wenn das rechte Zeichen tatsächlich ein "-" ist, sofern es sich dabei um eine Zahl handelt.
Dieses ist verständlicherweise auch ziemlich aufwändig.
2. Makrolösung
Auch hier bietet sich ein Makro an, welches aus den ausgewählten Werten wiederum
Sub SAP_Export_Buchhaltung()
'
' SAP_Export_Buchhaltung Makro
' Wandelt Markierte Werte aus SAP in Buchhaltungszahlen um Minuszeichen wird vorran gestellt
'
'
AnzahlWerte = Cells(Rows.Count, Selection.Column).End(xlUp).Row
For Each Wert In Selection
If Wert.Row > AnzahlWerte Then Exit For
If Right(Wert.Value, 1) = "-" And IsNumeric(Wert) _
Then Wert.Value = Left(Wert, Len(Wert) - 1) * (-1)
Next
Selection.Style = "Comma"
End Sub
Dieses Makro wandelt die markierten Werte mit vor ran gestellten Negativzeichen um und wird nur auf Werte angewendet wenn es sich um Zahlen handelt, so dass bspw. "Text-" bestehen bleibt. Ferner werden alle Werte im Format Buchhaltung mit Tausenderkennzeichen und ohne Währungszeichen formatiert.
Neben dieser Lösung in Excel besteht aber, zumindest für Berichte im Controlling auch die Möglichkeit, dass Standardlayout in SAP so umzustellen, dass auch hier schon die Daten mit vorrangestellten Vorzeichen ausgegeben werden. Dieses ist im Artikel "Darstellung negatives Vorzeichen in SAP - Standardlayout anpassen für vorrangestelltes Vorzeichen" näher erläutert.
Zeilen oder Spalten einfügen
Um die Liste von nützlichen Makros zu erweitern bieten sich auch noch zwei weitere Makros an, die eine bestimmte Zahl an Zeilen oder Spalten in die Excelmappe einfügen. Dieses kann ggf. schneller sein, als einen Bereich an Zeilen zu markieren und per rechter Maustaste die Funktion "Zeile einfügen" aufzurufen.
Makro zum Einfügen von Zeilen:
Makro zum Einfügen von Spalten:Sub Excel_Zeilen_einfügen()
anzahlzeilen = InputBox("Anzahl einzufügender Zeilen")
For i = 1 To anzahlzeilen
Selection.Insert Shift:=xlDown
Next i
End Sub
Insgesamt erleichtern solche Makros definitv die tägliche Arbeit. Ergänzend würde ich auch noch gerade für größere Tabellen, das im Artikel Inhaltsverzeichnis in Excel über vorhandene Tabellenblätter in die persönliche Makroarbeitsmappe übernehmen.Sub Excel_Spalten_einfügen()
anzahlspalten = InputBox("Anzahl einzufügender Spalten")
For i = 1 To anzahlspalten
Selection.Insert Shift:=xlToRight
Next i
End Sub
ein Angebot von Espresso Tutorials
unkelbach.link/et.books/
unkelbach.link/et.reportpainter/
unkelbach.link/et.migrationscockpit/
Diesen Artikel zitieren:
Unkelbach, Andreas: »Office Integration - Excelansicht in SAP und Daten kopieren nach Excel« in Andreas Unkelbach Blog (ISSN: 2701-6242) vom 15.2.2014, Online-Publikation: https://www.andreas-unkelbach.de/blog/?go=show&id=503 (Abgerufen am 23.11.2024)
9 Kommentare - Permalink - Office
Artikel datenschutzfreundlich teilen
🌎 Facebook 🌎 Twitter 🌎 LinkedIn