Abap Objects die 1. Ein guter Einstieg......

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
2 Beiträge • Seite 1 von 1
2 Beiträge Seite 1 von 1

Abap Objects die 1. Ein guter Einstieg......

Beitrag von Gast ( / / 0 / 3 ) »
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.

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


Beitrag von joe_983 ( / / 0 / 3 ) »
Auf die Schnelle:

ad 1: Mit equals wird der Inhalt überprüft. Zwei Objekte lassen sich inhaltlich nicht mit gleich (=) überprüfen. Damit lässt sich lediglich die Referenz überprüfen wie das bspw. bei elementaren Datentypen der Fall ist.
z.B. lassen sich zwei Integer-Variablen problemlos auf Wertgleichheit überprüfen. Wenn a und b jeweils 5 sind, dann ergibt (a = b) true.
Für Objekte gilt das nicht. Obwohl inhaltlich möglicherweise gleich, liefert (a = b) u.U. false, nämlich dann wenn es sich um unterschiedliche Referenzen handelt. Daher wird i.d.R. von Ojekten bzw. Klassen die Methode (equals) zur Verfügung gestellt, mit der die inhaltliche Gleichheit überprüft werden kann. Ist übrigens immer wieder ein gern gemachter Anfängerfehler.

ad 2: das ist so nicht richtig. Es ist auch returning definiert. Das ist der Rückgabewert:

Code: Alles auswählen.

equals IMPORTING i_person TYPE REF TO person 
[b]RETURNING value(result) TYPE i, [/b]
ad3:

Code: Alles auswählen.

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. 
pers_h wird durch die Methode 'getattributes' gefüllt. Übergeben wird die Referenz des Objekts auf die Referenzvariable pers_h. Da es sich hier um einen Methodenaufruf handelt, bedeutet IMPORTING das, was die Methode zurückgibt! pers_h ist notwendig, um das aktuelle Objekt mit dem zu vergleichenden Objekt in der Methode equals durchführen zu können.

ad 4: e_pers ist der Schnittstellenparameter der Methode getattributes und ist definiert als Objekt vom Type zahrperson. Siehe in der Klassendefinition:

Code: Alles auswählen.

getattributes EXPORTING e_pers TYPE zahrperson
Gruss
joe_983

Seite 1 von 1

Vergleichbare Themen

4
Antw.
6457
Views
Einstieg als SAP-Abap Entwickler oder eher nicht
von l.isa » 09.02.2023 07:16 • Verfasst in ABAP® für Anfänger
6
Antw.
9080
Views
Umstellung ABAP auf ABAP Objects
von Andreas G » 25.07.2006 12:46 • Verfasst in ABAP Objects®
11
Antw.
13766
Views
Einführung in ABAP Objects
von jspranz » 01.10.2008 12:36 • Verfasst in ABAP Objects®
0
Antw.
2847
Views
uml-modellierungstool für abap objects
von rambozola » 01.12.2006 10:23 • Verfasst in ABAP Objects®
6
Antw.
5702
Views
vorteile abap objects
von rambozola » 18.01.2007 10:01 • Verfasst in ABAP Objects®

Über diesen Beitrag

Anonymous
Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Ermittlung der Arbeitstage (Mosid)
vor 2 Tagen von Radinator 11 / 45936
LSMW-Problem
vor einer Woche von DeathAndPain gelöst 6 / 3839
SFP (Adobe Forms) QR-Code wird nicht angezeigt
vor einer Woche von Sebastian82 gelöst 4 / 2322

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.

Aktuelle Forenbeiträge

Ermittlung der Arbeitstage (Mosid)
vor 2 Tagen von Radinator 11 / 45936
LSMW-Problem
vor einer Woche von DeathAndPain gelöst 6 / 3839
SFP (Adobe Forms) QR-Code wird nicht angezeigt
vor einer Woche von Sebastian82 gelöst 4 / 2322