Текущее время: Пн, июл 28 2025, 21:13

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Определение выделенных строк в ALV
СообщениеДобавлено: Пн, мар 22 2010, 12:06 
Председатель
Председатель

Зарегистрирован:
Чт, май 10 2007, 09:15
Сообщения: 1558
Господа следующая ситуация:
Определяю выделенные строки в ALV с помощью.
call method alvg->get_selected_rows
importing ET_ROW_NO = it_roid.
loop at it_roid into wa_roid.
read table it into wa index wa_roid-row_id.
endloop.

Соответственно если, используется сортировка по какому-либо столбку - то определяется не верная строка.
То есть если изменен порядок строк в исходной таблице то определение строк происходит не правильно.
Господа, может кто-либо столкивался ?
Может следует определять строку не с помощью read table - а есть другой механизм.
Или сортировку переделывать на order by в исходной таблице ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Определение выделенных строк в ALV
СообщениеДобавлено: Пн, мар 22 2010, 12:12 
Специалист
Специалист

Зарегистрирован:
Чт, окт 26 2006, 16:44
Сообщения: 149
Откуда: Москва
Используйте вместо ET_ROW_NO другой возвращаемы параметр ET_INDEX_ROWS. В нем есть поле index, значение которого как раз можно подставить в READ.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение выделенных строк в ALV
СообщениеДобавлено: Пн, мар 22 2010, 12:52 
Председатель
Председатель

Зарегистрирован:
Чт, май 10 2007, 09:15
Сообщения: 1558
Оба параметра возвращают одинаковые значение...
Не получаются корректно определить строку.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Определение выделенных строк в ALV
СообщениеДобавлено: Пн, мар 22 2010, 13:03 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
hub2002 написал(а):
Оба параметра возвращают одинаковые значение...
Не получаются корректно определить строку.

http://sapboard.ru/forum/viewtopic.php?f=13&t=23969


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение выделенных строк в ALV
СообщениеДобавлено: Пн, мар 22 2010, 13:18 
Специалист
Специалист

Зарегистрирован:
Чт, окт 26 2006, 16:44
Сообщения: 149
Откуда: Москва
hub2002, сложно помочь Вам, не видя программы целиком, увы. Однако данный метод должен давать верный результат без всяких дополнительных "наворотов". Вопрос в том, где вы его вызываете, какими методами сортируете таблицу, редактируемый у вас ALV или нет...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение выделенных строк в ALV
СообщениеДобавлено: Пн, мар 22 2010, 13:23 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Когда грид создаете, передаете что-нибудь типа I_APPL_EVENTS = 'X' ?

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение выделенных строк в ALV
СообщениеДобавлено: Пн, мар 22 2010, 13:55 
Специалист
Специалист

Зарегистрирован:
Чт, апр 13 2006, 16:14
Сообщения: 233
Пол: Мужской
Я вызывал метод get_sort_criteria (точно не помню), потом ITAB сортировал соответствующим образом :roll:

_________________
Роман Чуев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение выделенных строк в ALV
СообщениеДобавлено: Пн, мар 22 2010, 13:59 
Председатель
Председатель

Зарегистрирован:
Чт, май 10 2007, 09:15
Сообщения: 1558
Обработка сделана на экране process after input.
MODULE USER_COMMAND_0100 INPUT.

case ok_code.
when 'BACK'.
leave to screen 0.
when 'CANCEL'.
leave to screen 0.
when 'EXIT'.
leave program.
when 'REFRESH'.
perform refresh_alv.
when 'EDIT_AUFNR'.
* Редактирование ПЗ
* Определяем выделенные строки
perform alv_selected_rows.
* Пробегаем все выделенные строки
loop at it_roid into wa_roid.
read table it into wa index wa_roid-row_id.
* Передаем номер ПЗ и запускаем транзакцию CO02
set parameter ID 'ANR' field wa-aufnr.
call transaction 'CO02' and skip first screen.
endloop.


form alv_selected_rows.
call method alvg->get_selected_rows
importing
ET_ROW_NO = it_roid.
* ET_INDEX_ROWS = it_rows.

if it_roid is initial.
message 'Не выбрано ни одной строки' type 'E'.
endif.
endform.

в таблицах it_roid и it_rows одинаковые данные.

Насчет I_APPL_EVENTS не понял. Что это такое ?


Грид:
if alvg_cont is initial.

