Zugriff auf privates ALV Attribut

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

Zugriff auf privates ALV Attribut

Beitrag von Nordlicht (Specialist / 304 / 8 / 3 ) »
Hallo.

Ich verwende ein ALV Grid auf Basis CL_GUI_ALV_GRID. Ich benötige an einer Stelle die Indizes der nach Filterung angelisteten iTab-Zeilen. Die Methode GET_FILTERED_ENTRIES leifert mir ja die Indizes der ausgeblendeten iTab-Zeilen. In dem Attribut MT_ROID stehen aber genau die Werte die ich benötige: Die Indizes der "Treffer".

Wie komme ich an den Inhalt dieses Attributes heran? (Nur lesend natürlich)

Ciao,
Burkhart

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


Re: Zugriff auf privates ALV Attribut

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

nun du hast doch deine interne Tabelle mit allen Daten die du an den ALV übergibst und wenn du in einer Hilfstabelle all Werte minus der ausgeblendeten Zeilen reinstellst dann hast du doch das Ergebnis oder liege ich da falsch ?


Gruss
thanks Jens

Re: Zugriff auf privates ALV Attribut

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hallo Burkhart,

ich meine es müsste klappen, wenn du dir eine lokale Variable vom gleichen Typen wie MT_ROID anlegst und den Inhalt des Attributs dann so zuweist:
lv_variable = cl_gui_alv_grid=>mt_roid.

Ist ungetestet, aber prinzipiell müsste es auf diese (oder sehr ähnliche) Weise funktionieren.
Gruß,
der Matze

Re: Zugriff auf privates ALV Attribut

