ABAP Vergleichsoperatoren – mächtiger geht’s kaum.

Vor einiger Zeit hatte ich eine Reihe von Debuggertipps vorgestellt, um verschiedene Aspekte des Debugging nutzen zu können:

# 14 Evergreen ABAP-Debugger Tipps – heb‘ dich von der Masse ab.

 

Doch beim Debuggen ist essentiell, dass man die ABAP-Syntax versteht, d.h. wenn man nicht weiß, was IF oder SELECT oder CASE/WHEN bedeutet, dann ist man beim Debuggen aufgeschmissen. Innerhalb von ABAP sind Stringvergleichsoperatoren sehr mächtige Befehle, die man kennen sollte, um effektiv zu debuggen. Im folgenden die Liste der Vergleichsoperatoren:

 

CO – Contains Only / Enthält nur …

# IF A CO B – dieser Vergleich ist wahr, wenn A nur Zeichen enthält, die auch in B vorkommen.

 

CN – Contains Not only / Enthält nicht nur …

# IF A CN B – dieser Vergleich ist wahr, wenn der identische Vergleich mit CO falsch wäre: IF NOT (A CA B).

 

CA – Contains Any / Enthält mindestens ein Zeichnen

# IF A CA B – dieser Vergleich ist wahr, wenn A mindestens ein Zeichen aus B enthält

 

NA – Contains Not Any / enthält kein

## IF A NA B – dieser Vergleich ist wahr, wenn A kein Zeichen aus B enthält.

 

CS – Contains String / enthält Zeichenkette

# IF A CS B – dieser Vergleich ist wahr, wenn A die Zeichenkette B enthält.

 

NS – contains No String / enthält Zeichenkette nicht

# IF A NS B – dieser Vergleich ist wahr, wenn A die Zeichenkette nicht enthält.

 

CP – Contains Pattern / passt auf Muster

# IF A CP B – dieser Vergleich ist wahr, wenn A auf das Muster B passt.

# Beim Muster B können folgenden Maskenzeichen verwendet werden:

## *: Beliebige Zeichenkette

## +: Beliebiges Zeichen

 

NP – Contains no pattern / passt nicht auf Muster

# IF A NP B – dieser Vergleich ist wahr, wenn A nicht auf das Muster B passt

# Beim Muster B können folgenden Maskenzeichen verwendet werden:

## *: Beliebige Zeichenkette

## +: Beliebiges Zeichen

 

cu, Isa.

 

 

SAP-Customizing mit einem einzigen Icon entzaubert.

Letzten Sommer hatte ich hier vorgestellt, wie man per Transaktion SM30 einfach ermitteln kann, wo eine bestimmt Tabelle gecustomized wird:

# Wo wird die Tabelle im Customizing eingestellt – ein kleiner Trick hilft dir weiter.

Vor ein paar Tagen bin ich bei der Recherche nach neuen Features des SAP-GUI 7.60 auf folgendes kleine Icon gestoßen: Hiermit kann effektiv und sehr zielgerichtet ermitteln, wo für einzelne Felder gecustomized werden.

# Beispiel: Wo wird die Auftragsart des SD-Kundenauftrag gecustomized

#1 Ruf die Transaktion VA01.

#2 Klicke ein das Feld Auftragsart.

#3 Rufe anschließend die Hilfe (F1) auf.

#4 Jetzt auf den Zauber-Button „Customizing“ klicken.

#5 Im folgenden Pop-Up-Fenster auf den Button „Ohne Projektangabe weiter„.

 

 

Et voilà … nun erhälst du eine Liste der Customizing-Punkt, in denen die Auftragsart vorkommt – hier einfach auf eine Zeile doppelklicken, um an die jeweilige Stelle ins Customizing zu springen:

 

cu, Isa.

 

P.S.: Natürlich steht dieses Button nur zur Verfügung, wenn es sich Customizing-relevantes handelt.

 

SAP Datenbankview – mach dir das Leben nicht schwerer als nötig.

Vor ein paar Wochen hatte ich hier vorgestellt, wie man Datenbankviews sinnvoll einsetzen und somit viele Analyse per SE16N sehr effektiv durchführen kann:

# SQVI, SQ01 kannst du bei Seite legen – es geht viel einfacher.

