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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Экзит в VA02 при выходе без сохранения
СообщениеДобавлено: Чт, сен 19 2019, 15:32 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
Коллеги, доброе время суток. Задача следующая - при изменении количества в заказе оправшивается внешняя система, в которой происходит резервирование количества. Нужно отправить во внешнюю систему роллбэк, если был совершён выход из заказа без сохранения. То есть нажата кнопка back а потом нажато "не сохранять". Вот в этот момент ничего найти не смог. Есть какие-то идеи?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Экзит в VA02 при выходе без сохранения
СообщениеДобавлено: Чт, сен 19 2019, 16:25 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, мар 29 2007, 11:51
Сообщения: 330
Откуда: Yugorsk.RU
Пол: Мужской
а если по /n или /nex вышли? :D

Code:
при изменении количества в заказе оправшивается внешняя система, в которой происходит резервирование количества

Т.е. в вашей системе транзакция ещё не проведена, а в смежной уже зарезервировалось?
М.б. следует проводить "моделирование" резервирования, чтобы убедиться, что там лимиты есть? А уже в момент SAVE выполнять уже само резервирование, - распределённую транзакцию фактически: в ON COMMIT в фазе V1 резервировать во внешней системе, при не успешности у вас просто в обоих системах откатится.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзит в VA02 при выходе без сохранения
СообщениеДобавлено: Чт, сен 19 2019, 16:47 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
Не прокатит. В зависимости от свободного от резерва количества во внешнеей системе мне нужно контролировать изменяемое количество в САП (выводить из заказа только свободное количество). При этом если два раза уменьшат количество одного и того же материала в заказе САП, то во внешней системе должен пройти адекватныйц контроль и предыдущее количество должно быть уже зарезервировано. Иначе в момент сохранения придётся заново всё перепроверять. Кроме того - в апдейт процессе не получается отправить в WEB коммит -JSON почему то не отправляется, хотя логи показывают, что запрос был сформирован. Короче говоря, нужен экзит в момент выхода без сохранения. Всю модель описывать тут не буду, но, поверьте на слово, надо именно так.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Экзит в VA02 при выходе без сохранения
СообщениеДобавлено: Чт, сен 19 2019, 16:50 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
А если выйдут нестандартно, то по таймауту резервирование снимется, но это не вариант для корректного выхода без сохранения, так как удержание запасов зарезервированными (считай недоступными для продажи) не есть комильфо в стандартном процессе.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Экзит в VA02 при выходе без сохранения
СообщениеДобавлено: Чт, сен 19 2019, 16:57 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, мар 29 2007, 11:51
Сообщения: 330
Откуда: Yugorsk.RU
Пол: Мужской
Цитата:
Короче говоря, нужен экзит в момент выхода без сохранения

Жесть конечно (транзакционная) :D

Может быть тогда вам более сложным но надёжным путём пойти: вести учёт неких квитанций подтверждения резервирования в смежной системе?
Т.е. както так:
1. в момент изменения кол-ва прошёл успешно вызов резервирования во внешней;
2. в табличку-журнал легла запись-квитанция "для транзакции XXXXX резервирование произведено" (где XXXXX наверное из сериализуемого счётчика диапазона номеров брать уникальное);
3. если сохраняют заказ, то в конце апдейта своя запись-квитанция удаляется из таблички п.2;
4. периодическое фоновое задание (или админ) мониторит табличку 2, если там надолго зависли записи, значит ктото нафигачил резервирований в смежной системе, а у себя заказ не сохранил, - запускаем "подметальщик", прибиваем эти резервирования в смежной системе.

