Текущее время: Вс, июл 20 2025, 03:15

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: ФМ поиска цены к материалу
СообщениеДобавлено: Пн, июл 18 2005, 06:26 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, янв 27 2005, 07:57
Сообщения: 59
Добрый день, уважаемые.
Может кто-нибудь встречал подобную функцию - закидываем туда параметры (значения полей таблиц условий), а она нам выдает цену по этим условиям с учетом параметров, исключений и так далее.
Необходим прайс-лист, в принципе как сделать его понятно, но реализовать выборы из последовательностей доступа, таблиц условий, исключений и т.д. уж больно трудоемким получается. В свою очередь механизм уже работает в документах, может быть кто и знает ФМ, которая там задействована? :roll:


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июл 18 2005, 09:23 
Гость
Code:
FORM GET_PRICE_522 USING MAT LIKE  A522-MATNR
                         BZI LIKE  A522-BZIRK
                         VTW LIKE  A522-VTWEG
                         DAT LIKE  A522-DATBI
               CHANGING KBT LIKE KONP-KBETR
                        KP LIKE KONP-KPEIN
                        KM LIKE KONP-KMEIN.
  TABLES: A522, KONP.
  CLEAR: KBT, KP, KM.
  SELECT SINGLE * FROM A522 WHERE KAPPL EQ 'V'
                              AND KSCHL EQ 'PR01'
                              AND VTWEG EQ VTW
                              AND BZIRK EQ BZI
                              AND MATNR EQ MAT
                              AND DATBI GE DAT
                              AND DATAB LE DAT.
  CHECK SY-SUBRC EQ 0.
  SELECT SINGLE * FROM KONP WHERE KNUMH EQ A522-KNUMH
                              AND KOPOS EQ '01'
                              AND LOEVM_KO EQ SPACE.
  CHECK SY-SUBRC EQ 0.
  KBT = KONP-KBETR.
  KP = KONP-KPEIN.
  KM = KONP-KMEIN.


ENDFORM.       


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июл 18 2005, 09:41 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, янв 27 2005, 07:57
Сообщения: 59
Спасибо, РМщик, за ответ, но ты привел лишь небольшую часть того кода, который я уже реализовал, причем неуниверсального, привязанного к одной таблице - выбор по определенным ключам из конкретной таблицы значения ключа KONP. Может быть я неясно описал ситуацию.
В реалии все намного сложнее, необходимо сначала выбрать схему калькуляции, последовательность доступа, таблицы условий, и уж затем в цикле обращаться к ним как ты описал.
Мне бы хотелось ФМ, куда я передаю ключ схему калькуляции и все параметры, которые встречаются во всех таблицах условий, а мне, с учетом исключений, выходит конечная цена.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июл 18 2005, 10:34 
Гость
Брр... а стандартный механизм вычисления цены для сбытвого заказа почему не использовать? У меня вот этот код замечательно работает:
Code:
FORM MaterialGetPrice.

