Текущее время: Пт, окт 31 2025, 19:56

Часовой пояс: 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 часа


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

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


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

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