• [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: 销售凭证流

    以上。

  • 相关阅读:
    1.求整数最大的连续0的个数 BinaryGap Find longest sequence of zeros in binary representation of an integer.
    JTree实例
    java发送邮件完整实例 java邮件工具类
    oracle存储过程中文乱码问题
    黑马day16 jquery&内容过滤选择器&可见度选择器
    隐性反馈行为数据的协同过滤推荐算法
    ACdream 1083 有向无环图dp
    正則表達式
    hdu 2209 bfs+状压
    action属性注入为null
  • 原文地址:https://www.cnblogs.com/datie/p/11435467.html
Copyright © 2020-2023  润新知