was bedeutet =>

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

was bedeutet =>

Beitrag von bohne (Specialist / 437 / 0 / 0 ) »
Hallo!

Was bedeutet eigentlich folgendes Zeichen
=>
und was passiert an folgender Stelle ?
descr_ref =
cl_abap_typedescr=>describe_by_data( s_stadt ).

Code: Alles auswählen.

TYPES:
   BEGIN OF t_stadt,
      plz(5) TYPE N,
      ort(25) TYPE C,
   END OF t_stadt.

DATA:
   s_stadt TYPE t_stadt,
   descr_ref TYPE REF TO cl_abap_typedescr.


   descr_ref =
       cl_abap_typedescr=>describe_by_data( s_stadt ).

   WRITE: / 'Typename: ', descr_ref->absolute_name,
          / 'Art: ', descr_ref->type_kind,
          / 'Laenge: ', descr_ref->length,
          / 'Dezimalstellen: ', descr_ref->decimals.
Viele Grüße
bohne

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


Beitrag von Charadin (Specialist / 148 / 0 / 0 ) »
Hallo bohne,

Der Operator => wird als Klassenkomponenten-Selektor bezeichnet.
Über ihn kann man auf ein statisches Attribut oder eine statische Methode einer Klasse zugreifen.

In Deinem Beispiel wird die Methode describe_by_data der Klasse cl_abap_typedescr aufgerufen, dabei wird ein Übergabeparameter(s_stadt) übergeben. Das Ergebnis wird als Returning-Parameter an descr_ref übergeben.
Gruß,
Charadin

Beitrag von bohne (Specialist / 437 / 0 / 0 ) »
Hallo Charadin!

Vielen Dank für die Aufklärung!

Wenn man das nicht so schreiben würde
descr_ref =
cl_abap_typedescr=>describe_by_data( s_stadt ).
so könnte man auch auf die restlichen Funktionen der Klasse nicht zugeifen
descr_ref->absolute_name
oder
descr_ref->length
denn dann bekäme man die Fehlermeldung
Zugriff über 'NULL' Objektreferenz nicht möglich
Dass man über => ein statisches Attribut oder eine statische Methode der oder einer Klasse zugreifen kann ist OK allerdings lebt descr_ref
in dem Fall von dem Rückgabewert .
(Das Ergebnis wird als Returning-Parameter an descr_ref übergeben.)
Mit anderen Worten ist mir das nicht ganz klar wie man hier auf die
Methoden einer abstrakten Klasse zugreift bzw einer abstrakten Klasse
quasi instanziert.
Abstrakte Klassen sollten nur als Basisklasse für die Definition
weiterer Klassen verwendet werden.
Viele Grüße
bohne

Beitrag von Charadin (Specialist / 148 / 0 / 0 ) »
mir ist jetzt nicht ganz klar, worauf Du hinauswillst...

Hier ein Auszug aus dem Buch "ABAP Objects" zum Thema "Abstrakte Klassen", vielleicht beantwortet das Deine Fragen:
...
Von einer solcherart definierten Klasse können Sie keine Objekte mit CREATE OBJECT erzeugen und demnach auch nicht auf die Instanzkomponenten der Klasse zugreifen. Die statischen Komponenten einer abstrakten Klasse können jedoch durchaus benutzt werden, denn für sie ist keine Instanz nötig. Der Hauptzweck abstrakter Klassen ist ihre Rolle als Vorlage für Unterklassen. Von abstrakten Klassen können nicht-abstrakte Unterklassen abgeleitet werden, von denen dann Objekte erzeugt werden können.
...
Gruß,
Charadin

Beitrag von bohne (Specialist / 437 / 0 / 0 ) »
Hallo Charadin das entspricht etwa dem was ich
zuvor gesgt habe:

Abstrakte Klassen sollten nur als Basisklasse für die Definition
weiterer Klassen verwendet werden.

DESCRIBE_BY_DATA ist eine statische Methode
der Klasse cl_abap_typedescr und somit
ist diese Schreibweise völlig legitim
cl_abap_typedescr=>describe_by_data( s_stadt ).

Mir war nur unklar dass man
das Ergebnis an descr_ref übergibt und damit
(siehe write) weiterarbeitet:

descr_ref->absolute_name
descr_ref->type_kind
descr_ref->length
descr_ref->decimals


Laut Quellcode (siehe Class Builder TA SE24)
steht allerdings folgendes:
P_DESCR_REF = RETURNING_REF.
Damit ist mir klar dass diese statische Methode
ein P_DESCR_REF zurückgibt. Das verhindert
sozusagen dass man NULL Refrenz bekommt.
Viele Grüße
bohne

Seite 1 von 1

Vergleichbare Themen

5
Antw.
4131
Views
was bedeutet der *
von RiffRaff » 02.08.2004 14:01 • Verfasst in ABAP® Core
1
Antw.
1076
Views
was bedeutet *
von dimes » 07.07.2006 08:27 • Verfasst in ABAP® Core
1
Antw.
1358
Views
Was bedeutet die Fehlermeldung:...
von MASTERmind » 01.10.2007 14:57 • Verfasst in ABAP® Core
4
Antw.
1366
Views
Was bedeutet 'Destination xxx is not available'
von HenryKarn » 11.08.2021 15:55 • Verfasst in Java & SAP®
6
Antw.
931
Views
was bedeutet := zwischen 2 Variablen
von Der Formulator » 05.03.2021 19:16 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

SELECT CHAR16 in CHAR12-Feld
vor 24 Minuten von Patrick1982 gelöst 5 / 54
alv_grid aktualisieren
vor 5 Stunden von Egzon gelöst 4 / 81

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

SELECT CHAR16 in CHAR12-Feld
vor 24 Minuten von Patrick1982 gelöst 5 / 54
alv_grid aktualisieren
vor 5 Stunden von Egzon gelöst 4 / 81

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 134
Group Items auf einer Filterbar
vor 5 Wochen von Bright4.5 1 / 170