create object alvg_cont
exporting
container_name = 'ZCONTAINER'.

create object alvg
exporting
i_parent = alvg_cont.

* Заполняем каталог полей
perform alv_fill_fcat.
* Устанавливаем порядок сортировки
perform alv_fill_sort.
* Устанавливаем фильтр
perform alv_fill_filter.
* Устанавливаем формат
perform alv_vari_layout.
* Устанавливаем общие настройки
perform alv_fill_layout.
* Устанавливаем настройки печати
perform alv_fill_print.
* Исключаем из toolbar ненужные кнопки
perform alv_excl_toolbar.
* Показываем ALV Grid Control
call method alvg->set_table_for_first_display
EXPORTING
is_variant = wa_vrnt
i_save = 'A' "(X,U,A,' ')
i_default = 'X' " default wa_layout allowed
is_layout = wa_layo
is_print = wa_prnt
it_toolbar_excluding = it_tlbe
* i_structure_name = 'ZNPP_COOIS'
i_bypassing_buffer = 'X'
CHANGING
it_outtab = it_alv
it_fieldcatalog = it_fcat
it_sort = it_sort
it_filter = it_filt
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
others = 4.

if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
create object alvg_event_receiver.
set handler alvg_event_receiver->handle_double_click for alvg.
endif.


Грид не редактируемый. А сортирует его пользователь во время работы. Програмным кодом не сортируется...
Соответственно таблица it_sort пустая в момент вызова set_table_for_first_display


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Определение выделенных строк в ALV
СообщениеДобавлено: Пн, мар 22 2010, 14:03 
Председатель
Председатель

Зарегистрирован:
Чт, май 10 2007, 09:15
Сообщения: 1558
Мне тоже пришла в голову идея по сортировке внутреней таблицы с помощью, get_sort_criteria.
Но я думаю должен быть стандартный механизм...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Определение выделенных строк в ALV
СообщениеДобавлено: Пн, мар 22 2010, 14:31 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, янв 30 2007, 19:13
Сообщения: 74
Пол: Мужской
Нужно брать it_rows-index только тогда, когда it_rows-rowtype пустое.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение выделенных строк в ALV
СообщениеДобавлено: Пн, мар 22 2010, 14:37 
Специалист
Специалист

Зарегистрирован:
Пт, сен 05 2008, 08:08
Сообщения: 134
Пол: Женский
hub2002 написал(а):
Обработка сделана на экране process after input.
MODULE USER_COMMAND_0100 INPUT.

case ok_code.
....
when 'REFRESH'.
perform refresh_alv.
when 'EDIT_AUFNR'.
* Редактирование ПЗ
* Определяем выделенные строки
perform alv_selected_rows.

Мне кажется, не совсем логично, что кнопки добавлены в статус экрана. В тулбар ALV если добавить, никаких таких проблем не будет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение выделенных строк в ALV
СообщениеДобавлено: Пн, мар 22 2010, 14:42 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, янв 30 2007, 19:13
Сообщения: 74
Пол: Мужской
Цитата:
Мне кажется, не совсем логично, что кнопки добавлены в статус экрана. В тулбар ALV если добавить, никаких таких проблем не будет.


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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение выделенных строк в ALV
СообщениеДобавлено: Пн, мар 22 2010, 14:47 
Председатель
Председатель

Зарегистрирован:
Чт, май 10 2007, 09:15
Сообщения: 1558
Нужно брать it_rows-index только тогда, когда it_rows-rowtype пустое.
------------------------------------------------------------------------------------
Оно и есть пустое... но не верное...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Определение выделенных строк в ALV
СообщениеДобавлено: Пн, мар 22 2010, 14:55 
Специалист
Специалист

Зарегистрирован:
Пт, сен 05 2008, 08:08
Сообщения: 134
Пол: Женский
tav написал:
Цитата:
Мне кажется, не совсем логично, что кнопки добавлены в статус экрана. В тулбар ALV если добавить, никаких таких проблем не будет.


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

IMHO, разница есть между тем, как отрабатывают кнопки в тулбаре и в статусе экрана.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение выделенных строк в ALV
СообщениеДобавлено: Пн, мар 22 2010, 15:16 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, янв 30 2007, 19:13
Сообщения: 74
Пол: Мужской
В PBO экрана вызываете метод грида refresh_table_display?


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.

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


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

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


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

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