REUSE_ALV_GRID_DISPLAY: Zugriff auf die Symbolleiste

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

REUSE_ALV_GRID_DISPLAY: Zugriff auf die Symbolleiste

Beitrag von Jura (ForumUser / 88 / 0 / 0 ) »
Hallo Zusammen,

für die Alv-Liste benutze ich den FB 'REUSE_ALV_GRID_DISPLAY' und eine breite interne Tabelle. Um alle Spalten der Tabelle anzeigen zu können, habe ich die Tasten 'Blättern vor' und 'Blättern zurück' eingerichtet. So werden beim Blättern immer andere Spalten der Tabelle angezeigt. Das Problem tritt auf, wenn ich nach dem Blättern aus der Liste herauskommen möchte. Denn beim Drücken der Taste F3 in der Symbolleiste bekomme ich nacheinander zuerst die Alv-Seiten, die ich vorher angezeigt habe und erst dann wird die Liste verlassen. Ich habe zwar ein Unterprogramm 'User_command' eingebaut, der Debugger springt aber im Fall der Taste F3 in den 'User_command' nicht rein.
Lange Beschreibung kurze Frage:
wie kann ich die Taste F3 abfangen und nach dem Blättern aus der Alv-Liste rauskommen ohne vorher alle Listenseiten anzuzeigen?

Für alle Tips bedanke ich mich im voraus.

Grüße,
Jura

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


Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
verstehe nicht so ganz, wieso du das Blättern in der Liste selbst programmieren willst. Der Baustein übernimmt doch schon die komplette Steuerung der Liste.

Ansonsten, um auf deine eig. Frage zurück zu kommen, könnte es helfen, wenn du in deiner User-Command SY-LSIND auf 0 setzt, damit immer auf die gleiche Liststufe geschrieben wird. Bin mir allerdings nicht ganz sicher, wie das in der ALV-Liste intern gesteuert wird.

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Hallo Jura,

poste doch bitte mal den Code, den du hinter die Blättertasten gelegt hast.

Es hört sich nämlich so an, als ob du jedesmal einen neuen Grid aufbaust und anzeigst statt den aktuellen zu ändern.
Oder als ob du beim Blättern jedesmal "CALL SCREEN sy-dynnr" verwendest.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Gast ( / / 0 / 3 ) »
Hallo Zusammen,

ich baue tatsächlich meine interne Tabelle beim Blättern neu auf. Der Grund: ich habe sie mit 90 Spalten definiert, aber es können über 200 Spalten werden, die nur beim Blättern angezeigt werden können. Und den Alv baue ich tatsächlich immer neu auf und immer wieder setze den PF-status und übergebe neu das Layout, da ich andere Spaltenüberschriften übergebe. Hier ist der Code:

Form liste_ausgeben.
PERFORM set_pf_status USING it_extab.
PERFORM set_layout USING wa_layout.

*Listenausgabe mit Alv-Grid
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
i_callback_program = sy-repid
it_fieldcat = it_fieldcat
is_layout = wa_layout
TABLES
t_outtab = it_ausgabe.
endform.

Grüße,
Jura

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Hi Jura,

schau dir mal die Struktur von rs_selfield ( in deiner USER-COMMAND-Routine ) an. Dort gibt es ein Feld "exit". Wenn du das auf 'X' setzt könnte dich das weiterbringen.


P.S.
Durch deinen Aufruf erzeugst du einen immer tiefer werdenden Callstack. Irgendwo gibts dann mal einen Dump, wenn die User zig-mal rumblättern!
Ich schreib dir nachher noch mal einen Kommentar wie man das umgehen könnte, wenn mir da keiner zuvorkommt.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Gast ( / / 0 / 3 ) »
Hallo black_adept,

es hat tatsächlich geklappt! :D
Vielen Dank!
Für den Kommentar gegen Dump wäre ich sehr dankbar. Ansonsten würde ich nur hoffen, dass die User nicht zu viel blättern..

Grüße,
Jura

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Hi Jura,

ich tippe mal dein Programm sieht grundsätzlich im Augenblick so aus.

Code: Alles auswählen.

REPORT zss_test3 .

TYPE-POOLS: slis.

DATA: itab TYPE STANDARD TABLE OF t000 WITH NON-UNIQUE DEFAULT KEY,
      repid TYPE syrepid.


