Текущее время: Сб, июн 21 2025, 06:50

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Изменение SD заказа. тр. va02 BAPI_SALESORDER_CHANGE
СообщениеДобавлено: Вт, ноя 17 2015, 11:24 
Специалист
Специалист

Зарегистрирован:
Вс, фев 12 2012, 18:43
Сообщения: 192
Здравствуйте!

Постановка: есть созданный ранее заказ (тр. VA01). Необходимо подобрать к нему позиции счет-фактур. Количество в позициях фактура может отличаться от количества указанного в заказе. Поэтому необходимо в заказе обновить позиции (указать такое же количество как в позиции фактуры, прописать ссылки на счет-фактуру. В сумме количество в заказе и количество в счет-фактуре одинаковое, удалить текущую позицию). Изменение заказа необходимо делать через BAPI_SALESORDER_CHANGE? Возможно ли за 1 вызов BAPI добавить новые позиции и удалить старую? Или нужно вызывать BAPI отдельно для добавления и сохранять заказ, затем вызывать BAPI на удаление и сохранять заказ?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменение SD заказа. тр. va02 BAPI_SALESORDER_CHANGE
СообщениеДобавлено: Пт, ноя 20 2015, 10:11 
Специалист
Специалист

Зарегистрирован:
Вс, фев 12 2012, 18:43
Сообщения: 192
суть вопроса в следующем:
кто-нибудь делал обновление полей VBAP-VGBEL/VBAP-VGPOS с помощью BAPI_SALESORDER_CHANGE или SD_SALESDOCUMENT_CHANGE? Почему у меня не получается? Привожу кусок кода ниже, может кто-то сталкивался?

Code:
        ls_headerx-updateflag = 'U'.
        SELECT SINGLE vbtyp FROM vbrk INTO lv_vbtyp
          WHERE vbeln = gs_data-vbelv.

        " заполнение позиций
        ls_items-itm_number = gs_data-posnr.
        ls_items-ref_doc    = gs_data-vbelv. "vbap-vbeln.
        ls_items-ref_doc_ca = lv_vbtyp. "'M'.
        ls_items-ref_doc_it = gs_data-posnv. "vbap-vgpos.
        APPEND ls_items TO lt_items.

        ls_itemsx-itm_number = gs_data-posnr.
        ls_itemsx-ref_doc    =
        ls_itemsx-ref_doc_ca =
        ls_itemsx-ref_doc_it = abap_true.
        ls_itemsx-updateflag = 'U'.
        APPEND ls_itemsx TO lt_itemsx.

        CALL FUNCTION 'SD_SALESDOCUMENT_CHANGE'
          EXPORTING
            SALESDOCUMENT    = gs_data-vbeln
            ORDER_HEADER_INX = ls_headerx
          TABLES
            RETURN           = lt_return
            ITEM_IN          = lt_items
            ITEM_INX         = lt_itemsx.

        READ TABLE lt_return TRANSPORTING NO FIELDS WITH KEY type = gc_err.
        IF sy-subrc NE 0.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              wait = mmpur_yes.
          " Документ &1 изменен
          PERFORM log_add_message TABLES gt_free USING gv_log_handle gc_suc gc_id '009' gs_data-vbeln '' '' '' .
          gv_flow = abap_true.
        ELSE.
          LOOP AT lt_return INTO ls_return WHERE type = gc_err.
            PERFORM log_add_message TABLES gt_free USING gv_log_handle ls_return-type ls_return-id ls_return-number '' '' '' '' .
          ENDLOOP.
        ENDIF.



Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменение SD заказа. тр. va02 BAPI_SALESORDER_CHANGE
СообщениеДобавлено: Пт, ноя 20 2015, 12:20 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Touch написал(а):
кто-нибудь делал обновление полей VBAP-VGBEL/VBAP-VGPOS

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

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменение SD заказа. тр. va02 BAPI_SALESORDER_CHANGE  Тема решена
СообщениеДобавлено: Пн, ноя 23 2015, 17:41 
Специалист
Специалист

Зарегистрирован:
Вс, фев 12 2012, 18:43
Сообщения: 192
да, вы правы. Необходимо было создать новую позицию, полностью скопировав предыдущую, и заполнить в ней поля VBAP-VGBEL/VBAP-VGPOS. При этом перед вызовом ФМ SD_SALESDOCUMENT_CHANGE необходимо получить данные о заказе через ФМ BAPISDORDER_GETDETAILEDLIST и передать полученное в ФМ SD_SALESDOCUMENT_CHANGE, тогда все работает.

Спасибо за помощь!


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

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


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

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


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

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