ich bin ganz neu in der MM-Welt und habe nun eine Aufgabe in der Transaktion MIGO, eine Fehlermeldung einzubauen, falls der Anwender auf Buchen klickt, es allerdings zu dem falschen Lieferanten gebucht wird. Nun wäre die erste Frage, wo sehe ich den Code(also das Programm) wo ich die Fehlermeldung einbauen soll, wäre mal so die erste Frage. Okay so wie ich gesehen habe in SAPLMIGO. Wie oder wo finde ich dort am besten den Teil bei dem auf Buchen geklickt wird?
Weiß jemand wie man die prinzipiell am besten rangeht und das löst?
Kennt sich da jemand vielleicht damit aus und wäre so nett und könnte mir dabei helfen?
Ich habe bisher immer nur Z-Programme umprogramiert, dies wäre allerdings ein SAP-Programm. Wie geht man da prinzipiell dabei vor?
hmm das kann ich bisher auch noch nicht so genau sagen, weil ich nicht weiß wie man ein SAP-Programm debuggt. Ich habe bisher immer nur Z-Programme debuggt und da ist es ja klar. Dies ist aber nun ein Programm direkt von SAP. Mal eine eventuell blöde Frage, wie debuggt man so ein Programm?? Im Transaktionscodefeld "/h" eingeben und F8??
Kann man eigentlich direkte Programme von SAP einfach so umprogrammieren?? Wenn ja, weiß jemand wie das funktioniert? Vielleicht mit solchen User-Exits??
ja auch SAP Standardprogramme lassen sich anpassen, dazu gibt es User-Exits und neuer Badis.
Um ein Standardprogramm anzupassen wird auch ein Schlüssel von SAP benötigt.
Gruß Wolfgang
Folgende Benutzer bedankten sich beim Autor wreichelt für den Beitrag: L0w-RiDer
schau dir mal den BAdI "MB_MIGO_BADI" und im speziellen die Methode
"CHECK_HEADER" (der Lieferant steht in den Kopfdaten) an.
Ich denke diese erfüllt deine Anforderungen.
Ich hätte leider noch nie mit BADI´s gearbeitet. Ich habe mich dort jetzt mal ein bisschen eingelesen. Es wäre wohl so, dass man damit ein SAP-Programm einfach verändern kann, oder? Wie baut man denn so ein BADI in ein SAP-Programm ein?? Weiß das jemand?
BAdI´s, User-Exits, ... sind bereits an definierten Stellen eingebaut.
Die "Kunst" ist hier den richtigen BAdI zu finden welcher dir zum richtigen Zeitpunkt die gewünschte Funktionalität bietet.
Die Implementierung eines BAdI´s kannst du über die SE19 oder auch SE18 anlegen.
In deinem Fall würde ich die SE19 (Implementierung anlegen -> Klassisches BAdI) verwenden.
BAdI`s stellen die ein Interface zur Verfügung welche über eine eigene Klasse implementiert werden.
Für Exits (von SAP definierte, ausprogrammierbare Funktionsbausteine) verwendet man in aller Regel die SMOD/CMOD.
So, dass mal auf die Schnelle...
Ich würde mich aber generell einmal über die verschiedenen Erweiterungsmöglichkeiten von SAP-Programmen schlau machen, da es unterschiedliche Techniken (User-Exits, Customer-Exits, BAdI`s, Erweiterungsspots, Implizite Erweiterungen, Modifikationen,...) gibt.
Ach ja, und immer schön die Doku zu den Erweiterungen lesen. Hier erfährt man in aller Regel was man tun kann, darf und was nicht 😉
Grüße
Matze
Folgende Benutzer bedankten sich beim Autor M@atze! für den Beitrag: L0w-RiDer
Okay, also ist das so zu verstehen, dass diese BADI´s bereits in den Programmen programmiert sind, z.B. bei der MIGO und man diese bei Bedarf ein- und ausschalten kann, bzw. umprogrammieren kann?
an definierten Stellen im Standard-Code wird geprüft ob eine Implementierung zu einem bestimmten BAdI vorliegen. Wenn ja wird diese durchlaufen, wenn nicht ... nicht.
BAdI's oder auch User-Exits stellen dir "nur" eine definierte Schnittstelle zur Verfügung und müssen ausprogrammiert werden. Teilweise sind Standard- oder Beispielimplementierungen vorhanden.
Viel Erfolg!
Grüße
Matze
Folgende Benutzer bedankten sich beim Autor M@atze! für den Beitrag: L0w-RiDer
eigentlich sollte er dich nach einem Implementierungsnamen fragen.
Probiers mal über die SE18. Kannst du dir die Definition hier anzeigen lassen und eine Implementierung anlegen?
okay ich bin nun über die se18 rein und habe bei BADI-Namen "MB_MIGO_BADI" eingegeben und es mir anzeigen lassen (siehe Bild). Was müsste ich nun für die Implementierung tun?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Oben in der Menüleiste "Implementierung"->"Anlegen".
Dann Implementierungsname angeben (Z...).
Ein Wizzard leitet dich durch den Prozess.
Am Ende hast du eine eigene Z-Klasse, deren Methoden du ausprogrammieren kannst.
Nicht vergessen die Implementierung zu aktivieren.
Du siehst diese dann auch relativ schön in der SE80 im jeweiligen Paket.