Objekt der rufenden Klasse in BAdI?

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).

Objekt der rufenden Klasse in BAdI?

Postby Ines3642 » Tue May 10, 2011 10:36 am

Hallo zusammen,

gibt es eine Möglichkeit, in einem BAdI Zugriff auf das aktuelle Objekt der rufenden Klasse zu erhalten?
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Re: Objekt der rufenden Klasse in BAdI?

Postby Katharina759 » Tue May 10, 2011 11:09 am

Hallo Panthor,

ich bin mir nicht sicher was Du meinst - kannst Du mal ein Beispiel nennen?
Katharina759
...
...
 
Posts: 250
Joined: Thu Jun 12, 2008 5:58 pm

Re: Objekt der rufenden Klasse in BAdI?

Postby Ines3642 » Tue May 10, 2011 11:29 am

Ein konstruiertes Beispiel (angelehnt an die ME_PROCESS_CUST):

- wir befinden uns in der Bestellung
- ein BAdI wird beim Prozessieren der Positionen gerufen
- das rufende Objekt ist die Bestellung
- im BAdI haben wir nur Zugriff auf die Daten der aktuellen Bestellposition
- wir wollen Prüfungen in Abhängigkeit von anderen Positionen realisieren

Nun wissen wir, dass das Objekt der Bestellung selbst Methoden bietet, die Daten der anderen Bestellpositionen zu lesen. Um diese zu erhalten, benötigen wir aber Zugriff auf die Bestellung bzw. das Objekt der Bestellung = rufendes Objekt.

Wie gesagt, der Fall ist nur konstruiert, da ich nicht sicher bin, ob nun in einer Methode des Bestellobjektes wirklich das BAdI gerufen wird. Es geht mir darum, wirklich Zugriff auf eben jenes Objekt zu haben, das das BAdI ruft (was in der echten ME_PROCESS_CUST kein Problem ist).

Unser konkreter Problemfall: wir befinden uns in einer POWL-Liste und implementieren dort ein BAdI. Im BAdI-Kontext stehen uns leider nicht alle benötigten Daten bzw. Informationen zur Verfügung, in der "rufenden Klasse" aber sehr wohl. Wir wissen auch, welches die rufende Klasse ist, wir haben jedoch keinen Zugriff darauf (aus dem BAdI heraus).

--> Vielleicht ist dieser aber doch möglich? Wenn ja, wie?
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Re: Objekt der rufenden Klasse in BAdI?

Postby Jonny2227 » Tue May 10, 2011 12:14 pm

Sali,

also ich realisiere so etwas in dem einen oder anderem BADI wo ich nicht alle benötigen Daten im Interface habe mit einem Dirty Assign - im Vorfeld schaue ich im Debugger - welche Programme geladen sind und dort suche ich dann wo in etwa ich die Daten die ich benötige her bekomme (das ist meist etwas tricky - aber klappt dann doch irgend wann). Die Daten stelle ich dann in locale Variablen etc. bearbeite diese und stelle sie zurück bei Bedarf.

Gruss Jens
Jonny2227
....
....
 
Posts: 605
Joined: Wed Mar 01, 2006 3:16 pm

Re: Objekt der rufenden Klasse in BAdI?

Postby Ines3642 » Tue May 10, 2011 1:18 pm

Hallo Jens,

vielen Dank für die Antwort!

Funktioniert der dirty assign denn auch im Klassensystem / OO-Kontext?
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Re: Objekt der rufenden Klasse in BAdI?

Postby Jonny2227 » Tue May 10, 2011 1:38 pm

Sali,

da ein BADI ja immer ein Interface ist - also ein OO Objekt - hat das keinerlei Auswirkungen auf den Assign - denn du ordnest ja dem Feldsymbol vom Type any die Referenzvariable aus dem Programm XY zu und wenn du dieses Feldsymbol dann einer localen Variable vom Type der benötigten Referenz zuordnest hast du was du brauchst. Du musst halt nur in den geladenen Programmen im Debugger suchen welche Daten du brauchst - damit du auch die richtigen erwischst. Das ist meist etwas zeitwaufwendig - aber mit etwas Geduld machbar.


Gruss Jens

P.S. unter ... tricktresor.de findest du auch die dirty Assign Lösung !
Jonny2227
....
....
 
Posts: 605
Joined: Wed Mar 01, 2006 3:16 pm

Re: Objekt der rufenden Klasse in BAdI?

Postby Ines3642 » Tue May 10, 2011 1:42 pm

Jap, im Tricktresor hab ich den dirty assign gefunden... ich benötige exakt ein Attribut bzw. den Wert eines Attributes aus der rufenden Klasse - werde es testen und berichten! 8)
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm


Return to ABAP Objects®

Who is online

Users browsing this forum: No registered users and 18 guests