Aufruf per Funktionsbaustein

Im folgenden wird erklärt, wie das ALV-Grid einfach mithilfe eines Funktionsbausteines aufgerufen und angepasst werden kann.

Der Funktionsbaustein REUSE_ALV_GRID_DISPLAY_LVC ermöglicht es, eine Liste als ALV-Grid auszugeben. Viele Parameter machen den Funktionsbaustein sehr variabel.

Minimal-Aufruf

Für eine einfache Liste brauchen Sie nur die Tabelle mit den Daten zu übergeben, sowie die Dictionary-Struktur, nach der die Datentabelle definiert ist.

DATA:
  t_tab like ztest_struc_alv occurs 0 with header line.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC’
  EXPORTING
    i_structure_name = ‘ZTEST_STRUC_ALV’
  TABLES
    t_outtab         = t_tab
  EXCEPTIONS
    OTHERS           = 2.

Aufruf mit Auswahl

In folgendem Beispiel wird die Mandanten-Tabelle T000 eingelesen und in einem Popup angezeigt. Der Mandant wird als HOTSPOT deklariert und kann mittels Mausklick ausgewählt werden.

Bei “Enter” wird der erste Eintrag ausgewählt.

TYPE-POOLS slis.

DATA lt_popup        TYPE STANDARD TABLE OF t000 WITH HEADER LINE.
DATA lv_exit_call    TYPE c.
DATA ls_exit_user    TYPE slis_exit_by_user.
DATA lt_excl         TYPE slis_t_extab.
DATA lt_fcat         TYPE  slis_t_fieldcat_alv.
FIELD-SYMBOLS <fcat> TYPE  slis_fieldcat_alv.

START-OF-SELECTION.

*** Tabelle T000 einlesen
  SELECT * FROM t000 INTO TABLE lt_popup.

*** Feldkatalog besorgen
  CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
    EXPORTING
      i_structure_name       = ‘T000’
      i_client_never_display = ‘ ‘
    CHANGING
      ct_fieldcat            = lt_fcat
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.

*** um dann das Feld “Mandant” als Hotspot-Feld zu definieren
  LOOP AT lt_fcat ASSIGNING <fcat>.
    IF <fcat>-fieldname = ‘MANDT’.
      <fcat>-hotspot = ‘X’.
    ENDIF.
  ENDLOOP.

*** Aufruf als Popup
  CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
    EXPORTING
      i_grid_title            = ‘Auswahl’
      i_callback_program      = sy-cprog
      i_callback_user_command = ‘USER_COMMAND’
      it_fieldcat             = lt_fcat
      it_excluding            = lt_excl
      i_screen_start_column   = 10
      i_screen_start_line     = 2
      i_screen_end_column     = 80
      i_screen_end_line       = 10
    IMPORTING
      e_exit_caused_by_caller = lv_exit_call
      es_exit_caused_by_user  = ls_exit_user
    TABLES
      t_outtab                = lt_popup
    EXCEPTIONS
      program_error           = 1
      OTHERS                  = 2.

*** Ausgabe des Ergebnisses
  WRITE: / ‘Exit Call’, lv_exit_call.
  WRITE: / ‘Exit User Back’, ls_exit_user-back.
  WRITE: / ‘Exit User Exit’, ls_exit_user-exit.
  WRITE: / ‘Exit User Canc’, ls_exit_user-cancel.
  WRITE: / ‘Auswahl       ‘, lt_popup-mandt.

*&———————————————————————*
*&      Form  user_command
*&———————————————————————*
FORM user_command  USING r_ucomm LIKE sy-ucomm
                       rs_selfield TYPE slis_selfield.

*** Bei erster Auswahl den Baustein verlassen:
  rs_selfield-exit = ‘X’.
*** …und die ausgewählte Zeile lesen
  READ TABLE lt_popup INDEX rs_selfield-tabindex.

ENDFORM.                    “user_command

 

Enno Wulff

Leave a Comment