sollte dieses Programm sein,...
wenn man sich gewisse Grundinformationen bereits angeeignet hat.
An dieWISSENDEN unter Euch folgende Fragen,die zum Verständnis des Programmes und der OP sehr wichtig sind und der im Laufe der nächsten Zeit sicher noch einige folgen werden.

))
In dem folgenden Programmlisting wird eine Methode equals aufgerufen mit pref2 als exporting argument(instanzobjekt der Klasse).
In equals
1.wird wohl ein Vergleich der Instanzen vorgenommen,.....
oder wie ist der Aufruf zu interpretieren.
2.beim Aufruf ist nur importing definiert (definition von equals).
also ein Rückgabewert existiert wohl nicht,..oder...
andernfalls..
was geschieht sonst mit dem Ergebnis result ?
woher stammt der ergebnischeck 0 im Aufruf ?
3.es wird eine Referenzvariable der Feldleiste zahrperson erzeugt.
und zwar pers_h.
Wozu wird sie benötigt und wie wird sie gefüllt ?
Zumal bei der Zuweisung ...
....importing e_pers = pers_h ein entsprechender Wert wohl importiert wird. Woher
4. Was ist e_pers ?
Zunächst mal ein Feld mit dem getattributes arbeitet ?
Kann man es im Sinne anderer Programmiersprachen als
Instanzattribut bezeichnen (obgleich ebenfalls Feldleiste und nicht
in Data definiert ?
Den Mutigen unter Euch nun das Programm. Zum Teil etwas skelettiert da bestimmte Methoden gar nicht aufgerufen werden.
Herzlichen Dank all denen die sich die Mühe machen mal in den Quelltext zu schauen und vielleicht sogar zu antworten.
Ach ja,..weitere Listings folgen für all jene, die sich mit AO beschäftigen möchten und vielleicht einarbeiten wollen.
Dieses Listing beschäftigt sich im Kern mit dem Aufbau von AO-Klassen und dem Erstellen von Referenzvariablen bzw Objekten.
Hier nun das Listing:
REPORT zahr_oo_002 .
* Referenzvariablen
*---------------------------------------------------------------------*
* CLASS Person DEFINITION
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
CLASS person DEFINITION.
PUBLIC SECTION.
TYPES: tz TYPE i,
tpnr TYPE zahrperson-pnr.
METHODS: constructor IMPORTING ipnr TYPE tpnr,
anzeigen,
setkinder IMPORTING ikinder TYPE i,
getattributes EXPORTING e_pers TYPE zahrperson,
equals IMPORTING i_person TYPE REF TO person
RETURNING value(result) TYPE i,
* Kopieren
copy RETURNING value(kopie) TYPE REF TO person.
CLASS-METHODS: getzaehler.
PRIVATE SECTION.
DATA: pers TYPE zahrperson.
DATA: kinder TYPE i.
CLASS-DATA zaehler TYPE tz.
ENDCLASS.
*---------------------------------------------------------------------*
* CLASS person IMPLEMENTATION
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
CLASS person IMPLEMENTATION.
* Kopieren
METHOD copy.
CREATE OBJECT kopie EXPORTING ipnr = pers-pnr.
ENDMETHOD.
METHOD constructor.
SELECT SINGLE * FROM zahrperson INTO pers WHERE pnr = ipnr.
zaehler = zaehler + 1.
ENDMETHOD.
METHOD anzeigen.
WRITE: / pers-pnr, pers-name, pers-vorname, kinder.
ENDMETHOD.
METHOD getzaehler.
WRITE: / 'Anzahl der Objekte', zaehler.
ENDMETHOD.
METHOD setkinder.
kinder = ikinder.
ENDMETHOD.
METHOD getattributes.
e_pers = pers.
ENDMETHOD.
METHOD equals.
DATA pers_h TYPE zahrperson.
CALL METHOD i_person->getattributes IMPORTING e_pers = pers_h.
IF pers-pnr = pers_h-pnr AND
pers-name = pers_h-name.
result = 0.
ELSE.
result = 1.
ENDIF.
ENDMETHOD.
ENDCLASS.
DATA: pref01 TYPE REF TO person,
pref02 TYPE REF TO person.
DATA vergl TYPE i.
START-OF-SELECTION.
CREATE OBJECT pref01 EXPORTING ipnr = 1.
CALL METHOD pref01->anzeigen.
CREATE OBJECT pref02 EXPORTING ipnr = 1.
CALL METHOD pref02->anzeigen.
ULINE.
IF pref01 = pref02.
WRITE: / 'Gleichheit'.
ELSE.
WRITE: / 'Ungleichheit'.
ENDIF.
ULINE.
IF pref01->equals( pref02 ) = 0.
WRITE: / 'Beide Objekte haben die gleichen Inhalte'.
ELSE.
WRITE: / 'Beide Objekte haben unterschiedliche Inhalte'.
ENDIF.
*
ULINE.
* kopieren
WRITE: / 'Kopieren'.
DATA pref03 TYPE REF TO person.
pref03 = pref01->copy( ).
CALL METHOD pref03->anzeigen.