Текущее время: Пн, июл 28 2025, 01:05

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: создание сбытового заказа BAPI_SALESORDER_CREATEFROMDAT2
СообщениеДобавлено: Ср, окт 03 2012, 15:33 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июн 01 2005, 07:11
Сообщения: 223
Откуда: Нижневартовск->Москва
Пол: Женский
всем доброго времени суток!

етсь проблема: создаю заказ с помощью BAPI_SALESORDER_CREATEFROMDAT2, при этом схема калькуляции подтягивается, но в начальном состоянии, чтобы рассчитались условия нужно зайти в va02 и лапами запустить расчет цен.
Вопрос: можно ли передачей каких либо параметров (ну кроме всего перечня условий с готовыми суммами) заставить систему рассчитывать цены сразу? Если да, то как?

upd:
вот это
LOGIC_SWITCH-COND_HANDL = 'X'
LOGIC_SWITCH-PRICING = 'B'
не помогает

_________________
Всегда открыта новым авантюрам!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: создание сбытового заказа BAPI_SALESORDER_CREATEFROMDAT2
СообщениеДобавлено: Чт, окт 04 2012, 10:28 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июн 10 2005, 14:14
Сообщения: 216
Откуда: Україна -> Москва
Если бапихой не получается чегото доделать, то можно маленький пакетник тр. va02 после бапихи утулить, где ткнуть чего надо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: создание сбытового заказа BAPI_SALESORDER_CREATEFROMDAT2
СообщениеДобавлено: Чт, окт 04 2012, 11:09 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
насколько помню, при создании происходит расчёт A/B,
если не рассчиталось, вероятно чего-то не хватило,
попробуй поставить точку на preisfindung в программе sapfv45p
и посмотри на режимы расчета, они по очереди запускаются по нескольку раз -
в холостую, для фрахта и пр., поэтому актуален один из них (A..D например, а E..G игнорируй).
надо сравнить ,что происходит с xkomv[] в va01 и в этой bapi.
в крайнем случае, можно перезапустить расчёт насильно в userexit_save_document[_prepare]

с этой bapi не получается цену рассчитать без усилий, когда допустим
есть вышестоящее приложение из которого должна подтянуться цена
и заказ надо создать со ссылкой на позицию (через bapi нельзя, т.е. например пакетник)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: создание сбытового заказа BAPI_SALESORDER_CREATEFROMDAT2
СообщениеДобавлено: Чт, окт 04 2012, 17:03 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июн 01 2005, 07:11
Сообщения: 223
Откуда: Нижневартовск->Москва
Пол: Женский
trop, спасибо
В экзиты лезть по куче причин не хочу. Не исключено, что проблема действительно в ссылках (изначально создавали по образцу, потом от этой идеи отказались, но мало ли где чего ненужного передается по старой памяти и мешает цены считать), проведу инвентаризацию входных параметров :)

пока что в качестве временного решения сделала пересчет через вызов BAPI_SALESORDER_CHANGE после BAPI_SALESORDER_CREATEFROMDAT2, второй вызов считет все без дополнительного шаманства.

_________________
Всегда открыта новым авантюрам!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: создание сбытового заказа BAPI_SALESORDER_CREATEFROMDAT2
СообщениеДобавлено: Вс, мар 24 2013, 20:57 
Начинающий
Начинающий

Зарегистрирован:
Ср, дек 07 2011, 17:52
Сообщения: 7
У меня похожая проблема. Бапишка работала, работала и бац, перестала условия вообще подставлять.
Второй день играюсь с парамтерами, мыпаюсь при создании в заказ цену подставить, оно тупо игнорирует все условия.
Режим расчета стоял G.
В чем может быть проблема?

Ниже код фм, котрый при сохранении заказа должен создавать копию в другой БЕ.

Code:
*"----------------------------------------------------------------------
*"*"Функциональный модуль обновления:
*"
*"*"Локальный интерфейс:
*"  IMPORTING
*"     VALUE(IS_VBAK) TYPE  VBAK
*"     VALUE(IT_VBAP) TYPE  VA_VBAPVB_T
*"     VALUE(IT_VBEP) TYPE  VA_VBEPVB_T
*"     VALUE(IT_VBPA) TYPE  VA_VBPAVB_T
*"     VALUE(IT_KOMV) TYPE  KOMV_TAB
*"     VALUE(I_VKORG) TYPE  VKORG DEFAULT '3100'
*"     VALUE(I_WERKS) TYPE  WERKS_D DEFAULT '3100'
*"     VALUE(I_COMMIT) TYPE  FLAG OPTIONAL
*"----------------------------------------------------------------------

  " Рабочие области входящих таблиц
  FIELD-SYMBOLS: <ls_vbap> LIKE LINE OF it_vbap,
                 <ls_vbep> LIKE LINE OF it_vbep,
                 <ls_vbpa> LIKE LINE OF it_vbpa,
                 <ls_komv> LIKE LINE OF it_komv.
  " Данные для создания нового документа
  DATA: ls_order_header_in      TYPE bapisdhd1,
        lt_order_items_in       TYPE TABLE OF bapisditm WITH HEADER LINE,
        lt_order_schedules_in   TYPE TABLE OF bapischdl WITH HEADER LINE,
        lt_order_partners       TYPE TABLE OF bapiparnr WITH HEADER LINE,
        lt_order_conditions_in  TYPE TABLE OF bapicond  WITH HEADER LINE,
        ls_logic_switch         TYPE bapisdls,
