Diese Excel-Funktion sollte jeder SAP-Berater kennen.

Was braucht ein Maler, der vor einer leeren weißen Wand steht und diese streichen will? Was braucht ein Schornsteinfeger, der an einem hohen Schornstein steht und diesen säubern will? Oder was braucht ein Tischler, der vor einem schönen blanken Stück Holz steht und daraus einen eleganten Tisch fertigen will? Alle sind auf ihre Werkzeuge angewiesen, denn was wäre ein Maler ohne Pinsel und Farbe, was ein Schornsteinfeger ohne seine Fallgranate oder was Tischler ohne Hobel? Im Grunde einfach nicht arbeitsfähig. Und was ist für einen SAP-Berater das Tool, ohne dass er nicht auskommt? Wenn ich ein Tool benennen müsste, das für mich besonders wichtig ist, dann wäre dies Excel.

In der täglichen Arbeit stehe ich immer wieder vor Fragen, die basierend auf historischen Daten zu bewerten sind: Wann ist der beste Zeitpunkt, um das System mal durchzustarten? Wie oft halten sich Kunden nicht an Absprachen und bestellen zu spät? Wann wurde eine bestimmte Nachrichtenart zu letzte verwendet und könnte gelöscht werden? Alle diese Fragen kann man mit den Daten aus SAP und Excel sehr schnell und effizient auswerten und beantworten.

Im Folgenden will ich eine spezielle Excel-Funktion vorstellen, die vielfach für die Aufbereitung der Analysedaten unerlässlich ist: SVERWEIS.

1. Zwei Tabellen mit unterschiedlichem Informationsgehalt

Stell dir vor du hast eine Liste mit Auftragsposition vorliegen mit den Informationen:

# Auftragsnummer
# Auftragsposition
# Material
# Liefermenge
# Versandstelle

Da nun basierend auf dieser Liste keine Aussagen zu Kunden getroffen werden kann, liegt parallel eine zweite Liste zum Auftrag vor, die die Kundennummer enthält:

# Auftragsnummer
# Kundennummer

Für die weitere Analyse der Daten ist es aber notwendig, dass diese Tabellen verbunden werden und alle Informationen in einer Tabelle vorliegen. Hierzu wird die Auftragspositionstabelle um die Spalte Kunde erweitert und die korrespondierenden Kunden aus der Tabelle „Auftragskopf“ in die Tabelle „Auftragspositionen“ geschrieben.

Im Grunde ist das verbinden der beiden Tabelle recht einfach und läuft nach folgendem Schema ab: Fangen wir mit der ersten Zeile zur Auftragspositionstabelle an, für die die Kundennummer ermittelt werden soll:

# Als erstes wird die Auftragspositionstabelle um eine weitere Spalte „Kundennummer“ erweitert (1)

# Dann wird aus der ersten Zeile die Auftragsnummer ermittelt (2)

# Mit dieser Auftragsnummer geht man nun in die Auftragskopftabelle und sucht dort nach der entsprechenden Auftragsnummer (3)

# Wenn diese gefunden wurde, wird aus dieser Zeile die Kundennummer (2.Spalte) gelesen (4)

# Diese Kundennummer wird dann die in die Auftragspositionstabelle geschrieben (1)

Diese Schritte sind nun für alle Zeile der Auftragspositionstabelle zu wiederholen, bis in allen Zeilen die Kundennummer enthalten ist – fertig.

Stell dir jetzt vor, die Positionstabelle hat 60.000 Einträge und die Kopftabelle hat 5.000 Einträge. Wenn man nun für das Suchen pro Zeile 10 Sekunden braucht, benötigt man ca. 7 Tage um alle Zeile auszufüllen, d.h. 1 Woche lang Tag und Nacht die Werte zusammensuchen! An dieser Stelle kommt die Excel-Funktion SVERWEIS zum Tragen: Diese Funktion automatisiert genau das Verbinden von 2 Tabellen.

2. Excel SVERWEIS Schritt-für-Schritt erklärt

© 2017 Microsoft – Alle Rechte vorbehalten.

 

# Zunächst den Cursor in den Positionstabelle auf die erste Kundennummer-Zeile positionieren, für die die Kundennummer ermittelt werden (im obereb Bild „F2“)

# In dieser Zelle „=“ eintippen und den Funktionsassistenten für SVERWEIS öffnen

# Den Cursor im Assistenten auf den Feld „Suchkriterium“ setzen und anschließend in der Positionstabelle mit der Maus das erste Feld der Auftragsnummer markieren (Zelle: A2)

