Doppelklick im ALV Grid

Getting started ... Alles für einen gelungenen Start.
23 Beiträge • Seite 1 von 2 (current) Nächste
23 Beiträge Seite 1 von 2 (current) Nächste

Doppelklick im ALV Grid

Beitrag von Lehmo (ForumUser / 30 / 0 / 0 ) »
Hallo,

ist es möglich einen Doppelklick auf ein ALV Grid zu machen und in ein neues ALV Grid darzustellen, ohne OO, Dynpro in einem Report?

Code: Alles auswählen.

REPORT  ztest.

TABLES eban.
TYPE-POOLS: slis.

TYPES: BEGIN OF t_eban,
        ekorg TYPE eban-ekorg,
        banfn TYPE eban-banfn,
        dummy TYPE i,
END OF t_eban.

DATA: ekorg_buffer TYPE t_eban-ekorg,
      banfn_buffer TYPE t_eban-banfn,
      dummy_buffer TYPE t_eban-dummy.

DATA: it_eban TYPE STANDARD TABLE OF t_eban WITH HEADER LINE, "INITIAL SIZE 0,
      wa_eban TYPE t_eban.

*Alv data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
      gd_tab_group TYPE slis_t_sp_group_alv,
      gd_layout TYPE slis_layout_alv,
      gd_repid LIKE sy-repid.





START-OF-SELECTION.

  PERFORM data_retrieval.
  PERFORM build_fieldcatalog.
  PERFORM build_layout.
  PERFORM display_alv_report.





*&---------------------------------------------------------------------*
*&      Form  data_retrieval
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM data_retrieval .

*  SELECT ekorg banfn  FROM eban INTO TABLE it_eban.
  ekorg_buffer = 'MIK'.
  banfn_buffer = '111'.
  dummy_buffer = 222.

  MOVE ekorg_buffer TO wa_eban-ekorg.
  MOVE banfn_buffer TO wa_eban-banfn.
  MOVE dummy_buffer TO wa_eban-dummy.

  APPEND wa_eban TO it_eban.

  ekorg_buffer = 'AAA'.
  banfn_buffer = '222'.
  dummy_buffer = 333.

  MOVE ekorg_buffer TO wa_eban-ekorg.
  MOVE banfn_buffer TO wa_eban-banfn.
  MOVE dummy_buffer TO wa_eban-dummy.

  APPEND wa_eban TO it_eban.



ENDFORM.                    " data_retrieval
*&---------------------------------------------------------------------*
*&      Form  build_fieldcatalog
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_fieldcatalog .

  fieldcatalog-fieldname = 'EKORG'.
  fieldcatalog-seltext_m = 'Purchasing organization'.
  fieldcatalog-col_pos = 0.
  fieldcatalog-outputlen = 10.
  fieldcatalog-emphasize = 'X'.
  fieldcatalog-key = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR fieldcatalog.

  fieldcatalog-fieldname = 'BANFN'(201).
  fieldcatalog-seltext_m = 'Purchase Order number'.
  fieldcatalog-col_pos = 1.
  fieldcatalog-outputlen = 10.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR fieldcatalog.

  fieldcatalog-fieldname = 'DUMMY'.
  fieldcatalog-seltext_m = 'Purchase Order number'.
  fieldcatalog-col_pos = 2.
  fieldcatalog-outputlen = 10.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR fieldcatalog.




ENDFORM.                    " build_fieldcatalog
*&---------------------------------------------------------------------*
*&      Form  build_layout
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_layout .

  gd_layout-no_input = 'X'.
  gd_layout-colwidth_optimize = 'X'.
  gd_layout-totals_text = 'Totals'(201).


ENDFORM.                    " build_layout
*&---------------------------------------------------------------------*
*&      Form  display_alv_report
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM display_alv_report .

  gd_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = gd_repid
      is_layout          = gd_layout
      it_fieldcat        = fieldcatalog[]
      i_save             = 'X'
    TABLES
      t_outtab           = it_eban
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
  IF sy-subrc EQ 0.
    WRITE: / ' An Error occured'.
  ENDIF.

ENDFORM.                    " display_alv_report

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


Beitrag von ewx (Top Expert / 4871 / 314 / 644 ) »
Hi Lehmo,

habe ich zufällig auch gerade gemacht...
du musst dem REUSE_ALV_GRID_DISPLAY folgendes mitgeben:

Code: Alles auswählen.

[...]
      i_callback_program     = lf_repid "Reportname (SY-REPID)
      i_callback_user_command  = 'CALLBACK_UCOMM'
[...]

Code: Alles auswählen.

FORM callback_ucomm  USING r_ucomm     LIKE sy-ucomm
                                rs_selfield TYPE slis_selfield.

  CASE r_ucomm.
    WHEN '&IC1'.
       perform anzeige_neues_grid.
*      rs_selfield-exit = 'X'.
 endcase.
Gruß, Enno

PS: hockt man eigentlich zuviel vor einem SAP-system, wenn man seine Beiträge mit CTRL-F3 abschicken will.... :lol: :roll:

Beitrag von Lehmo (ForumUser / 30 / 0 / 0 ) »
Müsste nicht irgendwo noch "double_click" auftauchen?

Beitrag von ewx (Top Expert / 4871 / 314 / 644 ) »

Beitrag von Lehmo (ForumUser / 30 / 0 / 0 ) »
Also ich habe jetzt mal die Sachen so erweitert. Aber wenn ich einen doppelklick auf eine Zeile mache, passiert leider nichts. Hab ich irgendetwas übersehen oder vergessen oder falsch gemacht.

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report  ZTEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ztest.

TABLES eban.
TYPE-POOLS: slis.

TYPES: BEGIN OF t_eban,
        ekorg TYPE eban-ekorg,
        banfn TYPE eban-banfn,
        dummy TYPE i,
END OF t_eban.

DATA: ekorg_buffer TYPE t_eban-ekorg,
      banfn_buffer TYPE t_eban-banfn,
      dummy_buffer TYPE t_eban-dummy.

DATA: it_eban TYPE STANDARD TABLE OF t_eban WITH HEADER LINE, "INITIAL SIZE 0,
      wa_eban TYPE t_eban.

*Alv data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
      gd_tab_group TYPE slis_t_sp_group_alv,
      gd_layout TYPE slis_layout_alv,
      gd_repid LIKE sy-repid,
      lf_repid LIKE sy-repid.




START-OF-SELECTION.

  PERFORM data_retrieval.
  PERFORM build_fieldcatalog.
  PERFORM build_layout.
  PERFORM display_alv_report.






*&---------------------------------------------------------------------*
*&      Form  data_retrieval
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM data_retrieval .

*  SELECT ekorg banfn  FROM eban INTO TABLE it_eban.
  ekorg_buffer = 'MIK'.
  banfn_buffer = '111'.
  dummy_buffer = 222.

  MOVE ekorg_buffer TO wa_eban-ekorg.
  MOVE banfn_buffer TO wa_eban-banfn.
  MOVE dummy_buffer TO wa_eban-dummy.

  APPEND wa_eban TO it_eban.

  ekorg_buffer = 'AAA'.
  banfn_buffer = '222'.
  dummy_buffer = 333.

  MOVE ekorg_buffer TO wa_eban-ekorg.
  MOVE banfn_buffer TO wa_eban-banfn.
  MOVE dummy_buffer TO wa_eban-dummy.

  APPEND wa_eban TO it_eban.



