zoukankan      html  css  js  c++  java
  • [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: 销售凭证流

    以上。

  • 相关阅读:
    iSCSI又称为IPSAN
    文档类型定义DTD
    HDU 2971 Tower
    HDU 1588 Gauss Fibonacci
    URAL 1005 Stone Pile
    URAL 1003 Parity
    URAL 1002 Phone Numbers
    URAL 1007 Code Words
    HDU 3306 Another kind of Fibonacci
    FZU 1683 纪念SlingShot
  • 原文地址:https://www.cnblogs.com/datie/p/11435467.html
Copyright © 2011-2022 走看看