Текущее время: Ср, июл 16 2025, 03:27

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Добавления кнопки в АЛВ при использовании REUSE_ALV_GRID_DISPLAY
СообщениеДобавлено: Пн, окт 23 2006, 16:15 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 10 2006, 08:44
Сообщения: 320
Откуда: Odessa
Здравствуйте. У меня такой вопрос. Мне нужно добавить кнопку к toolbar алв. Работаю я с АЛВ при помощи REUSE_ALV_GRID_DISPLAY.

В форуме вычитал что это можно зделать так:
Code:
*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM       = lf_programm
      IS_LAYOUT                = ls_layout
      I_CALLBACK_PF_STATUS_SET = 'SET_MY_PF_STATUS'
      I_SAVE                   = 'A'
      IS_VARIANT               = ls_variant
      IT_EVENTS                = lt_events
      IT_FIELDCAT              = lt_fieldcat
      I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
      I_GRID_TITLE             = lf_title
    TABLES
      T_OUTTAB                 = pt_output.
*&---------------------------------------------------------------------*
*&      Form  set_my_pf_status
*&---------------------------------------------------------------------*
*    Установка статуса
*----------------------------------------------------------------------*
FORM SET_MY_PF_STATUS USING PF_TAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS 'ZSTANDARD' OF PROGRAM sy-repid.

ENDFORM.

*&---------------------------------------------------------------------*
*       Обработка команд пользователя
*----------------------------------------------------------------------*
*  -->  R_UCOMM      - команда пользователя
*  -->  RS_SELFIELD  - выбранное поле
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm     LIKE sy-ucomm
                        rs_selfield TYPE slis_selfield.
  DATA: ls_output TYPE TS_OUTPUT_ALV.
  CASE r_ucomm.
    WHEN 'ZPRN'. " Команда указанная вами на вашу кнопку в тулбаре
*Вызов вашейго функционального модуля       
  ENDCASE.
ENDFORM.


Но оно затерает весь статус(кнопки) как АЛВ, так и программы.
Меня интересует просто как добавить кнопку не теряя остальных кнопок и их обработок.

Втрой вариант:


Code:
class lcl_event_receiver definition.

  public section.

    methods:
    handle_toolbar
       for event toolbar of cl_gui_alv_grid
            importing e_object e_interactive,

    handle_user_command
       for event user_command of cl_gui_alv_grid
            importing e_ucomm.

  private section.

endclass.


Потом отимплементим: Код:
class lcl_event_receiver implementation.
  method handle_toolbar.
    data:
      ls_toolbar type stb_button.

      read table e_object->mt_toolbar into ls_toolbar
      with key function = 'SELECTED_LINES'.

      IF sy-subrc <> 0.

        clear ls_toolbar.
        ls_toolbar-butn_type = 3. "separator
        append ls_toolbar to e_object->mt_toolbar.
 
        clear ls_toolbar.
        ls_toolbar-function = 'FORM_SHOW'.
        ls_toolbar-icon = ICON_XLS.
        ls_toolbar-quickinfo = ''. "All lines
        ls_toolbar-butn_type = 0. "push button
        ls_toolbar-disabled = ''.
        ls_toolbar-text = ''.
        append ls_toolbar to e_object->mt_toolbar.
     
      ENDIF.

  endmethod.

  method handle_user_command.
    case e_ucomm.
      when 'FORM_SHOW'.
        perform smartform_main. "тут выводим нашу смартформу
    endcase.
  endmethod.

endclass.


В основной программе: Код:
DATA: my_event_receiver TYPE REF TO lcl_event_receiver,
          alv_grid TYPE REF TO cl_gui_alv_grid.
...
create object my_event_receiver.
set handler my_event_receiver->handle_toolbar for alv_grid.
set handler my_event_receiver->handle_user_command for alv_grid.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
...


Вылетает в дамп на строке:
set handler my_event_receiver->handle_toolbar for alv_grid.

Может кто-то подскажет, или направит на путь истинный :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 23 2006, 16:20 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, мар 10 2006, 10:26
Сообщения: 84
а что у вас в ZSTANDARD?
------- если понял правильно, то ------------------
вам нужно скопировать стандартный АЛВ-статус из любой демонстрационной программы-примера с АЛВ('STANDART_FULLSCREEN') и в него добавить ваши кнопки...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 23 2006, 20:32 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Тут правильно сказали - дело не в коде, а в GUI Status. Надо скопировать STANDARD из functional group SALV и добавить свою кнопку. Если это сделано правильно, то первый вариант, c REUSE_ALV_GRID_DISPLAY, работает (и стандартные кнопки есть, и свои), за второй вариант не ручаюсь.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 24 2006, 08:38 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 10 2006, 08:44
Сообщения: 320
Откуда: Odessa
Всем ОГРОМНОЕ СПАСИБО за помощь :) .
Все красиво получилось.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB