Age: 41 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Thu Apr 07, 2011 10:12 am Post subject: Сохранить положение скроллинга при перерисовке подэкрана
Для Z-программы правильно описАл действия Удав. Но мне они не подходят. Подробности ниже.
Задача собственно такая. вызывается подэкран на закладку. На подэкране широкий алв. На подэкране соответственно скроллинг. Если алв отмотать на середину, то соответсвенно часть полей пропадет с экрана. Дальше пользователь делает следующие действия: вводим какие то значения или вызывает средство поиска. соответсвенно отрабатывает PAI затем выход на экран, оттуда вызов подэккрана. И в самом начале PBO подэкрана алв уже перерисован и расположен в первоначальном положении, а не в том какое установил пользователь, когда вводил значение.
Экран и подэкран стандарт, поэтому сильно не поэкспериментируешь. Но буду рад любым идеям. Любые расширения стандарта думаю возможны. _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Last edited by XXX_:) on Sun Apr 10, 2011 10:36 am; edited 1 time in total
Age: 41 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Thu Apr 07, 2011 1:43 pm Post subject:
Тут не только сохраняем скроллинг, но и выделение ячейки.
На выходе с экрана помещаем этот код(если с экрана не выходим то refresh_table)
Code:
DATA: ls_row_no_scroll TYPE lvc_s_roid
,ls_row_info TYPE lvc_s_row
,ls_col_info TYPE lvc_s_col
,ls_row_id TYPE lvc_s_row
,ls_col_id TYPE lvc_s_col
,ls_row_no TYPE lvc_s_roid
,lt_index_rows TYPE lvc_t_row
,lt_row_no TYPE lvc_t_roid
.
Age: 41 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Thu Apr 07, 2011 2:47 pm Post subject:
Чуток поторопился, если каждый раз вызывается set_table_for_first_display, то метод отрисовывает АЛВ по умолчанию, а потом двигает на нужное место. Выглядит не айс. Пока в поиске _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Но это не работает. (да вызывается эта команда в PAI, хотя должна насколько я понимаю в PBO)
И у меня еще много вопросов. В PBO экрана делается set_table_for_first_display. Затем в PAI экрана вызывается refresh_table_display. Честно говоря меня такие махинации ставят в тупик.
Что бы работало так как надо, я считываю параметры как описал выше(методы get*) в PAI по data_changed далее после refresh_table_display я вызываю методы set*, которые описал выше. Далее в PBO после вызова set_table_for_first_display я вновь вызываю методы set*.
Короче работает, но почему такая логика была в программе ума не приложу. Буду рад если будут дельные мысли или советы. _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
Posted: Fri Apr 08, 2011 11:33 am Post subject:
По порядку
1.set_table_for_first_display нужно вызывать только один раз - при первом вызове экрана
2.refresh_table_display должен вызываться только в PBO-логике при последующих вызовах экрана
3. Методы set* не нужны совсем.
Age: 41 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Sun Apr 10, 2011 10:29 am Post subject:
Удав, да знаю я как правильно делать... Но я то правлю стандарт, а там логика именно такая. В PBO каждый раз вызывается
Code:
call method g_grid->set_table_for_first_diaplay
, затем в PAI
Code:
call method g_grid->refresh_table_diaplay
. И этот код работает не только для моего алв, но и для других случаев, поэтому переписывать его без огладки я не рискну. Если добавить параметр is_stable в refresh_table_diaplay то желаемого результата не происходит, то ли из-за того что PBO толи еще из за чего то. Выкрутился вышеописанным способом.
Завтра буду на работе напишу что за программа, и что за места и как можно на это посмотреть интеесующимся. Только для этого нужно чтобы кто нибудь из HR помог или самому немного потыкаться. _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Age: 41 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Mon Apr 11, 2011 10:11 am Post subject:
Как и обещал подробности для тех кому любопытно
Группа функций HRTMC_PPOM
Отрабатывает в PBO
CLASS lcl_table_application
METHOD refresh_table.
Вызывается mo_grid->set_table_for_first_display
Отрабатывает в PAI
Тот же класс
METHOD make_unchanged_rows_readonly.
Вызывается mo_grid->refresh_table_display( ).
Запустить
Транзакция HRTMC_PPOM
Выбрать объект S или CP.
И далее в зависимости от выбранного объекта будет доступна одна из закладок TMC_SUCA(Рекомендованные должности) или TMC_SUCB(Рекомендованные лица).
Есть еще вариант, что эти закладки скрыты, или под них написан другой Z-обработчик. Думаю объяснять как их открыть и посмотреть чем они обрабатывыются не надо, вряд ли будут настолько любопытные, что будут менять настройки системы.
ЗЫ: Я еще в поиске, меня этот вариант не очень устраивает. _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Age: 41 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Mon Apr 11, 2011 3:05 pm Post subject:
Для текущей закладки используется грид. при переходе на другую закладку, динамически создается таблица, филдкаталог, фильтры и т.д. и вызывается тот же грид. Поэтому понятно почему каждый раз set_table_for_first_diaplay. Но вот почему каждый раз refresh_table_diaplay в PAI так и не могу понять. Я сейчас его вообще из кода убрал, вроде все работает. Возможно refresh_table_diaplay помимо функции перерисовки выполняет какую то побочную, ради которой его тут и вызывают?.
Веселенькая программа, сразу ощущаешь как много еще можно открыть в ABAPe. (хотя в данном случае, побыстрее бы закрыть и не вспоминать) _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.