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

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


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

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


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

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