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.