Текущее время: Вт, апр 23 2024, 23:12

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Деблокирование ME29N
СообщениеДобавлено: Чт, сен 10 2020, 09:33 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 20 2019, 01:35
Сообщения: 38
В ME29n было добавлено поле с Z-статусом, с возможностью его изменения и сохранения в EKKO. (на вкладке 'доп данные').
Проверили, статусы сохраняются.

Дальше появилось требование, что при смене этого Z-статуса нужно ещё менять код деблокирования (например, с H1 на H2).
В реализации BADI me_process_po_cust (метод POST) добавил вызов (если необходимо поменять код деблокирования) BAPI_PO_RELEASE.

И появилась проблема: Если BAPI_PO_RELEASE не вызывается (код деблокирования менять не нужно. Поменяли только Z-статус), то новый введённый z-статус сохраняется.
А если при смене Z-статуса вызывается и BAPI_PO_RELEASE, то Z-статус не перезаписывается (остаётся старым, как до сохранения), а код деблокирования нормально меняется.

То есть получается, что изменяется только что-то одно. (BAPI_PO_RELEASE почему-то отменяет сохранение Z-поля).

Как можно эту проблему решить? Может есть ещё какие-то badi для этого ?

Коллеги предложили такое решение: создать z-табличку, в которую писать, что для заказа надо поменять код деблокирования. И создать z-программу, которая в фоне будет постоянно проверять эту z-таблицу и при необходимости менять код деблокирования. Но этот способ как-то не особо пока нравится.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Деблокирование ME29N
СообщениеДобавлено: Чт, сен 10 2020, 14:20 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1580
Откуда: Москва, Минск
Пол: Мужской
Попробуйте обернуть BAPI BAPI_PO_RELEASE + BAPI_TRANSACTION_COMMIT в Z-ФМ обновления.
И в BADI me_process_po_cust (метод POST) вызывать Z-ФМ обновления в режиме UPDATE TASK.

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Деблокирование ME29N
СообщениеДобавлено: Чт, сен 10 2020, 14:42 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 20 2019, 01:35
Сообщения: 38
DED_MOROZ написал:
Попробуйте обернуть BAPI BAPI_PO_RELEASE + BAPI_TRANSACTION_COMMIT в Z-ФМ обновления.
И в BADI me_process_po_cust (метод POST) вызывать Z-ФМ обновления в режиме UPDATE TASK.


А этот вызов bapi_transaction_commit не закоммитит ли все изменения раньше времени? Или из-за IN UPDATE TASK всё это дело вызовется как раз при следующем коммите в стандарте? (вообще запрещают в расширениях стандарта коммиты делать)


UPD: попробовал. приходит сообщение , что обновление прервано. захожу в подробно - 'Пользователь user уже обрабатывает ЗП'.
То есть ругается, что я ещё сижу в заказе. (bapi_po_release проверяет блокирован ли заказ. Хотя опять же странно, что при обычном вызове, как в первом посте писал - всё отрабатывает и не ругается).


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Деблокирование ME29N
СообщениеДобавлено: Чт, сен 10 2020, 15:47 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1580
Откуда: Москва, Минск
Пол: Мужской
Да чет погорячился с коммитом в UPDATE TASK:)
А если поставить "Отложенный запуск" в своийсвах ФМ?
Можно попробовать еще вызов ФМ в режиме BACKGROUND TASK, и внутри ФМ проверять блокировку - как она исчезнет, тогда и вызывать бапи.

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Деблокирование ME29N
СообщениеДобавлено: Вс, сен 13 2020, 20:54 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 20 2019, 01:35
Сообщения: 38
DED_MOROZ написал:
Да чет погорячился с коммитом в UPDATE TASK:)
А если поставить "Отложенный запуск" в своийсвах ФМ?
Можно попробовать еще вызов ФМ в режиме BACKGROUND TASK, и внутри ФМ проверять блокировку - как она исчезнет, тогда и вызывать бапи.


Поставил галку отложенный запуск. Стало работать.