## Auftragsnummer soll gesucht werden

# Jetzt im Assistenten den Cursor auf das Feld „Matrix“ setzen

# Mit der Maus in der Auftragskopftabelle die Spalten A und B markieren

## In der Spalte A soll nach der Auftragsnummer gesucht werden

## Die Spalte B soll als Ergebnis zurückgegeben werden

# Im Funktions-Assistenten den Cursor auf das Feld „Spaltenindex“ setzen

## Hier eine „2“ eintippen, da aus der Ergebnis-Matrix die 2. Spalte (das war die Spalte B, in der die Kundennummer stand) als Ergebnis zurückgegeben werden soll

# Jetzt noch den Cursor im Funktions-Assistenten auf das Feld „Bereich_Verweis“ positionieren, eine „0“ eintippen und Enter

Et Voila, Excel hat für die erste Zeile die Kundennummer „K111“ ermittelt. Jetzt kann die Formel aus dieser Zelle kopiert und alle weiteren Zellen in der Spalte „F“ angewandt werden.

Hier noch ein paar hilfreiche Hinweise für die Arbeit mit dem SVERWEIS.

3. Weitere Tipps zum SVERWEIS

A. Suchfeld in 2 Spalten

# Im oberen Beispiel wurde nach der Auftragsnummer gesucht, d.h. dieses Feld war die Verbindung zwischen den beiden Tabellen

# Doch unter Umständen kann es vorkommen, dass diese Verbindung aus 2 Spalten in den jeweiligen Tabellen besteht (bspw. Auftragsnummer und Positionsnummer)

# In diesem Fall muss man in beide Tabellen eine zusätzliche Spalte einfügen und die Werte aus den 2 ursprünglichen Spalten in die neue Spalte verketten; Bsp.:

## 1. Verbindungsspalte A

## 2. Verbindungsspalte B

## Neue Verbindungsspalte C = VERKETTEN(A;B)

# Nun kann man basierend auf den neuen Spalten C, die in beide Tabellen eingefügt wurde, den SVERWEIS durchführen

B. Download-Formate aus SAP lassen in Excel keine Funktion zu

Wenn man aus SAP Daten runterlädt, die man anschließend per SVERWEIS verbinden will, dann lässt das Format der Excel-Tabelle die Verarbeitung von Funktionen nicht zu. Der Effekt ist, dass die Funktion einfach in der Zelle als Text dargestellt wird: „=SVERWEIS(C7;Tabelle2!A:B;1;0)“ Ehrlich gesagt weiß ich nicht warum das passiert, aber ich weiß wie ich mir helfen kann:

# Die betroffene Spalte, in der die Funktion nicht ausgeführt werden kann, im Kopf markieren, d.h. die komplette Spalte über die Spaltenüberschrift „A“ oder „D“ markieren.

# In Excel in den Menübereich „Daten“ wechseln und die Funktion „Texte in Spalten“ aufrufen.

# Anschließend einfach auf den Button „Fertig stellen“ klicken

# Nun wird die Funktion ausgeführt

C. SVERWEIS und Sprachen

Mir ist es mal passiert, dass ich in Brüssel im Projekt war und auf einem französischen Rechner einen SVERWEIS durchführen musste. Dabei habe ich nicht wenig gestaunt, als ich bemerkte, dass SVERWEIS auf Französisch RECHERCHEV heißt. Und aus Englisch wird sie VLOOKUP genannt, auf Türkisch DÜŞEYARA, …

 

*** Es wäre super, wenn du ein kleines Feedback hinterlassen würdest, Isa.

Datenumsetzung bei IDocs: 3 Fallbeispiele, um viel Zeit und Entwicklungskapazität zu sparen.

Es muss ungefähr zu Beginn der 2000er Jahre gewesen sein – es war einer meiner ersten Projekte, bei dem wir in einem Energiekonzern im Ruhrgebiet SAP R/3 einführten. In der Summe waren, soweit ich mich erinnere, über 200 Berater unterwegs, um die Prozesse aufzunehmen, die Entwicklungen voranzutreiben und das System zu customizen. Meine Aufgabe bestand darin die Prozesse der Mengendisposition (Schnittstelle zwischen Verkauf und Bestandsführung) aufzunehmen und hierfür die zukünftigen Prozesse zu modellieren. Wie in jedem Projekt üblich, waren auch damals die Customizingmöglichkeiten des Systems vermeintlich nicht ausreichend, so dass ein recht großes Entwicklungsteam bereit stand, das tagtäglich mit neuen Entwicklungsanträgen (EA) „beglückt“ wurde.

Eines Tages berichtete mir eine Kollege auf eine spöttische Art: „Hast du von dem neuen EA gehört?“ Ich hatte von nichts ungewöhnlichem gehört und verneinte seine Frage. Daraufhin erzählte er mir: „Bei den Entwicklern ist eine EA eingegangen, bei dem die User die Hinweis- und Warnmeldung im SAP-GUI als Pop-Up dargestellt haben wollen“, und lachte dabei mit einer gewissen Schadenfreude. Er wusste es und auch mir war es bekannt, dass diese Meldungen damals schon mit einer Einstellung im SAP-GUI als Pop-Up-Meldung darstellbar sind, d.h. die Mühe für den EA war an dieser Stelle völlig obsolet.

Über die Jahre habe ich vielfach Entwicklungen gesehen, deren Sinn ich nicht verstand. Wenn ich nachfragte, warum hier nicht die Standardmöglichkeiten genutzt wurden, war die gängige Antwort: Das ist historisch gewachsen – wie dem auch sei. Meine Erfahrung ist, dass man im Sinne des Kunden 1-mal, 2-mal und am besten noch weitere Male hinterfragen sollte, ob eine Entwicklung tatsächlich nötig ist.

Ein super Tool, womit man sich einige Entwicklungen im IDoc-Umfeld sparen kann, ist „Datenumsetzung zwischen Sender und Empfänger“. Mit dieser Funktion können IDoc-Inhalte ohne Entwicklung manipuliert werden. Im folgende stelle ich 3 Beispiele vor, wie dieses Tool eingesetzt werden kann.

0. Grundlagen – Datenumsetzung zwischen Sender und Empfänger

Die Anlage von Umsetzregeln für die Anpassung von IDoc-Daten verläuft im Prinzip immer nach den folgenden 3 Schritten:

 

 

1. BD62 – Regel anlegen

In diesem Schritt wird mittels der Transaktion BD62 eine Regel angelegt, die Bedeutung der Regel angegeben und das Segment der Regel zugeordnet, deren Daten anzupassen sind – im Screenshot ist es das Segment E1BPDLVHDUNHDR.

© 2017 SAP SE. Alle Rechte vorbehalten

 

2. BD79 – Regel pflegen

In diesem Schritt (Transaktion BD79) spielt die Musik: Hier wird die Regel konkretisiert, d.h. hier wird eingestellt, was die Regel genau bewirken soll.

© 2017 SAP SE. Alle Rechte vorbehalten

 

3. BD55 – Regel einem Nachrichtentyp zuordnen

Im letzten Schritt muss die Regel noch einem Nachrichtentyp und einer Sender-Empfänger-Kombination zugeordnet werden:

© 2017 SAP SE. Alle Rechte vorbehalten

 

Im Folgenden will ich 3 beispielhafte Anwendungsfälle für Umsetzregeln vorstellen. Alle Bespiele basieren auf dem Szenario, dass das ERP an ein externes LVS angebunden ist. Dabei sollen in allen 3 Beispielen Daten im IDoc SHP_OBDLV_CONFIRM_DECENTRAL02 angepasst werden. Mit diesem IDoc erfolgt vom LVS-System die Kommissionierrückmeldung der Lieferung im ERP System, d.h. der Sender ist das LVS und der Empfänger ist das ERP-System.

 

# Im ersten Beispiel soll in das Feld TIMEZONE im Segmente E1BPDLVDEADLN die Konstante CET gesetzt werden

## Hintergrund: Das LVS sendet das Lieferdatum und die Uhrzeit in UTC; durch die Konstanten soll die Uhrzeit auf CET konvertiert werden

# Im zweiten Fall soll in das Feld SHIP_MAT im Segment E1BPDLVHDUNHDR der Wert 2525 gesetzt werden, wenn dieses PA enthält

## Hintergrund: Das LVS kennt die Materialnummern für die Packmittel nicht und sendet 2-stellige Kürzel. Diese sollen auf die ERP-Packmittelnummern konvertiert werden

# Im letzten Fall soll in das Feld TIMESTAMP_UTC im Segmente E1BPDLVDEADLN das aktuelle Tagesdatum gesetzt werden, wenn das Feld TIMETYPE = WSHDRLFDAT ist.

## Hintergrund: Das vom LVS ermittelte Lieferdatum ist vielfach nicht richtig, dadurch soll das Lieferdatum immer auf das Tagesdatum gesetzt werden.