Beitrag von Nordlicht (Specialist / 304 / 8 / 3 ) »
@Jens: Genau das wollte ich mir sparen da die exakte Treffermenge ja in dem Attribut vorliegt :( Muss ich aber wohl doch so machen.
@Matze: Leider wird genau das verhindert bei dem privaten Attribut :(

Also zu Fuß das Ganze.

Vielen Dank trotzdem für Eure Anteilnahme
;-)
Burkhart

Re: Zugriff auf privates ALV Attribut

Beitrag von JHM (Top Expert / 1189 / 1 / 196 ) »
Nordlicht hat geschrieben:@Matze: Leider wird genau das verhindert bei dem privaten Attribut :(
Funktioniert ein DirtyAssign auf ein privates Attribut? Habe ich selber noch nicht benutzt, aber ein DirtyAssign hält sich ja sonst auch nicht an die Sichtbarkeit von Daten.
Gruß Hendrik

Re: Zugriff auf privates ALV Attribut

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
JHM hat geschrieben:
Nordlicht hat geschrieben:@Matze: Leider wird genau das verhindert bei dem privaten Attribut :(
Funktioniert ein DirtyAssign auf ein privates Attribut? Habe ich selber noch nicht benutzt, aber ein DirtyAssign hält sich ja sonst auch nicht an die Sichtbarkeit von Daten.
Dürfte theoretisch nicht funktionieren. ein Dirty Assign nutzt du ja um Daten aus einem anderen (meist rufendem) Programm zu bekommen.
Hier sprechen wir doch aber von einem privaten Klassenattribut. Die sind ja nicht umsonst als PRIVATE deklariert, damit dank der Kapselung durch die Objektorientierung gewisse Daten nach außen einfach nicht existent sind. Also sollte das damit funktionieren, wäre ich doch mehr als verwundert und würde auch ein wenig am Grundgedanken der Objektorientierung zweifeln.
Dennoch: ein Versuch wäre es wert! ^^ Dann gibt es wenigstens Sicherheit.

EDIT: laut Jens funktioniert das wohl doch: http://www.apentia-forum.de/viewtopic.php?f=3&t=22545 :twisted:
EDIT vom EDIT: woebi da ja nicht die Rede von privaten Attributen ist... :D
Gruß,
der Matze

Re: Zugriff auf privates ALV Attribut

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
http://www.tricktresor.de/content/index ... 00&aID=305

So sollte man auch eine Methode schreiben können, die Zugriff nimmt auf ein privates Attribut.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Zugriff auf privates ALV Attribut

Beitrag von a-dead-trousers (Top Expert / 4286 / 214 / 1142 ) »
ralf.wenzel hat geschrieben:http://www.tricktresor.de/content/index ... 00&aID=305
So sollte man auch eine Methode schreiben können, die Zugriff nimmt auf ein privates Attribut.
Leider funktioniert das nur mit "protected" Attributen und nicht mit "private" Attributen.

Die zwei einzigen Möglichkeit die ich sehe sind entweder eine Standardänderung oder eine Kopie der CL_GUI_ALV_GRID-Klasse anzulegen.

lg ADT
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.18
Basis: 7.50

Re: Zugriff auf privates ALV Attribut

Beitrag von a-dead-trousers (Top Expert / 4286 / 214 / 1142 ) »
Hi!

Ich glaub, ich hab eine Lösung für dieses Problem:
Die Methode SET_ROW_ID ist "protected", wird immer mit dem Attribut "MT_ROID" aufgerufen und jetzt kommts... TaDa... es wird immer "per Reference" übergeben.
Man erstellt eine neue Klasse die von CL_GUI_ALV_GRID erbt.
Die Methode SET_ROW_ID wird überladen und intern einfach mit SUPER->SET_ROW_ID das Original aufgerufen.
Danach kann man sich mittels GET REFERENCE INTO eine Referenz auf den Parameter ROW_ID_TABLE holen.
Diese Referenz zeigt dann dank Übergabe "per Reference" in Wirklichkeit auf das Private-Attribute "MT_ROID".

Mögliche Probleme:
  • Der Zugriff ist aufgrund des "importing"-Parameters nur lesend möglich.
  • Es gibt derzeit einen Aufruf von SET_ROW_ID mit einer lokalen Variable (lt_row_no_new). Daher muss man, bevor man auf die Referenz zugreift, immer prüfen ob sie auch gültig ist. (lokale Variable verschwinden, nach Verlassen der Methode, aus dem Speicher)
  • Sollte sich die SAP dazu entscheiden den Parameter ROW_ID_TABLE auf "per Value" umzustellen, funktioniert diese Lösung nicht mehr. Dasselbe gilt auch dann, wenn noch mehr Aufrufe nicht über "MT_ROID" erfolgen.
lg ADT
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.18
Basis: 7.50

Re: Zugriff auf privates ALV Attribut

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

nun ich denke - der schnellste Ansatz und auch nicht so aufwendig ist dann doch - über eine Hilfstabelle - alle Einträge minus der gefilterten Einträge und schon hat man es - ist denke ich recht wenig Coding dazu notwendig - ein "Zweizeiler" :D .

Gruss
thanks Jens

Re: Zugriff auf privates ALV Attribut

Beitrag von a-dead-trousers (Top Expert / 4286 / 214 / 1142 ) »
jensschladitz hat geschrieben:nun ich denke - der schnellste Ansatz und auch nicht so aufwendig ist dann doch - über eine Hilfstabelle - alle Einträge minus der gefilterten Einträge und schon hat man es - ist denke ich recht wenig Coding dazu notwendig - ein "Zweizeiler" :D .
Bin voll und ganz deiner Meinung. (Hab auch selber schon sowas gemacht)

Aber die Aufgabenstellung lautete, einen Zugriff auf ein privates Attribut zu ermöglichen. :wink:
Und das hab ich, glaub ich, mit meiner Lösung geschafft. Zwar nicht "allgemeingültig" aber zumindest für diesen speziellen Fall.

lg ADT
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.18
Basis: 7.50

Re: Zugriff auf privates ALV Attribut

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,
#
schau dir mal den FUBA - LVC_GET_INFO_DATA_TABLE - an - ich denke damit könnte es auch klappen die Daten zu besorgen und einiges mehr sogar - habs aber noch nicht getestet !

Gruss
thanks Jens

Seite 1 von 1

Vergleichbare Themen

8
Antw.
4055
Views
Privates Attribut anzapfen
von sapdepp » 19.06.2017 15:22 • Verfasst in ABAP Objects®
6
Antw.
5825
Views
Zugriff auf geschütztes Attribut
von sapdepp » 13.10.2015 15:19 • Verfasst in ABAP Objects®
10
Antw.
2547
Views
Aufgabe zum Wochenende: Zugriff auf PROTECTED Attribut
von ewx » 06.12.2019 15:11 • Verfasst in ABAP Objects®
2
Antw.
2548
Views
BAdI Attribut
von Neuling_20 » 25.10.2012 09:42 • Verfasst in ABAP® Core
0
Antw.
1214
Views
RM - anchor Attribut ändern
von sap-ler » 22.06.2007 08:41 • Verfasst in Basis

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.