*        lt_return               TYPE bapiret2_t,
        lv_salesdocument        TYPE bapivbeln-vbeln.

  " Данные заголовка
  ls_order_header_in-doc_type   = is_vbak-auart.
  ls_order_header_in-sales_org  = i_vkorg.
  ls_order_header_in-distr_chan = is_vbak-vtweg.
  ls_order_header_in-division   = is_vbak-spart.
  " Берем валюту из новой БЕ
  SELECT SINGLE a~waers INTO ls_order_header_in-currency
    FROM t001 AS a INNER JOIN tvko AS b ON b~bukrs EQ a~bukrs
    WHERE vkorg EQ i_vkorg.
* NOTE: Присвоение ссылочного заказа на уровне заголовка вызывает дамп в случае запуска данного ФМ в момент создания ссылочного заказа.
  ls_order_header_in-ref_doc    = is_vbak-vbeln.
  ls_order_header_in-refdoc_cat = is_vbak-vbtyp.
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
    EXPORTING
      input  = is_vbak-vbeln
    IMPORTING
      output = ls_order_header_in-purch_no_c.
  " Для каждой не отклоненной позиции...
  LOOP AT it_vbap ASSIGNING <ls_vbap> WHERE abgru IS INITIAL.
    " Данные позиции
    lt_order_items_in-itm_number = <ls_vbap>-posnr.
    lt_order_items_in-material   = <ls_vbap>-matnr.
    lt_order_items_in-plant      = i_werks.
    lt_order_items_in-ref_doc    = is_vbak-vbeln.
    lt_order_items_in-ref_doc_it = <ls_vbap>-posnr.
    lt_order_items_in-ref_doc_ca = is_vbak-vbtyp.
    APPEND lt_order_items_in.
    " Данные партии поставки
    LOOP AT it_vbep ASSIGNING <ls_vbep> WHERE posnr EQ <ls_vbap>-posnr.
      lt_order_schedules_in-itm_number = <ls_vbep>-posnr.
      lt_order_schedules_in-req_qty    = <ls_vbep>-wmeng.
      lt_order_schedules_in-sched_line = <ls_vbep>-etenr.
      APPEND lt_order_schedules_in.
    ENDLOOP.
    " Данные условий
    LOOP AT it_komv ASSIGNING <ls_komv> WHERE kposn EQ <ls_vbap>-posnr AND kschl IS NOT INITIAL AND kbetr IS NOT INITIAL.
      CLEAR lt_order_conditions_in.
      lt_order_conditions_in-itm_number = <ls_komv>-kposn.
      lt_order_conditions_in-cond_st_no = <ls_komv>-stunr.
      lt_order_conditions_in-cond_count = <ls_komv>-zaehk.
      lt_order_conditions_in-cond_type  = <ls_komv>-kschl.
      IF <ls_komv>-krech EQ 'A'. " Для процентных условий делим значение на 10
        lt_order_conditions_in-cond_value  = <ls_komv>-kbetr / 10.
      ELSE.
        lt_order_conditions_in-cond_value  = <ls_komv>-kbetr.
      ENDIF.
      IF <ls_komv>-waers EQ is_vbak-waerk. " Для позиций в валюте заказа меняем валюту на новую
        lt_order_conditions_in-currency    = ls_order_header_in-currency.
      ELSE.
        lt_order_conditions_in-currency  = <ls_komv>-waers.
      ENDIF.
      lt_order_conditions_in-cond_unit   = <ls_komv>-kmein.
      lt_order_conditions_in-cond_p_unt  = <ls_komv>-kpein.
      APPEND lt_order_conditions_in.
    ENDLOOP.
  ENDLOOP.
*  " Данные партнеров
  LOOP AT it_vbpa ASSIGNING <ls_vbpa> WHERE posnr EQ '000000'.
    lt_order_partners-partn_role = <ls_vbpa>-parvw.
    CASE <ls_vbpa>-nrart.
      WHEN 'KU'. lt_order_partners-partn_numb = <ls_vbpa>-kunnr.
      WHEN 'LI'. lt_order_partners-partn_numb = <ls_vbpa>-lifnr.
      WHEN 'PE'. lt_order_partners-partn_numb = <ls_vbpa>-pernr.
      WHEN OTHERS.
        CONTINUE.
    ENDCASE.
    APPEND lt_order_partners.
  ENDLOOP.
  " Логика расчета цены
  ls_logic_switch-pricing = 'G'. " Копирование компонентов цен без изм., расчет налогов заново
  " Создаем новый заказ
  CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
    EXPORTING
      order_header_in     = ls_order_header_in
      logic_switch        = ls_logic_switch
    IMPORTING
      salesdocument       = lv_salesdocument
    TABLES
*      return              = lt_return
      order_items_in      = lt_order_items_in
      order_partners      = lt_order_partners
      order_schedules_in  = lt_order_schedules_in
      order_conditions_in = lt_order_conditions_in.
*  LOOP AT lt_return INTO ls_return.
*    WRITE:/ ls_return-type,
*            ls_return-id,
*            ls_return-number,
*            ls_return-message.
*  ENDLOOP.
  IF i_commit IS NOT INITIAL.
    IF lv_salesdocument IS NOT INITIAL.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ENDIF.
  ENDIF.


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

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


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

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


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

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