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

Узнать направление деблокирования заказа ММ в BAdI заказа ММ
https://sapboard.ru/forum/viewtopic.php?f=13&t=95548
Страница 1 из 2

Автор:  Кодер [ Чт, окт 05 2017, 09:05 ]
Заголовок сообщения:  Узнать направление деблокирования заказа ММ в BAdI заказа ММ

Добрый день!

Кто-нибудь знает, каким образом в абап находясь в BAdI заказа ММ узнать направление деблокирования (согласуют или отклоняют) заказа? В этот момент можно получить старый и новый статус заказа. Но не понятно, как, имея эту информацию, получить направление. Нужно для того, чтобы при определенных статусах при согласовании выполнять одни действия, а при отклонении - обратные действия. Просто знать статусы старый-новый - мало.

Автор:  Bimit [ Чт, окт 05 2017, 09:15 ]
Заголовок сообщения:  Re: Узнать направление деблокирования заказа ММ в BAdI заказа ММ

Через ASSIGN не вариант?

Автор:  Кодер [ Чт, окт 05 2017, 09:39 ]
Заголовок сообщения:  Re: Узнать направление деблокирования заказа ММ в BAdI заказа ММ

Через assign чего? Я же говорю: начальный и конечный статус узнать можно. А вот как узнать, имея их на руках, куда мы движемся по стратегии деблокирования?

Автор:  baboon [ Чт, окт 05 2017, 10:31 ]
Заголовок сообщения:  Re: Узнать направление деблокирования заказа ММ в BAdI заказа ММ

Если пользовательский статус, то можно попытаться
поиграть с таблицей TJ30.

Автор:  Bimit [ Чт, окт 05 2017, 10:34 ]
Заголовок сообщения:  Re: Узнать направление деблокирования заказа ММ в BAdI заказа ММ

Кодер написал(а):
Через assign чего?


Наверное EKKO :)

Там проставляется статус, поле PROCSTAT

Хотя как у Вас настроена стратегия деблокирования, я не знаю

Автор:  Besa [ Чт, окт 05 2017, 10:38 ]
Заголовок сообщения:  Re: Узнать направление деблокирования заказа ММ в BAdI заказа ММ

Да там по-моему не все так просто, если стратегия многоуровневая и еще завязана на классификацию...
Наверное надо копать в сторону запуска симуляции стратегии для того чтобы система вычислила следующий уровень.

Автор:  SU53 [ Чт, окт 05 2017, 11:00 ]
Заголовок сообщения:  Re: Узнать направление деблокирования заказа ММ в BAdI заказа ММ

Возможно, окажутся полезными таблица T16FV и BAPI_PO_GETRELINFO (ME_REL_INFO)

Автор:  baboon [ Чт, окт 05 2017, 11:19 ]
Заголовок сообщения:  Re: Узнать направление деблокирования заказа ММ в BAdI заказа ММ

Что за BADI? В пакете ME есть какие-то классы
по стратегии деблокирования.

Автор:  Кодер [ Чт, окт 05 2017, 11:31 ]
Заголовок сообщения:  Re: Узнать направление деблокирования заказа ММ в BAdI заказа ММ

BAdI в которой хочется поиметь последовательность - ME_PROCESS_PO_CUST
В принципе, можно получить инфу о стратегии: в бади придет объект типа IF_PURCHASE_ORDER_MM. На самом деле это будет CL_PO_HEADER_HANDLE_MM. У него можно выковырять объект стратегии через IF_RELEASE_STATE_MM~GET_STRATEGY. Далее можно получить списки пререквизитов для каждого из кодов деблокирования. Ну и для каждого из кодов можно получить индикатор (вроде бы. еще не проверил). Наверное, проанализировав последовательности индикаторов для кодов и пререквизитов с тем, что есть и что было - можно понять куда мы двигаемся. Попробовать надо

