Filter-Handler in ALV-Grid?

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

Filter-Handler in ALV-Grid?

Beitrag von abapnewbie (ForumUser / 25 / 12 / 0 ) »
Hallo Community,

ich arbeite momentan an einer Aufgabe, durch die ich den Bedarf habe ein Event auszulösen, wenn der User einen Filter gesetzt hat.

Das ALV-Objekt ist mit der Klasse CL_GUI_ALV_GRID typisiert.

Da ich kein passendes Event gefunden habe, handle ich das ganze aus Not über den Refresh-Event, da nachdem ein Filter gesetzt wurde der entsprechende Handler aufgerufen wird. Ich finde diese Lösung allerdings etwas unsauber, da ich an anderen stellen die Tabelle auffrischen möchte und deshalb auf viele Sachen gleichzeitig achten muss.

Gibt es nicht eine saubere Möglichkeit die ich ggf. übersehen habe, sodass ich jedes mal, wenn der User über den Standard-Filter-Button in der ALV einen Filter setzt meine entsprechende Methode aufrufen kann?

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


Re: Filter-Handler in ALV-Grid?

Beitrag von Tron (Top Expert / 1327 / 35 / 331 ) »
Moin,
Clicken auf den Filter-Button, kann man über die Events
BEFORE_USER_COMMAND und AFTER_USER_COMMAND
abfangen.

Code: Alles auswählen.

*---------------------------------------------------------------------*
*       CLASS lcl_event_handler DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION .
  PUBLIC SECTION .
    METHODS:
*--To add new functional buttons to the ALV toolbar
      handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
        IMPORTING e_object e_interactive ,

*--To implement user commands
      handle_user_command
                    FOR EVENT user_command OF cl_gui_alv_grid
        IMPORTING e_ucomm ,



*--To be triggered before user commands
      handle_before_user_command
                    FOR EVENT before_user_command OF cl_gui_alv_grid
        IMPORTING e_ucomm ,

*--To be triggered after user commands
      handle_after_user_command
                    FOR EVENT after_user_command OF cl_gui_alv_grid
        IMPORTING e_ucomm e_saved e_not_processed ,

*--Double-click control
      handle_double_click
                    FOR EVENT double_click OF cl_gui_alv_grid
        IMPORTING e_row e_column es_row_no.

  PRIVATE SECTION.
ENDCLASS.                    "lcl_event_handler DEFINITION


*---------------------------------------------------------------------*
*       CLASS lcl_event_handler IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION .

*--Handle Toolbar
  METHOD handle_toolbar.
    PERFORM handle_toolbar USING e_object e_interactive .
  ENDMETHOD .                    "handle_toolbar

*--Handle User Command
  METHOD handle_user_command .
    PERFORM handle_user_command USING e_ucomm .
  ENDMETHOD.                    "handle_user_command

*--Handle Before User Command JG
  METHOD handle_before_user_command .
    PERFORM handle_before_user_command USING e_ucomm .
  ENDMETHOD .                    "handle_before_user_command

*--Handle After User Command JG
  METHOD handle_after_user_command .
    PERFORM handle_after_user_command USING e_ucomm e_saved e_not_processed .
  ENDMETHOD .                    "handle_before_user_command

*--Double-click control
  METHOD handle_double_click .
    PERFORM handle_double_click USING e_row e_column es_row_no .
  ENDMETHOD .                    "handle_double_click


ENDCLASS.                    "lcl_event_handler IMPLEMENTATION

DATA gr_event_handler TYPE REF TO lcl_event_handler .


:
:
*--Registering handler methods to handle ALV Grid events JG

    SET HANDLER gr_event_handler->handle_double_click FOR grid1 .
    SET HANDLER gr_event_handler->handle_toolbar FOR grid1.
    SET HANDLER gr_event_handler->handle_user_command FOR grid1.
    SET HANDLER gr_event_handler->handle_before_user_command FOR grid1 .
    SET HANDLER gr_event_handler->handle_after_user_command FOR grid1 .

Code: Alles auswählen.

*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->I_UCOMM    text
*---------------------------------------------------------------------*
FORM handle_before_user_command USING i_ucomm TYPE syucomm .
  CASE i_ucomm .
    WHEN '&MB_FILTER' OR '&DELETE_FILTER' OR '&FILTER'.
  ENDCASE .
ENDFORM .                    "handle_before_user_command

FORM handle_after_user_command USING e_ucomm e_saved e_not_processed .
break-point.
ENDFORM.
gruß Jens

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag (Insgesamt 2):
Icke0801abapnewbie

