VL01N销售订单拣配bapi
2016-07-01 16:38
369 查看
data:wa_items type bapidlvreftosalesorder,
begin of temp_item occurs 0,
item(2000),
end of temp_item,
begin of it_item occurs 0,
sequence,
item(6) type n,
end of it_item,
wa_item like line of it_item,
begin of item_list occurs 0,
item(6) type n,
end of item_list,
l_it_orderitem type standard table of bapidlvreftosalesorder with header line.
data:lx_vbkok type vbkok,
it_prott like table of prott with header line,
it_vbpok like table of vbpok with header line.
*& 因过账时,有行项目的限制,需要对过账项目进行拆分,拣配的次数之间用'-'分割
*& 项目内用','
refresh:temp_item.
split item_divison at '-' into table temp_item.
loop at temp_item.
clear:it_item.
it_item-sequence = sy-tabix.
refresh:item_list.
shift temp_item-item left deleting leading ''.
split temp_item-item at ',' into table item_list.
loop at item_list.
it_item-item = item_list-item.
collect it_item.
endloop.
endloop.
sort it_item by sequence item.
sort sales_order_items by ref_doc ref_item.
*& 按拆分的项目,进行创建交货单
loop at it_item.
wa_item = it_item.
at end of sequence.
refresh:l_it_orderitem .
loop at sales_order_items where ref_item <= wa_item-item.
l_it_orderitem = sales_order_items.
append l_it_orderitem.
clear:l_it_orderitem.
delete sales_order_items.
endloop.
call function 'BAPI_OUTB_DELIVERY_CREATE_SLS'
exporting
ship_point = ship_point
due_date = due_date
debug_flg = debug_flg
importing
delivery = delivery
num_deliveries = num_deliveries
tables
sales_order_items = l_it_orderitem
serial_numbers = serial_numbers
extension_in = extension_in
deliveries = deliveries
created_items = created_items
extension_out = extension_out
return = return.
read table return with key type = 'E'.
if sy-subrc ne 0.
call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = 'X'.
refresh:it_vbpok.
clear:it_vbpok,lx_vbkok.
loop at l_it_orderitem.
if sy-tabix = 1.
lx_vbkok-vbeln_vl = delivery.
lx_vbkok-vbtyp_vl = 'J' .
lx_vbkok-vbeln = l_it_orderitem-ref_doc.
lx_vbkok-wabuc = 'X'.
endif.
it_vbpok-vbeln_vl = delivery.
read table created_items index sy-tabix.
it_vbpok-posnr_vl = created_items-deliv_item.
it_vbpok-vbeln = l_it_orderitem-ref_doc.
it_vbpok-posnn = l_it_orderitem-ref_item.
*it_vbpok-matnr = fp_afpo-matnr.
*it_vbpok-charg = fp_afpo-charg.
*it_vbpok-werks = fp_afpo-dwerk.
it_vbpok-taqui = 'X'.
*& 拣配数量
it_vbpok-pikmg = l_it_orderitem-dlv_qty.
append it_vbpok.
endloop.
*&更改拣配数量,当不自动过帐时,需要更改参数如下,并且需要再提交一次
call function 'WS_DELIVERY_UPDATE'
exporting
vbkok_wa = lx_vbkok
*& synchron = 'X'
commit = 'X'
delivery = delivery
update_picking = 'X'
*& nicht_sperren = 'X'
*& if_database_update = 'X'
*& if_error_messages_send_0 = 'X'
tables
vbpok_tab = it_vbpok
prot = it_prott.
read table it_prott with key msgty = 'E'.
if sy-subrc <> 0.
call function 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.
endif.
else.
call function 'BAPI_TRANSACTION_ROLLBACK'.
endif.
endat.
endloop.
begin of temp_item occurs 0,
item(2000),
end of temp_item,
begin of it_item occurs 0,
sequence,
item(6) type n,
end of it_item,
wa_item like line of it_item,
begin of item_list occurs 0,
item(6) type n,
end of item_list,
l_it_orderitem type standard table of bapidlvreftosalesorder with header line.
data:lx_vbkok type vbkok,
it_prott like table of prott with header line,
it_vbpok like table of vbpok with header line.
*& 因过账时,有行项目的限制,需要对过账项目进行拆分,拣配的次数之间用'-'分割
*& 项目内用','
refresh:temp_item.
split item_divison at '-' into table temp_item.
loop at temp_item.
clear:it_item.
it_item-sequence = sy-tabix.
refresh:item_list.
shift temp_item-item left deleting leading ''.
split temp_item-item at ',' into table item_list.
loop at item_list.
it_item-item = item_list-item.
collect it_item.
endloop.
endloop.
sort it_item by sequence item.
sort sales_order_items by ref_doc ref_item.
*& 按拆分的项目,进行创建交货单
loop at it_item.
wa_item = it_item.
at end of sequence.
refresh:l_it_orderitem .
loop at sales_order_items where ref_item <= wa_item-item.
l_it_orderitem = sales_order_items.
append l_it_orderitem.
clear:l_it_orderitem.
delete sales_order_items.
endloop.
call function 'BAPI_OUTB_DELIVERY_CREATE_SLS'
exporting
ship_point = ship_point
due_date = due_date
debug_flg = debug_flg
importing
delivery = delivery
num_deliveries = num_deliveries
tables
sales_order_items = l_it_orderitem
serial_numbers = serial_numbers
extension_in = extension_in
deliveries = deliveries
created_items = created_items
extension_out = extension_out
return = return.
read table return with key type = 'E'.
if sy-subrc ne 0.
call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = 'X'.
refresh:it_vbpok.
clear:it_vbpok,lx_vbkok.
loop at l_it_orderitem.
if sy-tabix = 1.
lx_vbkok-vbeln_vl = delivery.
lx_vbkok-vbtyp_vl = 'J' .
lx_vbkok-vbeln = l_it_orderitem-ref_doc.
lx_vbkok-wabuc = 'X'.
endif.
it_vbpok-vbeln_vl = delivery.
read table created_items index sy-tabix.
it_vbpok-posnr_vl = created_items-deliv_item.
it_vbpok-vbeln = l_it_orderitem-ref_doc.
it_vbpok-posnn = l_it_orderitem-ref_item.
*it_vbpok-matnr = fp_afpo-matnr.
*it_vbpok-charg = fp_afpo-charg.
*it_vbpok-werks = fp_afpo-dwerk.
it_vbpok-taqui = 'X'.
*& 拣配数量
it_vbpok-pikmg = l_it_orderitem-dlv_qty.
append it_vbpok.
endloop.
*&更改拣配数量,当不自动过帐时,需要更改参数如下,并且需要再提交一次
call function 'WS_DELIVERY_UPDATE'
exporting
vbkok_wa = lx_vbkok
*& synchron = 'X'
commit = 'X'
delivery = delivery
update_picking = 'X'
*& nicht_sperren = 'X'
*& if_database_update = 'X'
*& if_error_messages_send_0 = 'X'
tables
vbpok_tab = it_vbpok
prot = it_prott.
read table it_prott with key msgty = 'E'.
if sy-subrc <> 0.
call function 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.
endif.
else.
call function 'BAPI_TRANSACTION_ROLLBACK'.
endif.
endat.
endloop.
相关文章推荐
- android 添加新的键值,自定义按键
- hdu 5155(DP+排列组合)
- WCF、WebAPI、WCFREST、WebService之间的区别
- C++学习 —— 重新认识C++
- Ubuntu中如何根据端口查看进程
- 基于Socket的java网络编程
- 基于TCP协议的文件传输,传输带文件名等信息的文件流
- Android 隐藏App图标和Home任务栈
- Graphics类提供基本的几何图形绘制方法,主要有:画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形等。
- Android编译系统详解(三)
- C++Builder中关于TcxGrid的使用总结
- CSS中的BFC学习
- 移动办公Cnskype前景分析
- iOS 动画之大波浪
- 141. Linked List Cycle
- Fast特征检测
- reportng定制修改
- spring 源码分析之BeanPostProcessor
- [Effective JavaScript 笔记]第53条:保持一致的约定
- 阻止父类的create,是无法阻止的