END-OF-SELECTION.

  repid = sy-repid.

  SELECT *
      INTO TABLE itab
      FROM t000.

  PERFORM display.

*&---------------------------------------------------------------------*
*&      Form  display
*&---------------------------------------------------------------------*
FORM display.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            i_callback_program      = repid
            i_callback_user_command = 'ALV_USER_COMMAND'
            i_structure_name        = 'T000'
       TABLES
            t_outtab                = itab
       EXCEPTIONS
            program_error           = 1
            OTHERS                  = 2.
ENDFORM.                                                    " display

*---------------------------------------------------------------------*
*       FORM alv_user_command                                         *
*---------------------------------------------------------------------*
FORM alv_user_command  USING r_ucomm LIKE sy-ucomm
                         rs_selfield TYPE slis_selfield.
* ...  Blätterfunktionen
  PERFORM display.
  rs_selfield-exit = 'X'.
ENDFORM.
Für die Reduzierung des Callstacks musst du dafür sorgen, dass der alte Grid erst beendet wird bevor du den neuen Call absetzt.

Mein Tipp wäre dafür den Aufbau des Grid in eine DO-Schleife zu legen und immer erst wenn du aus dem Grid zurückkommst den neuen aufzubauen.

Etwa so

Code: Alles auswählen.

REPORT zss_test3 .

TYPE-POOLS: slis.

DATA: itab           TYPE STANDARD TABLE OF t000
                     WITH NON-UNIQUE DEFAULT KEY,
      repid          TYPE syrepid,
      g_blaettern(1) TYPE c.


END-OF-SELECTION.

  repid = sy-repid.

  SELECT *
      INTO TABLE itab
      FROM t000.

  DO.
    CLEAR g_blaettern.
    PERFORM display.
    IF g_blaettern IS INITIAL.
* Exit ausgelöst nicht durch Blättern sondern "normal" durch ALV
      EXIT.
    ENDIF.


  ENDDO.

*&---------------------------------------------------------------------*
*&      Form  display
*&---------------------------------------------------------------------*
FORM display.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            i_callback_program      = repid
            i_callback_user_command = 'ALV_USER_COMMAND'
            i_structure_name        = 'T000'
       TABLES
            t_outtab                = itab
       EXCEPTIONS
            program_error           = 1
            OTHERS                  = 2.
ENDFORM.                                                    " display

*---------------------------------------------------------------------*
*       FORM alv_user_command                                         *
*---------------------------------------------------------------------*
FORM alv_user_command  USING r_ucomm LIKE sy-ucomm
                         rs_selfield TYPE slis_selfield.
* Blättern soll zum Neuaufbau führen
* Dazu erstmal den aktuellen Grid abschließen
  rs_selfield-exit = 'X'.
* Und der DO-Schleife mitteilen, dass nochmal prozessiert werden soll
  g_blaettern = 'X'.
ENDFORM.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Jura (ForumUser / 88 / 0 / 0 ) »
Hallo black_adept!

Danke für den Code und überhaupt für den Hinweis der Callstacks-Gefahr. Jetzt funktioniert das Blättern und ich bin happy.

Grüße!
Jura

Seite 1 von 1

Vergleichbare Themen

6
Antw.
5553
Views
Checkbox-Inhalt bei REUSE-ALV-GRID-DISPLAY-LVC
von Ucke » 19.11.2006 21:18 • Verfasst in ABAP® Core
2
Antw.
3149
Views
REUSE _ ALV _ LIST _ DISPLAY - Zeile nicht markieren
von Gast » 12.09.2005 08:42 • Verfasst in ABAP® Core
2
Antw.
2003
Views
ALV GRID Funktionstasten Symbolleiste
von kfx » 22.09.2014 11:09 • Verfasst in ABAP® für Anfänger
4
Antw.
1165
Views
Symbolleiste in ALV-Grid programmieren
von L0w-RiDer » 04.03.2020 15:39 • Verfasst in ABAP® für Anfänger
1
Antw.
2733
Views
Page up and down im REUSE-ALV-Grid
von sapdepp » 24.08.2011 12:11 • Verfasst in ABAP® Core

Über diesen Beitrag


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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 744
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2368
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8954