* data for BAPI
  DATA: GT_BAPISDHD1     LIKE BAPISDHEAD,
        GT_SALESDOCUMENT LIKE BAPIVBELN-VBELN,
        GT_RETURN        LIKE BAPIRETURN ,
        GT_BAPISDITM     LIKE BAPIITEMIN OCCURS 0,
        GT_BAPIPARTNR    LIKE BAPIPARTNR OCCURS 0,
        GS_BAPIPARTNR    LIKE BAPIPARTNR OCCURS 0 WITH HEADER LINE,
        GS_BAPISDITM     LIKE BAPIITEMIN OCCURS 0 WITH HEADER LINE,
        GT_BAPISCHDL     LIKE BAPISCHDL OCCURS 0,
        GS_BAPISCHDL     LIKE BAPISCHDL OCCURS 0 WITH HEADER LINE,
        GT_BAPIITEMEX    LIKE BAPIITEMEX OCCURS 0,
        GS_BAPIITEMEX    LIKE BAPIITEMEX OCCURS 0 WITH HEADER LINE.

  CLEAR: GT_RETURN, GT_BAPISDITM[], GT_BAPISCHDL[].

  GT_BAPISDHD1-DOC_TYPE = '****'.      " Type of document
  GT_BAPISDHD1-SALES_ORG   = '****'.   " Sales org.
  GT_BAPISDHD1-DISTR_CHAN  = '**'.    " Distribution channel
  GT_BAPISDHD1-DIVISION = '**'.
  GT_BAPISDHD1-CURRENCY = 'RUB'.
  GT_BAPISDHD1-PRICE_DATE   = sy-datum.    " PRICE DATA
  GS_BAPIPARTNR-PARTN_ROLE = 'AG' .
  GS_BAPIPARTNR-PARTN_NUMB = default_kunnr.
  APPEND GS_BAPIPARTNR TO GT_BAPIPARTNR.

  GS_BAPISDITM-MATERIAL = mara-matnr.        " material number
  GS_BAPISDITM-CURRENCY = 'RUB'.
  GS_BAPISDITM-PLANT = shop.
  GS_BAPISCHDL-REQ_QTY = 1.
  GS_BAPISDITM-ITM_NUMBER = 1.
  GS_BAPISCHDL-ITM_NUMBER = 1.

  APPEND gs_bapisditm TO GT_bapisditm.
  APPEND gs_bapischdl TO gt_bapischdl.

  CALL FUNCTION 'BAPI_SALESORDER_SIMULATE'
    EXPORTING
      ORDER_HEADER_IN           = GT_BAPISDHD1
    IMPORTING
      SALESDOCUMENT             = GT_SALESDOCUMENT
      RETURN                    = GT_RETURN
    TABLES
      ORDER_ITEMS_IN            = GT_BAPISDITM
      ORDER_PARTNERS            = GT_BAPIPARTNR
      ORDER_SCHEDULE_IN         = GT_BAPISCHDL
      ORDER_ITEMS_OUT           = GT_BAPIITEMEX
  .



  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
   EXPORTING
     WAIT          = 'X'.

  IF gt_return-type NE 'E'.
    READ TABLE gt_bapiitemex INTO gs_bapiitemex INDEX 1.
    material_price = gs_bapiitemex-net_value1 + gs_bapiitemex-tx_doc_cur.
  ENDIF.
ENDFORM.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июл 18 2005, 11:03 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Вс, сен 05 2004, 12:11
Сообщения: 420
Откуда: SAP ERP 2005
Я использовал функцию с недвусмысленным названием Pricing :-) . Она возвращает как конечную цену, так и набор условий, которые ее сформировали. Если не разберетесь как ее использовать, пишите в личку, когда буду на работе, вышлю пример.

_________________
Чтоб у нас все было, и нам за это ничего не было ! :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июл 18 2005, 11:33 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
Clarus написал(а):
Я использовал функцию с недвусмысленным названием Pricing :-) . Она возвращает как конечную цену, так и набор условий, которые ее сформировали. Если не разберетесь как ее использовать, пишите в личку, когда буду на работе, вышлю пример.

А может пример тут нарисовать, а то потом тебе каждый будет в личку рисовать, аля вышлите плиз хвункцию :P


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июл 18 2005, 12:06 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, янв 27 2005, 07:57
Сообщения: 59
Max и Clarus, спасибо!
Кажется, Pricing именно то (судя по названию :D ), что надо, у Max не увидел пока, куда передавать поля условий. Clarus, напиши плиз здесь пример, а то потом, когда тебе надоест отписываться каждому, кто постучался к тебе, - они же на меня накинуться!!! :shock:


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 03 2005, 09:41 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Вс, сен 05 2004, 12:11
Сообщения: 420
Откуда: SAP ERP 2005
По просьбам трудящихся выкладываю код.

CLEAR: COMM_HEAD_I, COMM_ITEM_I.
CLEAR: COMM_HEAD_E, COMM_ITEM_E.
refresh ZKOMV.

**** Заголовок

move-corresponding LT_KNVV to COMM_HEAD_I.
COMM_HEAD_I-MANDT = SY-MANDT.
COMM_HEAD_I-BELNR = '$000000001'.
COMM_HEAD_I-KNUMV = '$000000001'.
COMM_HEAD_I-BUKRS = p_BUKRS.
COMM_HEAD_I-HWAER = LT_KNVV-WAERS.
COMM_HEAD_I-WAERK = LT_KNVV-WAERS.
COMM_HEAD_I-KURRF = 1.
COMM_HEAD_I-KURRF_DAT = p_BUDAT.
COMM_HEAD_I-KUNNR = LT_KNVV-KUNNR.
COMM_HEAD_I-KNRZE = LT_KNVV-KUNNR.
COMM_HEAD_I-KUNRE = LT_KNVV-KUNNR.
COMM_HEAD_I-KUNWE = LT_KNVV-KUNNR.
COMM_HEAD_I-KAPPL = 'V'.
COMM_HEAD_I-KALSM = p_KALSM.
COMM_HEAD_I-PRSDT = p_BUDAT.
COMM_HEAD_I-FBUDA = p_BUDAT.
COMM_HEAD_I-FKDAT = p_BUDAT.
COMM_HEAD_I-ERDAT = p_BUDAT.
COMM_HEAD_I-TAXK1 = '1'. "??????????????
COMM_HEAD_I-KVORG = '08'.
COMM_HEAD_I-VBTYP = 'C'. "??????????????
COMM_HEAD_I-FKART = 'FX'.
COMM_HEAD_I-VKORGAU = LT_KNVV-VKORG.
COMM_HEAD_I-AUART_SD = p_AUART.
COMM_HEAD_I-WERKS = p_WERKS.
COMM_HEAD_I-IX_KOMK = '1'.
select single LAND1 into COMM_HEAD_I-ALAND from KNA1
where KUNNR = LT_KNVV-KUNNR.
COMM_HEAD_I-LAND1 = COMM_HEAD_I-ALAND.
COMM_HEAD_I-BOREL = 'X'.
COMM_HEAD_I-HITYP_PR = 'X'.
COMM_HEAD_I-BOAVO = 'X'.
COMM_HEAD_I-BORVF = 'X'.
COMM_HEAD_I-BOKRE = 'X'.

**** Позиция
move-corresponding LT_MVKE to COMM_ITEM_I.
COMM_ITEM_I-KPOSN = '000001'.
COMM_ITEM_I-WERKS = P_WERKS.
COMM_ITEM_I-BWKEY = P_WERKS.
select single MEINS into COMM_ITEM_I-MEINS from MARA
where MATNR = LT_MVKE-MATNR.
select single UMREZ UMREN into (COMM_ITEM_I-UMVKZ,
COMM_ITEM_I-UMVKN) from MARM
where MATNR = LT_MVKE-MATNR
and MEINH = 'EPL'. "Продажная ЕИ
COMM_ITEM_I-MGLME = COMM_ITEM_I-UMVKZ.
COMM_ITEM_I-LAGME = COMM_ITEM_I-MEINS.
COMM_ITEM_I-MGAME = p_MGAME.
COMM_ITEM_I-PRSFD = 'X'.
* COMM_ITEM_I-PRSGR = 'X'.
* COMM_ITEM_I-EVRWR = 'X'.
* COMM_ITEM_I-KOWRR = 'Y'.
COMM_ITEM_I-KURSK = 1.
COMM_ITEM_I-KURSK_DAT = p_BUDAT.
COMM_ITEM_I-TAXM1 = 1. "??????????
COMM_ITEM_I-VGBEL = '11111'.
COMM_ITEM_I-VGPOS = '000001'.
COMM_ITEM_I-PRODH1 = COMM_ITEM_I-PRODH.
COMM_ITEM_I-PSTYV = P_PSTYV.

CALL FUNCTION 'PRICING'
EXPORTING
CALCULATION_TYPE = 'C'
COMM_HEAD_I = COMM_HEAD_I
COMM_ITEM_I = COMM_ITEM_I
* PRELIMINARY = ' '
* NO_CALCULATION = ' '
IMPORTING
COMM_HEAD_E = COMM_HEAD_E
COMM_ITEM_E = COMM_ITEM_E
TABLES
TKOMV = ZKOMV
* SVBAP =
.