Но оказывается бывает сценарий, что надо код деблокирования откатывать назад. (например с H2 на H1).
BAPI_PO_RELEASE не умеет откатывать коды деблокирования. Нашёл BAPI_PO_RESET_RELEASE . Эта бапи откатывает код деблокирования.

Но у этой бапи нет параметра NO_COMMIT. И если её вызывать в модуле обновления, то дампит (COMMIT WORK в модуле обновления). А если её вызывать вне модуля обновления, то возвращается изначальная проблема, что не обновляются Z-поля тогда.

Есть ещё какие-то идеи ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Деблокирование ME29N
СообщениеДобавлено: Вт, сен 15 2020, 09:33 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, авг 24 2015, 11:01
Сообщения: 65
Пол: Мужской
что-то похожее было.
Не самое идеальное решение, но вроде должно работать, это запуск ФМа в отдельном tasks
Code:
CALL FUNCTION 'ZFM_ADD_COMPONENT_PM_ORDER' STARTING NEW TASK 'ZTASK_ADD_ITEM' DESTINATION 'NONE'
    EXPORTING

А внутри фма сделать вначале задержку, пока зп не освободится.

Вроде должно помочь


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Деблокирование ME29N
СообщениеДобавлено: Пт, сен 18 2020, 11:25 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 20 2019, 01:35
Сообщения: 38
В общем, добил таки, чтобы работало всё в update task с отложенным запуском. Вроде вся схема деблокирования теперь проходит.
Коллеги правда написали, что отложенный запуск это V2 обновление и не гарантируется, что оно будет выполнено. Вот про это сам не знаю. Что может пойти не так.

Теперь ещё вопрос появился. Если в me29n на вкладке с деблокированием самому поменять коды деблокирования до конечного (H3 в системе), то при сохранении заказа создаётся исходящая поставка. (Тут вопрос - это стандартом заложено или кто-то в системе зазетил это создание?)

Если стандарт, то как мне при переходе в последний статус тоже создавать поставку? (сейчас у меня просто меняется статус на H3, но поставка не создаётся, надо её создание самому докрутить). Какую бапи взять для исх.поставки, чтоб она создалась на основе моего заказа?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Деблокирование ME29N
СообщениеДобавлено: Пт, сен 18 2020, 12:31 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1580
Откуда: Москва, Минск
Пол: Мужской
Автоматическое создание поставок к заказам на перемещение - настроечный ракурс /SPE/V_TDELVAUTO.
По журналу использован я настроечной таблицы
Инклуд /SPE/STO_DELIV_F01.
* Create outbound deliveries in background
CALL FUNCTION '/SPE/OUTBOUND_DELIVERY_CREATE' IN BACKGROUND TASK
TABLES
it_po_range = lt_po_range
it_shp_point_range = lt_shp_point_range.


Для создания поставки к заказу на перемещение можно использовать бапи BAPI_OUTB_DELIVERY_CREATE_STO.

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Деблокирование ME29N
СообщениеДобавлено: Пт, окт 02 2020, 14:31 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 20 2019, 01:35
Сообщения: 38
DED_MOROZ написал:
Автоматическое создание поставок к заказам на перемещение - настроечный ракурс /SPE/V_TDELVAUTO.
По журналу использован я настроечной таблицы
Инклуд /SPE/STO_DELIV_F01.
* Create outbound deliveries in background
CALL FUNCTION '/SPE/OUTBOUND_DELIVERY_CREATE' IN BACKGROUND TASK
TABLES
it_po_range = lt_po_range
it_shp_point_range = lt_shp_point_range.


Для создания поставки к заказу на перемещение можно использовать бапи BAPI_OUTB_DELIVERY_CREATE_STO.


Да, спасибо, помогло. Добрался до этого места.

Сейчас встал новый вопрос. Возможно ли при создании заказа сразу устанавливать начальный код деблокирования? Сейчас заказ создаётся без него. Нужно идти в me29n и переводить руками.

Я в этих стратегиях деблокирования мало что понимаю. Но подозреваю, что должна быть какая-нибудь настройка, чтобы заказ сразу создавался с кодом деблокирования.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB