Refresh bei ALV funktioniert nicht

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Refresh bei ALV funktioniert nicht

Beitrag von robertli (ForumUser / 5 / 0 / 0 ) »
Hallo zusammen,

Dank der Beiträge hier konnte ich recht problemlos eine ALV-Liste erstellen, mit Top-of-Page/Top of List und einem eigenen Status und 'Refresh-Knopf'. Allerdings komme ich jetzt nicht weiter: Ich möchte zum Zeitpunkt Top-of-Page/Top of List dem Benutzer eine Nachricht ausgeben. Danach sollte nach dem Dücken von 'Refresh' sich die Nachricht aktualisieren.

Und das klappt eben nicht.

Hat vielleicht jemand eine Lösung ?

Robert

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


Beitrag von zzcpak (Expert / 673 / 5 / 67 ) »
das folgende Beispiel ist vielleicht ein wenig hirnrissig, zeigt aber, wie man den TOP_OF_PAGE Teil mit dem Refresh ändern kann

Das Beispiel gibt einfach eine ALV-Grid-Liste aus. Beim Drücken auf Refresh wird einfach die Buchstabenreihenfolge im Listkopf verdreht. Man benötigt dafür drei Formroutinen, die beim Aufruf des ALV-Grid mitgegeben werden.

TOP_OF_PAGE --> Darstellung des Listkopfes
SET_PF_STATUS --> eig. Status mit Refresh-Knopf
USER_COMMAND --> um Refresh-Klick zu behandeln

Meintest du sowas in der Art?

Code: Alles auswählen.

REPORT zz_alv_refresh.

TYPE-POOLS slis.

DATA: it_kna1 TYPE TABLE OF kna1,
      wa_kna1 TYPE kna1,
      it_fieldcat TYPE slis_t_fieldcat_alv.

DATA: gl_repid LIKE sy-repid,
      it_top TYPE slis_t_listheader,
      wa_top TYPE slis_listheader.

FIELD-SYMBOLS <fs_fieldcat> TYPE slis_fieldcat_alv.


START-OF-SELECTION.


* irgendwas für den List-Header
  wa_top-typ = 'A'.
  wa_top-info = 'Info im Listheader'.
  APPEND wa_top TO it_top.


  gl_repid = sy-repid.

* erste 10 Datensätze einlesen
  SELECT * FROM kna1 UP TO 500 ROWS
                     INTO TABLE it_kna1.


* Feldkatalog erstellen
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
            i_structure_name       = 'KNA1'
       CHANGING
            ct_fieldcat            = it_fieldcat
       EXCEPTIONS
            inconsistent_interface = 1
            program_error          = 2
            OTHERS                 = 3.

* nur KUNNR, NAME1 und NAME2 anzeigen
  LOOP AT it_fieldcat ASSIGNING <fs_fieldcat>
                      WHERE fieldname NE 'KUNNR'
                      AND   fieldname NE 'NAME1'
                      AND   fieldname NE 'NAME2'.
    <fs_fieldcat>-no_out = 'X'.
  ENDLOOP.


* Liste darstellen
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            i_callback_program       = gl_repid
            i_callback_pf_status_set = 'SET_PF_STATUS'
            i_callback_user_command  = 'USER_COMMAND'
            i_callback_top_of_page   = 'TOP_OF_PAGE'
            it_fieldcat              = it_fieldcat
       TABLES
            t_outtab                 = it_kna1
       EXCEPTIONS
            program_error            = 1
            OTHERS                   = 2.


* eigenen Status (z.B. aus Kopie von Status Standard
* aus Programm SAPLSALV) setzen mit REFRESH-Button
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'STANDARD' EXCLUDING rt_extab.
ENDFORM.


* Form für den Listkopf
FORM top_of_page.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
       EXPORTING
            it_list_commentary = it_top.

ENDFORM.


* Klick auf REFRESH behandeln
FORM user_command  USING r_ucomm LIKE sy-ucomm
                         rs_selfield TYPE slis_selfield.

  CASE r_ucomm.

    WHEN 'REFR'.
      LOOP AT it_top INTO wa_top.
        CALL FUNCTION 'STRING_REVERSE'
             EXPORTING
                  string    = wa_top-info
                  lang      = ' '
             IMPORTING
                  rstring   = wa_top-info
             EXCEPTIONS
                  too_small = 1
                  OTHERS    = 2.
        MODIFY it_top FROM wa_top.
      ENDLOOP.
      PERFORM top_of_page.

  ENDCASE.


ENDFORM.


Beitrag von robertli (ForumUser / 5 / 0 / 0 ) »
Hallo zzcpak,

Vielen Dank für die Hilfe, dein Beispiel funktioniert tadellos. Ich rufe jetzt bei 'REFR' nochmals die Routine Top-of-PAge auf, damit verändert sich die Überschrift. Allerdings verschwindet bei mir die eigentliche ALV-Liste nach dem Refresh. Ich benutze allerdings auch die Funktion 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'.

Hättest du nochmals eine Idee?

Beitrag von robertli (ForumUser / 5 / 0 / 0 ) »
Hallo zzcpak,

Vielen Dank für die Hilfe, dein Beispiel funktioniert tadellos. Ich rufe jetzt bei 'REFR' nochmals die Routine Top-of-PAge auf, damit verändert sich die Überschrift. Allerdings verschwindet bei mir die eigentliche ALV-Liste nach dem Refresh. Ich benutze allerdings auch die Funktion 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'.

Hättest du nochmals eine Idee?

Beitrag von zzcpak (Expert / 673 / 5 / 67 ) »
ähhh nein, habe mit dieser Art Liste noch nix gemacht. Evtl. könntest du versuchen, in der Form USER_COMMAND vor Änderung des Titels mit dem Fuba REUSE_ALV_LIST_LAYOUT_INFO_GET die Listeinstellungen zu sichern und nach Änderung des Titels mit REUSE_ALV_LIST_LAYOUT_INFO_SET wieder zu setzen. Vielleicht bleibt die angezeigte Liste damit erhalten.

Seite 1 von 1

Vergleichbare Themen

7
Antw.
1784
Views
SALV Refresh funktioniert nicht
von Abapanfänger » 27.08.2019 12:48 • Verfasst in ABAP® für Anfänger
1
Antw.
1802
Views
cl_salv_table refresh funktioniert nicht?
von abapz » 08.10.2015 11:28 • Verfasst in ABAP® für Anfänger
4
Antw.
4994
Views
cl_salv_table refresh funktioniert nicht?
von abapz » 08.10.2015 11:27 • Verfasst in ABAP® für Anfänger
6
Antw.
5018
Views
ALV Refresh Table Display funktioniert nicht.
von Ichse2 » 21.02.2020 13:02 • Verfasst in ABAP Objects®
7
Antw.
2858
Views
Refresh im ALV
von jondahl11 » 21.09.2006 11:02 • Verfasst in ABAP® für Anfänger

Ü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.