ENDFORM.                    " data_retrieval
*&---------------------------------------------------------------------*
*&      Form  build_fieldcatalog
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_fieldcatalog .

  fieldcatalog-fieldname = 'EKORG'.
  fieldcatalog-seltext_m = 'Purchasing organization'.
  fieldcatalog-col_pos = 0.
  fieldcatalog-outputlen = 10.
  fieldcatalog-emphasize = 'X'.
  fieldcatalog-key = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR fieldcatalog.

  fieldcatalog-fieldname = 'BANFN'(201).
  fieldcatalog-seltext_m = 'Purchase Order number'.
  fieldcatalog-col_pos = 1.
  fieldcatalog-outputlen = 10.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR fieldcatalog.

  fieldcatalog-fieldname = 'DUMMY'.
  fieldcatalog-seltext_m = 'Purchase Order number'.
  fieldcatalog-col_pos = 2.
  fieldcatalog-outputlen = 10.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR fieldcatalog.




ENDFORM.                    " build_fieldcatalog
*&---------------------------------------------------------------------*
*&      Form  build_layout
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_layout .

  gd_layout-no_input = 'X'.
  gd_layout-colwidth_optimize = 'X'.
  gd_layout-totals_text = 'Totals'(201).


ENDFORM.                    " build_layout
*&---------------------------------------------------------------------*
*&      Form  display_alv_report
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM display_alv_report .

  gd_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = lf_repid "gd_repid
      i_callback_user_command = 'CALLBACK_UCOMM'
      is_layout               = gd_layout
      it_fieldcat             = fieldcatalog[]
      i_save                  = 'X'
    TABLES
      t_outtab                = it_eban
    EXCEPTIONS
      program_error           = 1
      OTHERS                  = 2.
  IF sy-subrc EQ 0.
    WRITE: / ' An Error occured'.
  ENDIF.

ENDFORM.                    " display_alv_report

*&---------------------------------------------------------------------*
*&      Form  callback_ucomm
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM callback_ucomm  USING r_ucomm     LIKE sy-ucomm
                                rs_selfield TYPE slis_selfield.

  CASE r_ucomm.
    WHEN '&IC1'.
      PERFORM anzeige_neues_grid.
*      rs_selfield-exit = 'X'.
  ENDCASE.

ENDFORM.                    "callback_ucomm
*&---------------------------------------------------------------------*
*&      Form  anzeige_neues_grid
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM anzeige_neues_grid .

  WRITE: /'Zweites Layout'.

ENDFORM.                    " anzeige_neues_grid

Beitrag von ewx (Top Expert / 4871 / 314 / 644 ) »
gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lf_repid "gd_repid
hier musst du wieder gd_repid übergeben!
Gruß, Enno

Beitrag von Lehmo (ForumUser / 30 / 0 / 0 ) »
Sorry ich raffs nicht. Wo soll ich was eintragen ???

Code: Alles auswählen.

FORM display_alv_report .

  gd_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = lf_repid "gd_repid
      i_callback_user_command = 'CALLBACK_UCOMM'
      is_layout               = gd_layout
      it_fieldcat             = fieldcatalog[]
      i_save                  = 'X'
    TABLES
      t_outtab                = it_eban
    EXCEPTIONS
      program_error           = 1
      OTHERS                  = 2.
  IF sy-subrc EQ 0.
    WRITE: / ' An Error occured'.
  ENDIF.

ENDFORM.                    " display_alv_report
:oops:

Beitrag von ewx (Top Expert / 4871 / 314 / 644 ) »
Lehmo hat geschrieben: gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
i_callback_user_command = 'CALLBACK_UCOMM'
is_layout = gd_layout
Gruß, Enno

Beitrag von BesenWesen (Specialist / 183 / 0 / 0 ) »
ewx hat geschrieben:PS: hockt man eigentlich zuviel vor einem SAP-system, wenn man seine Beiträge mit CTRL-F3 abschicken will.... :lol: :roll:
jap! ich kenn das... geht mir auch so :o
oder ein Officedokument.... alt+s sichern, crtl+f3 ...
Gruss
BesenWesen

Beitrag von Lehmo (ForumUser / 30 / 0 / 0 ) »
ewx hat geschrieben:
Lehmo hat geschrieben: gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
i_callback_user_command = 'CALLBACK_UCOMM'
is_layout = gd_layout
Gruß, Enno

