[BAPI]外向交货单按批次拆分[BAPI_OUTB_DELIVERY_CHANGE]详解编程语言

下面介绍SAP SD的销售订单外向交货单按批次拆分(Batch-Managed),包括前台操作和调用bapi  ‘BAPI_OUTB_DELIVERY_CHANGE’ 实现。

1, 前台操作

按批次拆分操作:

外向交货单Tcode: VL02n

[BAPI]外向交货单按批次拆分[BAPI_OUTB_DELIVERY_CHANGE]详解编程语言

选中10行项目,点击‘批次拆分’按钮,填写批次后,回车,会将项目号和库位自动带出(视具体配置而定)

[BAPI]外向交货单按批次拆分[BAPI_OUTB_DELIVERY_CHANGE]详解编程语言

点保存后,原来航项目10数量自动变更,变成0.

删除批次拆分操作:

选中刚才创建的拆分项目90001和90002,点删除按钮。

[BAPI]外向交货单按批次拆分[BAPI_OUTB_DELIVERY_CHANGE]详解编程语言

10行项目数量会自动更新,重新变成3

[BAPI]外向交货单按批次拆分[BAPI_OUTB_DELIVERY_CHANGE]详解编程语言

2, BAPI实现

完整代码:

其中

LW_ITEM_DATA-USEHIERITM      = '1'.

查看了domain中的固定值:‘1’代表Batch Subitem

[BAPI]外向交货单按批次拆分[BAPI_OUTB_DELIVERY_CHANGE]详解编程语言

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.

选择画面:

[BAPI]外向交货单按批次拆分[BAPI_OUTB_DELIVERY_CHANGE]详解编程语言

3, 保存批次数据库表

外向交货单批次的相关数据保存在表LIPS中,

LIPS-UECHA:批次拆分项目的上层项目

以上面的数据为例:

LIKP

[BAPI]外向交货单按批次拆分[BAPI_OUTB_DELIVERY_CHANGE]详解编程语言

LIPS

[BAPI]外向交货单按批次拆分[BAPI_OUTB_DELIVERY_CHANGE]详解编程语言

VBFA: 销售凭证流

[BAPI]外向交货单按批次拆分[BAPI_OUTB_DELIVERY_CHANGE]详解编程语言

以上。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/19234.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论