下面介绍SAP SD的销售订单外向交货单按批次拆分(Batch-Managed),包括前台操作和调用bapi ‘BAPI_OUTB_DELIVERY_CHANGE’ 实现。
1, 前台操作
按批次拆分操作:
外向交货单Tcode: VL02n
选中10行项目,点击‘批次拆分’按钮,填写批次后,回车,会将项目号和库位自动带出(视具体配置而定)
点保存后,原来航项目10数量自动变更,变成0.
删除批次拆分操作:
选中刚才创建的拆分项目90001和90002,点删除按钮。
10行项目数量会自动更新,重新变成3
2, BAPI实现
完整代码:
其中
LW_ITEM_DATA-USEHIERITM = '1'.
查看了domain中的固定值:‘1’代表Batch Subitem
REPORT ztest_bapi_sobitch. PARAMETERS p_vbeln TYPE vbeln_vl DEFAULT '8000003765'. "测试批次拆分 DATA: lit_header_partner LIKE TABLE OF bapidlvpartnerchg , "交货:合作伙伴更改 lit_header_deadlines LIKE TABLE OF bapidlvdeadln , "交货截止日期 lit_item_data LIKE TABLE OF bapiobdlvitemchg , "更改外向交货拣配数据项目等级 lit_item_control LIKE TABLE OF bapiobdlvitemctrlchg , "外向交货项目级别控制数据 lit_ret LIKE TABLE OF bapiret2 WITH HEADER LINE , "返回参数 lit_item_data_spl LIKE TABLE OF /spe/bapiobdlvitemchg , "更改向外交货拣配数据项目等级(SPE) is_header_data LIKE bapiobdlvhdrchg , "更改外向交货拣配数据表头等级 is_header_control LIKE bapiobdlvhdrctrlchg , "外向交货标题级别控制数据 iv_delivery LIKE bapiobdlvhdrchg-deliv_numb . "交货 DATA: lwa_header_partner LIKE bapidlvpartnerchg , "交货:合作伙伴更改 lwa_header_deadlines LIKE bapidlvdeadln , "交货截止日期 lwa_item_data LIKE bapiobdlvitemchg , "更改外向交货拣配数据项目等级 lwa_item_control LIKE bapiobdlvitemctrlchg , "外向交货项目级别控制数据 lwa_return LIKE bapiret2 . "返回参数 DATA: l_techn_control TYPE bapidlvcontrol. DATA: ls_item TYPE bapiobdlvitemchg, ls_item_t TYPE bapiobdlvitemchg, ls_item_control TYPE bapiobdlvitemctrlchg, ls_deadlines TYPE bapidlvdeadln. iv_delivery = p_vbeln. "交货单号 "头信息 is_header_data-deliv_numb = p_vbeln. "交货单号 is_header_control-deliv_numb = p_vbeln. "修改原10行项目数量 CLEAR lwa_item_data. lwa_item_data-deliv_numb = p_vbeln. lwa_item_data-deliv_item = 10. "原行项目 lwa_item_data-dlv_qty = 1. lwa_item_data-dlv_qty_imunit = 1. lwa_item_data-base_uom = 'TO'. "基本单位 lwa_item_data-sales_unit = 'TO'. "销售单位 lwa_item_data-fact_unit_nom = 1. "销售数量转换成SKU的分子(因子) lwa_item_data-fact_unit_denom = 1. "销售数量转换为 SKU 的值(除数) APPEND lwa_item_data TO lit_item_data . CLEAR lwa_item_control. lwa_item_control-deliv_numb = p_vbeln. lwa_item_control-deliv_item = 10. "原行项目 lwa_item_control-chg_delqty = 'X'. "数量修改标志 APPEND lwa_item_control TO lit_item_control. "新拆分的批次 CLEAR lwa_item_data. lwa_item_data-deliv_numb = p_vbeln. lwa_item_data-deliv_item = '900001'. "拆分后的新行项目 lwa_item_data-hieraritem = 10. "上级行项目 lwa_item_data-batch = 'YS91480001'. "新批次 lwa_item_data-dlv_qty = 1. "自己重新计算拆分后的数量, lwa_item_data-dlv_qty_imunit = 1. lwa_item_data-fact_unit_nom = 1. "销售数量转换成SKU的分子(因子) lwa_item_data-fact_unit_denom = 1. "销售数量转换为 SKU 的值(除数) lwa_item_data-base_uom = 'TO'. "基本单位 lwa_item_data-sales_unit = 'TO'. "销售单位 lwa_item_data-usehieritm = '1'. APPEND lwa_item_data TO lit_item_data. CLEAR lwa_item_data. lwa_item_data-deliv_numb = p_vbeln. lwa_item_data-deliv_item = '900002'. "拆分后的新行项目 lwa_item_data-hieraritem = 10. "上级行项目 lwa_item_data-batch = 'YS91480002'."新批次 lwa_item_data-dlv_qty = 1. lwa_item_data-dlv_qty_imunit = 1. lwa_item_data-fact_unit_nom = 1. "销售数量转换成SKU的分子(因子) lwa_item_data-fact_unit_denom = 1. "销售数量转换为 SKU 的值(除数) lwa_item_data-base_uom = 'TO'. "基本单位 lwa_item_data-sales_unit = 'TO'. "销售单位 lwa_item_data-usehieritm = '1'. APPEND lwa_item_data TO lit_item_data. CLEAR lwa_item_control. lwa_item_control-deliv_numb = p_vbeln. lwa_item_control-deliv_item = '900001'. "拆分后的新行项目 lwa_item_control-chg_delqty = 'X'. "数量修改标志 APPEND lwa_item_control TO lit_item_control . CLEAR lwa_item_control. lwa_item_control-deliv_numb = p_vbeln. lwa_item_control-deliv_item = '900002'."拆分后的新行项目 lwa_item_control-chg_delqty = 'X'. "数量修改标志 APPEND lwa_item_control TO lit_item_control . CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE' EXPORTING header_data = is_header_data header_control = is_header_control delivery = iv_delivery TABLES header_partner = lit_header_partner header_deadlines = lit_header_deadlines item_data = lit_item_data item_control = lit_item_control return = lit_ret * ITEM_DATA_SPL = IT_ITEM_DATA_SPL . DATA: l_msg TYPE string. IF lit_ret[] IS INITIAL. COMMIT WORK AND WAIT. WRITE:/ '批次拆分成功'. RETURN. ENDIF. LOOP AT lit_ret WHERE type = 'E'. CLEAR l_msg. MESSAGE ID lit_ret-id TYPE 'E' NUMBER lit_ret-number WITH lit_ret-message_v1 lit_ret-message_v2 lit_ret-message_v3 lit_ret-message_v4 INTO l_msg. WRITE:/ l_msg. ENDLOOP.
选择画面:
3, 保存批次数据库表
外向交货单批次的相关数据保存在表LIPS中,
LIPS-UECHA:批次拆分项目的上层项目
以上面的数据为例:
LIKP
LIPS
VBFA: 销售凭证流
以上。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/19234.html