Программа пользователя для подтверждения производственного заказа в CO11N?

Я просмотрел довольно много видео на YouTube и имею общее представление о том, как найти пользовательские выходы (улучшения?) и реализовать их. Однако, когда я пытаюсь воспроизвести то, что я видел, это не работает.

Я хочу создать пользовательский выход, который будет выполняться, когда производственный заказ будет подтвержден (закрыт/завершен) через CO11N. Кто-то предложил мне ввести строку кода «BREAK username». Чтобы я мог убедиться, что мой код срабатывает. Ничего не ломается. Я попытался вставить сообщение из кода, найденного в Интернете.

MESSAGE s208(00) WITH 'TEST'.

Сообщение не отображается. Я активировал включение и проект. Я пробовал разные выходы/включения, и независимо от того, что я делаю, ничего не ломается и не показывает сообщение.

Есть что-то простое, что мне не хватает? Я пробовал CONFPI05 и CONFPM05.


person DragonYen    schedule 25.09.2015    source источник
comment
Если вы поставили BREAK, то вы должны были заметить, если он сработал. Похоже, вам нужно найти другой пользовательский выход.   -  person Christian    schedule 25.09.2015
comment
Спасибо за ответ Кристиан. Я дополнительно попробовал CONFPP05 сейчас (на котором у нас уже есть пользовательский выход), и это все еще не ломается для меня. Нужно ли мне находиться в режиме отладки, чтобы произошел сбой? Я включил его с помощью /h, но опять же, он не сломался.   -  person DragonYen    schedule 25.09.2015
comment
Вам просто нужно поставить точку останова, не нужно находиться в режиме отладки. Или, если вы хотите быть уверенным на 100%, вы можете попробовать точку останова с кодом: BREAK-POINT. (не забудьте удалить его после ваших тестов).   -  person Christian    schedule 25.09.2015
comment
Использовали ли вы улучшения или использовали пользовательский выход? Вы активировали код? Вы проверяли системный журнал (SM21)? Является ли ваше изменение задачей обновления? Вместо точек останова вы можете попробовать логпойнты (активируйте их с помощью транзакции SAAB).   -  person knut    schedule 25.09.2015
comment
@knut CMOD для создания проекта. Назначено расширение (например, CONFPI05). Затем создайте код в SE38 (соответствующий включенному имени из пункта выше). Активировал и проект и код. Я ничего не вижу в SM21. Я проведу небольшое исследование SAAB.   -  person DragonYen    schedule 25.09.2015
comment
@DragonYen Можете ли вы опубликовать несколько фотографий экрана CMOD и кода?   -  person Nelson Miranda    schedule 26.09.2015


Ответы (2)


CONFPI05 предназначен для технологических заказов. CONFPM05 предназначен для заказов на техническое обслуживание завода. Сначала вам нужно проверить, какой порядок вы используете. Я предполагаю, что вы используете производственные заказы. Вы должны проверить User-Exit CONFPP05, чем.

В любом случае, я бы рекомендовал использовать BAdI WORKORDER_CONFIRM. В рамках этого BAdI доступны методы, с помощью которых вы можете вызвать сообщение об ошибке.

Из документации BAdI:

Обратите внимание, что в методах нельзя отправлять системные сообщения. Единственными исключениями являются методы AT_SAVE и AT_CANCEL_CHECK. В этих методах может быть выдано системное сообщение, но только если вы одновременно активируете исключение ERROR_WITH_MESSAGE (для метода AT_SAVE) или NOT_ALLOWED (для метода AT_CANCEL_CHECK).

Также обратите внимание, что в методах инструкция «зафиксировать работу» может не выполняться, поскольку это приведет к некорректным данным в базе данных.

Я настоятельно рекомендую не использовать оператор MESSAGE в любой реализации User-Exit или BAdI. Оператор MESSAGE будет неявно вызывать COMMIT WORK, что может привести к несогласованности базы данных (кстати, это происходит очень часто).

Одно дополнительное замечание. Для проверки следует использовать группы контрольных точек вместо BREAK- POINT или BREAK имя пользователя напрямую.

person Tapio Reisinger    schedule 26.09.2015

Я проверил документацию:

CONFPI05 для обновления собственных данных после сохранения подтверждения

В другой документации я нашел другое предупреждение:

В этом усовершенствовании клиента строго запрещено отправлять сообщения об ошибках или другие сообщения, поскольку в противном случае существует опасность несогласованности данных. SAP не может нести за это ответственность!!

Это похоже на изменения в задаче обновления. По умолчанию точки останова в задаче обновления не включены.

Должен ли ваш код обрабатываться после того, как вы нажали «Сохранить»?

Если да, то что вы можете попробовать:

  • Установите в любом месте точку останова. Или попробуйте /h во время вставки данных.
  • На экране отладки активируйте отладку обновления: введите здесь описание изображения
  • Продолжите процесс с помощью F8.
  • Надеюсь, вы остановитесь на точке останова.
person knut    schedule 25.09.2015