In diesem Beitrag hatte ich eine handvoll Datenbankviews vorgestellt, die ich in meiner täglich Arbeit oft einsetze (bspw. VBAKUK). Doch natürlich bietet SAP vielmehr Datenbankviews: In der aktuellsten ERP-Version sage und schreibe über 12.000! Im folgende kurz dargestellt, wie weitere SAP-Datenbankview ermittelt werden können:

 

Zusammenhänge und Hintergründe zu SAP-Datenbankviews

Datenbankviews und deren Zusammenhänge sind in folgenden Tabellen abgelegt, die man per SE16N analysieren kann:

# DD02L – SAP-Tabellen

# DD28S – Zeilen einer Selektionsbedingung

# DD27S – Felder eines Aggregats (View, MC-Objekt, Sperrobjekt)

 

Mit der Tabelle DD02L kann man alle Datenbankviews ermitteln, die im SAP vorhanden sind; dabei muss man die Daten der DD02L wie folgt selektieren, um die Datenbankviews zu ermitteln:

#1 Tabellenart (TABCLASS) = VIEW

#2 Viewtyp (VIEWCLASS) = D

 

In der Tabelle DD28S ist abgelegt, welche Tabellen (und wie) gejoined wurden, um den View aufzubauen:

# Feld „Identifikation einer Selektionsbedingung“ (CONDNAME): Name des Datenbankviews.

# Feld „Tabellenname“ (TABNAME): Tabellen, die View benutzt wurden:

 

In der Tabelle DD27S sind neben den Tabellen die Felder enthalten, die im Datenbankview dargestellt werden, enthalten:

 

cu, Isa.

Welches SAP EHP haben wir eigentlich?

Vor allem in der SAP-Sachbüchern (die Schinken mit mindestens 1000 Seiten) oder auf der SAP-Onlinehilfe oder in SAP-Notes liest man immer wieder die Aussage: „Diese SAP-Funktion ist verfügbar ab EHPx.“ Über die Jahre habe ich mich immer wieder gefragt: „… und welches EHP nutzen wir eigentlich?“ Bis ich mir irgendwann die Mühe gemacht habe mal nachzulesen, wie man die EHP-Version des aktuellen Systems ermittelt:

 

1. Systemstatus über SAP-GUI öffnen

 

# Über das Menü des SAP-GUI die Statusinformationen öffnen

## Menüleiste -> System -> Status …

 

2. Details zu Systemdaten öffnen

# Über das Lupe-Icon im Bereich „SAP-Systemdaten“:

## Details zur Produktversion öffnen

 

3. Unter dem Reiter „Installierte Produktversion“ EHP-Version nachschauen

# Im folgenden Fenster auf den Reiter „Installierte Produktversionen“ wechseln

## Hier einfach die EHP-Version nachschauen – hier EHP8

 

cu, Isa.

SAP-IDoc-Qualifier – mühelos die Qualifier-Bedeutung ermitteln.

Innerhalb von SAP-IDocs sind Qualifier eine sinnvolle und effektive Methode Komplexität von Datenstrukturen zu reduzieren. Mit Qualifiern wird festgelegt, welche Bedeutung ein Wert innerhalb eines Feldes hat; hierzu folgendes kleine Beispiel:

# In der Variable A wird ein Datum gespeichert

# Zur Variable A gehört sein Attribut A1

# Wenn A1=001 ist, dann enthält die Variable A das Beginndatum

# Wenn aber A2=002 ist, dann enthält die Variable A das Endedatum

 

Ein konkretes Beispiel für Qualifier in IDocs:

# IDoc-Typ: SHPMNT

# Segment mit Qualifier: E1EDT10

 

Im Segment E1EDT10 können geplante und tatsächliche Anfangs-/Enddaten und Uhrzeit von Transportstatus per IDoc übermittelt werden. Was nun konkret der Qualifier 001 bedeutet kann man einfach ermitteln, in dem man links auf das kleine Blatt neben dem Segment E1EDT10 doppelklickt; hier bedeutet der Qualifier 001 der Termin für die Transportdisposition (Planung)

 

