Текущее время: Чт, июн 19 2025, 04:02

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Изменение количество в заказе через BAPI_SALESORDER_CHANGE. Проблемы.
СообщениеДобавлено: Вт, фев 26 2019, 16:39 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
Коллеги, привет!

Нужно поменять количество материала в сбытовом заказе. Передаю в BAPI_SALESORDER_CHANGE в ORDER_ITEM_IN в поле target_qty - текущее количество "минус один" (просто для теста), то же самое делаю в SCHEDULE_LINES только в поле req_qty. Проставляю флаги U (в X-овых таблицах всё прописал), помечаю поля, которые надо поменять, в заказе для пробы одна позиция. Запускаю бапишку. На "входе" было 100 штук. Я передал в этих двух таблицах - 99. Получил "на выходе" - 199. Мало того - закрылась возможность менять количество через VA02. То есть, если уж ломать, так ломать. Передавать "-1" не советуйте - дамп:-). Подбросьте пожалуйста идею - где я не то делаю.

Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение количество в заказе через BAPI_SALESORDER_CHANGE. Проблемы.
СообщениеДобавлено: Вт, фев 26 2019, 17:06 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1594
Откуда: Москва, Минск
Пол: Мужской
Попробуй не заполнять вообще ORDER_ITEM_IN-target_qty, только данный партий поставки SCHEDULE_LINES-req_qty.

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение количество в заказе через BAPI_SALESORDER_CHANGE. Проблемы.
СообщениеДобавлено: Ср, фев 27 2019, 10:31 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
Так вообще в дамп падает. Проблема осталась. Передаю 9 вместо 10-ти. На выходе 19. Такое ощущение, что просто складывают.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение количество в заказе через BAPI_SALESORDER_CHANGE. Проблемы.
СообщениеДобавлено: Ср, фев 27 2019, 10:53 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
1. Поддерживаю DED_MOROZ: количества надо передавать на уровне партий поставки.

2. Если стандартная bapi при вызове падает в дамп, это повод посмотреть связанно ли это с z-кодом, если причину не найдете - выставить сообщение по поддержке в SAP SE.

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменение количество в заказе через BAPI_SALESORDER_CHANGE. Проблемы.
СообщениеДобавлено: Ср, фев 27 2019, 12:29 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
Не работает. Z кода там нет. Если не передавать изменения в позициях - вываливается в дамп.

Тупо передаю единицу в обеих таблицах - получаю количество на единицу больше. Моск сломался.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение количество в заказе через BAPI_SALESORDER_CHANGE. Проблемы.
СообщениеДобавлено: Ср, фев 27 2019, 12:52 
Специалист
Специалист
Аватара пользователя

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

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменение количество в заказе через BAPI_SALESORDER_CHANGE. Проблемы.
СообщениеДобавлено: Ср, фев 27 2019, 12:55 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
Сейчас ещё раз поправил код. Передаю только в schedules - увеличивает на единицу. Осталось попробовать удалять позицию, а потом её создавать заново.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение количество в заказе через BAPI_SALESORDER_CHANGE. Проблемы.
СообщениеДобавлено: Ср, фев 27 2019, 12:59 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
superbizon написала:
Код в студию?

Программка тестовая. Писано левой ногой.
Code:
DATA: l_view     TYPE order_view,
      lt_orders  TYPE STANDARD TABLE OF sales_key,
      ls_orders  TYPE sales_key,
      lt_header  TYPE STANDARD TABLE OF bapisdhd,
      ls_header  TYPE  bapisdhd,
      lt_items   TYPE STANDARD TABLE OF bapisdit,
      ls_items   TYPE bapisdit,
      lt_items_u TYPE STANDARD TABLE OF bapisditm,
*      ls_items_u TYPE BAPISDITM,
      ls_xheader TYPE bapisdh1x,
*      ls_xitems  TYPE bapisditmx,
      lt_xitems_u  TYPE STANDARD TABLE OF bapisditmx,
      lt_return  TYPE STANDARD TABLE OF bapiret2,
      lt_shedules TYPE STANDARD TABLE OF bapisdhedu,
      ls_shedules TYPE bapisdhedu,
      lt_sched_u TYPE STANDARD TABLE OF bapischdl,
      lt_xsched  TYPE STANDARD TABLE OF bapischdlx.

FIELD-SYMBOLS: <fs_header> TYPE bapisdhd,
               <fs_item>   TYPE bapisdit,
               <fs_item_u> TYPE bapisditm,
               <fs_xitem>  TYPE bapisditmx,
               <fs_shed_u> TYPE bapischdl,
               <fs_xshed>  TYPE bapischdlx.

