Userexit EXIT_SAPMF02D_001

Getting started ... Alles für einen gelungenen Start.
16 Beiträge • Seite 1 von 2 (current) Nächste
16 Beiträge Seite 1 von 2 (current) Nächste

Userexit EXIT_SAPMF02D_001

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
Hallo zusammen,

habe ein kleines Problem. Der User-Exit stammt aus dem Vertriebsbereich, denke aber das Thema ist hier besser aufgehoben ;)
Folgenden User-Exit möchte ich nutzen, um bestimmt Kundendaten (bei Neuanlage bzw. Ändern eines Kundens) in eine z-Tabelle zu schreiben.

Mein Problem dabei ist folgendes:
Ich möchte in der z-Tabelle eine Spalte haben, wo vermerkt ist, ob es sich um eine Neuanlage oder eine Änderung des Kunden handelt.
Da der Userexit jedoch bei beiden Transaktionen durchlaufen wird (stimmt das?) weiß ich nicht, wo ich da herkomme. Kann ich dies aus den Kundendaten irgendwie herauslesen?
Mir ist zwar beim Debugging die Variable T020-AKTYP aufgefallen (H = Neuanlage, V = Ändern), in der Funktion des User-Exits ist diese jedoch, wie auch der ok_code, leider nicht gesetzt.
Habe ich da eine andere Möglichkeit? Oder geh ich von falschen Annahmen aus, habe nämlich jetzt nur das Ändern eines Kundens gedebuggt, nicht die Neuanlage -> wird dort doch ein anderer User-Exit ausgelöst?

Ich hoffe, ihr versteht mein Problem und könnt mir dabei kurz weiterhelfen, eventuell kommen dann aber noch weitere Fragen auf euch zu ;)

Gruß

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


Re: Userexit EXIT_SAPMF02D_001

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Der Exit wird beim Anlegen als auch beim Ändern durchlaufen.
Ob angelegt oder geändert wird, erkennst du an I_KNA1-KUNNR... ;)

Re: Userexit EXIT_SAPMF02D_001

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
Hey,

da wurde ich auch eben drauf gestoßen, dass diese bei interner Nummernvergabe erst nach dem Userexit vergeben wird, was für mich "etwas" doof ist.
Denn eine noch nicht vergebene Nummer in eine z-Tabelle zu schreiben ist doch etwas schwierig ;)
Muss ich mir wohl bei diesen Fällen etwas anderes überlegen...

Gruß

Edit:
Ich komm nicht drauf...
Gibt es irgendeine Möglichkeit, nach der internen Nummernvergabe noch etwas anzutriggern?
Weil ohne die Kundennummer bringt mir das ja alles nichts...
Klar könnte ich alle x Minuten einen Job durchlaufen lassen, der in der CDHDR nach der Anlage von Neukunden sucht, aber das würde ich gerne vermeiden...

Re: Userexit EXIT_SAPMF02D_001

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Evtl. kannst du den Badi "CUSTOMER_ADD_DATA" verwenden, um die Änderungen abzufragen.
Du könntest dir aber auch in ein Feld, das du nicht brauchst (oder eins, das du extra an die KNA1 anfügst) eine eindeutige Nummer schreiben, anhand derer du im Nachgang die Kundennummer identifizieren kannst. Ist sicherlich nicht schön, aber wenn's mit dem Badi nicht funktioniert...

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
km216


Re: Userexit EXIT_SAPMF02D_001

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
Ich werd mir den Badi mal anschauen.

Bin nebenbei noch auf das Thema BTE gestoßen http://www.abapforum.com/forum/viewtopic.php?t=14702.
Dort gibt es einen:
00001320
STAMMDATEN DEBITOR: Sichern
BUS3007
Debitorenkonto
CREATED
Konto eröffnet

(Eventuell würde das ja auch gehen, seltsamerweise zeigt mir SAP nichts an, wenn ich die im Thread genannte Transaktion (FIBF) öffne :/)
Edit: Das hab ich gefunden, muss oben über die Leisten gehen....

Ich guck dann mal nach dem Badi und was man sonst noch machen kann ;)

Danke schonmal.

Re: Userexit EXIT_SAPMF02D_001

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
Also, vielen Dank!
Ich habe es zwar noch nicht ausprobiert, aber denke, den Badi kann ich nutzen.

Habe die VD02 noch einmal gedebuggt, der Badi wird einiges später als das User-Exit aufgerufen.
Weiterhin habe ich in der SE18 nachgeschaut und bin darüber auf die einzelnen Methoden des BAdI's.

