Текущее время: Сб, июл 19 2025, 02:00

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Неведомая ерунда GUI. Проблема с экранами.
СообщениеДобавлено: Пт, окт 15 2010, 14:56 
Начинающий
Начинающий

Зарегистрирован:
Ср, июл 21 2010, 14:11
Сообщения: 13
Всем привет. Столкнулся с такой проблемой. Расширен инфотип 0298 Приказы. Добавлено текст поле С(255) ZZREASON01.
На экран 2000 вызывается пользовательский подэкран 0200, на который добавлено элемент, реализованный через C_TEXTEDIT_CONTROL чтобы работать с текстовым полем как через редактор.
В PBO-модуле для экрана 0200 обрабатывается вывод данных из структуры P0298.
Вот кусок кода, передающий данные в этот самый элемент-текстовый редактор:
case p_editor_id.
when 'ZZREASON'.
move 'CNT_REASON' to l_container.
move P0298-ZZREASON01 to l_editor_data.
CONCATENATE l_editor_data P0298-ZZREASON02 INTO l_editor_data.
l_data_len = 510.
assign g_reason_edtctrl to <l_editor_ctrl>.
endcase.

if <l_editor_ctrl> IS ASSIGNED.
create object <l_editor_ctrl>
EXPORTING
repid = sy-repid
dynnr = p_dynnr
dynpro_container = l_container
wordwrap_mode = 2
wordwrap_position = 51
max_number_chars = l_data_len
wordwrap_to_linebreak_mode = 1
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
others = 5.

if sy-subrc <> 0.
* message id sy-msgid type sy-msgty number sy-msgno
* with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.

* Заряжаем текстом
refresh l_edit_tbl.
if l_editor_data+0(1) = '^'.
shift l_editor_data.
endif.
split l_editor_data at '^' into table l_edit_tbl.

call method <l_editor_ctrl>->set_text_as_r3table
EXPORTING
table = l_edit_tbl
EXCEPTIONS
error_dp = 1
error_dp_create = 2
others = 3.

Тут все нормально.
НО ВОЗНИКАЕТ ТАКОЙ ГЛЮК.
Я захожу в ИТ Приказы через обзор( экран 3000), выбираю приказ и проваливаюсь внтурь в экран 2000, там в своем подъэкране-редакторе под номером 0200 вижу текст что ранее в него внес. Далее выхожу НАЗАД на экран 3000 и выбираю другой приказ и также в него проваливаюсь и О ЧУДО: в поле редактора тот же текст что и в прошлом приказе. Далее если свернуть окошко на половину чтоб появился вертикальный скрол и промотать им, становится видно что полей-релакторов с текстом (подэкранов 0201) на экране 2000 не один а два! ИЗ текущего приказа и тот, что остался при просмотре предыдущего, причем последний как бы висит по верх первого и если развернуть окно полностью - то перекрывает его, пожтому сразу непонятно почему в этом поле текст со всем из другого приказа.
Есть предположение, что создался объект, который по возвращении на экран 3000 остался где-то в памяти и када я НЕ ВЫХОДЯ из 3000 экрана опять проваливаюсь в 2000, то там отрисовываются оба этих объекта и старый и новый. Потому как если выйти из обзора 3000-ого экрана сразу в меню инфотипов и снова зайти, то становится нормально.
Что можете предложить чтобы исправить такую ситуацию?
Заранее спасибо за советы.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Неведомая ерунда GUI. Проблема с экранами.
СообщениеДобавлено: Пт, окт 15 2010, 15:51 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
timoff написал(а):
Всем привет. Столкнулся с такой проблемой. Расширен инфотип 0298 Приказы. Добавлено текст поле С(255) ZZREASON01.
На экран 2000 вызывается пользовательский подэкран 0200, на который добавлено элемент, реализованный через C_TEXTEDIT_CONTROL чтобы работать с текстовым полем как через редактор.
В PBO-модуле для экрана 0200 обрабатывается вывод данных из структуры P0298.
Вот кусок кода, передающий данные в этот самый элемент-текстовый редактор:
....
if <l_editor_ctrl> IS ASSIGNED.
create object <l_editor_ctrl>
....
Есть предположение, что создался объект, который по возвращении на экран 3000 остался где-то в памяти и када я НЕ ВЫХОДЯ из 3000 экрана опять проваливаюсь в 2000, то там отрисовываются оба этих объекта и старый и новый. Потому как если выйти из обзора 3000-ого экрана сразу в меню инфотипов и снова зайти, то становится нормально.
Что можете предложить чтобы исправить такую ситуацию?
Заранее спасибо за советы.

Ну Вы же сами при каждом цикле PAI\PBO экрана создаёте новый объект-редактор и добавляете его в контейнер. Вот вам и итог.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Неведомая ерунда GUI. Проблема с экранами.
СообщениеДобавлено: Вс, окт 17 2010, 13:49 
Начинающий
Начинающий

Зарегистрирован:
Ср, июл 21 2010, 14:11
Сообщения: 13
Ну т.е. необходимо объект уничтожать, только вот непонятно где это сделать и как. Не пойму как вызвать деструктор чтоб объект уничтожить.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Неведомая ерунда GUI. Проблема с экранами.
СообщениеДобавлено: Пн, окт 18 2010, 07:00 
Начинающий
Начинающий

Зарегистрирован:
Чт, сен 16 2010, 14:08
Сообщения: 19
Для уничтожеиня объекта использовал
BADi - HRPAD00INFTY
метод BEFORE_OUTPUT


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Неведомая ерунда GUI. Проблема с экранами.
СообщениеДобавлено: Пн, окт 18 2010, 10:09 
Начинающий
Начинающий

Зарегистрирован:
Ср, июл 21 2010, 14:11
Сообщения: 13
Я правильно понимаю, что указанная бадишка - только место где нужно прописать удаление объекта?
Подскажи как именно будет выглядеть код удаления объекта, как его "задестроить" -то??


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Неведомая ерунда GUI. Проблема с экранами.
СообщениеДобавлено: Пн, окт 18 2010, 11:02 
Начинающий
Начинающий

Зарегистрирован:
Чт, сен 16 2010, 14:08
Сообщения: 19
call method <my_obj>->free.
free <my_obj>.


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

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


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

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


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

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