Jetzt gibt es für das Segment E1EDT10 neben dem Qualiifer 001 natürlich auch weitere Qualifier 002, 003, 004, etc. Wenn du nun ermitteln willst welche Qualifier für dieses Segment vorgesehen sind, und was sie bedeuten, kannst du dies mit diesen 2 Ansätzen ermitteln:

 

1. IDoc-Qualifier per SE11 ermitteln

# Transaktion SE11 aufrufen

# In das Feld Datenbanktabelle das Segment E1EDT10 eingeben und auf Anzeigen klicken

# Im folgenden Detailbild in der Spalte Komponententyp auf den Wert EDI_VTDT10 doppelklicken (erste Zeile)

# Nun in der Zeile „Domäne“ wieder auf den Wert EDI_VTDT10 doppelklicken

# Im nächsten Bild den Reiter „Wertebereich“ anklicken

# Die Liste enthält alle möglichen Qualifier zum Segment E1EDT10 und deren Bedeutungen:

 

2. IDoc-Qualifier per WE60 ermitteln

# Transaktion WE60 aufrufen

# Über die Menüleiste die Benutzereinstellungen aufrufen: Springen -> Benutzereinstellungen …

# Im nächsten Screen durch anklicken auf das Brillen/Stift-Icon in den Änderungsmodus wechseln

# Jetzt die beiden Anzeigeattribute „Ausgabe der Doku“ und „Ausgabe der Feldwerte“ aktivieren und Einstellungen sichern (STRG+S)

# Nun wieder zurück (per F3) zum Startbild der WE60

# Hier in das Feld Basistyp SHPMNT05 eingeben und F8 drücken (Anzeige der Doku im HTML-Format)

# In der Anzeige des Dokumentation per STRG+F das Suchhilfe aufrufen und nach dem Segment E1EDT10 suchen

# Solange weiter suchen bis man an folgende Stelle gelangt:

 

 

cu, Isa.

SAP-GUI 80% effektiver nutzen – ein einfacher Trick.

Saßt du auch mal etwas perplex vor deinem Bildschirm und dachtest dir, „ohh Mann, was ist denn jetzt passiert …???“ Du hattest unbewusst eine Tastenkombination betätigt, der Bildschirm hatte sich gedreht und der Mauszeiger bewegte sich unkontrolliert in alle Richtungen, aber nur nicht in die Richtung, in du sie hin haben wolltest.

# Was passiert war: Du hattest einfach die  Windows“Bildschirm drehen“ Funktion aktiviert.

Optimistisch geschätzt wissen 99% der User nichts mit dieser Funktion anzufangen, doch man kann sie bei der Arbeit mit dem SAP-GUI sehr effektiv einsetzen:

Ich habe hier einige Male über Massen-Pflegemöglichkeiten im SAP geschrieben (*1; *2), doch es gibt immer wieder Situationen, wo die MASS nicht weiterhilft bzw. man den Aufwand für eine LSMW scheut. Hier ist das Mittel der Wahl eine vorbereitete Excel-Datei per Copy&Paste manuell einzugeben. Ein gutes Beispiel ist in die Erfassung von Routendaten: Bei diesem Thema können bis zu mehrere Hundert Datensätze zu erfassen sein, die man gut per Copy&Paste eingeben kann. Hier muss man natürlich beachten, dass per Copy&Paste nur in den sichtbaren Bereich des Bildschirms Daten erfasst werden können, dies bedeutet dass man diesen immer wieder mehrere Blöcke per Copy&Paste eingeben muss.

 

So jetzt kommt der „Dreh den Bildschirm“ Trick zum Tragen:

#1 Zunächst musst deinen Monitor, der auf deinem Arbeitsplatz steht, um 90° drehen. Heutige Desktop-Monitore lassen sich ohne Probleme drehen

#2 Jetzt drehst du noch die Anzeige des Bildschirms in Windows

Damit hast du nun ca. 70-80% mehr Eingabefläche für die Copy&Paste Aktion 😉

 

Links: Gedrehte Sicht / Rechts: Normale Sicht

 

cu, Isa.

 

 

 

Das interessiert SAP-Berater – TOP10-Beiträge – 2019

Hallo Zusammen,

wie letztes Jahr schon um diese Zeit, hier die TOP10 Beiträge auf ThinkDoForward.com mit den meisten Zugriffen seit Anfang des Jahres:

 

