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

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


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

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


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

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