3 ноября 2010 г.

ABAP: добавление кнопок (и не только) в TOOLBAR ALV GRID, созданного через REUSE_ALV_GRID_DISPLAY

REUSE_ALV_GRID_DISPLAY позволяет указать PF-STATUS который будет использоваться при выводе грида, и название формы в которой будет происходить обработка юзер-комманд. Этим и стоит воспользоваться.

PF-STATUS лучше делать не с нуля, а в транзакции SE41 скопировать из программы SAPLSLVC_FULLSCREEN статус STANDARD_FULLSCREEN, чтобы иметь на тулбаре все стандартные кнопки грида.

После того как статус создан можно писать код.

ПРИМЕР:


В скопированный GUI-STATUS добавил кнопку


*--------------------------------------------------------------*

* сохраняем в перемнную имя программы
  lv_repid = sy-repid.


* вызывавем ФМ, указываем в нем названия форм которые
* устанавливают pf-status и обрабатывают команды
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      I_CALLBACK_PROGRAM                = lv_repid
      I_CALLBACK_PF_STATUS_SET          = 'SET_PF_STATUS'
      I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
      I_GRID_TITLE                      = 'Отчет по планированию доходов'
      IT_FIELDCAT_LVC                   = lt_fcat
    TABLES
      T_OUTTAB                          = it_plantab
    EXCEPTIONS
      PROGRAM_ERROR                     = 1
      OTHERS                            = 2
            .      

* устанавливаем PF-STATUS
FORM SET_PF_STATUS USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'GUI_ALVGRIDX'.
ENDFORM.

* обрабатываем команды
FORM USER_COMMAND USING p_ucomm LIKE sy-ucomm
                        ps_selfield TYPE slis_selfield.
  CASE p_ucomm.
    WHEN 'PXLS'.
      " выполняем что-то крайне важное
  ENDCASE.
ENDFORM.

*--------------------------------------------------------------*
Подробнее...