Zum Beispiel die Methode SAVE_DATA hat als Importing-Parameter die Kundennummer, also wird die da gesetzt sein.
Der zweite Import-Parameter ist I_Activity vom Typ AKTYP. Kann mir bitte jemand sagen, dass ich darüber auslesen kann, ob es sich um Neuanlage/Änderung handelt? Weil dann hab ich alles zusammen an einer Stelle und wäre erst einmal glücklich :-)

Bis es dann an Implementierung des BAdI's etc. geht, leider find ich da auf die Schnelle nichts, was mich weiterbringt, habe halt noch nie etwas mit BAdIs gemacht. Aber ich suche weiter.

gruß

Edit: Die zweite Variable ist tatsächlich der Aktivitätstyp (Neuanlage/Ändern) :-)
Nun informier ich mich mal übers BAdI implementieren, etc., aber nochmal Danke für die Hilfe!

Re: Userexit EXIT_SAPMF02D_001

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
Endlich habe ich wieder ein SAP-System zum rumspielen und was muss ich feststellen? Der BAdI hilft mir doch nicht weiter :(

Implementieren des BAdI's funktionierte problemlos, hab dahinter meine SELECT-Abfrage geklemmt um unter gewissen Bedingungen die Daten zu selektieren. Klappt bei Change auch prima, bei der Neuanlage hats mit den sy-subrc IMMER auf 4 gehauen, also keine passenden Daten gefunden.
Den Grund dafür hab ich aber dann selber heruasgefunden... Meine Select-Abfrage enthält einen Inner Join auf die knvv. Und diese wird natürlich erst nach dem BAdI gefüllt :/
Wollte hier also nur mitteilen, dass der BAdI für meinen Fall nicht funktioniert, ich schau mir nun RAISE_BTE_EVENT_1321 an, ich hoffe, das hilft mir dann endgültig weiter...

gruß

Re: Userexit EXIT_SAPMF02D_001

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
Was willst du denn über die KNVV abprüfen, bzw. was musst du zum Speichern deiner Daten denn noch alles wissen?

Re: Userexit EXIT_SAPMF02D_001

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
Hallo Casman,

also, ich brauche neben Daten wie Kundennummer/Adresse etc. aus der KNA1 noch die VKORG, ERDAT und 2 weitere aus der KNVV sowie einen Satz Daten (falls vorhanden) aus der KNBK. Die Daten aus der KNA1 selektiere ich auch nur, wenn die VKOrg passend ist.
Dann sollen diese Daten nämlich in eine zTabelle geschrieben werden, wo MII diese alle ~10 Minuten abholt und an ein anderes Programm (Non-SAP) weitergibt.

Meiner Ansicht nach habe ich jetzt 2 Möglichkeiten:
a) ich nutze den BAdI, schreibe mir aber erst einmal nur die KNA1-Daten in meine zTabelle. Dann gehe ich die zTabelle alle x Minuten in einem Job durch und lese die KNVV-Daten dazu. Ist die VKOrg nicht passend, werden die entsprechenden KNA1-Daten aus der zTabelle gelöscht, andernfalls die KNVV-Daten hinzugeschrieben.

b) Ich informier mich über Business Transaction Events und versuche es darüber hinzubekommen...

Über weitere Vorschläge oder Erfahrungen mit BTE wäre ich froh.

gruß

Edit: Mir ist grad endlich mal aufgefallen, dass ich im BAdI beim Ändern zwar die Kundennummer hab, aber die KNA1 noch nicht die aktuellen Daten. Also könnte ich an der Stelle nicht mehr machen, als mir die Kundennummer wegzuschreiben und irgendwann später die Daten dazu zu selektieren.
Gefällt mir aber so nicht :/

Re: Userexit EXIT_SAPMF02D_001

Beitrag von Ratazong (Specialist / 144 / 1 / 14 ) »
BTE 1321 scheint genau der richtige zu sein. Auszug aus Hilfe:

EVENT
Der Zeitpunkt wird beim Anlegen und Ändern eines Debitors nach der Verbuchung durchlaufen.

SCHNITTSTELLE
Die Schnittstelle stellt pro Datenbank-Tabelle jeweils die Daten zum aktuellen Stand als auch zum Stand vor der Änderung bereit.

Zu finden in der FB-Doku zu SAMPLE_INTERFACE_00001321.

MfG

Rata

Re: Userexit EXIT_SAPMF02D_001

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
Hey,

das mit dem BTE habe ich eben versucht, hänge jedoch gerade etwas...
Ich habe in der FIBF über Einstellungen -> Produkte -> eines Kunden ein neues Produkt angelegt. Dies ist ja erstmal nur die Vergabe eines Namens ohne besondere weitere Einstellungen.
Dann wollte ich über Einstellungen -> Prozesse -> eines Kunden meinen Funktionsbaustein eintragen. jedoch meint er dort. dass PROCS 1321 nicht in der TPS01 enthalten sei, was dieser auch nicht ist.

PROCS INTERFACE
00001240 SAMPLE_PROCESS_00001240
00001310 SAMPLE_PROCESS_00001310
00001410 SAMPLE_PROCESS_00001410
00001420 SAMPLE_PROCESS_00001420

Demzufolge wäre auch der Beispiel-Fuba von SAP nicht in der Tabelle enthalten...
Habe ich grundsätzlich etwas falsch gemacht?

Edit: Ja. habe ich... Da es ein P/S-Event ist, sollt man auch so eins anlegen :oops:

gruß

Re: Userexit EXIT_SAPMF02D_001

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
Also,

wenn man es als P/S-Baustein registriert, funktioniert das auch prima.
Habe dann dort meine Funktion hintergeklemmt, die mir einen Haufen (bereits aktualisierter !) Daten importiert.
Zum Beispiel sind dies alle KNA1- und alle KNVV-Daten zu dem Kunden.
Ebenso ein paar Flags, die mir zeigen, was mit welchen Daten gemacht wurde.

z.B. UPD_KNA1 bzw. UPD_KNVV
Sitzen diese auf 'I' -> Insert von Daten (Neuanlage)
Sitzen diese auf 'U' -> Update von Daten (wird nur VKOrg geändert, sitzt auch nur UPD_KNVV auf U)
Sind diese leer -> keine Änderung an den entsprechenden Daten.

Das nur mal als kurzen Überblick, was einem das BTE alles bringt, hilft ja eventuell noch jemand anderem weiter.

Viele Grüße

Edit:
Anbei auch noch ein sehr guter Link zum Thema BTE:
http://www.erpgenie.com/sap-technical/a ... events-bte

Re: Userexit EXIT_SAPMF02D_001

Beitrag von fzpwier (ForumUser / 1 / 0 / 0 ) »
Wahrscheinlich es ist jetzt zu spät für die Antwort, aber vielleicht braucht sie noch jemand:

Im User-Exit lässt sich die sy-tcode abfragen und verwenden.

Gruß
Andrzej

Re: Userexit EXIT_SAPMF02D_001

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Da würde ich mich nicht drauf verlassen! Wegen Call Transaction und BAPI.
Es gibt T180-TRTYP. Der hat folgende Ausprägungen:
H = Create
V = Ändern
A = Anzeige

Re: Userexit EXIT_SAPMF02D_001

Beitrag von SWENDLER (ForumUser / 2 / 0 / 0 ) »
Ich versuche gerade über den BTE 1321 Daten in der KNVV zu ändern.
Wenn Feld KNA1-Land1 einen geänderten Wert hat, soll dieser in ein Feld der KNVV geschrieben werden.

Grundsätzlich kann ich alles bearbeiten und prüfen und im DEBUG kann ich sehen, dass meine Änderungen in die betreffende Struktur i_knvv übernommen werden.

Leider wird die Änderung trotz Eintrag in der Struktur I_ADD_ON_DATA nicht geschrieben.
Hat jemand noch eine zündende Idee ?

Vergleichbare Themen

1
Antw.
1554
Views
Batchinput Debitoren SAPMF02D 0370
von Ucke » 19.03.2007 10:56 • Verfasst in Sales and Distribution
3
Antw.
5575
Views
XD01 (SAPMF02D) - Erweiterung, kopieren eigener Felder
von derhintermdeich » 18.10.2011 14:11 • Verfasst in ABAP® Core
2
Antw.
4827
Views
Was ist der Unterschied zw. customer exit & user exit
von bohne » 07.02.2007 21:04 • Verfasst in ABAP® für Anfänger
0
Antw.
1325
Views
Userexit
von swonny » 28.09.2007 09:22 • Verfasst in ABAP® für Anfänger
4
Antw.
2399
Views
Suche UserExit
von 82kolu1bma » 21.03.2016 09:35 • 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.