FORMS und "TYPE REF TO object"

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

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

FORMS und "TYPE REF TO object"

Beitrag von m.andreschak (ForumUser / 22 / 2 / 3 ) »
Hallo zusammen,

kann mir das vielleicht jemand erklären?

Dankeschön!
object.png

Hier noch einmal zum nicht-abtippen

Code: Alles auswählen.

START-OF-SELECTION.
  DATA lx_root   TYPE REF TO cx_root.

  TRY.

    CHECK:   30 / 0 = 4.

  CATCH cx_sy_arithmetic_error INTO lx_root.
    PERFORM some_random_form USING lx_root.
  ENDTRY.


FORM some_random_form USING io_object TYPE REF TO object.

  CHECK io_object IS BOUND.

  " ... + some more stuff
ENDFORM.
Zuletzt geändert von m.andreschak am 20.04.2020 20:44, insgesamt 1-mal geändert.

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


Re: "CX_ROOT" und "TYPE REF TO object"

Beitrag von gtoXX (Specialist / 185 / 34 / 31 ) »
Ich habe ewig keine Forms mehr benutzt.

CX_Root erbt scheinbar aufgrund seiner Besonderheit nicht von OBJECT.

Wenn du REF TO cx_root schreibst geht es.

Aber bitte die Variablen-Bennung überdenken. bei lx_root weist eigentlich keiner das das ein objekt ist.
"Code lügt nicht ^^"

Re: "CX_ROOT" und "TYPE REF TO object"

Beitrag von m.andreschak (ForumUser / 22 / 2 / 3 ) »
Hey,
gtoXX hat geschrieben:
19.04.2020 13:06
Ich habe ewig keine Forms mehr benutzt.
Ok.
gtoXX hat geschrieben:
19.04.2020 13:06
CX_Root erbt scheinbar aufgrund seiner Besonderheit nicht von OBJECT.
Doch, tut es. Alle Interface- und Objektreferenzen (auch Exceptions) erben von OBJECT.
gtoXX hat geschrieben:
19.04.2020 13:06
Wenn du REF TO cx_root schreibst geht es.
Jo, danke. Ziel ist aber nicht, dass das Form nur Exceptions entgegen nehmen kann.
Es klappt ja auch, wenn ich vor den PERFORM das lx_root in ein separates data mit type object caste. Aber das war nicht die Frage. :-(
gtoXX hat geschrieben:
19.04.2020 13:06
Aber bitte die Variablen-Bennung überdenken. bei lx_root weist eigentlich keiner das das ein objekt ist.
"some_random_form" ist auch nicht wirklich aussagekräftig. Ich wollte nicht die Notation diskutieren.


Es ist mir auch klar, dass das Ganze mit einer Methode statt FORM funktioniert - genau mit diesem Typing. Die ABAP-Hilfe lautet wie folgt:

"General Rules for Typing

[...]

•If reference variables are passed, Up Casts are possible butDown Casts are not. If actual parameters are passed to input parameters typed as reference variables, an Up Cast is only possible if there is no change of content within the procedure."

Es klappt aber auch nicht, wenn ich den USING-Parameter mittels VALUE(...) explizit READ-ONLY schalte.. ich möchte es halt bitte nur verstehen.

Gruß,

Re: "CX_ROOT" und "TYPE REF TO object"

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
FORMs verstehen keine Vererbung.

Code: Alles auswählen.

REPORT.

CLASS main DEFINITION.
  PUBLIC SECTION.
ENDCLASS.

CLASS sub DEFINITION INHERITING FROM main.
  PUBLIC SECTION.
ENDCLASS.

START-OF-SELECTION.

  DATA(subtest) = NEW sub( ).
  PERFORM test USING subtest.

FORM test USING main TYPE REF TO main.

ENDFORM.
SAP Editor hat geschrieben:In PERFORM or CALL FUNCTION "TEST", the actual parameter "SUBTEST" is incompatible with the formal parameter "MAIN".
Laut dem Ausschnitt in der Doku müsste es ja aber eigentlich funktionieren...

Re: "CX_ROOT" und "TYPE REF TO object"

Beitrag von gtoXX (Specialist / 185 / 34 / 31 ) »
m.andreschak hat geschrieben:
19.04.2020 14:42

"some_random_form" ist auch nicht wirklich aussagekräftig. Ich wollte nicht die Notation diskutieren.

Naja hier ist ein Forum. Und gerade Anfänger lernen dann von schlechter Notation.


Und ich sehe Enno hat Recht. Bei einer Methode ist das ganze kein Problem.
Wie gesagt ich verwende nirgends mehr Forms.
"Code lügt nicht ^^"

Re: "CX_ROOT" und "TYPE REF TO object"

Beitrag von m.andreschak (ForumUser / 22 / 2 / 3 ) »
Ich glaube die entscheidenden Hinweise hier in der Hilfe gefunden zu haben:

1) unter "Generic ABAP Types "
"•The object type object plays a special role, because strictly speaking it is not a genuine generic type but the empty root class of all object classes of ABAP Objects. On the one hand, an object reference variable typed with REF TO object behaves like a data reference variable typed with REF TO data by being able to point to any objects. On the other hand, however, this is based only the general attribute of reference variables that they can point from the static type of a superclass to objects of the respective subclass."



2) unter "typing Addition - generic_type ":
"To generically type a formal parameter or a field symbol, you can
•specify any generic ABAP type generic_type (except object) after TYPE."
sowie
"•specify a field symbol visible at this position (<generic_fs>) or a formal parameter (generic_para) with generic typing, after LIKE. The typing you have defined is applied when the field symbol/parameter is declared. In method parameters, all generic typings are possible. No complete generic typings are possible in parameters of subroutines and field symbols."

Gut versteckt, aber so ist man zumindest schlauer am Ende.

Danke allerseits.

Folgende Benutzer bedankten sich beim Autor m.andreschak für den Beitrag:
tm987456


Seite 1 von 1

Vergleichbare Themen

1
Antw.
1933
Views
Name eines mit TYPE REF TO OBJECT übergebener Klasse erfahr.
von stele » 13.10.2004 14:06 • Verfasst in ABAP Objects®
4
Antw.
180
Views
Type aus Type ermitteln
von akosch » 13.02.2023 14:03 • Verfasst in ABAP® für Anfänger
0
Antw.
3055
Views
EWM SAP ArchiveLink: Object ID
von dimes » 12.01.2011 11:31 • Verfasst in Basis
2
Antw.
999
Views
authority object
von kostonstyle » 18.03.2008 13:53 • Verfasst in ABAP® für Anfänger
1
Antw.
6298
Views
assignment to CO Object
von techconsultant » 10.03.2005 07:28 • Verfasst in Application Related

Über diesen Beitrag


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

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141