Loading



+ Sapforum.Biz » Логистика » Управление материальными потоками (MM)Тема:
|- Заказ на поставку: обновление цены позиций (стоимости нетто) программно



Автор Тема: Заказ на поставку: обновление цены позиций (стоимости нетто) программно  (Прочитано 1286 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Добрый день.
Возникла необходимость программно воспроизвести операцию и сохранить заказ. В ME22N последовательность этих действий выглядит так:
1) Выбираем позицию, нажимаем кнопку "Обновить" (обновить цены) на вкладке "Условия" (рис. push_refresh_button).
2) Выбираем вид изменения цены "А" (рис. calctype_selection), поле "Цена нетто" в соотв. позиции пересчитывается.
3) Повторяем пункты 1-2 для всех позиций.
4) Сохраняем заказ.
После отладки и трассировки было испробован следующий способ:
1) Изменение цены при помощи ФМ MEPO_DOC_ITEM_PROCESS, с подстановкой в структуру ch_item-calctype = 'A'.
2) Сохранение при помощи ME_UPDATE_PO_PRICE.
В п.1 ругается на неверную последовательность вызова ФМ-ов. При использовании 2 (предварительно проверив, что заказ и позиции не заблокированы) сохранения не произошло (это пока на стадии отладки). Решал ли кто-нибудь подобную задачу и каким путем лучше пойти? Нет ли BAPI, возможно ли провести подобную операцию при помощи ФМ BAPI_PO_CHANGE?
[attachment=1][attachment=2]

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.331
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Ну пока  не сталкивался :), так что так могу только идеи.

- http://sapforum.biz/index.php/topic,246.0.html
- у тебя цена реально меняется? или только пересчет надо вызвать? хотя тут тоже либо первое ... либо копать дальше....
- тут посмотрел и нашел ME_CCP_TPO_PRICE_CHANGE  (не для твоего случая) но там пример есть
 CALL FUNCTION 'RV_KONV_SELECT' -> MAP2E_KOMV_TO_BAPICOND -> BAPI_PO_CHANGE
Может даст какие то идеи...
- попробовать использовать RV_CONDITION_COPY - RV_CONDITION_SAVE - RV_CONDITION_RESET
- ноты по номеру ошибки  ;)

Ссори, как я говорил, только идеи....

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Да, поле "Цена нетто" реально меняется, после нажатия "обновить" и выбора вида "А", как на рисунке. Ок, буду копать дальше.

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.331
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Дима, посмотри, может ME_UPDATE_DOCUMENT там структуры для условий есть, и в конечном счете вызывается ME_UPDATE_PO_PRICE

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Я вчера еще промахнулся маленько: там сначала FM MEPO_DOC_PROCESS запускается, а уже из него FM MEPO_DOC_ITEM_PROCESS, так что пока в эту сторону копаю, всё же трассировка показывает, что в ME22N этот функционал работает. А вот как сохранять всё это дело потом, будем и думать потом. ;)

Оффлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.311
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Ну это я конечно понимаю, что в век энхансментов, бапи и SAP NetWeaver 7.0 EhP2, говорить про такое как транзакция SHDB для ME22, звучит просто кощунственно, но там пакетник для CALL TRANSACTION пишется даже не на два, а сразу на раз и вся задача решается за пару часов. Или у тебя тысячи заказов надо обновлять за минуты?

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Ну это я конечно понимаю, что в век энхансментов, бапи и SAP NetWeaver 7.0 EhP2, говорить про такое как транзакция SHDB для ME22, звучит просто кощунственно, но там пакетник для CALL TRANSACTION пишется даже не на два, а сразу на раз и вся задача решается за пару часов. Или у тебя тысячи заказов надо обновлять за минуты?
Мы лёгких путей не ищем, ты же знаешь. Это решение, как наиболее явное, оставлено на потом, если по-другому не получится. Запускать пакетник придется с некоторой задержкой, поскольку в момент его формирования заказ, как часть истории поставки, блокирован. Красные кнопки делаем-с. ;)

