SAPфорум.RU
https://sapboard.ru/forum/

Работы с 150-ым экраном в user-exit
https://sapboard.ru/forum/viewtopic.php?f=13&t=95488
Страница 1 из 1

Автор:  Maksimka [ Пт, сен 22 2017, 14:34 ]
Заголовок сообщения:  Работы с 150-ым экраном в user-exit

Добрый день всем.

В диалоговом программировании я не силен, поэтому заранее извиняюсь за возможно неумный вопрос. Есть расширение ITOB0001 PM: Customer-Include-Subscreen для осн. данных техн.объектов, там есть экран 150, на который можно добавить свои поля и вывести их в основной записи единицы оборудования. Так вот, одно поле я вывел на экран в виде справочника, ну т.е. создал z-овскую табличку и средство поиска к этому полю на экране 150. В z табличке справочник с ключевым полем цифрового значения и поле текстового значения. На экран 150 я вывожу ключевое поле из справочника, а рядом добавил поле типа output, которое бы мне выводило из справочника текстовое наименование связываясь по ключевому полю. С ключевым полем всё нормально, ну т.е. оно изменяется и добавляется и сохраняется, а вот рядом добавленное поле с атрибутом только output стоит пустое. Я так понимаю надо обрабатывать PBO и PAI, но не понятно можно ли делать это как со всеми z-овскими экранами или в user-exit это надо делать как то по другому? Вот код, он собственно не большой да и не факт, что правильный. Может кто делал и подскажет?
Code:
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

Автор:  Kuranov.Dmitry [ Пт, сен 22 2017, 14:58 ]
Заголовок сообщения:  Re: Работы с 150-ым экраном в user-exit

ваш юзер экзит в Z-программе
объявите в ней глобальную переменную с именем как у поля для текста и заселектите в неё текст в PAI.


.upd

Тут вы выбираете текст?
Code:
module USER_COMMAND_1000 input.
  select single * from ZIH08 where znum = EQUI-ZZITO_LOC.

endmodule.

как я понял раб область ZIH08 определена через TABLES глобально?

назовите ваш output контролл как ZIH08-text и будет вам счастье.
text - имz колонки с текстом

Автор:  Maksimka [ Пн, сен 25 2017, 06:43 ]
Заголовок сообщения:  Re: Работы с 150-ым экраном в user-exit

Kuranov.Dmitry написал(а):

Тут вы выбираете текст?
Code:
module USER_COMMAND_1000 input.
  select single * from ZIH08 where znum = EQUI-ZZITO_LOC.

endmodule.


Добрый день Дмитрий. Спасибо, что ответили. Да, здесь я пытаюсь выбрать текст из справочника, вернее я пытаюсь сделать так, чтобы при изменении поля изменялся бы и текст в поле рядом в соответствии со справочником и вроде бы эта часть срабатывает, т.е. PAI модуль отрабатывает правильно, но вот при просмотре ЕО текста не видно, значит PBO не срабатывает или что?
Цитата:
как я понял раб область ZIH08 определена через TABLES глобально?

ZIH08 - это физическая табличка (справочник), к которому привязано средство поиска. Глобально я её ни где не определял. Я думал, что раз в PAI не возникает ошибки при компиляции, значит программа видит эту табличку. Или я не прав?

Цитата:
назовите ваш output контролл как ZIH08-text и будет вам счастье.
text - имz колонки с текстом

Я вот здесь не понял что Вы подразумеваете под output контролл. Это поле или что?

В общем есть табличка ZIH08, в ней два поля. Одно цифровое znum (ключевое), второе поле текстовое LOCATION, поле znum я добавил в физическую табличку EQUI и обозвал его как ZZITO_LOC. Данные при вводе из справочника при заполнении основной записи единицы обрудования берутся и сохраняются, но вот сам текст, который рядом должен в другом поле отображаться не передаётся. При чём если я делаю изменение этого поля или создание новой ЕО, то текст рядом отображается, но после сохранения при открытии основной запиМожно поподробнее объяснить мне что я не так делаю? Буду весьма признателен за это.

Автор:  Maksimka [ Пн, сен 25 2017, 08:31 ]
Заголовок сообщения:  Re: Работы с 150-ым экраном в user-exit

В общем вроде бы разобрался. Немного криво код написал, поэтому не отрабатывало. Создал новую табличку. В общем в итоге получилось что то вроде.
Code:
process before output.
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.   
endchain.

Автор:  Kuranov.Dmitry [ Пн, сен 25 2017, 09:15 ]
Заголовок сообщения:  Re: Работы с 150-ым экраном в user-exit

Maksimka написал:
Я вот здесь не понял что Вы подразумеваете под output контролл. Это поле или что?/

Я имел в виду рядом с полем ввести Textfield поставить ему только чтение и флажок двумерный

Автор:  Kuranov.Dmitry [ Пн, сен 25 2017, 09:25 ]
Заголовок сообщения:  Re: Работы с 150-ым экраном в user-exit  Тема решена

Maksimka написал:
Данные при вводе из справочника при заполнении основной записи единицы обрудования берутся и сохраняются, но вот сам текст, который рядом должен в другом поле отображаться не передаётся. При чём если я делаю изменение этого поля или создание новой ЕО, то текст рядом отображается, но после сохранения при открытии основной запиМожно поподробнее объяснить мне что я не так делаю? Буду весьма признателен за это.


Когда вы создали новую запись, экранная логика работает так
1) отработало PBO
2) Пользователь выбрал из справочника значение
3) отработало PAI и там выбрался текст

при открытии старой записи отрабатывает только PBO и выборки текста нет

текст имхо лучше выбирать в PBO

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/