Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => Тема начата: themax от Сентябрь 22, 2017, 02:36:49 pm
-
Доброго времени суток всем.
В диалоговом программировании я не силен, поэтому заранее извиняюсь за возможно неумный вопрос. Есть расширение ITOB0001 PM: Customer-Include-Subscreen для осн. данных техн.объектов, там есть экран 150, на который можно добавить свои поля и вывести их в основной записи единицы оборудования. Так вот, одно поле я вывел на экран в виде справочника, ну т.е. создал z-овскую табличку и средство поиска к этому полю на экране 150. В z табличке справочник с ключевым полем цифрового значения и поле текстового значения. На экран 150 я вывожу ключевое поле из справочника, а рядом добавил поле типа output, которое бы мне выводило из справочника текстовое наименование связываясь по ключевому полю. С ключевым полем всё нормально, ну т.е. оно изменяется и добавляется и сохраняется, а вот рядом добавленное поле с атрибутом только output стоит пустое. Я так понимаю надо обрабатывать PBO и PAI, но не понятно можно ли делать это как со всеми z-овскими экранами или в user-exit это надо делать как то по другому? Вот код, он собственно не большой да и не факт, что правильный. Может кто делал и подскажет?process before output.
module status_1000.
module status_1000 output.
if sy-tcode = 'IE03'.
loop at screen.
screen-input = '0'.
modify screen.
endloop.
endif.
endmodule.
MODULE USER_COMMAND_0100.
module USER_COMMAND_0100 output.
select single * from EQUI where ZZITO_LOC = EQUI-ZZITO_LOC.
endmodule.
process after input .
chain.
field: EQUI-ZZITO_LOC.
MODULE USER_COMMAND_1000 on chain-request.
module USER_COMMAND_1000 input.
select single * from ZIH08 where znum = EQUI-ZZITO_LOC.
endmodule.
endchain
-
Сделайте в секции PBO еще один модуль и там по введенному значению прочитайте текст описания, оно и выведется на экране. Там можно делать все, что и в обычных экранах. Вообще-то в экзитах только коммиты вызывать не рекомендуется. А так остальное обрабатывайте себе на здоровье.
-
В общем вроде бы разобрался. Получилось что то вроде
process before output.
module status_1000.
if sy-tcode = 'IE03'.
loop at screen.
screen-input = '0'.
modify screen.
endloop.
endif.
MODULE USER_COMMAND_0100.
select single * from zie01_loc where znum = equi-zzito_loc.
endmodule.
process after input .
chain.
field: EQUI-ZZITO_LOC.
MODULE USER_COMMAND_1000 on chain-request.
select single * from zie01_loc where znum = equi-zzito_loc.
endmodule.
Спасибо за совет.
-
Получилось что то вроде
Получилось очень хреново, так как судя по всему нет вообще понимания как это работает, иначе трудно объяснить появления MODULE USER_COMMAND_0100, в секции process before output. Может все таки вы там абапера наймете, ну я просто ужасаюсь всему остальному что сделано в вашей системе...