Текущее время: Ср, июл 30 2025, 21:52

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Есть ли способ запустить cl_salv_table в контейнере?
СообщениеДобавлено: Чт, сен 20 2007, 14:53 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, апр 07 2005, 05:27
Сообщения: 621
Откуда: Москва
Пол: Мужской
Постановка:
хочу на экране справа от ALV разместить другие элементы управления (длинный текст итп).

Нарисовал контейнер и создал внутри него Simple ALV:
Code:
      CALL METHOD cl_salv_table=>factory
        EXPORTING
          r_container  = gr_main_cont
        IMPORTING
          r_salv_table = gr_alv
        CHANGING
          t_table      = git_alv.

Контейнер указал явно, иначе ALV разворачивается на весь экран.

Теперь хочется показать статусные кнопки.
И тут наткнулся на засаду: при запуске CALL METHOD gr_alv->set_screen_status выпадает дамп с надписью - "salv позволяет set_screen_status только в режиме "я на весь экран".

Можно конечно использовать cl_gui_alv_grid, но там копаться в много дольше.

Есть какое-то простое решение по отображению ALV в контейнере со стандартными кнопками в заголовке и отработкой простейших событий типа DblClick?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 24 2007, 10:40 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Для добавления кнопок в тулбар ALV нужно дописать следующее перед gr_alv->display( ).
Code:
data: gr_functions type ref to cl_salv_functions.
gr_functions = gr_alv->get_functions( ).
gr_functions->set_all( abap_true ).
Это в случае если не нужны собственные кнопки в тулбаре... Если нужны - то в контейнере не покатит.

Для обработки double_click нужно дописать следующее:
Code:
class lcl_handle_events definition.
  public section.
    methods: on_double_click for event double_click of cl_salv_events_table importing row column.
endclass.

data: gr_events type ref to cl_salv_events_table.
data: event_handler type ref to lcl_handle_events.

gr_events = gr_alv->get_event( ).
create object event_handler.

set handler event_handler->on_double_click for gr_events.

class lcl_handle_events implementation.
  method on_double_click.

  endmethod.
endclass.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 24 2007, 11:20 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, апр 07 2005, 05:27
Сообщения: 621
Откуда: Москва
Пол: Мужской
Я тоже могу скопипастить сюда и другие мульки salv, однако вопрос был: как с минимальными затратами вывести в контейнере ALV?

Инструкция к неработающим методам тут мало помогает )


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 24 2007, 12:23 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Не понял праведного гнева... Ты спросил помощи - я её тебе дал.
Обработка дабл-клика по SALV в примере есть, вывод тулбар в гриде - тоже, gui status через указанный тобой метод не вызвать - посему вызываешь нужный тебе статус по-обычному в каком-нибудь методе PBO экрана.

ЗЫ На этом "скопипастином" коде у меня пользователи в продуктиве работают, и единственный в примере метод отрабатывает вполне... По-этому ничего зазорного в этом не вижу.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 24 2007, 13:31 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, апр 07 2005, 05:27
Сообщения: 621
Откуда: Москва
Пол: Мужской
Сорри, не заметил отличия в коде, думал что мне цитируют документ по Simple ALV :oops:


Thx, работает )


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 24 2007, 13:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
lumer написал:
Инструкция к неработающим методам тут мало помогает )

Метод очень даже работающий. Более того, он правильную ошибку возвращает. Посудите сам, что получится, если каждый контрол будет менять статус экрана.

Несмотря на то, что в названии класса cl_salv_table есть слово "simple", это не значит, что им пользоваться проще. Это фактически тот же cl_gui_alv_grid, только выдержанный в MVC-дизайне. А под ними лежит всё тот же филд-каталог.

А добавить свои кнопки на тулбар контрола можно с помощью gr_functions->add_function.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, сен 24 2007, 13:44 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
sibrin написал:
А добавить свои кнопки на тулбар контрола можно с помощью gr_functions->add_function.

Прикольно, а я блин "проглядел" эту тему...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли способ запустить cl_salv_table в контейнере?
СообщениеДобавлено: Пн, сен 07 2009, 12:49 
Специалист
Специалист

Зарегистрирован:
Чт, сен 04 2008, 12:40
Сообщения: 119
Откуда: Пермь
Пол: Мужской
Мм.. а я что то не могу додумать как это работает...
Не получается добавить свою кнопку! Подскажите в чем дело?
код вот такой

Code:
CL_SALV_TABLE=>FACTORY(
  IMPORTING
    R_SALV_TABLE   = G_ALV
  CHANGING
    T_TABLE        = it_tab1[]
    ).
  G_layout = G_ALV->get_layout( ).
  G_key-report = G_repid.
  G_layout->set_key( G_key ).
  G_layout->set_default( 'X' ).
  G_layout->set_save_restriction( cl_salv_layout=>restrict_none ).
  lr_function = g_alv->get_functions( ).
  lr_function->SET_ALL( ).



TRY.
lr_function->ADD_FUNCTION(
    NAME     = 'SmSf'
*    ICON     =
    TEXT     = 'PrintSF'
    TOOLTIP  = 'Просмотр Смартформы'
    POSITION = if_salv_c_function_position=>right_of_salv_functions
       ).
CATCH CX_SALV_EXISTING
  CX_SALV_WRONG_CALL .
ENDTRY.


в результате выдает динамическую ошибку
Code:
An exception occurred. This exception is dealt with in more detail below
. The exception, which is assinged to the class 'CX_SALV_METHOD_NOT_SUPPORTED',
  was not caught,
which led to a runtime error.
The reason for this exception is:
Класс CL_SALV_FUNCTIONSCLASS метод ENABLE_FUNCTIONMETHOD для SmSfOBJECT Возм.
только в ракурсе сеткиKEY  не поддерживается


Я по всякому пытался комбинировать риведенный выше код. Пытался делать и без подключения стандартных функций, чтобы только моя кнопка была. Не работает... И не могу нигде найти простого объяснения.

_________________
Если долго биться головой об стену, то вскоре в стене появится небольшое отверстие ...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Есть ли способ запустить cl_salv_table в контейнере?
СообщениеДобавлено: Пн, сен 07 2009, 14:06 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, апр 07 2005, 05:27
Сообщения: 621
Откуда: Москва
Пол: Мужской
Сделай через статусы, ручками в se80.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть ли способ запустить cl_salv_table в контейнере?
СообщениеДобавлено: Пн, сен 07 2009, 14:17 
Специалист
Специалист

Зарегистрирован:
Чт, сен 04 2008, 12:40
Сообщения: 119
Откуда: Пермь
Пол: Мужской
ну а такой вариант через методы неработает?

_________________
Если долго биться головой об стену, то вскоре в стене появится небольшое отверстие ...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Есть ли способ запустить cl_salv_table в контейнере?
СообщениеДобавлено: Пн, сен 07 2009, 14:38 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, апр 07 2005, 05:27
Сообщения: 621
Откуда: Москва
Пол: Мужской
Hexogon написал:
ну а такой вариант через методы неработает?

Там выше некто Hexogon пишет что нет.
Остается или опровергать его или за гарантированные 10 минут сделать привычным путем.


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

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


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

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


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

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