ALV GRID ermitteln der selektierten Zeile

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

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

ALV GRID ermitteln der selektierten Zeile

Beitrag von SAP_ENTWICKLER (Specialist / 445 / 219 / 6 ) »
Hallo,

ich habe schon länger keine ALV's mehr programmiert.

Daher habe ich jetzt ein Problem bei der Auswahl einer Zeile und der Verarbeitung der dort vorgefundenen Daten.

Code: Alles auswählen.

[code]
Data:
a_grid          TYPE REF TO cl_gui_alv_grid,

CLASS gcl_event_receiver DEFINITION.

  PUBLIC SECTION.
    METHODS zeilen_auswahl FOR EVENT double_click OF cl_gui_alv_grid.  "oder einfacher Click

ENDCLASS.

CLASS gcl_event_receiver IMPLEMENTATION.

  METHOD zeilen_auswahl.

a_grid->get_selected_rows( IMPORTING et_index_rows = gt_rows ).

  HIER SOLL WAS PASSIEREN!!11
 
  ENDMETHOD.                    "delayed_change_selection

ENDCLASS.

DATA:
  go_handler         TYPE REF TO gcl_event_receiver.


 CREATE OBJECT go_handler.
  SET HANDLER go_handler->zeilen_auswahl FOR a_grid.

  CALL METHOD a_grid->set_registered_events
    EXPORTING
      events = cl_gui_alv_grid=>mc_evt_delayed_change_select.


[/code]

Das funktioniert nicht, lässt sich erst garnicht aktivieren.

Was mache ich falsch? Was muss ich ändern?

Vielen Dank

Viele Grüße
Norbert

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


Re: ALV GRID ermitteln der selektierten Zeile

Beitrag von sapnup (ForumUser / 42 / 14 / 12 ) »
Hallo Norbert,

mir fallen auf den ersten Blick zwei Dinge auf:

1. In der Definition der Eventhandler-Methode hast du die Importing Parameter des Events nicht definiert. Welche es gibt kannst du in SE24->Klasse cl_gui_alv_grid->Tab "Ereignisse"-> double_click sehen. Die Parameter dieses Events sind zwar alle optional, aber wenn du keinen der Parameter nutzt, wirst du nur erfahren, dass irgendeine Zeile geklickt wurde - für mehr Details sind die Parameter gut.

2. Die Methode set_registered_events beginnt mit dem Kommentar "*!!! Do not use for ALV Grid Control !!!!" ... meine spontane Reaktion: Finger weg davon. Davon abgesehen muss der Parameter Events mit einer Tabelle des Typs "CNTL_SIMPLE_EVENTS" versorgt werden, du übergibst aber eine Integer-Konstante.

Welche Fehler wirft der Compiler?

Gruß!

Folgende Benutzer bedankten sich beim Autor sapnup für den Beitrag:
SAP_ENTWICKLER


Re: ALV GRID ermitteln der selektierten Zeile

Beitrag von SAP_ENTWICKLER (Specialist / 445 / 219 / 6 ) »
Der Fehler ist, dass die Ergebnisvariable nicht kompatibel ist. Ist mir klar, Events ist eine Struktur, das Ergebnis des Aufrufs nur I.

Viele Grüße
Norbert

Re: ALV GRID ermitteln der selektierten Zeile

Beitrag von SAP_ENTWICKLER (Specialist / 445 / 219 / 6 ) »
Der Fehler ist, dass die Ergebnisvariable nicht kompatibel ist. Ist mir klar, Events ist eine Struktur, das Ergebnis des Aufrufs nur I.

Viele Grüße
Norbert

Re: ALV GRID ermitteln der selektierten Zeile

Beitrag von sapnup (ForumUser / 42 / 14 / 12 ) »
Also mein (Anfänger-)Vorgehen um ein Existierendes ALV (bei dir genannt a_grid) auszulesen wäre in diesem Fall:

- Den Teil komplett weglassen:

Code: Alles auswählen.

  CALL METHOD a_grid->set_registered_events
    EXPORTING
      events = cl_gui_alv_grid=>mc_evt_delayed_change_select.
Die Methode ist in der Beschreibung als "in(ern?) / System" ausgewiesen und ein Blick in den Code zweigt, dass sie nichts sinnvolles tut.

- Die Definition der Handler Methode wie folgt ergänzen:

Code: Alles auswählen.

 METHODS zeilen_auswahl FOR EVENT double_click OF cl_gui_alv_grid IMPORTING e_row e_column es_row_no.  "oder einfacher Click
- Der mir bekannte Aufruf eines ALV sieht wie folgt aus:

CALL METHOD go_alv_grid->set_table_for_first_display
EXPORTING
i_structure_name = struktur
is_layout = layout
CHANGING
it_outtab = tab_arbeitsdaten " Ausgabetabelle
it_fieldcatalog = feldkatalog. " Feldkatalog

Deshalb täte ich zuerst nach dem Aufruf der Methode set_table_for_first_display (also a_grid->set_table_for_first_display) suchen und mir dort den Namen der Tabelle "tab_arbeitsdaten" aufschreiben. Anschließend würde ich in der Implementierung der Eventhandler-Methode, also da wo jetzt steht:

Code: Alles auswählen.


a_grid->get_selected_rows( IMPORTING et_index_rows = gt_rows ).

  HIER SOLL WAS PASSIEREN!!11

die Tabelle tab_arbeitsdaten anhand der Daten aus den Importparametern der Eventhandler-Methode (Zeilennummer, Feldname) durchforsten.

Ich hoffe das bringt dich weiter.

Gruß

Folgende Benutzer bedankten sich beim Autor sapnup für den Beitrag:
SAP_ENTWICKLER


Re: ALV GRID ermitteln der selektierten Zeile

Beitrag von SAP_ENTWICKLER (Specialist / 445 / 219 / 6 ) »
Das hat es gelöst.

Vielen Dank

Seite 1 von 1

Vergleichbare Themen

4
Antw.
2750
Views
AVL Grid Tabelle, Doubleclick Zeile ermitteln
von the-FoX » 28.10.2004 12:46 • Verfasst in ABAP Objects®
4
Antw.
2443
Views
Falsche Rückgabe der Selektierten Zeile/ Fehler beim Refresh
von t0mt0m » 19.11.2007 09:09 • Verfasst in ABAP Objects®
6
Antw.
3254
Views
Zeile im Steploop ermitteln (ohne Cursor)
von Hunter » 08.02.2006 17:20 • Verfasst in Dialogprogrammierung
0
Antw.
1612
Views
4
Antw.
12863
Views
ALV-Grid Zeile farbig
von nikibert » 01.09.2008 09:56 • Verfasst in ABAP® für Anfänger

Ü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.