[BAPI]外向交貨單按批次拆分[BAPI_OUTB_DELIVERY_CHANGE]


下面介紹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: 銷售憑證流

以上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM