gelöst Feldsymbol mit Objektreferenz -> direkter Zugriff Attribute


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

Moderatoren: Jan, Steff

gelöst Feldsymbol mit Objektreferenz -> direkter Zugriff Attribute

Beitragvon Romaniac » 06.11.2018, 12:00

Hallo zusammen,

eine Frage an die OO Gurus, ich bekomme von einem BADI eine interne Tabelle zurück die nur Referenzen enthält, jetzt möchte ich ein Atribut in der Loop Schleife ohne Umwege auswerten:

Code: Alles auswählen
        LOOP AT lt_attrib_values ASSIGNING FIELD-SYMBOL(<lw_attrib_values>).

        ENDLOOP.


Das Feldsymbol hat folgenden Inhalt:
<LW_ATTRIB_VALUES> -> {O:627*\CLASS=CL_SRM_ATTRIBUTE_VALUE}

Die Referenz:
{O:627*\CLASS=CL_SRM_ATTRIBUTE_VALUE}-IF_SRM_ATTRIBUTE_VALUE~ID -> CASE_TYPE

Ich würde das gerne mit einem CASE auswerten ohne erst eine Referenzvarialbe zuweisen zu müssen, geh sowas in der Art:
Code: Alles auswählen
CASE <LW_ATTRIB_VALUES>-IF_SRM_ATTRIBUTE_VALUE~ID
  WHEN 'CASE_TYPE'.
...
 


Danke und Gruß,

Wolfgang
Geht nicht gibts nicht
Romaniac
Specialist
 
Beiträge: 100
Registriert: 20.03.2017, 10:31
Wohnort: Augsburg
Dank erhalten: 16 mal
Ich bin: Freiberufler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Feldsymbol mit Objektreferenz -> direkter Zugriff Attrib

Beitragvon a-dead-trousers » 06.11.2018, 12:07

Die Syntax wäre:
Code: Alles auswählen
CASE <LW_ATTRIB_VALUES>->IF_SRM_ATTRIBUTE_VALUE~ID.
oder
Code: Alles auswählen
CASE <LW_ATTRIB_VALUES>->ID.

Je nachdem von welchem Datentyp "lt_attrib_values" bzw. "<LW_ATTRIB_VALUES>" ist.

Wenn es sich um ein generisches "REF TO OBJECT" handelt oder der Datentyp keine direkte Vererbung bis zum Interface IF_SRM_ATTRIBUTE_VALUE aufweist, muss noch ein CAST dazwischen.
Code: Alles auswählen
CASE CAST IF_SRM_ATTRIBUTE_VALUE( <LW_ATTRIB_VALUES> )->ID.
Alte Syntax:
Code: Alles auswählen
DATA: lr_cast TYPE REF TO IF_SRM_ATTRIBUTE_VALUE.
lr_cast ?= <LW_ATTRIB_VALUES>.
CASE lr_cast->ID.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Für diese Nachricht hat a-dead-trousers einen Dank bekommen :
Romaniac
a-dead-trousers
Top Expert
 
Beiträge: 3185
Registriert: 07.02.2011, 13:40
Dank erhalten: 789 mal
Ich bin: Entwickler/in

Re: Feldsymbol mit Objektreferenz -> direkter Zugriff Attrib

Beitragvon Romaniac » 06.11.2018, 12:27

Hallo adt,

bevor ich das gepostet habe habe ich natürlich selber rumprobiert im Debugger und da hat es seltsamerweise nicht funktioniert. Jetzt funktioniert es genau so wie in meinem Beispiel mit
Code: Alles auswählen
    CASE <LW_ATTRIB_VALUES>->IF_SRM_ATTRIBUTE_VALUE~ID.


Danke!

Gruß Wolfgang
Geht nicht gibts nicht
Romaniac
Specialist
 
Beiträge: 100
Registriert: 20.03.2017, 10:31
Wohnort: Augsburg
Dank erhalten: 16 mal
Ich bin: Freiberufler/in

Re: Feldsymbol mit Objektreferenz -> direkter Zugriff Attrib

Beitragvon a-dead-trousers » 06.11.2018, 12:45

In deinem ersten Post hat ein ">" gefehlt. Ich hab es für einen Flüchtigkeitsfehler beim Kopieren gehalten.
Da du sonst keine "Fehlermeldung" angefügt hast, dachte ich daher du hast Probleme mit dem korrekten casten der Quellvariable.
Der Wert im Debugger ist dabei oft nicht so aussagekräftig. Wichtig ist auch welchen Typ die Variable im Programmcode syntaktisch hat. Erst dann weiß man wie man am besten auf die Inhalte zugreifen kann.
Zuletzt geändert von a-dead-trousers am 06.11.2018, 12:49, insgesamt 1-mal geändert.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40
a-dead-trousers
Top Expert
 
Beiträge: 3185
Registriert: 07.02.2011, 13:40
Dank erhalten: 789 mal
Ich bin: Entwickler/in

Re: Feldsymbol mit Objektreferenz -> direkter Zugriff Attrib

Beitragvon Romaniac » 06.11.2018, 12:49

a-dead-trousers hat geschrieben:In deinem ersten Post hat ein ">" gefehlt. Ich hab es für einen Flüchtigkeitsfehler beim Kopieren gehalten.
Da du sonst keine "Fehlermeldung" angefügt hast, dachte ich daher du hast Probleme mit dem korrekten casten der Quellvariable.


jetzt habe ich es auch gesehen, ich sollte jetzt essen gehen...
Geht nicht gibts nicht
Romaniac
Specialist
 
Beiträge: 100
Registriert: 20.03.2017, 10:31
Wohnort: Augsburg
Dank erhalten: 16 mal
Ich bin: Freiberufler/in

Re: Feldsymbol mit Objektreferenz -> direkter Zugriff Attrib

Beitragvon a-dead-trousers » 06.11.2018, 12:50

Romaniac hat geschrieben:ich sollte jetzt essen gehen...

Mahlzeit :P
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40
a-dead-trousers
Top Expert
 
Beiträge: 3185
Registriert: 07.02.2011, 13:40
Dank erhalten: 789 mal
Ich bin: Entwickler/in


Zurück zu ABAP Objects®

  Aktuelle Beiträge   
gelöst Switchen via Radiobutton zwischen Parameter & Select-options
vor einer Stunde von der_Schwede 2 Antw.
Klasse /SAPSLL/CL_PRCLS_API
vor 5 Stunden von SAP_ENTWICKLER 0 Antw.
SAP Sanbdox Zugriff
vor 6 Stunden von doorconfig 0 Antw.
WF - 'fehlender' Parameter in BO-Methode
vor 7 Stunden von bapimueller 0 Antw.
FS 'WS_UPLOAD' in Klasse umwandeln cl_gui_frontend_services
vor 8 Stunden von L0w-RiDer 0 Antw.

  Ähnliche Beiträge beta
Attribute einer Klasse auslesen
14.10.2003, 11:45 von Troopy 2 Antw.
Feldsymbol auf RANGE-Tabelle
07.06.2007, 12:14 von ralf.wenzel 5 Antw.
Feldsymbol ist noch nicht zugewiesen.
25.06.2008, 15:45 von kirmuh 27 Antw.
gelöst Architektur von Abap-Klassen (Klassen Attribute)
13.04.2005, 09:30 von Gast 8 Antw.
Feldsymbol - Strucktur einer internen Tabelle
21.07.2008, 15:37 von uh 2 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder