Ich soll ein Report machen, der andere Programm/Reports deaktiviert. Das heisst die sollen nicht mehr gestartet werden können. Gelöscht werden dürfen sie aber nicht, da sie eventuell später wieder aktiviert werden müssen. Gibt es irgendwo ein Flag?? Oder hat jemand eine Idee, wie ich das anstellen könnte?
dieser Status bezieht sich aber auf die Generierung und würde durch einfaches Generieren wieder auf aktiv gesetzt werden.
PS:
mir ist kein Verfahren bekannt, einen existenten Report zu 'deaktivieren'. Einzig durch Abschalten der Transaktion SA38/SE38 und Anlegen von Transaktionen für jeden einzelnen benötigten Report, könnte man über das Abschalten der jeweiligen Transaktion dies steuern.
Bei den potentiell tausenden Reports ohne Transaktion ein netter Spaß!
Gruß
Ereglam
May the Force be with your code || .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .
Damit könnte der Report nicht mehr aufgerufen werden.
Wenn der Benutzer einen ganz großen Schreck kriegen soll, kannst du ja auch eine A-MESSAGE nehmen...
Hätte den Vorteil, dass man auch noch sehen kann, welche Programme evtl. noch versucht werden zu starten.
die Idee vom ewx ist doch ganz gut. Alternative kannst du auch nach der Report-Anweisung in der 1. Zeile einen "Exit" einbauen, hat den gleichen Effekt nur das keine Nachricht kommt. Jetzt würde sich der User irgendwo melden.
Vielleicht gibt es ja auch neuere Programme die benutzt werden sollen, dann kannst du auch ein Aufruf auf diese Programme machen, via Submit oder Call Transaction.
Vielen Dank für die vielen Tipps. Im moment habe ichs mal mit dem Status gemacht. Allerdings tönen die anderen Vorschläge auch nicht schlecht. Ich denke, ich muss das mal mit meinem Chef anschauen...
Man könnte auch TRDIR-SUBC auf 'I' setzen, dann muss man an den Quelltext nicht ran.
In Releases < 6.x geht UPDATE trdir SET subc = 'I' WHERE ...,
in neueren will SAP das nicht mehr.
Entweder man nimmt dann UPDATE progdir SET subc = 'I' WHERE ...
(obwohl das sicher ein Versehen von SAP ist, das noch zu erlauben) oder
SELECT SINGLE * FROM trdir INTO wa WHERE ...
wa-subc = 'I'.
MODIFY trdir FROM wa.
Oder man setzt die Berechtigungsgruppe auf einen Wert, für den niemand die Berechtigung bekommt.
(Dann sollte aber das Programm, mit dem man die Berechtigungsgruppe zurück andert, besonders geschützt sein.)