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

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


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

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


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

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