Автор:  nicky555 [ Чт, окт 05 2017, 16:26 ]
Заголовок сообщения:  Re: Узнать направление деблокирования заказа ММ в BAdI заказа ММ

Реализацию нечто подобного встречал.
Суть реализации - в сохранении информации по OK-коду (например, с использованием Enhancement'а) в памяти (например, Set/Get parameter id). Потом, в реализации BAdI, считывание этого параметра и обработка.
Кривенько, но, в принципе, работает...

Автор:  Кодер [ Чт, окт 05 2017, 17:35 ]
Заголовок сообщения:  Re: Узнать направление деблокирования заказа ММ в BAdI заказа ММ

nicky555 написал:
Кривенько, но, в принципе, работает...

Навскидку придумал как завалить такой вариант: если в согласовании больше 4 шагов, то пусть находимся на шаге 3. Откатываем не сохраняя в самый низ, согласуем до шага 2 и сохраняем. Если анализировать по кнопкам, то запомнится последнее нажатие ("согласовать"). Тогда как реально будет происходить обратная операция.
Или я не правильно понял вашу идею?

Автор:  nicky555 [ Пт, окт 06 2017, 12:04 ]
Заголовок сообщения:  Re: Узнать направление деблокирования заказа ММ в BAdI заказа ММ

Возможно, мы друг друга не понимаем?

Я говорю о том, чтобы в динамике узнать, какую кнопку нажимает пользователь в текущей статусной схеме - деблокирование или отмена деблокирования.
В примере, о котором я говорил, это реализовано для дополнительных проверок, которые разнятся в зависимости от процесса.
Для этого расширяем Enhancement'ом метод LCL_RELVIEW_MM~EXECUTE (ГрФ MERELVI), где сохраняем код деблокирования (my_tmp_rel_code) и код функции (im_fcode) в памяти.
В расширении BAdI ME_PROCESS_PO_CUST считываем эти значения в методе CHECK и делаем дополнительные проверки.
То есть, фактически, мы в реализации BAdI "ловим" нажатие кнопки деблокирования на сетке "Стратегия деблокирования" для последнего статуса. Причем можем сказать, деблокируют или отменяют деблокирование (по коду функции).

Это я имел ввиду. Извините, если не по делу :?

Автор:  Кодер [ Пт, окт 06 2017, 12:58 ]
Заголовок сообщения:  Re: Узнать направление деблокирования заказа ММ в BAdI заказа ММ

nicky555 написал:
Возможно, мы друг друга не понимаем?

Вполне может быть.
Вашу мысль я понял. Описанный вами подход пойдет для использования в методе CHECK бади ME_PROCESS_PO_CUST. Это понятно.
Но как я описал, тр-ция me29n позволяет гонять туда-сюда операции согласования-отклонения без сохранения. Мне необходимо выполнять действия именно при сохранении. Если талантливые пользователи используют перевод туда-сюда как я описал в примере, то на момент сохранения нельзя будет понять, что же на самом деле произошло. Я не прав?

Автор:  nicky555 [ Пт, окт 06 2017, 13:25 ]
Заголовок сообщения:  Re: Узнать направление деблокирования заказа ММ в BAdI заказа ММ

Так вы попробуйте :)
Ядро работает одно и то же независимо от транзакции.
Идею я донес, а конкретную реализацию вашей задачи вам придется додумать самому.

Автор:  Кодер [ Пт, окт 06 2017, 13:58 ]
Заголовок сообщения:  Re: Узнать направление деблокирования заказа ММ в BAdI заказа ММ

Не поленился. Попробовал.
Заказ. У него 3 этапа согласования: 1-2-3
1) согласуем 1 . в буфере будет функ.код MERELEASE код 1
2) согласуем 2. в буфере будет функ.код MERELEASE код 2
3) отклоняем 2. в буфере будет функ.код MERESET код 2
4) нажимаем сохранить. в буфере все еще функ.код MERESET код 2.
Т.е. как я и предполагал - оставаться будут последние данные.

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