#1 – 65 wichtige SD-Tabelle, die rocken.

 

#2 – 114 MM-Transaktionen, die es in sich haben.

 

#3 – SD-Transaktionen: Diese Liste kennen erfolgreiche SD-Berater.

 

#4 – 12 IDoc-Tricks, mit denen du einen bleibenden Eindruck beim Kunden hinterlässt.

 

#5 – 102 MM-Tabellen – die Übersicht für SAP-Cracks

 

#6 – 29 SAP-GUI Features, die SAP-Berater kennen müssen!

 

#7 – SAP Parameter-IDs – Geheime SAP-Funktionen aktiveren und mehr Zeit fürs Wesentliche.

 

#8 – 73 SAP-PP-Tabellen, die ich einfach liebe.

 

#9 – SAP SQVI – diese Tipps solltest du dir nicht entgehen lassen.

 

#10 – SAP-Tabellen finden – eine minimalistische Anleitung

 

cu, Isa.

 

AL08 vs SM04 – der kleine aber feine Unterschied.

Vor einigen Jahren stand ich in einer SAP-Produtivumgebung vor dem Problem, dass eine Reihe von IDocs nicht verbucht werden konnten, da ein Material gesperrt war. Prompt rief ich die Transaktion SM12 auf, um nachzuschauen, welcher User das Material sperrte. Hier stand, – sauber aufgelistet – dass seit Stunden eine Reihe von Materialien von einem bestimmten User gesperrt wurden. Hmmm … dachte ich mir, konnte ich dieser Aussage trauen, denn User sperren nicht Stunden lang Stammdaten. Mein Misstrauen rührte auch aus meiner Erfahrung, dass unter bestimmten Bedingungen Sperren „hängen“ bleiben und nicht sauber gelöst wurden. Also rief ich zunächst die Transaktion SM04 auf, um nachzuschauen, ob ich der User überhaupt angemeldet war – und siehe da, der User war gar nicht angemeldet! Doch wenige Sekunden später fiel es mir wie Schuppen von den Augen … ohh Mann, dachte ich mir, ich fiel wieder auf die beschränkte Sicht der SM04 rein!

Denn neben der SM04 gibt es auch die AL08, und zwischen diesen beiden SAP-Transaktionen gibt es einen entscheidenden Unterschied:

 

# SM04 –  Liste der Benutzer innerhalb einer bestimmten Instanz (Server, Maschine, …)

# AL08 – Systemweite Liste der Benutzer (über alle Instanzen)

 

Als ich daraufhin die AL08 startete, fand ich den gesuchten User.

 

Was man zu SM04 und AL08 noch wissen sollte

#1 Wenn man sich im SAP-System anmeldet hat man keinen Einfluss, auf welcher Instanz man angemeldet wird. Durch optimierte Lastverteilung wird die Instanz automatisch bestimmt. Nach der Anmeldung kann die eigene Instanz mit der Transaktion SM51 wechseln. Übrigens … auf welcher Instanz man sich im SAP befindet, wird im SAP-GUI unten rechts angezeigt.

 

#2  Zwischen der SM04 und AL08 kann man hin und her wechseln

## SM04 -> AL08: Innerhalb der SM04 links oben in der Icon-Leiste auf den Button „Systemweite Liste“ („Berge“) klicken

## AL08 -> SM04: Innerhalb der AL08 links oben in der Icon-Leiste auf den Button „Auf Server wechseln“ („Blitz“) klicken.

 

#3 Sowohl in der AL08 als auch in der SM04 wird in der Spalte „Anwendung“, die letzte Transaktion dargestellt, die der User aufgerufen hat. Wenn man sich alle Transaktion/Sessions eines User anzeigen lassen will, geht das nur über die SM04: User markieren und auf den Button „Session“ klicken – zu beachten: Hier werden aber nur die Sessions innerhalb der aktuellen Instanz dargestellt.

 

#4 Zum Schluss noch … vielfach erliegt man im Testsystem dem Trugschluss, dass die SM04 und AL08 das gleiche Ergebnis liefern, da Testsysteme meistens nur eine Instanz besitzen.

 

cu, Isa.

 

 

 

 

 

