Wie finde ich die Implementation eines ENHANCEMENT-POINTs?

Alle Fragen rund um Basisthemen
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

Wie finde ich die Implementation eines ENHANCEMENT-POINTs?

Beitrag von Radinator (ForumUser / 67 / 11 / 7 ) »
Servus,

ich verzweifle grade an der Suche nach einem einfachen Weg (ohne stundenlang zu scrollen) wie ich den Implementierungscode eines Enhancements finde.

Kontext:
Als Beispiel nehm ich mal den FuBa IDOC_OUTPUT_SHPMNT, dieser hat in Zeile 63 einen ENHANCEMENT-POINT IDOC_OUTPUT_SHPMNT_01 SPOTS ES_SAPLV56K., mittlerweile ist bekannt, dass die Implementierung in Funktionsgruppe XTRK im Exit EXIT_SAPLV56K_002 im Include ZXTRKU02 passiert. Der Exit- bzw Erweiterungs-Name (SMOD) und Projekt (CMOD) ist V56K0001.
Ich hab in dem Fall eigentlich alle Teile, die man braucht, allerdins hab ich aktuell noch keinen Weg wie ich von IDOC_OUTPUT_SHPMNT auf V56K0001 komm ohne ewig zu suchen.

Aktuelles Vorgehen:
1.) FuBa IDOC_OUTPUT_SHPMNT -> Zeile mit dem ENHANCEMENT-POINT abc SPOT xyz finden und aus dem Wert für SPOT die letzten 3 Zeichen nehmen und in
2.) SMOD eintragen gefolgt von einem * Wildcard -> Gibt mir 2 Einträge
3.) alle Einträge durchprobieren und unter Anzeigen -> Komponenten die einzelnen FuBas durch-doppelklicken und schauen ob der INCLUDE Code enthält oder nicht.

Wenn ich im FuBa IDOC_OUTPUT_SHPMNT direkt Doppelklick auf das ENHANCEMENT-POINT mach bekomm ich ne lange Liste wo ich mich auch wieder im Kreis drehe und nicht zur Implementation komme.

Gibt es da irgenwie einen einfachen weg? Meinetwegen ich such nach IDOC_OUTPUT_SHPMNT_01 oder ES_SAPLV56K und es liefert mir den INCLUDE oder zumindest den Exit?

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


Re: Wie finde ich die Implementation eines ENHANCEMENT-POINTs?

Beitrag von a-dead-trousers (Top Expert / 4443 / 226 / 1194 ) »
Ich glaube du vermischst hier zwei unterschiedlich Dinge:
SMOD und CMOD sind die alten USER-EXITS und haben nichts mit ENHANCEMENT-POINTS zu tun. Wenn man einen ENHANCEMENT-POINT hat werden alle damit implementierten Enhancements direkt im CODE angezeigt.
Wie man schnell zu USER-EXITS navigiert ist aber auch rasch erklärt. Da die Exits am Hauptprogramm hängen muss man nur nach Funktionsbausteinen suchen die den Namen vom Rahmenprogramm + die dreistellige Kennung im Namen haben.
Zum Beispiel finde ich für die Funktionsgruppe von IDOC_OUTPUT_SHPMNT mit EXIT_SAPLV56K_* auf unserem System insgesamt drei USER-EXITS.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Wie finde ich die Implementation eines ENHANCEMENT-POINTs?

Beitrag von Radinator (ForumUser / 67 / 11 / 7 ) »
Mist 😅

Leider ist das, was du beschreibst nicht das, was ich suche. Mir geht es darum, dass der FuBa IDOC_OUTPUT_SHPMNT in der Zeile 63 einen ENHANCEMENT-POINT definiert und ich gerne zu dem Code gelangen will der am Ende tatsächlich ausgeführt wird.

Bzw halt gerne wissen ob ich, OHNE manuell mit dem Teilstring SAPLV56K der SPOT Bezeichnung ES_SAPLV56K nach EXIT_<teilstring>_* suchen zu müssen und mich dann händisch durchzuklicken. Ich hätte mir erfhofft ich kann auf die Zeile ENHANCEMENT-POINT IDOC_OUTPUT_SHPMNT_01 SPOTS ES_SAPLV56K. doppel zu klicken und es bringt mich direkt zum Include

Re: Wie finde ich die Implementation eines ENHANCEMENT-POINTs?

Beitrag von a-dead-trousers (Top Expert / 4443 / 226 / 1194 ) »
Nochmal: Wenn du da direkt im IDOC_OUTPUT_SHPMNT keinen Code unterhalb vom ENHANCEMENT-POINT siehst, gibt es keine Implementierungen.
Wenn es Implementierungen gäbe, würden diese mit den Zusatz "ENHANCEMENT 1", "ENHANCEMENT 2" usw. angezeigt werden.

Bei mir schaut das zum Beispiel so aus:

Code: Alles auswählen.

ENHANCEMENT-POINT IDOC_OUTPUT_SHPMNT_01 SPOTS ES_SAPLV56K.
*$*$-Start: IDOC_OUTPUT_SHPMNT_01---------------------------------------------------------------$*$*
ENHANCEMENT 1  MGV_GENERATED_IDOC_OUTPUT_S005.    "active version
* ALE Generation                                  Note 1063487
  call function 'MGV_ALE_ADD_EXTERNAL_MATNR'
     tables
       idoc_data    = int_edidd
     changing
       idoc_header  = control_record_out.
