Текущее время: Ср, июл 23 2025, 19:59

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


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

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


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

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