Тогда у вас более менее стабильно-гарантированно будет при любых выкидываниях из заказа (вплоть до перезагрузки сервера AS) обеспечиваться асинхронная чистка мусорных резервирований в смежной системе.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзит в VA02 при выходе без сохранения
СообщениеДобавлено: Чт, сен 19 2019, 17:16 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
Такой вот "неонлайновый" метод у нас уже есть. И хранить "квитанции" нет смысла - у нас и так есть таймаут по которому резервы снимутся. И, в принипе ничего "жесткого-транзакционного" здесь нет. Реализовано уже всё, кроме отката:-(.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Экзит в VA02 при выходе без сохранения
СообщениеДобавлено: Пт, сен 20 2019, 08:00 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, мар 29 2007, 11:51
Сообщения: 330
Откуда: Yugorsk.RU
Пол: Мужской
Цитата:
хранить "квитанции" нет смысла - у нас и так есть таймаут по которому резервы снимутся

Даже если пользователь VA02 очень мееееедленный, или из вредительских соображений сидит в ней дольше чем время таймаута, меняет цифири, но не сохраняет и не выходит из транзакции - то в смежной в какихто случаях резервирование откатится по таймауту, а он будет думать что оно проведено?

Т.е. задача сводится к "как повестить в VA02 кастомный обработчик кнопок выхода из транзакции".
А нельзя вызывать VA02 из Z-транзакции-обёртки, и в ней уже анализировать результат возврата назад? Вот тут квитанции бы тоже пригодились.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзит в VA02 при выходе без сохранения
СообщениеДобавлено: Пт, сен 20 2019, 10:29 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
pberezin написал:
Цитата:
хранить "квитанции" нет смысла - у нас и так есть таймаут по которому резервы снимутся

Даже если пользователь VA02 очень мееееедленный, или из вредительских соображений сидит в ней дольше чем время таймаута, меняет цифири, но не сохраняет и не выходит из транзакции - то в смежной в какихто случаях резервирование откатится по таймауту, а он будет думать что оно проведено?

Т.е. задача сводится к "как повестить в VA02 кастомный обработчик кнопок выхода из транзакции".
А нельзя вызывать VA02 из Z-транзакции-обёртки, и в ней уже анализировать результат возврата назад? Вот тут квитанции бы тоже пригодились.


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

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


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Экзит в VA02 при выходе без сохранения
СообщениеДобавлено: Пт, сен 20 2019, 12:18 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 18:21
Сообщения: 1613
Ваше "резервирование" должно быть на событии проверки перед сохранением. Тогда еще будет время вернуть ошибку и сказать пользователю что нельзя поменять количество.

_________________
я твой сап эфай внедрял
BAdI-позитив
Взять немножечко абопу, сунь туда кошачью *опу, RFC лапки, БТ старой бабки, на медленном базиснике переносить, тестовое окружение материть, снимать SAT пенку, биться головой о стенку, охапка тайм-шитов, отчет готов!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзит в VA02 при выходе без сохранения
СообщениеДобавлено: Пт, сен 20 2019, 12:47 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, мар 29 2007, 11:51
Сообщения: 330
Откуда: Yugorsk.RU
Пол: Мужской
Впринципе, как вариант, на главном экране VA02 есть паи-логика при выходе, в которой куча мест, куда можно воткнуть енхайсмент. В т.ч. ещё один диалог "вы точно точно уверены? В соседней системе резервирование будет снято."
Code:
process after input.
* Verarbeitung nach der Eingabe
* Funktion mit richtigem Typ sofort ausfќhren
  module funktion_ausfuehren at exit-command.
...

  PERFORM FUNKTION_AUSFUEHREN. "там полно мест для вставки енхайсмента


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Экзит в VA02 при выходе без сохранения
СообщениеДобавлено: Пт, сен 20 2019, 13:34 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
Вы не совсем правильно поняли логику программы. Пользователь хочет уменьшить количество в заказе на Н штук, но так как этот заказа резервирует количества для внешней системы, то нужно "спросить" а можно ли убрать Н или только меньшее количество? В итоге система не позволяет пользователю вводить неправильные количества в определённом виде заказа. Соответственно, если мы уменьшае количество в заказе на Н штук, то это количество надо вывести из оборота во внешней системе. И вот чем долбше я отлаливлваю нужные экзиты, тем более уверенно река тянется к верному Z и BAPI. К примеру - как отловить в VA02 удаление позиции? ведь удаление это то же уменьшение количества (только в ноль) Вот я, лично, уже устал от дебага.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Экзит в VA02 при выходе без сохранения
СообщениеДобавлено: Пт, сен 20 2019, 13:48 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, мар 29 2007, 11:51
Сообщения: 330
Откуда: Yugorsk.RU
Пол: Мужской
так вам же выше посоветовали сместить резервирование в логику кнопки "Проверка". Чтобы разделить диалоговые операции правки позиций VA02, и завершающее итоговое действие "проверить скорректированное количество, в т.ч. проверить возможность перерезервирования".

Цитата:
К примеру - как отловить в VA02 удаление позиции?

Так в логике Проверки сохраняйте предыдущее состояние позиций в памяти, и сравнивайте попозиционно было-стало.

Видимо логику и впрямь не вкуриваю, замысловатое резервированое получается.


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

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


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

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


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

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