Customer-Exits (Transaktionen CMOD und SMOD)
Siehe User-Erweiterungen.
Customer-Exits werden durch Funktionsbausteine realisiert. Call Customer Funktion, bzw. häufig Call Funktion.
EXIT_<hauptprogrammname>_<3stellige Nummer>
Klassifizierung Funktionsbaustein Exit
- Programm (Coding) Exits
- Screen Exits
- Menü Exits
- Field Exits
Suchmöglichkeiten
- Customizing
- Transaktionen CMOD und SMOD
- Funktionsbausteinname: "EXIT_<hauptprogrammname>_<3stellige Nummer>"
Beispiel Erweiterung MEREQ001
Transaktion SMOD
- Es kann mit der Transaktion SMOD nach einer Kundenerweiterung gesucht werden. Z.B. mit dem Suchbegriff „Bestellanforderung“.
- Gefunden wird zum Beispiel die Erweiterung: MEREQ001.
- Obwohl diese Erweiterung auf kundeneigene Felder abzielt, können hier auch die Standardfelder verprobt werden. Dies bezieht sich auf die Felder der Struktur MEREQ_ITEM_S_CUST_ALLOWED.
- EXIT_SAPLMEREQ_005 kann für die Verprobung einer Zeile genutzt werden.
- EXIT_SAPLMEREQ_010 kann für die Verprobung beim Sichern genutzt werden.
- EXIT_SAPLMEREQ_008 ist direkt vor der Verbuchung (Prepare).
Coding
Customer-Exit wird angesprungen in der Anwendung
- Der Customer-Exit wird in der BANF angesprochen
Transaktion CMOD (Beispiel Erweiterung COOMEPO1)
In der CMOD wird ein Projekt angelegt, in dem die Erweiterung eingebunden wird. Das Projekt kann dann aktiviert werden, sodass das implementierte Coding im Customer-Exit auch in der Anwendung ausgeführt wird.
- Transaktion SMOD ausführen
- Hier Projekt ZCOOMEP0 eintragen
- Erweiterung COOMEPO1 zuordnen
Das erste "Streichholz" aktiviert die Erweiterung, das zweite deaktiviert die Erweiterung.
An dem Ampelsymbol erkennt man, dass die Erweiterung aktiv ist und am Haken , dass hier ein Funktionsexit implementiert ist.
Eine Implementierung kann durch Doppelklick aufgerufen werden, wie hier z. B. der Funktionsbaustein EXIT_SAPLKAEP_009.
Hier ist ein Z-Include eingebunden. Wieder ein Doppelklick springt in den Include.
Das Coding des Includes / des Customer-Exits ist zu sehen und kann hier auch direkt bearbeitet werden. Da es ein Z-Include ist und im Kundennamensraum liegt, ist es keine Modifikation und es muss bei der Basis keine Änderungsnummer angefordert werden.
Aktivierung SMOD-Erweiterung durch Test/F8 und Aktivierung der Erweiterung
- Alternativ zum Anlegen eines Kundenprojektes und Einbinden der Erweiterung in das Kundenprojekt, kann man auch in der Transaktion SMOD die Erweiterung aktivieren durch F8, bzw. "Testen".
- Dieses Aktivieren muss allerdings in jedem System vorgenommen werden. Die Aktivierung wird nicht transportiert. Es kann aufgrund der Berechtigungen auch im Produktivsystem verboten sein hier die Aktivierung vorzunehmen. Selbst wenn es möglich ist im Produktivsystem die Aktivierung vorzunehmen, muss man nach dem Produktivtransport daran denken.
- Sauberer und sicherer ist es die Aktivierung über ein Projekt in der Transaktion CMOD vorzunehmen. Über CMOD sieht man auch welche Erweiterungen genutzt werden.
- Es ist daher dringend zu empfehlen die Aktivierung der Erweiterung über SMOD nur im Testsystem zu machen, bzw. in jedem System die Aktivierung über CMOD und ein Projekt vorzunehmen.
Im Testsystem kann nach Auswahl der Erweiterung in der Transaktion SMOD und F8 die Erweiterung aktiviert werden.
Nach dem Klick auf den Aktivieren-Button wird die Ampel grün und die Erweiterung ist aktiv. Hier kann auch die Erweiterung wieder deaktiviert werden durch die Deaktivierungs-Schaltfläche neben dem Aktivieren-Button.
Tabelle MODSAP
- In der Tabelle MODSAP stehen die Customer-Exits.
Web-Links
Literatur
- "Kundeneigene Erweiterungen mit ABAP: User-Exits, klassische und neue BAdIs, Switch und Enhancement Framework, Erweiterungen für S/4HANA u.v.m", von Felix Roth, Kapitel 21.2 "Customer-Exits"