Zugriff auf geschütztes Attribut

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).
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

Zugriff auf geschütztes Attribut

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
Hallo, liebe Wissenden,

ich möchte im folgenden Bsp. eine Interne Tabelle beauskunften, die als geschütztes Instanzattribut in der Klasse CL_HRPAYDE_EA_NOTIF_DISPLAYER definiert ist (HR-System). Die Klasse hat leider keine passende Methode, um Zugriff auf diese ITAB zu erhalten, bzw. ich finde diese nicht wegen meiner Tomaten auf den Augen.

Code: Alles auswählen.

* Objekt für die Anzeige von BV-Ausgangsmeldungen:
DATA: gr_notif_displayer TYPE REF TO cl_hrpayde_ea_notif_displayer.

  CALL METHOD gr_notif_displayer->display_notif_list
    EXPORTING
      ir_container = gr_container
      i_mode       = cl_hrpayde_sv_notif_displayer=>ac_disp_mode_alv_grid
    EXCEPTIONS
      alv_error    = 1
      OTHERS       = 2.
Das Debugging sagt Folgendes zum referenzierten Objekt gr_notif_displayer:

Bild

Wie man sieht, gibt es dort das Protected Instanzattribut AT_ALV_DAT, eine Standard Table vom Typ HRDESV_EA_T_ALV_MLD. Auf geschützte Attribute kann man ja nicht zugreifen, und mit fehlender Methode schon gar nicht. Hat jemand diese Klasse schon mal in der Mache gehabt und kennt eine passende Methode? Und falls ja, wie komme ich dann an ein geschütztes Attribut heran? Ergebnis soll sein, dass ich per Loop die Daten der ITAB verarbeiten kann, also LOOP AT AT_ALV_DAT ... ENDLOOP.

Lieben Dank!

sapdepp

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


Re: Zugriff auf geschütztes Attribut

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Hallo sapdepp,

probier mal folgendes:

Code: Alles auswählen.

REPORT.

CLASS unprotect DEFINITION INHERITING FROM cl_hrpayde_ea_notif_displayer.
  PUBLIC SECTION.
    CLASS-METHODS: loop_at_alv_dat IMPORTING io_hrpayde_ea_notif_displayer TYPE REF TO cl_hrpayde_ea_notif_displayer.
ENDCLASS.

CLASS unprotect IMPLEMENTATION.
  METHOD loop_at_alv_dat.
    LOOP AT io_hrpayde_ea_notif_displayer->at_alv_dat ASSIGNING FIELD-SYMBOL(<ls_alv_dat>).
    ENDLOOP.
  ENDMETHOD.
ENDCLASS.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Zugriff auf geschütztes Attribut

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
Hallo, black_adept,

vielen Dank für die schnelle Antwort.

Den zweiten Teil kapiere ich nicht ganz, insbesondere ASSIGNING FIELD-SYMBOL(<ls_alv_dat>). Den Befehl kenne ich so gar nicht, oder hast du FIELD-SYMBOL nur geschrieben, damit ich weiß, dass es ein Feld-Symbol ist? Müsste es nicht lauten ASSIGNING <ls_alv_dat>? Ich müsste dann natürlich ein Feld-Symbol deklarieren, allerdings bin ich mir nicht sicher, wie:

Code: Alles auswählen.

* Doku-Objekt
DATA: ls_alv_dat TYPE hrdesv_ea_t_alv_mld,
      lt_alv_dat LIKE TABLE OF ls_alv_dat.

*FIELD-SYMBOLS: <ls_alv_dat> STRUCTURE hrdesv_ea_s_alv_mld DEFAULT ls_alv_dat.
FIELD-SYMBOLS: <ls_alv_dat> TYPE ANY.

* Klasse vererben, weil Attribut AT_ALV_DAT in der Originalklasse geschützt ist
CLASS cl_displayer_unprotect DEFINITION INHERITING FROM cl_hrpayde_ea_notif_displayer.
  PUBLIC SECTION.
    CLASS-METHODS:
      loop_at_alv_dat IMPORTING io_hrpayde_ea_notif_displayer TYPE REF TO cl_hrpayde_ea_notif_displayer.
ENDCLASS.                    "unprotect DEFINITION

CLASS cl_displayer_unprotect IMPLEMENTATION.
  METHOD loop_at_alv_dat.
    LOOP AT io_hrpayde_ea_notif_displayer->at_alv_dat ASSIGNING <ls_alv_dat>.
    ENDLOOP.
  ENDMETHOD.                    "loop_at_alv_dat
ENDCLASS.                    "unprotect IMPLEMENTATION
 
