Текущее время: Пт, апр 19 2024, 04:54

Часовой пояс: 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
Сообщения: 1580
Откуда: Москва, Минск
Пол: Мужской
Попробуй не заполнять вообще 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
Сообщения: 4842
Откуда: Москва
Пол: Мужской
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
Сообщения: 1580
Откуда: Москва, Минск
Пол: Мужской
Не путайте термины партия материала и партия поставки.
У вас часом в партии поставки, данные которой вы меняете, не установлена галочка "Дата и объем поставки зафиксированы"?

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


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

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1580
Откуда: Москва, Минск
Пол: Мужской
Да и к позиции заказа партий поставки 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 часа


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

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


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

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