UserExit zu Transaktionen

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
12 Beiträge • Seite 1 von 1
12 Beiträge Seite 1 von 1

UserExit zu Transaktionen

Beitrag von Andreas G (Specialist / 175 / 0 / 0 ) »
Hallo.

Ich habe folgende Aufgabenstellung: :shock:
Über einen Selektionsbildschirm kann man eine oder mehrere Transaktionen angeben (z.B. MM01 bis MM03). Nun soll geprüft werden welche User - Exits von der angegebenen Transaktion gestartet werden.

Da ich bis jetzt keine Tabelle, View, Strucktur oder sonstiges gefunden habe, wo man diese Information lesen kann, bin ich momentan ratlos :?: :!:

Thanks for helping me.
Andi

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von Andibugger (ForumUser / 43 / 0 / 0 ) »
Hi Andreas,

schau Dir dazu mal folgenden Beitrag an
http://www.abapforum.com/forum/viewtopi ... serexit%2A

Gruß,
Ab

Lösung Andibugger

Beitrag von Andreas G (Specialist / 175 / 0 / 0 ) »
Hi Andibugger.

Danke für den Lösungsvorschlag.

Leider erfüllt das angegebene Programm
nicht ganz meine Anforderungen weil:
Das Programm jeden UserExit der zu einer
Transaktion EXISTIERT selekiert.

:arrow: Ich will jedoch wissen, welche UserExits
tatsächlich von der angegebenen Transaktion aufgerufen werden! :shock:

Hoffe auf weitere Lösungsvorschläge! :wink:

mfg Andi

Re: Lösung Andibugger

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Andreas G hat geschrieben: :arrow: Ich will jedoch wissen, welche UserExits
tatsächlich von der angegebenen Transaktion aufgerufen werden!
1. Aufgerufen werden natürlich nur die implementierten/aktivierten/... Userexits.
Aber das war vermutlich nicht Deine Frage, oder?

2. Auf welches Release und welche Art von User-Exits bezieht sich Deine Frage? (BADI, CALL CUSTOMER-FUNCTION, PERFORM USEREXIT_* mit leerer FORM in separatem Include, ...)

3. Welche Userexits prozessiert werden, hängt auch davon ab, was jemand in einer Transaktion tut, welche Berechtigungen er hat, ...
Wenn man gleich im Einstiegsbild der Transaktion F3/F12/F15/... drückt, wird eher selten ein Userexit prozesssiert.

4. Die Zuordnung eines Userexits zu bestimmten Transaktionen ist nicht immer sinnvoll.
Zu welcher Transaktion gehört denn der Logon Userexit?
Oder Userexits zur zusätzlichen Berechtigungsprüfung ... in FBs zum Sichern einer Datei auf dem PC?

5. Da ich fürchte, dass die vorherigen Anmerkungen Dir alle nicht gefallen (liegt aber auch an Deinen Fragen), hier noch eine hoffentlich etwas nützlichere Antwort:
Für BADIs ist es recht effizient, vor dem Debuggen eines Transaktionsaufrufs einen dynamischen Breakpoint in die Methode zu setzen, die prüft, welche aktive BADI-Implementierung es zu einem BADI gibt.

Beitrag von Andreas G (Specialist / 175 / 0 / 0 ) »
Hi Frank.
Aber das war vermutlich nicht Deine Frage, oder?
Doch, das ist meine Frage:
Welche UserExits werden beim Aufruf einer Transaktion aufgerufen (bzw. können aufgerufen werden, unabhängig davon was der Benutzer tut, oder welche Berechtigungen er hat)

Zu Punkt 2) CALL CUSTOMER-FUNCTION. BADIs werden nicht verwendet.

Mir ist bewusst, das es nicht immer sinnvoll ist ein UserExit einer Transaktion zuzuordnen.
Das ändert aber nichts an meiner Aufgebenstellung :wink:
mfg Andi

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,

schon Punkt 1. von Frank Dittrich trifft in schwarze.

Aufgerufen werden alle User-Exits, zu denen das notwendige Coding (Include) vorhanden ist und die in einem AKTIVIERTEN Projekt enthalten sind.

Ob ein Projekt aktiviert ist kann man in der Tabelle MODATTR im Feld PRJSTATUS erkennen.

