Создать исходящую доставку с другим адресом доставки

Я искал несколько дней и ничего не нашел. Моя проблема в том, что я должен создать обратную доставку из QM-отчета. Все работает нормально.

Однако клиент хочет изменить адрес доставки вручную.

Поток: QM02 (QM-Report) => Заказ на возврат с BAPI_PO_CREATE1 (другой адрес работает нормально) => Доставка с BAPI_OUTB_DELIVERY_CREATE_STO (другой адрес из PO не работает)

Мой вопрос: Есть ли возможность изменить адрес доставки исходящей доставки? Нужно ли внедрять BADI или есть простое решение?

Если чего-то не хватает, я обновлю вопрос.


person SacrumDeus    schedule 11.03.2019    source источник


Ответы (2)


Функция BAPI_OUTB_DELIVERY_CREATE_STO позволяет создавать поставки из заказа на поставку, но вы не можете обрабатывать многие поля доставки.

После того, как вы создали доставки, вы должны использовать функцию WS_DELIVERY_UPDATE_2 для обновления любого поля.

Это не BAPI, и, следовательно, он плохо документирован, но широко используется для этих изменений.

С наилучшими пожеланиями

ОБНОВЛЕНИЕ

Вот фрагмент:

ls_vbkok-vbeln_vl = <delivery number>.
ls_partners-vbeln_vl = ls_vbkok-vbeln_vl.
ls_partners-parvw = 'WE'.
ls_partners-parnr = <partner number>.
ls_partners-updkz_par = 'U'.
ls_partners-stras = <new street address>.
append ls_partners to lt_partners.

call function 'WS_DELIVERY_UPDATE_2'
  exporting
    vbkok_wa          = ls_vbkok
    synchron          = 'X'
    commit            = 'X'
    delivery          = ls_vbkok-vbeln_vl
  tables
    vbpok_tab         = lt_vbpok
    it_partner_update = lt_partners
    prot              = lt_prot.

if lt_prot[] is not initial.
  " handle error message here
endif.
person manuel_b    schedule 11.03.2019
comment
Нужно ли делать COMMIT WORK перед вызовом этой функции? Я надеюсь, что это не так, потому что, если я выполню BAPI, будет напечатано сообщение - person SacrumDeus; 11.03.2019
comment
К сожалению, я считаю, что это необходимо. Не могли бы вы попробовать добавить требование (tx VOFM/NACE) в вывод сообщения, проверяющее какое-то конкретное поле, или попытаться настроить сообщение так, чтобы оно печаталось только при изменении, а не при вставке? - person manuel_b; 11.03.2019
comment
К сожалению, изменить адрес в LUW невозможно. После создания исходящей поставки мне нужно сделать COMMIT WORK. Без этого нет возможности сменить адрес. При плохих обстоятельствах доставка будет обработана до тех пор, пока не будут внесены изменения. Кроме того, мне нужно напечатать сообщение, которое будет добавлено позже... возможно, я попробую BadI, чтобы решить мою проблему. Я выложу обновление, когда решу проблему - person SacrumDeus; 01.04.2019
comment
Как вы вызываете создание доставки? Через поле действия? Как вы запускаете эти BAPI? - person Suncatcher; 02.05.2019

если вам нужно сделать коммит и вы можете сделать это после 'WS_DELIVERY_UPDATE_2', попробуйте вызвать его в новой задаче. например :

call function 'WS_DELIVERY_UPDATE_2' STARTING NEW TASK task
  PERFORMING return_fm ON END OF TASK
  exporting
    vbkok_wa          = ls_vbkok
    synchron          = 'X'
    commit            = ' '
    delivery          = ls_vbkok-vbeln_vl
  tables
    vbpok_tab         = lt_vbpok
    it_partner_update = lt_partners
    prot              = lt_prot.


*your code
WAIT UNTIL get_executed <> space.

FORM return_fm   USING i_taskname.
*your code
  get_executed = 'X'.
ENDFORM.                     

person Cheikh Lo    schedule 13.03.2019