PARAMETERS: p_vbeln TYPE vbak-vbeln OBLIGATORY DEFAULT '1100373313',
            p_menge TYPE vbap-smeng OBLIGATORY DEFAULT 10.

START-OF-SELECTION.

  l_view-header     = 'X'.
  l_view-item       = 'X'.
  l_view-sdschedule = 'X'.

  ls_orders-vbeln = p_vbeln.
  APPEND ls_orders TO lt_orders.

  CALL FUNCTION 'BAPISDORDER_GETDETAILEDLIST'
    EXPORTING
      i_bapi_view              = l_view
*     I_MEMORY_READ            =
*     I_WITH_HEADER_CONDITIONS = ' '
    TABLES
      sales_documents          = lt_orders
      order_headers_out        = lt_header
      order_items_out          = lt_items
      order_schedules_out      = lt_shedules
*     ORDER_BUSINESS_OUT       =
*     ORDER_PARTNERS_OUT       =
*     ORDER_ADDRESS_OUT        =
*     ORDER_STATUSHEADERS_OUT  =
*     ORDER_STATUSITEMS_OUT    =
*     ORDER_CONDITIONS_OUT     =
*     ORDER_COND_HEAD          =
*     ORDER_COND_ITEM          =
*     ORDER_COND_QTY_SCALE     =
*     ORDER_COND_VAL_SCALE     =
*     ORDER_CONTRACTS_OUT      =
*     ORDER_TEXTHEADERS_OUT    =
*     ORDER_TEXTLINES_OUT      =
*     ORDER_FLOWS_OUT          =
*     ORDER_CFGS_CUREFS_OUT    =
*     ORDER_CFGS_CUCFGS_OUT    =
*     ORDER_CFGS_CUINS_OUT     =
*     ORDER_CFGS_CUPRTS_OUT    =
*     ORDER_CFGS_CUVALS_OUT    =
*     ORDER_CFGS_CUBLBS_OUT    =
*     ORDER_CFGS_CUVKS_OUT     =
*     ORDER_BILLINGPLANS_OUT   =
*     ORDER_BILLINGDATES_OUT   =
*     ORDER_CREDITCARDS_OUT    =
*     EXTENSIONOUT             =
    .

  BREAK-POINT.

  LOOP AT lt_items ASSIGNING <fs_item>.
*    APPEND INITIAL LINE TO lt_items_u ASSIGNING <fs_item_u>.
*    <fs_item_u>-itm_number = <fs_item>-itm_number.
*    <fs_item_u>-target_qty = 1."<fs_item>-req_qty - 1.
*    <fs_item_u>-req_qty = <fs_item>-req_qty - 1.
*    <fs_item_u>-cum_req_de = <fs_item>-cum_req_de - 1.
*    <fs_item_u>-cum_cf_qty = <fs_item>-cum_cf_qty - 1.
*    <fs_item_u>-cum_con_qu = <fs_item>-cum_con_qu - 1.
*    APPEND INITIAL LINE TO lt_xitems_u ASSIGNING <fs_xitem>.
*    <fs_xitem>-itm_number = <fs_item>-itm_number.
*    <fs_xitem>-updateflag = 'U'.
*    <fs_xitem>-target_qty = 'X'.
*    <fs_xitem>-req_qty    = 'X'.
*    <fs_xitem>-cum_req_de = 'X'.
*    <fs_xitem>-cum_cf_qty = 'X'.
*    <fs_xitem>-cum_con_qu = 'X'.
    READ TABLE lt_shedules INTO ls_shedules WITH KEY itm_number = <fs_item>-itm_number.
    IF sy-subrc = 0.
      APPEND INITIAL LINE TO lt_sched_u ASSIGNING <fs_shed_u>.
      <fs_shed_u>-itm_number = <fs_item>-itm_number.
      <fs_shed_u>-req_qty = 1."<fs_item>-target_qty - 1.
      <fs_shed_u>-sched_line = ls_shedules-sched_line.
      APPEND INITIAL LINE TO lt_xsched ASSIGNING <fs_xshed>.
      <fs_xshed>-itm_number = <fs_item>-itm_number.
      <fs_xshed>-updateflag = 'U'.
      <fs_xshed>-req_qty = 'X'.
      <fs_xshed>-sched_line = 'X'.
    ENDIF.
  ENDLOOP.

  ls_xheader-updateflag = 'U'.

  BREAK-POINT.

  CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
    EXPORTING
      salesdocument         = p_vbeln
*     ORDER_HEADER_IN       =
      order_header_inx      = ls_xheader
*     SIMULATION            =
*     BEHAVE_WHEN_ERROR     = ' '
*     INT_NUMBER_ASSIGNMENT = ' '
*     LOGIC_SWITCH          =
*     NO_STATUS_BUF_INIT    = ' '
    TABLES
      return                = lt_return
      order_item_in         = lt_items_u
      order_item_inx        = lt_xitems_u