Gruß
babap

Beitrag von Andreas G (Specialist / 175 / 0 / 0 ) »
hi babap.

danke für die interessanten infos.

kannst du mir noch mehr geben, z.B. wie finde ich heraus welches Programm (oder Include) zu welchem Projekt gehört.
Kann man im Customizing (Transact. SPRO) schauen wieviele UserExits es gibt, verwendet werden, ... ?

mfg Andi

Beitrag von Gast ( / / 0 / 3 ) »
Andreas G hat geschrieben:hi babap.

danke für die interessanten infos.

kannst du mir noch mehr geben.
Wenn Du mal den SQL-trace eingeschaltet und dann die CMOD aufgerufen hättest, wäre Dir aufgefallen, dass es da noch mehr MOD*-Tabellen gibt mit Infos zu Komponenten enes Exits ...

Beitrag von Gast ( / / 0 / 3 ) »
Noch etwas vergessen:
SE16, TRDIR, Programmname ZX*
Das sollten eigentlich alles EXIT-Includes in FBs EXIT_rahmenprogramm_NNN sein, die per CALL CUSTOMER-FUNCTION aufgerufen werden.

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,
Andreas G hat geschrieben:hi babap.

danke für die interessanten infos.

kannst du mir noch mehr geben, z.B. wie finde ich heraus welches Programm (oder Include) zu welchem Projekt gehört.
Kann man im Customizing (Transact. SPRO) schauen wieviele UserExits es gibt, verwendet werden, ... ?

mfg Andi
In SPRO und Customizing gibt es das meines Wissens nicht, vielleicht ist ja noch irgendwo ein Report versteckt.

Ich verwende für meine Zwecke eine View und eine zusätzliche Tabelle, in der ich die User-Exits eintrage, die von meinem Projekt benutzt werden.

Ich schreib mal kurz die Viewdefinition rein
(xxxx_smod ist meine Tabelle, die kann man weglassen)


Tabellen

Code: Alles auswählen.

MODSAP
MODSAPT
MODACT
MODATTR
MODTEXT
TADIR
(xxxx_SMOD)
Verknüpfungen

Code: Alles auswählen.

MODSAP	NAME	=	MODSAPT	NAME
MODACT	MEMBER	=	MODSAP	NAME
MODACT	NAME	=	MODATTR	NAME
MODTEXT	NAME	=	MODACT	NAME
MODTEXT	SPRSL	=	MODSAPT	SPRSL
TADIR	OBJ_NAME	=	MODACT	NAME
(xxxx_SMOD	NAME	=	MODSAPT	NAME)
Felder

Code: Alles auswählen.

Feldname Tabelle Feld 
MEMNAME   MODSAP   NAME
MEMTYP    MODSAP   TYP
MEMBER    MODSAP   MEMBER
SPRSL     MODSAPT  SPRSL
PRJNAME   MODACT   NAME
PRJTYP    MODACT   TYP
PGMID     TADIR    PGMID
OBJECT    TADIR    OBJECT
OBJ_NAME  TADIR    OBJ_NAME
MEMTEXT   MODSAPT  MODTEXT
PRJSTATUS MODATTR  STATUS
PRJTEXT   MODTEXT  MODTEXT
DEVCLASS  TADIR    DEVCLASS
(INUSE    xxxx_SMOD INUSE)
Selektionsbedingungen

Code: Alles auswählen.

MODSAP	TYP	EQ	' '	AND
TADIR	PGMID	EQ	'R3TR'	AND
TADIR	OBJECT	EQ	'CMOD'
Die View lese ich in einem Programm, zeige die Sachen an und Verzweige bei Doppelklick in die CMOD mit Vorbelegug der Auswahlfelder. Dann muß man einfach "Entern" oder "F8en" und ist mit ein paar klicks im User-Exit.

Code: Alles auswählen.

REPORT  z_xxx_smod                                                  .

DATA:
i_xxxexits TYPE TABLE OF xxxx_v_dev_smod,
w_xxxexits LIKE LINE OF i_xxxexits.


SELECTION-SCREEN BEGIN OF BLOCK b001 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP 1.
PARAMETERS: inuse TYPE xxxx_inuse AS CHECKBOX DEFAULT 'X'.
PARAMETER:  activ TYPE modstat AS CHECKBOX DEFAULT ' '.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN END OF BLOCK b001.