Wenn ich das so mache, klappt die Syntaxprüfung, aber wenn ich dann weiter unten die Methode zünde, kommt natürlich ein Dump, dass das Feldsymbol nicht zugewiesen ist. Da ich mit OO nach wie vor auf Kriegsfuß stehe, meine Bitte, das Feldsymbol unfallfrei zu deklarieren und den Methodenaufruf weiter unten im späteren Coding zu zeigen. Das hier wird nix und dienst nur als Bsp.:

Code: Alles auswählen.

* lt_alv_dat = cl_displayer_unprotect=>loop_at_alv_dat( <ls_alv_dat> ).
* CALL METHOD cl_displayer_unprotect=>loop_at_alv_dat( EXPORTING io_hrpayde_ea_notif_displayer = <ls_alv_dat> ).
Besten Dank!

Re: Zugriff auf geschütztes Attribut

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Hallo Sapdepp,
das was bei dir den Syntaxfehler auslöst ist eine der netten Spracherweiterungen in ABAP ab Release 7.4 die ich inzw. sehr lieb gewonnen habe.

Hier eine alternative Deklaration, die auch auf älteren Releaseständen funktionieren sollte:

Code: Alles auswählen.

CLASS unprotect IMPLEMENTATION.
  METHOD loop_at_alv_dat.
    FIELD-SYMBOLS: <ls_alv_dat> LIKE LINE OF io_hrpayde_ea_notif_displayer->at_alv_dat.
    LOOP AT io_hrpayde_ea_notif_displayer->at_alv_dat ASSIGNING <ls_alv_dat>.
    ENDLOOP.
  ENDMETHOD.
ENDCLASS.
Und der Aufruf nachher via

Code: Alles auswählen.

unprotect=>loop_at_alv_dat( gr_notif_displayer ).
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Zugriff auf geschütztes Attribut

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
black_adept hat geschrieben:Hallo Sapdepp,
das was bei dir den Syntaxfehler auslöst ist eine der netten Spracherweiterungen in ABAP ab Release 7.4 die ich inzw. sehr lieb gewonnen habe.

Hier eine alternative Deklaration, die auch auf älteren Releaseständen funktionieren sollte:

Code: Alles auswählen.

CLASS unprotect IMPLEMENTATION.
  METHOD loop_at_alv_dat.
    FIELD-SYMBOLS: <ls_alv_dat> LIKE LINE OF io_hrpayde_ea_notif_displayer->at_alv_dat.
    LOOP AT io_hrpayde_ea_notif_displayer->at_alv_dat ASSIGNING <ls_alv_dat>.
    ENDLOOP.
  ENDMETHOD.
ENDCLASS.
Und der Aufruf nachher via

Code: Alles auswählen.

unprotect=>loop_at_alv_dat( gr_notif_displayer ).
Warum nicht gleich

Code: Alles auswählen.

    LOOP AT io_hrpayde_ea_notif_displayer->at_alv_dat ASSIGNING FIELD-SYMBOL(<ls_alv_dat>).
?
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Zugriff auf geschütztes Attribut

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
Guten Morgen,

@black_adept: passt! Hervorragend. Vielen Dank!!!

@ralf.wenzel: Grund steht im Text. Die Befehlserweiterung "FIELD-SYMBOL" kennt meine SAP-HR-Version nicht mit Basis-Release 700. Syntaxerror. Deswegen der Umweg.

Vielen Dank und viele Grüße
sapdepp

Re: Zugriff auf geschütztes Attribut

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
sapdepp hat geschrieben:@ralf.wenzel: Grund steht im Text. Die Befehlserweiterung "FIELD-SYMBOL" kennt meine SAP-HR-Version nicht mit Basis-Release 700. Syntaxerror. Deswegen der Umweg.
Ich scheine überarbeitet zu sein, das lag eigentlich auf der Hand.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Seite 1 von 1

Vergleichbare Themen

11
Antw.
5261
Views
Zugriff auf privates ALV Attribut
von Nordlicht » 12.11.2013 09:37 • Verfasst in ABAP Objects®
10
Antw.
2529
Views
Aufgabe zum Wochenende: Zugriff auf PROTECTED Attribut
von ewx » 06.12.2019 15:11 • Verfasst in ABAP Objects®
2
Antw.
2547
Views
BAdI Attribut
von Neuling_20 » 25.10.2012 09:42 • Verfasst in ABAP® Core
8
Antw.
4043
Views
Privates Attribut anzapfen
von sapdepp » 19.06.2017 15:22 • Verfasst in ABAP Objects®
7
Antw.
1569
Views
Private Attribut Aufrufen
von msentaburlar » 21.01.2020 15:09 • Verfasst in ABAP Objects®

Ü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

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140