SQVI, SQ01 kannst du bei Seite legen – es geht viel einfacher.

Wahrscheinlich kennst du den Effekt auch: Insbesondere im SD-Modul kommt man nicht drumherum mindestens in 2 Tabellen nachzuschauen, wenn man Belege sucht, die in einem bestimmten Status sind. Beispielsweise suchst du Aufträge für einem Zeitraum zu einem Kunden, die vollständig beliefert wurden. Dann musst du zunächst die Aufträge per VBAK suchen (1) und anschließend belieferte Aufträge per VBUK eingrenzen (2). Um dir das Leben zu erleichtern kannst ein Quickview oder Query bauen und so in Masse suchen – doch hier gibt es eine viel elegantere Möglichkeit, die mir einigen Monaten ein lieber und sehr erfahrener Kollege (Mustafa Sakarya) vorgestellt hatte: Datenbankviews.

 

Datenbankviews sind von SAP spendiert Joins zwischen 2 oder mehr Tabellen, die man einfach per SE16, SE16N oder SE16H aufrufen kann. Beispielweise ist die LIKPUK so ein Join, die die Tabellen LIKP und VBUK verbindet. Mit der LIKPUK kann man nun sehr mit einer einzigen Selektion per SE16N alle Lieferungen vom letzten Monat, aus einer bestimmten Versandstelle ermitteln, die noch nicht WA gebucht sind:

# SE16N aufrufen und in das Feld Tabelle LIKPUK eingeben

# Selektion:

## ERDAT 01.02.2019 bis 28.02.2019

## VSTEL=1000

## WBSTK <> C

 

Hier ein paar gängige SD-Datenviews, die hilfreich sind:

# VBAKUK – Join: VBAK-VBUK

# VBAP_VAPMA – Join: VAPMA-VBAP

# LIKPUK – Join: LIKP-VBUK

# LIPS_VLPMA – Join: VLPMA-LIPS

# VBRKUK – Join: VBRK-VBUK

# VBRP_VRPMA – Join: VRPMA-VBRP

 

cu, Isa.

 

SM59 – Einloggen per RFC-User – hilft auch Samstags

Was muss alles zusammentreffen, damit man Samstagnachmittag seinen Rechner hochfährt und einen Testfall im SAP-System durchspielt? Schlechtes Wetter kann eine Motivation sein. Eine gute Idee zu haben, die man unbedingt testen will, hilft auch weiter. Alleine im Hotelzimmer in einer fremden Stadt zu sitzen und sonst nichts anderes vorzuhaben, kann dich auch zu diesem Schritt verleiten. Vor einigen Monaten trafen diese Punkte tatsächlich zusammen, und ich konnte es nicht lassen, meinen Rechner hochzufahren, um einen Testfall durchzuspielen. Doch dann schlug Murphy zu und ich konnte mich – trotz aller Anstrengung – nicht an mein Passwort erinnern, das ich kurz vorher geändert hatte. Wenn ich im Office gewesen wäre, hätte ich kurzerhand einen Kollegen gebeten mein Passwort zurückzusetzen – doch wie gesagt, es war Samstag und ich war nicht im Office.

Als ich leicht säuerlich mit einem grummeligen Gefühl der Frustration meinen Rechner bei Seite legen wollte, viel mir der Tipp eines Kollegen ein, den er mir verraten hatte: Einloggen per RFC-User – und prompt war ich mit wenigen Klicks im System, konnte mein Passwort zurücksetzen und war eingeloggt. Und so funktioniert der Trick:

 

Voraussetzungen:

# Zwei SAP-System bspw. ECC und SCM sind per RFC miteinander verbunden.

# Du kannst dich ins ECC-System einloggen, aber nicht ins SCM-System

# dann gehts du einfach wie folgt vor:

 

#1 Log dich ins SAP ECC System ein und ruf die Transaktion SM59 auf

#2 Jetzt klappst du im linken Bereich den Ordner „ABAP-Verbindungen“ auf

#3 Hier machst du einen Doppelklick auf das System, auf das du dich einloggen willst

#4 Jetzt einfach auf den Button „Remote Verbindung“ klicken – et voilà – du bist im SCM System eingeloggt.

 

 

cu, Isa.