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

Doppelclick auf ALV Grid

Beitrag von gregor ( / / 0 / 3 ) »
Hallo zusammen.

Ich habe in meinen grid einen Doppelclick eingebaut, dar mir gesonderte Daten anzeigen soll, wenn ich einen Doppelclick auf eine Zeile mache.
Funktioniert auch alles soweit.
Das Problem ist, dass wenn ich die Anzeige neu sortiere, z.B. absteigend und dann auf eine Zeile einen Doppelclick mache er die Zeile aufruft, die zuvor an dieser Stelle stand.
Kann mir da vielleicht jemand helfen?

Gruß Hans.

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


Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
HI!

Bezieht sich deine Frage auf den OO-Grid oder auf den FuBa-Grid?

Beitrag von gregor ( / / 0 / 3 ) »
auf den oo-grid.

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
hallo,

kannst du mal den code posten,
wo du den doppelklick auswertest.

mfg
richard

Beitrag von gregor ( / / 0 / 3 ) »
Hi.

Code: Alles auswählen.

CLASS lcl_dchandler DEFINITION DEFERRED.

DATA: dcreceiver TYPE REF TO lcl_dchandler.

CLASS lcl_dchandler DEFINITION.

  PUBLIC SECTION.
    METHODS:

    handle_double_click
    FOR EVENT double_click OF cl_gui_alv_grid
    IMPORTING e_row e_column.

ENDCLASS.

CLASS lcl_dchandler IMPLEMENTATION.

  METHOD handle_double_click.

    IF NOT l_cells IS INITIAL.

      CALL FUNCTION 'POPUP_TO_CONFIRM'
           EXPORTING
                titlebar       = 'Data not saved!'
                text_question  = 'Do you want to loose changed data?'
                text_button_1  = 'Yes'(007)
                text_button_2  = 'No'(008)
                default_button = '1'
           IMPORTING
                answer         = answer2.

      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno.
      ENDIF.

    ELSEIF l_cells IS INITIAL.

      READ TABLE t_2 INDEX e_row-index INTO wa_1.
      PERFORM double USING e_row-index.
      IF g_1->is_ready_for_input( ) EQ 0.
        CALL SCREEN 002 STARTING AT 10 1.
      ELSE.
        CALL SCREEN 003 STARTING AT 10 1.
      ENDIF.

    ENDIF.

    CASE answer2 .
      WHEN '1'.
        READ TABLE t_2 INDEX e_row-index INTO wa_1.
        PERFORM double USING e_row-index.
        IF g_1->is_ready_for_input( ) EQ 0.
          CALL SCREEN 002 STARTING AT 10 1.
        ELSE.
          CALL SCREEN 003 STARTING AT 10 1.
        ENDIF.
      WHEN '2' OR 'A'.
        CALL SCREEN 001.
    ENDCASE.

  ENDMETHOD.

ENDCLASS.

FORM double USING e_row-index.

  CLEAR t_2.
  CLEAR wa_1.
  CLEAR t9citi.

  SELECT *
    FROM t9citi
    INTO CORRESPONDING FIELDS OF TABLE t_2
    WHERE bukrs IN bukrs_sp.

  READ TABLE t_2 INDEX e_row-index INTO wa_1.

  t9citi-bukrs = wa_1-bukrs.
  t9citi-waehr = wa_1-waehr.
  t9citi-acct = wa_1-acct.
  t9citi-sbezeich1 = wa_1-sbezeich1.
....
ENDFORM.

Gruß Gregor

Beitrag von gregor ( / / 0 / 3 ) »
hab noch vergessen:

im PBO

Code: Alles auswählen.

    CREATE OBJECT dcreceiver.
    SET HANDLER dcreceiver->handle_double_click FOR g_1.

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
wenn schon OO drin ist, dann sollte es auch in das richtige Forum...
gesagt: getan...
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
hallo,

der Fehler liegt ungefähr da:

ich nehme an, t_2 ist die tabelle, welche du dem alv beim aufruf übergibst.

wenn das so ist:
wenn du im alv umsortierts, sollte t_2 mitsortiert werden.
damit wäre der ansatz

Code: Alles auswählen.

   CASE answer2 . 
      WHEN '1'. 
        READ TABLE t_2 INDEX e_row-index INTO wa_1. 
richtig. du hast in wa_1 den angeklickten datensatz des alv

danach überschreibst du die t_2 (und wa_1)

Code: Alles auswählen.

    CASE answer2 . 
      WHEN '1'. 
        READ TABLE t_2 INDEX e_row-index INTO wa_1. 
        PERFORM double USING e_row-index. 

****************************************************

FORM double USING e_row-index. 

  CLEAR t_2. 
  CLEAR wa_1. 
  CLEAR t9citi. 

  SELECT * 
    FROM t9citi 
    INTO CORRESPONDING FIELDS OF TABLE t_2 
    WHERE bukrs IN bukrs_sp. 

  READ TABLE t_2 INDEX e_row-index INTO wa_1. 

  t9citi-bukrs = wa_1-bukrs. 
  t9citi-waehr = wa_1-waehr. 
  t9citi-acct = wa_1-acct. 
  t9citi-sbezeich1 = wa_1-sbezeich1. 
.... 
ENDFORM. 
wenn e_row-index zB 2 ist, wird danach immer der 2 datensatz der tabelle t9citi in wa_1 stehen.

mfg
richard

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1523
Views
Doppelclick auf einer ALV-Liste
von JürgenFFM » 13.02.2008 17:11 • Verfasst in ABAP® Core
1
Antw.
1100
Views
Doppelclick-Spalte im Table Control
von Bitfummler » 24.07.2009 14:36 • Verfasst in ABAP® Core
4
Antw.
8659
Views
ALV Grid Sortierung aktualisieren im grid 1 und grid 2
von c oco » 06.02.2012 10:09 • Verfasst in ABAP Objects®
5
Antw.
8602
Views
4
Antw.
3544
Views
ALV Grid
von daf » 27.01.2019 15:23 • 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

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.