Tags: FALV
The latest version of each part of FALV can be found on github repository https://github.com/fidley/falv which you can use in abapGit for easier up to date handling. 
 
Demo for fully dynamic GUI Status in case of full screen FALV. When you use full dynamic GUI status then you're allowed to use up to 35 button slots. Default buttons like SAVE, BACK, UP, EXIT, PRINT,... are already set. If they are disabled you need to enable them with show method of dynamic gui status.
 

"! This is demo for FALV full screen with fully dynamic GUI STATUS
"! done by Lukasz Pegiel for http://abapblog.com
report zdemo_falv04.

datasflight type standard table of sflight.

class lcl_test definition inheriting from zcl_falv.
  public section.

  protected section.
    "redefinition of event handler
    methods evt_user_command redefinition.
  private section.

endclass.

class lcl_test implementation.

  method evt_user_command.
    case e_ucomm.
      when zcl_falv_dynamic_status=>b_01.
        call function 'POPUP_DISPLAY_MESSAGE'
          exporting
            titel 'Popup'   " Title
            msgid '00'
            msgty 'S'
            msgno '001'
            msgv1 'Button 1 clicked'.
      when zcl_falv_dynamic_status=>b_02.
        call function 'POPUP_DISPLAY_MESSAGE'
          exporting
            titel 'Popup'   " Title
            msgid '00'
            msgty 'S'
            msgno '001'
            msgv1 'Button 2 clicked'.
    endcase.
  endmethod.

endclass.

start-of-selection.


  select up to 100 rows
  into corresponding fields of table @sflight
  from sflight.

  "creation of falv with local redefinition
  data falv type ref to lcl_test.
  falv ?= lcl_test=>createexporting  i_subclass cl_abap_classdescr=>describe_by_namep_name 'LCL_TEST' )
                              changing ct_table sflight    .

  "Add title variable
  falv->title_v1 'ZDEMO_FALV04'.

  "Set Gui status to fully dynamic (no standard buttons of ALV Grid)
  falv->gui_status->fully_dynamic abap_true.

  "Add button into GUI status at for function F01 (in partial dynamic GUI Status we can have up to 19 buttons)
  falv->gui_status->add_button(
    exporting
      iv_button              zcl_falv_dynamic_status=>b_01
      iv_text                'POPUP 01'
      iv_icon                icon_abc
*      iv_qinfo               =
*      iv_allowed             = ABAP_TRUE
    exceptions
      button_already_filled  1
      button_does_not_exists 2
      icon_and_text_empty    3
      others                 4
  ).
  if sy-subrc <> 0.
*   message id sy-msgid type sy-msgty number sy-msgno
*              with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.
  "Add button into GUI status at for function F02
  falv->gui_status->add_button(
    exporting
      iv_button              zcl_falv_dynamic_status=>b_02
      iv_text                'POPUP 02'
      iv_icon                icon_address
*      iv_qinfo               =
*      iv_allowed             = ABAP_TRUE
    exceptions
      button_already_filled  1
      button_does_not_exists 2
      icon_and_text_empty    3
      others                 4
  ).
  if sy-subrc <> 0.
*   message id sy-msgid type sy-msgty number sy-msgno
*              with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.

  "Display full screen grid
  falv->display).

Video with demo program: