根据业务需要,交货单中的计划发货日期要根据业务自定义填充,但正常交货单的计划交货日期是根据销售订单的计划行带过来的,并且常规交货单创建、修改bapi并不能满足交货单计划日期的修改。
本来想着改一个日期用BDC的,但是考虑到交货单保存的时候会根据不同情况有警告弹窗,所以还是老老实实去找BAPI了,最后找到BAPI_OUTB_DELIVERY_CONFIRM_DEC可以用
"修改交货单计划交货日期
ls_header_data-deliv_numb = lv_vbeln .
ls_header_control-deliv_numb = lv_vbeln .
ls_header_deadlines-deliv_numb = lv_vbeln .
ls_header_deadlines-timetype = 'WSHDRWADAT' .
ls_header_deadlines-timestamp_utc = sy-datum && sy-uzeit .
APPEND ls_header_deadlines TO lt_header_deadlines .
clear:ls_header_deadlines .
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CONFIRM_DEC'
EXPORTING
header_data = ls_header_data
header_control = ls_header_control
delivery = lv_vbeln
TABLES
header_deadlines = lt_header_deadlines
return = lt_return.
其中header_deadlines中的timetype为交货单的日期的类型,但这个字段有内外码之分,可以去看看bapi中这和表的文档
用此BAPI修改的交货单,声明仓库字段会自动赋值’C’,这种情况下交货单就不能修改了,不太符合大部分公司的业务要求,所以此处还要加一个BADI增强
增强点:SE18->LE_SHP_DELIVERY_PROC->CHANGE_DELIVERY_HEADER