Code: Alles auswählen.
REPORT z121_alv_test.
*----------------------------------------------------------------------*
* CLASS lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION .
METHODS
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.
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 : okcode TYPE sy-ucomm.
DATA : g_repid LIKE sy-repid.
DATA : grid TYPE REF TO cl_gui_alv_grid.
DATA : g_custom_container TYPE REF TO cl_gui_custom_container.
DATA : event_handler TYPE REF TO lcl_event_handler.
DATA : itab TYPE STANDARD TABLE OF z118_gefstoff WITH KEY id.
* wa_az soll die ausgewählte Zeile des Grids enthalten.
DATA : wa_az TYPE z118_gefstoff.
DATA : bez(40) TYPE c.
DATA : manager TYPE REF TO z118_mngr_gefstoff.
DATA : pao TYPE REF TO z118_pao_gefstoff.
LOAD-OF-PROGRAM.
CREATE OBJECT manager.
CREATE OBJECT event_handler.
START-OF-SELECTION.
CALL SCREEN '100'.
*&---------------------------------------------------------------------*
*& Module INITGRID_0100 OUTPUT
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE initgrid_0100 OUTPUT.
CALL METHOD manager->get_tablecontent
IMPORTING
ret_itab = itab.
IF g_custom_container IS INITIAL.
CREATE OBJECT g_custom_container
EXPORTING
container_name = 'CCCONTAINER'.
CREATE OBJECT grid
EXPORTING
i_parent = g_custom_container.
CALL METHOD grid->set_table_for_first_display
EXPORTING
i_structure_name = 'Z118_GEFSTOFF'
CHANGING
it_outtab = itab.
SET HANDLER event_handler->handle_double_click FOR grid .
ENDIF.
ENDMODULE. " INITGRID_0100 OUTPUT
*----------------------------------------------------------------------*
* MODULE user_command_1100 INPUT
*----------------------------------------------------------------------*
* Anfangsbildschirm Commands
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE okcode.
WHEN 'SAV'.
PERFORM save_data.
WHEN 'DEL'.
PERFORM del_data.
WHEN 'END' OR 'BACK' OR 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. "user_command_1100 INPUT
*----------------------------------------------------------------------*
* MODULE refresh_contents INPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE refresh_contents INPUT.
bez = wa_az-bez.
wa_az-bez = ''.
ENDMODULE. "refresh_contents INPUT
*&---------------------------------------------------------------------*
*& Module STATUS_1100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS '0100'.
SET TITLEBAR '0100'.
ENDMODULE. " STATUS_1100 OUTPUT
*&---------------------------------------------------------------------*
*& Form save_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM save_data.
ENDFORM. "save_data
*&---------------------------------------------------------------------*
*& Form del_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM del_data.
ENDFORM. "del_data
*&---------------------------------------------------------------------*
*& Form handle_double_click
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM handle_double_click USING i_row TYPE lvc_s_row i_column TYPE lvc_s_col is_row_no TYPE lvc_s_roid.
wa_az-bez = 'Nur so ein Test'.
ENDFORM . "handle_double_click
Code: Alles auswählen.
PROCESS BEFORE OUTPUT.
MODULE initgrid_0100.
MODULE status_0100.
*
PROCESS AFTER INPUT.
MODULE user_command_0100.
MODULE refresh_contents.
Code: Alles auswählen.
CREATE OBJECT grid
EXPORTING
i_parent = g_custom_container
i_appl_events = 'X'.
Ja!kapuzo hat geschrieben: Also ich habe eine Lösung hinbekommen, zwar etwas anders als du es beschrieben hast, aber durch dich hatte ich immerhin nen konkreten Anhaltspunkt .
Weil ich die EventID für den Doppelklick nicht rausbekommen habe, ich bin der Meinung es ist die 3, aber dann kam es zu einem Fehler (I_Event_Combination oder sowas), deshalb habe ich den Hammer ausgepackt und
beim Erzeugen des Grids angegeben, dass alle Events registriert werden sollen. Vorher hatte ich nicht ganz verstanden, wie das funktioniert, das 'X' als True-Ersatz bei einem Parameter I_APPL_EVENT, war mir nicht ganz einleuchtend .
Kommt davon wenn man sonst nur Java gewöhnt ist.
Außerdem muss man, wenn man das Problem mit dem Hammer erschlägt auch keinen New_OkCode setzen, nach den Events wird der PBO/PAI-Zyklus durchlaufen.
Lösung:Code: Alles auswählen.
CREATE OBJECT grid EXPORTING i_parent = g_custom_container i_appl_events = 'X'.