ENDENHANCEMENT.
*$*$-End:   IDOC_OUTPUT_SHPMNT_01---------------------------------------------------------------$*$*
Somit ist nur eine einzige Erweiterung "MGV_GENERATED_IDOC_OUTPUT_S005" aktiv. Wenn man darauf doppel-klickt kommt man in die Verwaltung der Erweiterung.

Das mit dem Funktionsbausteinen, die den Namen der Funktionsgruppe beinhalten, sind die alten USER-EXITS und haben nichts mit den ENHANCEMENTS gemeinsam.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Wie finde ich die Implementation eines ENHANCEMENT-POINTs?

Beitrag von Radinator (ForumUser / 67 / 11 / 7 ) »
Ok so langsam beginne ich das zu verstehen.

Wenn es zu einem ENHANCEMENT-POINT keinen nachfolgenden Code gibt, der in einen ENHANCEMENT <zahl> <bezeichnung>. ... ENHANCEMENT eingefasst ist, dann gibt es hier auch keinen Code der zusätzlich ausgeführt wird.

Es kann aber immer noch sein, dass es einen User-Exit gibt, den finde ich (sofern es eine SAP Entwicklung ist und/oder man sich an die SAP Nomenklatur hält) indem ich den Namen nach SPOT nehme und den Teil nach dem Unterstrich in eine Suchanfrage einbette wobei ich hier EXIT_ gefolgt von dem Teilstring von grad eben plus dem Wildcard * in der SE80 -> FuBa suche und da mich durchklicke und hoffe einen Eintrag zu finden.

Wenn es keinen User-Exit gibt, kann es immer noch sein, dass es ein BAdI gibt. BAdIs sind dann User-Exits "auf Steroiden" da sie User-Exits mit ABAP Objects Funktionalität sind.

Edit: Grad deinen Edit gesehen, gibt es eine "einfache" Möglichkeit auf den FuBa zu kommen OHNE diese aufwändige Teilstring Suche?

Re: Wie finde ich die Implementation eines ENHANCEMENT-POINTs?

Beitrag von a-dead-trousers (Top Expert / 4443 / 226 / 1194 ) »
Wenn du in der SE80 bist (bzw. SE37 und dann links den Baum aufblenden) kannst du einen Doppelklick auf die Funktionsgruppe machen und dann auf "Rahmenprogramm" klicken. Dann siehst du den eigentlichen (Programm-)Namen der Funktionsgruppe.
Im Grunde baut sich dieser aber auch wieder aus SAPL+Name der Funktionsgruppe zusammen.

Der Name der hinten bei SPOTS angegeben ist, kann meines Wissens vom jeweiligen Entwickler frei gewählt werden und nur durch "Zufall" lautet der in diesem Fall ähnlich wie die Funktionsgruppe. Daher würde ich mich nicht darauf verlassen.

Wenn du im Code die Einsprungspunkte für USER-EXITs finden möchtest, musst du nach "CALL CUSTOMER-FUNCTION" in der Funktionsgruppe (Rahmenprogramm) suchen. Von dort aus kann man dann auch mit einem Doppleklick auf die EXIT_...-Bausteine verzweigen.
Für IDOC_OUTPUT_SHPMNT finde ich zum Beispiel entsprechende Aufrufe in den Includes LV56KF0B (Zeile 38) und LV56KF0I (Zeile 12).

Um Aufrufe von BAdIs zu finden gibt es dann zwei unterschiedliche Ansätze: Neue BAdIs findet man über eine Suche nach "CALL BADI" und "Alte" BAdIs über eine Suche nach "cl_exithandler=>get_instance"
Gibt es übrigens auch beides in SAPLV56K.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Wie finde ich die Implementation eines ENHANCEMENT-POINTs?

Beitrag von black_adept (Top Expert / 4131 / 130 / 955 ) »
Einfacher Weg um die SMOD-Erweiterung zu finden.

Starte das Programm und setze im Debugger einen Breakpoint beim Befehl "CALL CUSTOMER-FUNCTION". Wenn du da dann anhältst kannst du in den FuBa reinsteppen ( falls der SMOD-Exit aktiv ist ) oder einfach in den Code navigieren und via Doppelklick auf den Befehl zum FuBa springen.

Den (jetzt echten) Namen des Funktionsbausteins merkst du dir und gehst in die SE16 für die Tabelle MODSAP und trägst den Namen des FuBa im Feld "Member" ein und du bekommst die Erweiterung.

Meist ist es dann auch noch sinnvoll in der SMOD die ersten Buchstaben der so gefundenen Erweiterung einzugeben + "*" um alles "in der Nähe" mit abzugrasen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1200
Views
Implementation of Tree upto multiple levels
von sumanth » 02.06.2005 14:31 • Verfasst in ABAP® Core
3
Antw.
2949
Views
Enhancement
von Mrs. Hilflos » 04.04.2008 08:29 • Verfasst in ABAP® Core
1
Antw.
1435
Views
Enhancement: ME58
von 82kolu1bma » 24.03.2016 09:27 • Verfasst in ABAP® für Anfänger
4
Antw.
3974
Views
Problem mit Implizitem Enhancement
von kbit100 » 16.02.2016 12:33 • Verfasst in ABAP® für Anfänger
2
Antw.
3066
Views
ENHANCEMENT-SECTION ändern
von debianfan » 10.04.2018 20:37 • Verfasst in ABAP® für Anfänger

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.