Всем привет. Столкнулся с такой проблемой. Расширен инфотип 0298 Приказы. Добавлено текст поле С(255) ZZREASON01.
На экран 2000 вызывается пользовательский подэкран 0200, на который добавлено элемент, реализованный через C_TEXTEDIT_CONTROL чтобы работать с текстовым полем как через редактор.
В PBO-модуле для экрана 0200 обрабатывается вывод данных из структуры P0298.
Вот кусок кода, передающий данные в этот самый элемент-текстовый редактор:
Code:
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-ого экрана сразу в меню инфотипов и снова зайти, то становится нормально.
Что можете предложить чтобы исправить такую ситуацию?
Заранее спасибо за советы.