Intervallabfragen in Rollen und im System

Achtung bei Intervallabfragen / -bewertungen bei Rollen

Wie oft sieht man in Rollen Objekt-xy = AAA*-ZZZ* oder auch kurz A*-Z*. Leistet hier das System das, was gemeint ist? Hier soll doch das Objekt im Feld xy alle auftretenden Bewertungen von A* bis Z* als genehmigt zurückmelden, wie einem der Blick auf diese Objektbewertung zeigt. Ist das so? Müssen evtl. viele Objekte neu bewertet werden, weil dieses Intervall vom System anders ausgeführt wird als vermutet?

Angenommen Sie wollen alle Transaktionen anzeigen, die mit einem Buchstaben beginnen, wie würden Sie dieses Intervall beschreiben? Sofort bekommen Sie doch von den meisten die Antwort: „Mit Intervallabfrage A* bis Z*, natürlich!“. Oder sind Sie anderer Meinung? Ok, vielleicht reicht auch A bis Z, ohne Sterne!

Beispiel an Hand der Tabelle TSTC:

Ich möchte hier wissentlich eine Tabelle und eine Transaktion nehmen, die nur bedingt etwas mit Berechtigungen zu tun hat. Deshalb hier ein Beispiel zur Transaktionstabelle TSTC.
Sicherlich haben Sie im System viele Z-Transaktionen. Nehmen wir hier an, Sie hätten folgende Transaktionen:
YHUGO
ZA_ALPHA
ZSYSTEM
ZZALPHA
ZZBETA
Z_ALPHA

(Diese Transaktionen sind hier so sortiert, wie sie das SAP®-System sortiert. Anders ist die Sortierung bspw. bei EXCEL®. Im SAP®-System ist der Unterstrich („_“) [X’5F‘] größer als der Buchstabe „Z“ [X’5A‘]. Deshalb ist die Sortierreihenfolge wie oben.)

Die Suche

So, nun wollen wir mit der SE16 alle Transaktionen von Y* bis Z* abfragen. Also rufen wir die TSTC mit der SE16 und geben als T-Code als Intervall Y* bis Z* ein.

TSTC

Quelle SAP®

Als Ergebnis erhalten Sie im obigen Beispiel nur die Transaktion

YHUGO

Prüfen Sie es mit Ihrer TSTC entsprechend nach. Z* als Endbedingung wird exklusiv behandelt! Also werden alle Transaktionen außer denjenigen, die im 1. Buchstaben ein Z haben, angezeigt.

Unerwartet? Da haben Sie Recht!

Nun vielleicht fruchtet ja folgender Versuch Y* bis ZZ*:
Ihr Ergebnis wird YHUGO, ZSYSTEM sein! ZZALPHA darf nicht kommen, weil ZZ ja exklusiv ist! Anders ausgedrückt: weil ZZ < ZZALPHA ist !
Ok ein Unterstrich ist in SAP größer als ein Z. Somit können wir abfragen: Y* bis Z_*:

Ergebnis: YHUGO, ZSYSTEM, ZZALPHA, ZZBETA.

Hängt das Verhalten vielleicht mit den Sternen zusammen? Nun Abfrage Y bis Z_ bringt das gleiche Ergebnis, wie zuvor. Wieso?
Nun, die Transaktion Z_ALPHA ist nicht im Intervall Z_, da ja die Endbedingung exklusiv gilt (Z_ < Z_ALPHA) . Somit darf Z_ALPHA nicht angezeigt werden.

OK! Nun erweitern wir auf Y bis Z__ : Und siehe da, wir haben es geschafft. Alle unsere Transaktionen werden angezeigt (Z__ > Z_ALPHA) .

Jetzt machen wir noch eine Abfrage Y bis Z_ALPHA. Ergebnis: Alle unsere Transaktionen werden angezeigt. (Z_ALPHA = Z_ALPHA). Wenn also die letzte Transaktion den gleichen Wert hat wie unsere Endbedingung, dann wird angezeigt.

Bitte versuchen Sie die Beispiele an Ihrer TSTC nachzuvollziehen.

Diese Abfragen werden intern mit einem SQL-BETWEEN-Befehl an die Datenbank gesendet. Die Datenbank hat nun die Regel, dass die Endbedingung exklusiv ist.

Zeige nur dann an, wenn Endbedingung >= Feldwert ist !

All dies nun angewendet auf unsere Berechtigungsobjekte in der PFCG: Hier erfolgt die gleiche Logik.
Ein Intervall mit S_TCODE = A*-Z* funktioniert nur bedingt. Alle Z-Transaktionen werden ausgelassen. Es sollte hier also heißen A-Z__ (mit 2 oder 3 Unterstriche)!

Alles sehr verwunderlich, oder?

Nun könnten Sie auf die Idee kommen, ein Intervall mit SE16 auf die TSTC mit Y bis __ zu suchen. Tja das System wird es nicht ausführen und das Endbedingungsfeld auch noch löschen. Geben Sie aber _* ein oder _A, dann funktioniert es auch.

Für mich ist das eigentlich unnatürlich! Denn mit A* bis Z* meint man doch umgangssprachlich, alle Transaktionen, die mit Buchstaben beginnen, werden angezeigt, also die Endbedingung inklusiv. Doch das System scheint es anders zu meinen. Bei meiner Suche im Internet nach einer Beschreibung dieses Verhaltens, hatte ich bisher noch keinen Erfolg, vielleicht Sie?

Nimmt man obige Anzeigeregel Endbedingung >= Feldwert und überlegt sich noch, dass die Felder in den Tabellen entweder mit X’0′ oder blank [X’20‘] am Ende gefüllt sind, wird auch klar, warum obiger Endwert Z_ – also X’5A5F0000000000′ oder X’5A5F2020202020′ – kleiner ist als Z_ALPHA. Der Wert Z_ALPHA wird nicht angezeigt.

Somit also Achtung bei Intervallangaben in Objekten wie S_DEVELOP, um das DEBUG auszuschalten. Hier reicht die Angabe

A bis DEB
DEC bis Z__

Natürlich könnte man bei S_DEVELOP für den Objekttyp auch alle einzeln auswählen und nur DEBUG auslassen. Die Rolle würde hier aber sehr groß und bei einem neuen Objekttyp im Zuge eines Upgrades müsste man an die Rolle ran. Deshalb sollte man die Bewertungen – wenn geht – immer unabhängig von Upgrade-Änderungen angeben, das hält die Rolle übersichtlich und klein.

Haben Sie solche „natürlichen“ Intervalle in Ihren Rollen benutzt, dann können Sie eigentlich mittels der AGR_1251 und EXCEL® leicht Ihre „fehlerhaften“ Rollenbewertungen herausbekommen. Laden Sie die Liste einer SE16-Abfrage auf die AGR_1251 nach Excel und untersuchen sie Ihre Endbedingungen.

agr_1251

Quelle SAP®

(Die Abfrage enthält den Ausschluss Einzelwert SAP* für den AGR_NAME und ebenso den Ausschluss Einzelwert X für DELETED. Bei dem Feld HIGH geben Sie hier auch einen Ausschluss Einzelwert an, aber leer mit der Operation =, was hier zu ungleich wird.)

Viel Erfolg beim Probieren
Bernd Klüppelberg

P.S. Ich hoffe, ich habe Sie jetzt nicht zu arg erwischt. Ich selbst bin auf die umgangssprachliche Anschauung auch herein gefallen. Bis ich mal wirklich getestet habe 🙁

2 Responses to “Intervallabfragen in Rollen und im System”

  1. Unglaublich. Es ist tatsächlich so das die Endbedingung mit * exklusiv wirkt. Und zwar auch bei allen anderen Tabellen. Und wenn kein Stern verwendet wird, sondern der vollständige Inhalt dann wirkt die Endbedingung, wie oben beschrieben, inklusiv.

    Vielen Dank für den Tipp!

    Führt übrigens dann, wenn bei Startbedingung und Endbedingung ein * steht zu der SAP Meldung: „Zum angegebenen Schlüssel wurden keine Tabelleneinträge gefunden“.

  2. Ergänzung, wie SAP es selbst beschreibt im Hinweis
    375243 – select-options: Maskierte Intervalleingabe.
    http://service.sap.com/sap/support/notes/375243

Schreiben Sie bitte einen Kommentar





SAP Berechtigungen, -Konzepte, -Technik | System Beratung Bernd Klüppelberg