Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => SMOD/CMOD - Расширения => Тема начата: r00xus от Сентябрь 04, 2013, 04:54:35 pm
-
здравствуйте коллеги.
возникла задача проставить вид оценки, хранящейся в пользовательской Z-таблице в позиции заказа. предполагалось это делать через user-ext PPCO0001. там есть таблица POSITION_TABLE с позициями заказа, в которой я изменяю поле BWTAR (Вид оценки). exit срабатывает, однако после создания заказа через CO01 в таблице словаря AFPO (Позиции заказа) поле не изменяется.
подскажет плиз чем дело? почему не работает exit? может есть какой-то другой способ? BADI?
заранее благодарен.
-
возникла задача проставить вид оценки, хранящейся в пользовательской Z-таблице в позиции заказа. предполагалось это делать через user-ext PPCO0001. там есть таблица POSITION_TABLE с позициями заказа, в которой я изменяю поле BWTAR (Вид
Имеется в виду производственный заказ (PP), тогда следующий вопрос, вы хотите чтобы при вводе пользователь увидел значение проставленное автоматически в поле вида оценки или это можно сделать при сохранении.
PS: Да кстати, по поводу приведенного экзита, там похоже менять что-то бесполезно, это точка для обновления связанных данных, т.е. к моменту вызова вы можете проанализировать например предыдущее состояние заказа с новыми изменениями и обновить какие-то свои таблицы, но повлиять на что-то из полей заказа не сможете.
PPS: Пост перенес в более подходящий раздел как мне кажется.
-
совершенно верно. речь идет о производственном заказе.
собственно я поле "Вид оценки" и не видел нигде в CO01. меня бы устроило просто сохранить его в AFPO-BWTAR. подскажите пожалуйста как сделать хотя бы это.
а тема перемещена правильно да. я не заметил что есть раздел конкретно по расширениям.
-
собственно я поле "Вид оценки" и не видел нигде в CO01. меня бы устроило просто сохранить его в AFPO-BWTAR. подскажите пожалуйста как сделать хотя бы это.
Ну в момент записи отрабатывает функция CO_ZV_ORDER_POST, в ней полно разных энхансментов. Я бы использовал в строке 557 есть такая запись:
IF gv_wipbatch_active EQ yx. "WIP batch active
ENHANCEMENT-POINT EHP4_CO_ZV_ORDER_POST_01 SPOTS ES_SAPLCOZV.
ELSE. "WIP batch inactive
ENHANCEMENT-POINT co_zv_order_post_08 SPOTS es_saplcozv.
ENDIF.
т.е. gv_wipbatch_active определяет вызов идет в фоне или диалоге. В вашем случае это диалог значит надо делать вставку в энхнасмент ENHANCEMENT-POINT co_zv_order_post_08 SPOTS es_saplcozv. Почему в этом месте, ну потому что ниже идет функциональность проверки данных, так что все что запишете в позиции будет проверено перед сохранением. Само собой работаем аккуратно и тестируем результат.
Читать про энхансменты тут: http://sapforum.biz/index.php/topic,546.0.html
-
еще раз спасибо за помощь.
осталось найти где в группе функций хранятся позиции заказа. в структуре AFPOD есть данные позиции. но если в ней поменять BWTAR то ничего не происходит. есть таблица AFPOD_TAB там вообще всегда пусто... :(
-
осталось найти где в группе функций хранятся позиции заказа. в структуре AFPOD есть данные позиции. но если в ней поменять BWTAR то ничего не происходит.
Ну это потому что вид оценки без партии не существует, т.е. у вас с теорией как работает вид оценки и партия проблемы. Удаленно я тоже сказать не смогу как у вас настроена в системе эта связь, в общем я думаю что нужно заполнять так же поле партии запаса CHARG, кажется. Однако связь между партией и видом оценки нужно перед этим посмотреть. В общем случае, скорее всего код партии = код вида оценки.
PS: В общем виде почитать про партии и виды оценки можно тут: http://sapforum.biz/index.php/topic,694.0.html