Неспешно пытаюсь решить аналогичную задачу - получить расчет цены во входящей поставке.
Сейчас расчет как-то идет, но надо докручивать логику в расширениях
Для этого была выполнена предварительная настройка в таблицах T185F, T185, T185V, TAXITABS через тразакцию SM30 ракурс V_T185
Создал дополнительные записи в управляющих таблицах последовательности экранов:
добавлены группы экранов CI EI HI II WI KI UI PI, раньше были CO EO HO IO WO KO UO PO
Приложение 1. Состав записей таблицы T185 для поставки после копирования нужных записей (исходные и новые) Code:
Программа КФ ГрЭк Пан ЗПЭк ПзПЭ СледГрЭК СлПанель КФ И Ст. Ф
SAPMV50A HKON_T C0 * * * H0 HKON ENT1 T 1 X
SAPMV50A HKON_T CI * * * HI HKON ENT1 T 1 X
SAPMV50A HKON_T E0 * * * W0 ITOV HKON_T T 1 <пусто>
SAPMV50A HKON_T EI * * * WI ITOV HKON_T T 1 <пусто>
SAPMV50A HKON_T H0 * * * H0 HKON ENT1 T 0 X
SAPMV50A HKON_T HI * * * HI HKON ENT1 T 0 X
SAPMV50A HKON_T I0 * * * H0 HKON ENT1 T 1 X
SAPMV50A HKON_T II * * * HI HKON ENT1 T 1 X
SAPMV50A HKON_T W0 * * * H0 HKON ENT1 T 1 X
SAPMV50A HKON_T WI * * * HI HKON ENT1 T 1 X
SAPMV50A IKON_T C0 * * * C0 IKON ENT1 T 0 <пусто>
SAPMV50A IKON_T CI * * * CI IKON ENT1 T 0 <пусто>
SAPMV50A IKON_T I0 * * * I0 IKON ENT1 T 0 X
SAPMV50A IKON_T II * * * II IKON ENT1 T 0 X
SAPMV50A IKON_T W0 * * * I0 IKON ENT1 T 1 X
SAPMV50A IKON_T WI * * * II IKON ENT1 T 1 X
SAPMV50A KKON K0 * * * K0 KKON BACK T 0 <пусто>
SAPMV50A KKON KI * * * KI KKON BACK T 0 <пусто>
SAPMV50A KKON U0 * * * K0 KKON BACK T 1 <пусто>
SAPMV50A KKON UI * * * KI KKON BACK T 1 <пусто>
SAPMV50A PKON P0 * * * P0 PKON BACK T 1 <пусто>
SAPMV50A PKON PI * * * PI PKON BACK T 1 <пусто>
SAPMV50A PKON U0 * * * P0 PKON BACK T 1 X
SAPMV50A PKON UI * * * PI PKON BACK T 1 X
Приложение 2. Состав записей таблицы T185V для поставки после копирования нужных записей (исходные и новые)Code:
Прогрмма ГрЭк Панель Экран Статус Загл. Код ТР И Обозначение НП
SAPMV50A C0 IKON 3000 W0 C01 <Пусто> <Пусто> ИсхПостав: позиция подробно - условия РазделПартии
SAPMV50A CI IKON 3000 WI C01 <Пусто> <Пусто> ВхПостав: позиция подробно - условия РазделПартии
SAPMV50A H0 HKON 2000 W0 H01 <Пусто> <Пусто> ИсходПоставка: заголовок подробно - условия
SAPMV50A HI HKON 2000 WI H01 <Пусто> <Пусто> ВходПоставка: заголовок подробно - условия
SAPMV50A I0 IKON 3000 W0 I01 <Пусто> <Пусто> Исходящая поставка: позиция подробно - условия
SAPMV50A II IKON 3000 WI I01 <Пусто> <Пусто> Входящая поставка: позиция подробно - условия
Приложение 3. Состав записей таблицы TAXITABS поставкипосле копирования нужных записей (исходные и новые)Порядковый номер задает номер закладке с ценами по порядку на экранах.
Я вставил в самый конец (кому-то может приглянуться место и поближе, например если хочется вставить между стандартными номерами 40 и 50 то нужный номер будет 55).
Для вставки в конец сначала надо определить какой порядковый № экрана последний для целевой группы экранов, и указать следующий номер (я прибавил 10).
Code:
Программа ГрЭк Порядк.№ КодФ Название Пикт.
SAPMV50A C0 80 IKON_T Условия <пусто>
SAPMV50A CI 130 IKON_T Условия <пусто>
SAPMV50A H0 100 HKON_T Условия <пусто>
SAPMV50A HI 150 HKON_T Условия <пусто>
SAPMV50A I0 90 IKON_T Условия <пусто>
SAPMV50A II 130 IKON_T Условия <пусто>
Доработка в расширенияхПосле этого в программе MV50AFZP, FORM userexit_pricing_screen_input разрешили использовать кнопки на экранах калькуляции
Code:
CONSTANTS:
lc_vbtyp_7 TYPE likp-vbtyp VALUE '7'.
IF t180-trtyp CN'AC'.
IF likp-vbtyp = lc_vbtyp_7.
CLEAR: cf_pricing_no_change.
ENDIF.
ENDIF.
И в BADI LE_SHP_PRICING метод CHANGE_INPUT_HEADER_AND_ITEMS надо заполнить по-нормальному KOMK KOMP данными предыдущего заказа ММ
Code:
METHOD if_ex_le_shp_pricing~change_input_header_and_items.
CONSTANTS:
lc_vbtyp_7 TYPE likp-vbtyp VALUE '7'.
DATA:
ls_ekko TYPE ekko.
IF is_likp-vbtyp = lc_vbtyp_7.
IF is_lips-vgbel IS NOT INITIAL.
SELECT SINGLE *
FROM ekko
INTO ls_ekko
WHERE ebeln = is_lips-vgbel.
IF sy-subrc = 0.
SELECT SINGLE waers
FROM t001
INTO cs_tkomk-hwaer
WHERE bukrs = ls_ekko-bukrs.
cs_tkomk-waerk = ls_ekko-waers.
cs_tkomk-bukrs = ls_ekko-bukrs.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD.
Тема копирования данных расчета цены из предыдущего документа уже где-то обсуждалась на форуме, мы будем реализовывать копирование данных одноименных видов условий через формулу (одну на всех). Тут одна неприятность - поставочные виды условий из SD а в заказе ММ соответственно ММ. Чтобы копировать мы повторили нужные виды условий заказа ММ в сбыте... Пока как-то так
P.S. Процедуры расчета цен в поставке проверяют некоторые настройки типа позиции, которые относятся к заказу SD. У меня используется тип позиции ELN: тр. SM30 ракурс V_TVAP
Расчет цены = X
Определение расчетной стоимости = X