Sapforum.Biz
Логистика => Техническое обслуживание и ремонт оборудования (PM) => Тема начата: themax от Октябрь 07, 2015, 11:21:04 am
-
Всем добрый день! Возник такой вопрос. Появилась необходимость сделать поле Серийный номер изготовителя обязательным для заполнения, но только в основной записи ЕО. Для Тех.мест это поле не заполняется. Пытался сделать с помощью настроек Определить выбор полей для технических мест транзакция OIAF, но она меняет необходимость ввода поля также и основной записи Тех.места. Есть ли такая настройка вообще или это нужно делать через расширение? Может кто делал? Буду весьма признателен за подсказку.
-
Есть ли такая настройка вообще или это нужно делать через расширение? Может кто делал? Буду весьма признателен за подсказку.
Ну попробуй написать проверку в кастомер-экзите IEQM0007 там вроде как можно вернуть ошибку.
-
Вот если честно я такого ни разу не делал. Можно по подробней? Создал проект CMOD, присвоил ему расширение которое вы написали. Там появился ФМ, в нём include. Мне что то надо непосредственно с этим ФМ делать или создать этот include и в нём уже писать проверку? Нет у Вас случайно какого нибудь примера на изменение проверки какого нибудь поля основной записи ЕО?
-
В общем я пишу такие строчки кода
tables: itob.
if OBJECT_TYPE = '2' and ACTIVITY_TYPE = '1' and itob-serge eq ''.
MESSAGE E055(00).
ENDIF.
Пытаюсь создать ЕО, но проверка не срабатывает. Видимо не правильный код пишу что ли?
-
В общем я пишу такие строчки кода
tables: itob.
if OBJECT_TYPE = '2' and ACTIVITY_TYPE = '1' and itob-serge eq ''.
MESSAGE E055(00).
ENDIF.
Пытаюсь создать ЕО, но проверка не срабатывает. Видимо не правильный код пишу что ли?
Для начала надо поставить току основа и посмотреть оно вообще в этот код заходит? Может вы проект не активировали? Короче, читать про CMOD можно тут: http://sapforum.biz/index.php/topic,1649.0.html
-
Спасибо за ссылку. Про проекты я всё прочёл. Сделал всё как там и написано и активировал. В общем ставлю я точку остановки и при создании ЕО при заполнении поля серийный номер оное попадает в абап отладчик в место точки остановки, но поле как было не обязательным для заполнения так и сейчас таковым является. Наверное не так что то с кодом.
-
в абап отладчик в место точки остановки, но поле как было не обязательным для заполнения так и сейчас таковым является. Наверное не так что то с кодом.
Ну наверное, но вам именно надо чтобы поле подсвечилось как обязательное для ввода или достаточно выдать ошибку что поле не заполнено и попросить пользователя внести данные в этом поле.
-
Ну наверное, но вам именно надо чтобы поле подсвечилось как обязательное для ввода или достаточно выдать ошибку что поле не заполнено и попросить пользователя внести данные в этом поле.
Знать бы ещё как это сделать. В общем то когда делаешь стандартными настройками поле обязательным, то оно подсвечивается и выдаёт ошибку что нужно заполнить все обязательные поля, в идеале конечно нужно так, чтобы юзер понимал почему ошибка возникает, т.е. подсвечивать поле или же создать свой класс сообщений и пояснить в сообщении об ошибке что именно это поле не заполнено. Тогда подсвечивать поле думаю не обязательно. И опять же пока бьюсь вопросом как это сделать.
-
Знать бы ещё как это сделать. В общем то когда делаешь стандартными настройками поле обязательным, то оно подсвечивается и выдаёт ошибку что нужно заполнить все обязательные поля, в идеале конечно нужно так, чтобы юзер понимал почему ошибка возникает, т.е. подсвечивать поле или же создать свой класс сообщений и пояснить в сообщении об ошибке что именно это поле не заполнено. Тогда подсвечивать поле думаю не обязательно. И опять же пока бьюсь вопросом как это сделать.
В данном экзите так не получится, в нем вы можете просто выполнить проверку на не заполненность данного поля и выдать ошибку, с объяснением, что поле нужно заполнить. Статусы экрана в данном случае обработать не выйдет. Ваша ошибка что вы не правильно тип объекта проверяете OBJECT_TYPE. Это поле типа CHAR поэтому значение 02 не равно значению 2. В общем сейчас у тебя проверил, код работает. Сообщение выдается. Так что работает.
CASE object_type.
WHEN '02'. "Обработка ЕО
IF activity_type = '1'. "Операция создания
IF data_equi-serge = space.
MESSAGE e055(00). "Тут можно добавить свой класс сообщения и текст
ENDIF.
ENDIF.
ENDCASE.
-
Спасибо Uukrul, теперь вроде срабатывает и что характерно мне удалось найти также и стандартную настройку этой вещи. если вдруг кому нибудь пригодится вот путь настройки в транзакции OIAF выбираем Field Selection for Equipment (Common Fields for Equipment/Funct. Location), ставите ManufSerialNumber как обязательное и используя функцию Influences ставим ограничитель на Equipment Category или на Ваше усмотрение.