*     PARTNERS              =
*     PARTNERCHANGES        =
*     PARTNERADDRESSES      =
*     ORDER_CFGS_REF        =
*     ORDER_CFGS_INST       =
*     ORDER_CFGS_PART_OF    =
*     ORDER_CFGS_VALUE      =
*     ORDER_CFGS_BLOB       =
*     ORDER_CFGS_VK         =
*     ORDER_CFGS_REFINST    =
      schedule_lines        = lt_sched_u
      schedule_linesx       = lt_xsched
*     ORDER_TEXT            =
*     ORDER_KEYS            =
*     CONDITIONS_IN         =
*     CONDITIONS_INX        =
*     EXTENSIONIN           =
    .
  .
*  COMMIT WORK AND WAIT.

  BREAK-POINT.

  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait   = 'X'.
*    IMPORTING
*      return = lt_return.


  BREAK-POINT.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение количество в заказе через BAPI_SALESORDER_CHANGE. Проблемы.
СообщениеДобавлено: Ср, фев 27 2019, 13:00 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
Да, кстати, партий в заказе у нас нет.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение количество в заказе через BAPI_SALESORDER_CHANGE. Проблемы.
СообщениеДобавлено: Ср, фев 27 2019, 13:16 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июн 01 2005, 07:11
Сообщения: 223
Откуда: Нижневартовск->Москва
Пол: Женский
Code:
READ TABLE lt_shedules INTO ls_shedules WITH KEY itm_number = <fs_item>-itm_number.
    IF sy-subrc = 0.
      APPEND INITIAL LINE TO lt_sched_u ASSIGNING <fs_shed_u>.
      <fs_shed_u>-itm_number = <fs_item>-itm_number.
      <fs_shed_u>-req_qty = 1."<fs_item>-target_qty - 1.
      <fs_shed_u>-sched_line = ls_shedules-sched_line.
      APPEND INITIAL LINE TO lt_xsched ASSIGNING <fs_xshed>.
      <fs_xshed>-itm_number = <fs_item>-itm_number.
      <fs_xshed>-updateflag = 'U'.
      <fs_xshed>-req_qty = 'X'.
      <fs_xshed>-sched_line = 'X'.
    ENDIF.

вот этим кодом вы создаете новую партию поставки, естественно, что новое количество добавляется в позицию.
<fs_xshed>-sched_line нужно заполнить номером партии которую хотите поменять (ls_shedules-sched_line ).

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменение количество в заказе через BAPI_SALESORDER_CHANGE. Проблемы.
СообщениеДобавлено: Ср, фев 27 2019, 13:19 
Специалист
Специалист
Аватара пользователя

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

т.е. вот это
Code:
READ TABLE lt_shedules INTO ls_shedules WITH KEY itm_number = <fs_item>-itm_number.
    IF sy-subrc = 0.
...

никогда не срабатывает?

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменение количество в заказе через BAPI_SALESORDER_CHANGE. Проблемы.
СообщениеДобавлено: Ср, фев 27 2019, 13:27 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1594
Откуда: Москва, Минск
Пол: Мужской
Не путайте термины партия материала и партия поставки.
У вас часом в партии поставки, данные которой вы меняете, не установлена галочка "Дата и объем поставки зафиксированы"?

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение количество в заказе через BAPI_SALESORDER_CHANGE. Проблемы.
СообщениеДобавлено: Ср, фев 27 2019, 13:28 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1594
Откуда: Москва, Минск
Пол: Мужской
Да и к позиции заказа партий поставки 1 или больше?

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение количество в заказе через BAPI_SALESORDER_CHANGE. Проблемы.
СообщениеДобавлено: Ср, фев 27 2019, 13:33 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, апр 06 2012, 10:00
Сообщения: 63
Отвечаю всем. Партий поставки (которые у нас CHARG обычно называются) в заказе не прописано. Да, в тестовом заказе я обнаружил ровно столько партий, сколько раз я запускал свою программу, то есть я каждый раз создаю новую, отсюда и суммирование. Тогда вопрос - как не добавить новую партию, а просто обновить количество? Что я "недоуказал" в schedules?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение количество в заказе через BAPI_SALESORDER_CHANGE. Проблемы.
СообщениеДобавлено: Ср, фев 27 2019, 13:34 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июн 01 2005, 07:11
Сообщения: 223
Откуда: Нижневартовск->Москва
Пол: Женский
superbizon написала:
<fs_xshed>-sched_line нужно заполнить номером партии которую хотите поменять (ls_shedules-sched_line ).

вот это сделали уже?

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


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

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


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

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


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

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