Создать исходящую доставку с другим адресом доставки - PullRequest
0 голосов
/ 11 марта 2019

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 11 марта 2019

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

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

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

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

UPDATE

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

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.
0 голосов
/ 13 марта 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.                     
...