После вызова в COMM_ITEM_E-NETPR имеем конечную цену, в ZKOMV - список условий, которые эту цену сформировали.

Все что начинается на p_ - это параметры, задаваеме юзером: БЕ, схема калькуляции, рынок сбыта и т.д.

LT_KNVV - строка из таблицы KNVV для клиента/рынка сбыта
LT_MVKE - строка из таблицы MVKE для материала/рынка сбыта

_________________
Чтоб у нас все было, и нам за это ничего не было ! :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 03 2005, 12:31 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Clarus написал(а):
По просьбам трудящихся выкладываю код.

Респект!

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 04 2005, 03:11 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, янв 27 2005, 07:57
Сообщения: 59
Хочу выразить Clarus-у огромную благодарность, после 3 дней копания в ФМ и кропотливого подбора его параметров он выдал-таки цену!!! :P


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 04 2005, 09:14 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Вс, сен 05 2004, 12:11
Сообщения: 420
Откуда: SAP ERP 2005
А никто и не говорил, что будет легко :-)

_________________
Чтоб у нас все было, и нам за это ничего не было ! :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 27 2008, 09:35 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 11 2008, 11:54
Сообщения: 359
Откуда: Воронеж
Пол: Мужской
Clarus написал(а):
COMM_ITEM_I-KPOSN = '000001'.


РМщик написал(а):
AND KOPOS EQ '01'


Почему у вас позиция жестко зашита на "01"? Может быть кто нибудь подскажет, как узнать позицию KONP-kopos?

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 27 2008, 18:39 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
XXX_:) написал:
Почему у вас позиция жестко зашита на "01"? Может быть кто нибудь подскажет, как узнать позицию KONP-kopos?


Судя по аналогичному посту в SD, вам дали задачу "найди то, не знаю что". Для того, чтобы pricing conditions могли функционировать без вмешательства пользователей, KOPOS и должен быть один. Иначе прикиньте, SAP находит запись, а там ажно 3 цены стоят. Полагаю, что при таком раскладе в транзакции вывалится окошко и пользователю будет предложено выбрать одну из них. Ну или все строки появятся в экране Conditions и нужно будет лишние деактивировать или что-то такое.

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

Чистое IMHO, конечно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, июн 28 2008, 20:02 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 11 2008, 11:54
Сообщения: 359
Откуда: Воронеж
Пол: Мужской
Jelena написала:

Судя по аналогичному посту в SD, вам дали задачу "найди то, не знаю что".


Да, нет, нужно выгрузить цены для анализа + мелочи.

Jelena написала:
Для того, чтобы pricing conditions могли функционировать без вмешательства пользователей, KOPOS и должен быть один. Иначе прикиньте, SAP находит запись, а там ажно 3 цены стоят. Полагаю, что при таком раскладе в транзакции вывалится окошко и пользователю будет предложено выбрать одну из них. Ну или все строки появятся в экране Conditions и нужно будет лишние деактивировать или что-то такое. Короче говоря, если у вас несколько KOPOS, то однозначно определить цену невозможно.


Ни фига, САП с этим разбирается и всегда выбирает одну из строк, но пока не понял как. Понял только что не по ключам :(. Т.е
KOPOS при выборе цен не участвует. Буде и далее дебажить.

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

Чистое IMHO, конечно.

Ну мне не смогли объяснить почему цен несколько, загрузка цен происходит как стандартными так и Z-товскими средствами.

Буду копать дальше, я так понял, что обычно это не вызывает проблем.

Спасибо за поддержку.

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 30 2008, 18:30 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
XXX_:) написал:
Ну мне не смогли объяснить почему цен несколько, загрузка цен происходит как стандартными так и Z-товскими средствами.


Так тут-то "собака и порылась". Держу пари у вас просто что-то свое дописано в дополнение к стандарту. Интересно, кстати, что в таком случае в анализе условий показывается? :?

Вообще постановка задачи несколько некорректна IMHO. Если цена определяется динамически на основании каких-то условий, известных только во время создания заказа, то каким образом можно определить "цену товара" и, скажем, нарисовать какой-то прайс-лист, не зная этих условий?


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

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


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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