TRANSLATE inuse USING 'XX %'.
TRANSLATE activ USING 'XA %'.


SELECT * FROM xxxx_v_dev_smod
         INTO TABLE i_xxxexits
         WHERE sprsl = sy-langu
         AND   inuse LIKE inuse
         AND   prjstatus LIKE activ
         ORDER BY memname ASCENDING.



LOOP AT i_xxxexits INTO w_xxxexits.

  NEW-LINE.
  WRITE: w_xxxexits-memname(8) INTENSIFIED ON COLOR 2,
         w_xxxexits-memtext(60) INTENSIFIED ON COLOR 2.
  HIDE:  w_xxxexits-prjname.
*  NEW-LINE.
  WRITE: w_xxxexits-prjname(8) INTENSIFIED OFF COLOR 1,
*         w_xxxexits-prjtext(60) INTENSIFIED OFF COLOR 1,
         w_xxxexits-prjstatus INTENSIFIED OFF COLOR 6,
         w_xxxexits-devclass(30) INTENSIFIED OFF COLOR 5,
         w_xxxexits-inuse AS CHECKBOX INPUT OFF.
  HIDE:  w_xxxexits-prjname.

*  SKIP.


ENDLOOP.

AT LINE-SELECTION.

  READ LINE sy-lilli.

  IF NOT w_xxxexits-prjname IS INITIAL.

    SET PARAMETER ID 'MON_KUN' FIELD w_xxxexits-prjname.

    CALL TRANSACTION 'CMOD' AND SKIP FIRST SCREEN.

  ENDIF.
Vielleicht findet Ihr ja noch ein paar andere Zusammenhänge raus und entwickelt eine noch viel bessere Methode um direkt in die User-Exits zu gelangen. (Würde mich wirklich interessieren!!)

Gruß
babap

Beitrag von Andreas G (Specialist / 175 / 0 / 0 ) »
Hi babap.

Leider hab ich noch immer keine endgültige Lösung für mein Problem. :?
Da du dich auch für UserExits interessierst: Starte mal das SAP - Programm RCEXITCHECK
damit kann man sich aktive UserExits anzeigen lassen.
Ausserdem gibt es Funktionsbausteine mit denen man UserExits zu Bereichen lesen kann:
BAM1_SD_GET_USER_EXIT_NAMES
BAM1_PP_GET_USER_EXIT_NAMES
BAM1_CO_GET_USER_EXIT_NAMES
BAM1_TR_GET_USER_EXIT_NAMES
Muss selber erst ausprobieren was diese FB genau machen und ob mir das weiterhilft :roll:

mfg Andi

UserExit

Beitrag von Andreas G (Specialist / 175 / 0 / 0 ) »
Hallo nochmal.

Mit dem SAP-Programm RCEXITCHECK kann man supa alle aktiven CALL CUSTOMER-FUNTIONs auslesen. Soweit sogut.
Weis aber leider noch immer nicht, wie ich die PERFORM USEREXIT_* finden soll und vorallem wenn ich sie gefunden habe, wie ich herausfinde ob dieses USEREXIT "verwendet" wird (ob jemand eine Programmänderung vorgenommen hat) oder ob dieses Exit "nicht aktiv" ist.

Für weitere kreative Ideen bin ich dankbar.

mfg Andi

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1455
Views
Aufruf von Transaktionen
von SAP_ENTWICKLER » 09.01.2015 11:32 • Verfasst in ABAP® Core
1
Antw.
1253
Views
Zugelassene Transaktionen
von Gast » 19.01.2006 11:51 • Verfasst in ABAP® Core
6
Antw.
3446
Views
Transaktionen-Liste
von funky_escobar » 26.01.2006 15:32 • Verfasst in SAP - Allgemeines
10
Antw.
3331
Views
Direkte Transaktionen unterbinden
von c oco » 30.01.2006 15:24 • Verfasst in ABAP® für Anfänger
2
Antw.
1834
Views
Transaktionen Baum rauskopieren
von Kirac1 » 14.04.2022 10:20 • Verfasst in SAP - Allgemeines

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 511
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2146
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8742