Super, es klappt prinzipiell, ich könnte schonmal mit CALL Transaction in eine andere Transaktion abspringen. Gibt es auch eine Möglichkeit die Werte aus der Doppelgeklickten Zeile des ALVs auszulesen??

Vielen Dank schonmal soweit.

Beitrag von BesenWesen (Specialist / 183 / 0 / 0 ) »
Lehmo hat geschrieben:Gibt es auch eine Möglichkeit die Werte aus der Doppelgeklickten Zeile des ALVs auszulesen??

Vielen Dank schonmal soweit.
ja,aber dann waerst du bei der OO und da wolltest du ja nicht hin oder?...
ein anderer Weg ist mir nicht bekannt.
Gruss
BesenWesen

Beitrag von Lehmo (ForumUser / 30 / 0 / 0 ) »
Ok, wie groß wäre der Aufwand OO mit einzufügen? Müsste ich generell an meinem Code etwas ändern?

Funktioniert OO auch in einem normalen Report oder muss man dazu Dynpros nutzen?

Beitrag von ewx (Top Expert / 4871 / 314 / 644 ) »
Hi Lehmo,

die Daten werden im ALV ja nicht geändert und du bekommst im Callback_User_Command im Feld rs_selfield-tabindex die Zeile zurück... 8)
Gruß, Enno

Beitrag von Desaster (ForumUser / 68 / 0 / 0 ) »
Hallo Lehmo,
Lehmo hat Folgendes geschrieben:
Gibt es auch eine Möglichkeit die Werte aus der Doppelgeklickten Zeile des ALVs auszulesen??
Der Wert der doppelgeklicken Zeile steht in: rs_selfield-tabindex.

Die Zeile kannst Du zB. so auslesen:

Code: Alles auswählen.

read table itab index rs_selfield-tabindex.
ahaa - zu langsam!!! :lol:

Gruss Desaster

Beitrag von JHM (Top Expert / 1201 / 1 / 197 ) »
Lehmo hat geschrieben:Gibt es auch eine Möglichkeit die Werte aus der Doppelgeklickten Zeile des ALVs auszulesen??
Natürlich sogar ohne OO :)

In der Form CALLBACK_UCOMM bekommst du wichtigsten Daten in die Hand.
Du bekommst die Struktur RS_SELFIELD mit gegeben. Diese beinhaltet die wichtigsten Daten:

tabname : Name der internen Ausgabetabelle
tabindex : Index der internen Ausgabetabelle, Zeile welche doppelt geklickt wurde
fieldnae: Feldname, welches doppelt geklickt wurde
endsum : Cursor steht auf der Endsummenzeile
sumindex : wenn >0, befindet sich Cursor auf einer Zwischensummenzeile
value : Wert des Feldes auf der Liste, welches doppelt geklickt wurde

[edit] da waren die Kolegen schneller
Gruß Hendrik

Vergleichbare Themen

2
Antw.
4570
Views
ALV Grid Doppelklick Handeling im PAI
von RickBNK » 01.02.2012 13:44 • Verfasst in ABAP® Core
4
Antw.
6002
Views
ALV Grid 'REUSE_ALV_GRID_DISPLAY' Doppelklick
von Gast » 19.12.2005 15:42 • Verfasst in ABAP® Core
0
Antw.
1516
Views
ALV GRID - Doppelklick auf Checkbox
von wobauer1 » 21.08.2006 10:36 • Verfasst in ABAP Objects®
1
Antw.
1799
Views
Dynprodurchlauf nach Doppelklick im ALV-GRID
von cosmo » 28.04.2005 14:02 • Verfasst in ABAP Objects®
2
Antw.
1527
Views
Nach Rückkehr bei Doppelklick ALV Grid verändern
von reha » 31.08.2006 11:25 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1791
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2332

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

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1791
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2332

Unbeantwortete Forenbeiträge

Export von Spools in XLSX
vor 4 Tagen von abapamateur 1 / 367
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 974
MS-Word als Editor
letzen Monat von tekko 1 / 4478