Wie oben schon erwähnt, spielt die Musik beim Thema Umsetzregeln bei der Pflege der Regeln – BD79. Daher konzentriere ich mich bei der Vorstellung der Regeln auf diesen Punkt.

1. Konstante setzen – TIMEZONE = CET

# Transaktion BD62 aufrufen und neue Regel anlegen:

## Umsetzregel: ZZ_CONF_TERM
## Bedeutung: CET als Konstante
## IDoc-Segmentname: E1BPDLVDEADLN

# Transaktion BD79 aufrufen, Regel „ZZ_CONF_TERM“ vorgeben und links oben auf „Stift“ klicken

# In nächsten Screen auf das Feld „TIMEZONE“ doppelklicken

# In linken Bereich den Regeltyp „Konstante setzen“ auswählen und recht im Feld Konstante „CET“ eintragen und speichern

# Transaktion BD55 aufrufen und Nachrichtentyp „SHP_OBDLV_CONFIRM_DECENTRAL“ vorgeben

# Links oben auf den Button „Neue Einträge“ klicken und folgenden neuen Eintrag erfassen:

## Sender: LVS-System
## Empfänger: ERP-System
## Segmenttyp: E1BPDLVDEADLN
## Umsetzregel: ZZ_CONF_TERM

# Speichern

Ab jetzt ist die Regel aktiv: Damit wird das Feld TIMEZONE im Segment E1BPDLVDEADLN für den Nachrichtentyp SHP_OBDLV_CONFIRM_DECENTRAL immer mit der Konstante CET gefüllt.

2. Wert abhängig ersetzen – Wenn SHIP_MAT=PA, dann SHIP_MAT=2525 setzen

# Transaktion BD62 aufrufen und neue Regel anlegen:

## Umsetzregel: ZZ_HU_MAT
## Bedeutung: Packmittel umschlüsseln
## IDoc-Segemtname: E1BPDLVHDUNHDR

# Transaktion BD79 aufrufen, Regel „ZZ_HU_MAT“ vorgeben und links oben auf „Stift“ klicken

# Im nächsten Screen auf das Feld „SHIP_MAT“ doppelklicken

# Im linken Bereich den Regeltyp „Senderfeld umschlüsseln“ auswählen und recht im Feld Senderfeld „SHIP_MAT“ eintragen und auf den Button „Bedingungen“ klicken

# In diesen Screen in die Spalte „Wert Empfängerfeld“ „2525“ und in die Spalte „Packmittel“ „PA“ eintragen

# Ein Schritt zurück und Regel sichern

# Abschließend die Regel per Transaktion BD55 einem Nachrichtentyp und Sender-Empfänger-Kombination zuordnen

Ab jetzt ist die Regel aktiv – damit wird in das Feld „SHIP_MAT“ „2525“ eingetragen, wenn vom LVS in diesem Feld „PA“ übermittelt wird.

3. Tagesdatum setzen – TIMESTAMP_UTC = Tagesdatum

# Transaktion BD62 aufrufen und neue Regel anlegen:

## Umsetzregel: ZZ_LIEF_DAT
## Bedeutung: Lieferdatum gleich Tagesdatum
## IDoc-Segemtname: E1BPDLVDEADLN

# Transaktion BD79 aufrufen, Regel „ZZ_LIEF_DAT“ vorgeben und links oben auf „Stift“ klicken

# Im nächsten Screen auf das Feld „TIMESTAMP_UTC“ doppelklicken

# Im linken Bereich den Regeltyp „Senderfeld übernehmen“ auswählen

# Im rechten Feld Senderfeld „TIMESTAMP_UTC“ eintragen und im Feld „Spez. Konvertierungsroutine“ „DATAB“ eintragen

# Im mittleren Bereich des Screens (Bedingungen) im Feld „Senderfeld“ „TIMETYPE“ eingeben und auf den Button „Bedingungen“ klicken

# In den Details der Bedingung in der Spalte „Log. Zeitp.“ den Wert „WSHDRLFDAT“ eintragen

# Ein Schritt zurück und Regel sichern

# Abschließend die Regel per Transaktion BD55 einem Nachrichtentyp und Sender-Empfänger-Kombination zuordnen

Nun werden in das Feld TIMESTAMP_UTC das aktuelle Tagesdatum eingetragen, wenn im Feld „TIMETYPE“ der Wert „WSHDRLFDAT“ enthalten ist.

 

*** Es wäre super, wenn du ein kleines Feedback hinterlassen würdest, Isa.