<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Filter-Handler in ALV-Grid?

Beitrag von abapnewbie (ForumUser / 25 / 12 / 0 ) »
Tron hat geschrieben:
30.07.2020 12:46
Moin,
Clicken auf den Filter-Button, kann man über die Events
BEFORE_USER_COMMAND und AFTER_USER_COMMAND
abfangen.

Code: Alles auswählen.

*---------------------------------------------------------------------*
*       CLASS lcl_event_handler DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION .
  PUBLIC SECTION .
    METHODS:
*--To add new functional buttons to the ALV toolbar
      handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
        IMPORTING e_object e_interactive ,

*--To implement user commands
      handle_user_command
                    FOR EVENT user_command OF cl_gui_alv_grid
        IMPORTING e_ucomm ,



*--To be triggered before user commands
      handle_before_user_command
                    FOR EVENT before_user_command OF cl_gui_alv_grid
        IMPORTING e_ucomm ,

*--To be triggered after user commands
      handle_after_user_command
                    FOR EVENT after_user_command OF cl_gui_alv_grid
        IMPORTING e_ucomm e_saved e_not_processed ,

*--Double-click control
      handle_double_click
                    FOR EVENT double_click OF cl_gui_alv_grid
        IMPORTING e_row e_column es_row_no.

  PRIVATE SECTION.
ENDCLASS.                    "lcl_event_handler DEFINITION


*---------------------------------------------------------------------*
*       CLASS lcl_event_handler IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION .

*--Handle Toolbar
  METHOD handle_toolbar.
    PERFORM handle_toolbar USING e_object e_interactive .
  ENDMETHOD .                    "handle_toolbar

*--Handle User Command
  METHOD handle_user_command .
    PERFORM handle_user_command USING e_ucomm .
  ENDMETHOD.                    "handle_user_command

*--Handle Before User Command JG
  METHOD handle_before_user_command .
    PERFORM handle_before_user_command USING e_ucomm .
  ENDMETHOD .                    "handle_before_user_command

*--Handle After User Command JG
  METHOD handle_after_user_command .
    PERFORM handle_after_user_command USING e_ucomm e_saved e_not_processed .
  ENDMETHOD .                    "handle_before_user_command

*--Double-click control
  METHOD handle_double_click .
    PERFORM handle_double_click USING e_row e_column es_row_no .
  ENDMETHOD .                    "handle_double_click


ENDCLASS.                    "lcl_event_handler IMPLEMENTATION

DATA gr_event_handler TYPE REF TO lcl_event_handler .


:
:
*--Registering handler methods to handle ALV Grid events JG

    SET HANDLER gr_event_handler->handle_double_click FOR grid1 .
    SET HANDLER gr_event_handler->handle_toolbar FOR grid1.
    SET HANDLER gr_event_handler->handle_user_command FOR grid1.
    SET HANDLER gr_event_handler->handle_before_user_command FOR grid1 .
    SET HANDLER gr_event_handler->handle_after_user_command FOR grid1 .

Code: Alles auswählen.

*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->I_UCOMM    text
*---------------------------------------------------------------------*
FORM handle_before_user_command USING i_ucomm TYPE syucomm .
  CASE i_ucomm .
    WHEN '&MB_FILTER' OR '&DELETE_FILTER' OR '&FILTER'.
  ENDCASE .
ENDFORM .                    "handle_before_user_command

FORM handle_after_user_command USING e_ucomm e_saved e_not_processed .
break-point.
ENDFORM.
gruß Jens
Vielen Dank für den Tipp! Jetzt konnte ich durchs Abfangen der FCODES &FILTER und &MB_FILTER mein Ziel erreichen und die Filter-Logik vom refresh-Event trennen!

Seite 1 von 1

Vergleichbare Themen

1
Antw.
2532
Views
Problem mit Filter auf Gleichheit im ALV Grid
von denno » 22.02.2005 11:11 • Verfasst in Dialogprogrammierung
8
Antw.
5948
Views
Handler- und ALV-Problem
von newbie007 » 10.12.2011 10:54 • Verfasst in ABAP Objects®
1
Antw.
1770
Views
Event Handler mit OLE
von snoodels » 10.12.2005 11:27 • Verfasst in ABAP Objects®
0
Antw.
1255
Views
generischer Inbound Handler
von SvenSvenson » 08.05.2015 10:07 • Verfasst in ABAP Objects®
2
Antw.
2143
Views
Exception Handler + Fehlerpopup
von sidneyweiher » 26.01.2015 10:43 • 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

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 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 3 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 3 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