Текущее время: Чт, июл 17 2025, 01:12

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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