Transaktionsvariante / Berechtigungsprüfung

TAGS: ME23N ME53N ZAPM_ME23N ZAPM_ME53N SHD0 SE93 SE97

Ziel:

Es sollen Kundeneigene Transaktionen zur Anzeige von Bestellung und Bedarfsanforderung erstellt werden. Damit haben die Anforderer die Möglichkeit, Belege zur Anforderung anzusehen.

Dafür soll die ME23n / ME53n mit eingeschränkten Funktionen zur Verfügung stehen. Die Anforderer dürfen nicht über eine Hintertüre auf andere Belege umschalten können.

Lösung:

Es werden Transaktionsvarianten angelegt. Dabei werden alle Menüpunkte des Dynpros, die nicht verwendet werden sollen, ausgeblendet.

Die Anforderer bekommen die Berechtigung zur Ausführung der Transaktionen ZAPM_Mxxxx. Die Berechtigung zum Ausführen der Transaktion ME23n und ME53n wird nicht erteilt.

Stolpersteine:

Die Berechtigungsprüfung schlägt fehl. Nach ausführen von ZAPM_ME23N wird auch die Transaktion ME23N durch das System geprüft und verhindert die Verwendung. Das Vorgehen und die Lösung dieses Problems wird hier beschrieben.

Zitat aus https://de.alt.comp.sap-r3.narkive.com/4ahRvuOG/me23n-mit-weniger-buttons-berechtigungen

wir haben für die Bestellabwicklung eine umfangreiche Eigenentwicklung
im Einsatz.
Ein einer Stelle wir dabei in die Transaktion ME23N abgesprungen. Der
User soll jedoch nur die eine Bestellung (oder maximal seine eigenen
Bestellungen) aus der er abgesprungen ist ansehen können. Über die
Buttons „Belegansicht ein“ bzw. „andere Bestellung“ hat er jedoch die
Möglich sich auch andere Bestellungen anzeigen zu lassen, dies ist
nicht gewünscht.
Der eine Lösungsansatz von uns war, eigene Berechtigungsrollen zu
definieren.
Aber zum einen müßten wir dann ja für fast jeden User hierzu eine
eigene Rolle anlegen, in dem die Kostenstelle definiert ist, für die
er die Transaktion ME23N nützen dürfte und zum anderen müßten wir
schauen, ob es Möglich ist per UserExit in der Berechtigunsprüfung der
ME23N diese Berechtigung auf die Kostenstelle überhaupt zu prüfen. Die
andere Überlegung ist dann eben in der ME23N diese beiden Buttons
Belegansicht ein“ bzw. „andere Bestellung“ die im Status definiert
sind auszublenden. Hat hier jemand Erfahrung, lässt sich sowas über
eine Transktionsvariante realieseren oder sonst eine andere Idee?
Vielen Dank!


versuch’s mal mit einer Transaktionsvariante der ME23N über die
Transaktion SHD0 (null, nicht o). Hier kannst du diverses ausblenden. In
eurer Eigenentwicklung müsstet ihr dann diese Variante anspringen.


Vielen Dank, haben wir zwischenzeitlich auch rausbekommen. Hat soweit
auch geklappt nur haben wir dann gleich wieder gemerkt wie schlecht
SAP Dokumentiert.
Wir rufen dann die Transaktionsvariante per call transaction auf und
fallen prompt auf die Nase, da wir entsprechend noch die
Transaktionsberechtigung für die ME23N entzogen hatten, da bei call
transaction ja laut Doku die Transaktionbsberechtigung nicht geprüft
wird. Nach langem suchen haben wir dann rausbekommen, dass neuerdings
dies doch getan wird. Ein Eintrag über die SE97 mit „nicht prüfen“ ist
nicht ausreichend und die Prüfung kann nur dadurch wieder abgeschaltet
werden, in dem man in der Tabelle TCDCOUPLES entsprechende Einträge
sperrt. Will man also eine Transaktion per call transaktion aufrufen,
aber ansosnten nicht die Transaktionsberechtigung dafür vergeben, muß
man in dieser Tabelle den Eintrag, in dem die Felder „TCode“ und
„Called“ den gleichen Wert haben (hier also „ME23N“) löschen.

SHD0

Anlegen einer Transaktionsvariante

Button NEU

Man gelangt direkt in die ME23n.

Rücksprung

Hier auf Menüfunktionen

Menüpunkt markieren und mit Button deaktivieren

SE93

Transaktion zuordnen

SE97

Falls keine Berechtigung zur Ausführung der Transaktion besteht: (kritische Berechtigung)

Ausführen des Reports TASAUTH.

Im Include TASA1E01 Zeile 117 oder 124 Breakpoint bei der Authorisierungsprüfung setzen und im Debugger den Rückgabewert sy-subr = 1 setzen.

Dann die rufende Transaktion (hier die Kundeneigene Transaktion ZAPM_ME23N) angeben und F8 drücken.

Eine neue Zeile anlegen und dort die gerufene Transaktion eintragen mit Prüfkennz. = NEIN.

Tabelle TCDCOUPLES

Ein Eintrag über die SE97 mit „nicht prüfen“ ist nicht ausreichend und die Prüfung kann nur dadurch wieder abgeschaltet werden, in dem man in der Tabelle TCDCOUPLES entsprechende Einträge sperrt. Will man also eine Transaktion per call transaktion aufrufen, aber ansosnten nicht die Transaktionsberechtigung dafür vergeben, muß man in dieser Tabelle den Eintrag, in dem die Felder „TCode“ und „Called“ den gleichen Wert haben (hier also „ME23N“) löschen.

Zeile mit „rufender Transaktionscode“ = ME23N und

„gerufener Transaktionscode“ = ME23N löschen.

Zeile mit ME53N dito.