ABAP 外向交货单拆分批次 BAPI

前台事务码:VL02N
程序使用BAPI对交货单进行批次拆分,并且赋值库位。
使用BAPI: BAPI_OUTB_DELIVERY_CHANGE

使用BAPI_OUTB_DELIVERY_CHANGE创建批次,在参数正确的情况下,依旧报错,可能导致的原因是库位赋值不上。

代码分成两部的情况下依旧出错,需考虑前台配置0VLP。

代码案例如下:

"头信息
  ls_header_data-deliv_numb    = gs_code_scll-vbeln .     "交货单号
  ls_header_control-deliv_numb = gs_code_scll-vbeln .     "交货单号
                   lv_delivery = gs_code_scll-vbeln .     "交货单号
*  ls_techn_control-upd_ind     = 'U'.

"修改原来行项目的数量
  CLEAR lt_item_data.
  lt_item_data-deliv_numb = gs_code_scll-vbeln.
  lt_item_data-deliv_item = gs_code_scll-posnr.
*  lt_item_data-material   = gs_code_scll-matnr.         "物料
*  lt_item_data-batch      = ''.                        "批次为空
*  lt_item_data-usehieritm = '1'.
  lt_item_data-dlv_qty    = 0.
  lt_item_data-dlv_qty_imunit = 0.                         "数量为0 
  lt_item_data-fact_unit_nom = 1.
  lt_item_data-fact_unit_denom = 1.
  lt_item_data-base_uom       =  gs_code_scll-meins.    "基本单位
  lt_item_data-sales_unit     = gs_code_scll-meins.    "销售单位
  APPEND lt_item_data.

  CLEAR : lt_item_control.
  lt_item_control-deliv_numb = gs_code_scll-vbeln.
  lt_item_control-deliv_item = gs_code_scll-posnr.
  lt_item_control-chg_delqty = 'X'.
  APPEND lt_item_control.

CLEAR lt_item_data.
CLEAR : lt_item_control.
"新拆分的批次   **行项目(根据自己的情况进行修改)**
  LOOP AT gt_code_scll INTO DATA(ls_code_scll) WHERE zbarcode IS NOT INITIAL AND vbeln IS NOT INITIAL .
    lv_num = lv_num + 1 .
    lt_item_data-deliv_numb = ls_code_scll-vbeln.
    lt_item_data-deliv_item = 900000 +  lv_num.           "交货单行项目
*    lt_item_data-material   = ls_code_scll-matnr.         "物料
    lt_item_data-batch      = ls_code_scll-charg.         "批次
    lt_item_data-hieraritem = ls_code_scll-posnr.         "项目层次中的高级项目
    lt_item_data-usehieritm = '1'.
    lt_item_data-dlv_qty    = ls_code_scll-erfmg.         "数量
    lt_item_data-dlv_qty_imunit    = ls_code_scll-erfmg.         "数量

    lt_item_data-fact_unit_nom = 1.
    lt_item_data-fact_unit_denom = 1.
    lt_item_data-base_uom       = ls_code_scll-meins.    "基本单位
    lt_item_data-sales_unit     = ls_code_scll-meins.    "销售单位
    APPEND lt_item_data.

    lt_item_control-deliv_numb = gs_code_scll-vbeln.
    lt_item_control-deliv_item = 900000 + lv_num.         "拆分后的新项目
    lt_item_control-chg_delqty = 'X'.                     "数量修改标志
    APPEND lt_item_control.
  ENDLOOP.

"第一次调用 进行批次拆分
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
  EXPORTING
    header_data                   = ls_header_data
    header_control                = ls_header_control
    delivery                      = lv_delivery
    TECHN_CONTROL                 = ls_techn_control
*   HEADER_DATA_SPL               =
*   HEADER_CONTROL_SPL            =
*   SENDER_SYSTEM                 =
  TABLES
*   HEADER_PARTNER                =
*   HEADER_PARTNER_ADDR           =
*   HEADER_DEADLINES              =
   ITEM_DATA                     = lt_item_data
   ITEM_CONTROL                  = lt_item_control
*   ITEM_SERIAL_NO                =
*   SUPPLIER_CONS_DATA            =
*   EXTENSION1                    =
*   EXTENSION2                    =
    return                        = lt_return
*   TOKENREFERENCE                =
   ITEM_DATA_SPL                 = lt_item_data_spl
*   COLLECTIVE_CHANGE_ITEMS       =
*   NEW_ITEM_DATA                 =
*   NEW_ITEM_DATA_SPL             =
*   NEW_ITEM_ORG                  =
*   ITEM_DATA_DOCU_BATCH          =
*   CWM_ITEM_DATA                 =
          .
"批次拆分没问题 再给拆分批次的库位进行赋值
赋值库位
  LOOP AT gt_code_scll INTO DATA(ls_code_scll1) WHERE zbarcode IS NOT INITIAL AND vbeln IS NOT INITIAL.
    lt_item_data_spl-deliv_numb = ls_code_scll1-vbeln.
    lt_item_data_spl-deliv_item = 900000 + lv_num.
    lt_item_data_spl-stge_loc   = ls_code_scll1-lgort.
    APPEND lt_item_data_spl.
  ENDLOOP.

    CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
      EXPORTING
        header_data                   = ls_header_data
        header_control                = ls_header_control
        delivery                      = lv_delivery
        TECHN_CONTROL                 = ls_techn_control
*       HEADER_DATA_SPL               =
*       HEADER_CONTROL_SPL            =
*       SENDER_SYSTEM                 =
      TABLES
*       HEADER_PARTNER                =
*       HEADER_PARTNER_ADDR           =
*       HEADER_DEADLINES              =
       ITEM_DATA                     = lt_item_data
       ITEM_CONTROL                  = lt_item_control
*       ITEM_SERIAL_NO                =
*       SUPPLIER_CONS_DATA            =
*       EXTENSION1                    =
*       EXTENSION2                    =
        return                        = lt_return
*       TOKENREFERENCE                =
       ITEM_DATA_SPL                 = lt_item_data_spl.
*       COLLECTIVE_CHANGE_ITEMS       =
*       NEW_ITEM_DATA                 =
*       NEW_ITEM_DATA_SPL             =
*       NEW_ITEM_ORG                  =
*       ITEM_DATA_DOCU_BATCH          =
*       CWM_ITEM_DATA                 =
posted @   abap菜鸟3  阅读(891)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示