P.S. Причём эта задача - лишь часть автоматов с автопилотами. Идёт освоение системы Заказчиком. :D
« Последнее редактирование: Июнь 16, 2011, 04:51:15 pm от Dmitriy »

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
звучит просто кощунственно, но там пакетник для CALL TRANSACTION пишется
Кстати, а вы ведь еретик, батенька, да. В наш-то век! ;D

Оффлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.311
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Мы лёгких путей не ищем, ты же знаешь. Это решение, как наиболее явное, оставлено на потом, если по-другому не получится. Запускать пакетник придется с некоторой задержкой, поскольку в момент его формирования заказ, как часть истории поставки, блокирован. Красные кнопки делаем-с. ;)

P.S. Причём эта задача - лишь часть автоматов с автопилотами. Идёт освоение системы Заказчиком. :D
Да какая там задержка, проверил блокировку заказа через объект блокирования с параметром вайт, и если тебя отпустило то вызывай пакетник и не лохмать бабушку. То что ты хочешь сделать через эти ФМ сильно не кошерно, они для внутреннего использования в рамках вызовов работы группы функций по созданию/изменению заказа ММ. Работа их может быть нарушена после очередного патча или обновления версии системы.

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Да какая там задержка, проверил блокировку заказа через объект блокирования с параметром вайт, и если тебя отпустило то вызывай пакетник и не лохмать бабушку.
Я же говорил - еретик. Если бы всё было так просто, как ты мне тут расписываешь, я бы даже и тему не стал создавать. Есть ещё вообще-то LOCAL UPDATE TASK, а блокировку снять и поставить после для пущей убедительности, чтобы никто не догадался - не проблема. А кто-то еще тельняшку на груди рвал "да я, да не ломаю систему". SAP-стандарт, кстати, не зря эту блокировку на заказ выставляет при проводке ОМ из поставки.

Оффлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.311
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
тельняшку на груди рвал "да я, да не ломаю систему". SAP-стандарт, кстати, не зря эту блокировку на заказ выставляет при проводке ОМ из поставки.
Я не понял где было предложено что-то ломать?

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Как временное решение проблемы был использован пакетный ввод перед вызовом FM 'MB_CREATE_GOODS_MOVEMENT' (программа FV50WF0W, управляющая SAPFV50W, работаем из VL02N -> "Проводка ОМ" ). Снимаем выставленные стандартом блокировки (ОБ 'EMEKKOS') типа "E", с заказов на поставку (ссылки в позициях ДДМ imseg-ebeln/imseg-ebelp или xmseg-ebeln/xmseg-ebelp), осуществляем пакетный ввод (ME22) и снова выставляем снятые блокировки на задействованные заказы. Предварительно убедившись, что не зарегистрировано функц. модулей обновления (CALL FUNCTION fname IN UPDATE TASK). Почему временно? В своем расширении не совсем правильно снимать блокировки, установленные стандартом.

Оффлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.311
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Как временное решение проблемы был использован пакетный ввод перед вызовом FM
Мда, не только временное но и очень спорное?!

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Мда, не только временное но и очень спорное?!
Консультант (ныне отсутствующий), отвечающий за постановку и тестирование задачи говорил, что "когда-то" ему с разработчиком удалось решить похожую задачу без BI. Подождем, когда вернется и разыщет своего разработчика.

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 299
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
А вообще - решение таки еретическое по сути своей. Нельзя снимать блокировку, которую ставит стандарт. Про пакетный ввод вообще молчу - секта его поклонников давно уже в глубоком подполье из-за преследования адептами (тысячи их!) новомодной религии энхансметов, бади и бапи, дарующей радость.
« Последнее редактирование: Июнь 24, 2011, 12:00:15 pm от Dmitriy »


 


Facebook Comments