SAP ABAP 如何将HU和Serial no分配给内向交货单

本文介绍如何使用ABAP编程技术处理内向交货单,通过BAPI_HU_CREATE创建处理单元(HU),分配序列号,并将其与已存在的交货单关联。涉及的核心步骤包括创建HU、设置物料和数量,以及通过WS_DELIVERY_UPDATE分配给交货单。

 本人诚心接ABAP远程开发任务,价格公道,有需要的联系我,欢迎个人,甲方爸爸,乙方私信联系。

我接到的需求就是客户已经根据IDOC 生成了内向交货单,希望abap做一个批导,

将交货单上的数量进行打包,并且分配serial no

首先我们先来分析什么是HU(handling unit)

HU就是包装单元即包装好的物料

一个包装单元包含包装物料(可以理解为托盘) 被包装物料(机器)

Serial no 就是序列号,可以理解为汽车的车架号,每台都是唯一

所以一个HU 里面包了多少个机器,就可以分配多少个serial no

一个交货单里面有多少台数量,那么我们可以根据换算关系打包多少个HU

前台的操作步骤就是创建完交货单之后,点击包装(pack),然后根据换算关系,打包hu,分配serial no

查阅资料之后,我发现可以将以上步骤拆开做,首先HU02创建HU,然后将HU分配给已经存在的交货单。

HU02对应的bapi:BAPI_HU_CREATE

      DATA: LS_HEADERPROPOSAL TYPE BAPIHUHDRPROPOSAL.
      DATA: LT_PROPITEM       TYPE STANDARD TABLE OF BAPIHUITMPROPOSAL.
      DATA: LS_PROPITEM       TYPE BAPIHUITMPROPOSAL.
      DATA: LT_SERIALNO       TYPE STANDARD TABLE OF BAPIHUITMSERIALNO.
      DATA: LS_SERIALNO       TYPE BAPIHUITMSERIALNO.
      DATA: LT_RETURN         TYPE STANDARD TABLE OF BAPIRET2.
      DATA: LS_RETURN         TYPE BAPIRET2.
      DATA: LS_HUHEADER       TYPE BAPIHUHEADER.
      DATA: LV_HUKEY          TYPE BAPIHUKEY-HU_EXID.

        LS_HEADERPROPOSAL-PACK_MAT         = P_MATNR.        "包装物料
        LS_HEADERPROPOSAL-HU_STATUS_INIT   = 'A'.            "planing 只有计划hu才能assign
        "LS_HEADERPROPOSAL-EXT_ID_HU_2      = ''.             "如果有的话,对应外部系统的hu
        LS_HEADERPROPOSAL-TOTAL_WGHT       = LV_MENGE.       


        LS_PROPITEM-HU_ITEM_TYPE = '1'.       "Material item
        LS_PROPITEM-MATERIAL = LS_PALLATE-MATNR. "Mandatory-entry field for material items and auxiliary packaging-material items.
        LS_PROPITEM-PACK_QTY = LV_MENGE. "May only be set for material items and describes the quantity that is to be packed in the base unit of measure. Mandatory-entry field for material items.
        LS_PROPITEM-BASE_UNIT_QTY = GS_LIPS-MEINS. 
        LS_PROPITEM-PLANT         = GS_LIPS-WERKS.
        LS_PROPITEM-NO_OF_SERIAL_NUMBERS = LV_ANZSN.  "这个数量必须等于被包装物料号

       "根据序列号数量去 传入徐磊好
          "给托盘绑定序列号
          LS_SERIALNO-ROW_INDEX = 1.
          LS_SERIALNO-SERIALNO  = GS_DATA-SERNR.
          APPEND LS_SERIALNO TO LT_SERIALNO.

        CALL FUNCTION 'BAPI_HU_CREATE'
          EXPORTING
            HEADERPROPOSAL = LS_HEADERPROPOSAL
          IMPORTING
            HUHEADER       = LS_HUHEADER
            HUKEY          = LV_HUKEY
          TABLES
            ITEMSPROPOSAL  = LT_PROPITEM
            ITEMSSERIALNO  = LT_SERIALNO
            RETURN         = LT_RETURN
*           HUITEM         =
*           CWM_ITEMSPROPOSAL       =
*           CWM_HUITEM     =
          .

 第二步将已经创建hu去分配给内向交货单。

  DATA: LT_HAND_UNIT TYPE STANDARD TABLE OF HUM_REHANG_HU.
  DATA: LS_HAND_UNIT TYPE HUM_REHANG_HU.
  DATA: LS_VBKOK        TYPE VBKOK.
"将序列号,托盘分配到 内向交货单上
      LS_VBKOK-VBELN_VL = LS_TEMP-VBELN.
          LS_HAND_UNIT-TOP_HU_EXTERNAL = LS_HUHEADER-HU_EXID. " External Handling Unit Identification of new HU
          LS_HAND_UNIT-TOP_HU_INTERNAL = LS_HUHEADER-HU_ID.   " Internal Handling Unit Number of new HU
          LS_HAND_UNIT-VENUM = LS_HUHEADER-HU_ID.             " Internal Handling Unit Number of new HU
          APPEND LS_HAND_UNIT TO LT_HAND_UNIT.
      CALL FUNCTION 'WS_DELIVERY_UPDATE'
        EXPORTING
          VBKOK_WA                    = LS_VBKOK
          SYNCHRON                    = 'X'
          NO_MESSAGES_UPDATE          = ' '
          UPDATE_PICKING              = 'X'
          COMMIT                      = 'X'
          DELIVERY                    = LS_TEMP-VBELN
          NICHT_SPERREN               = 'X'
        TABLES
          IT_HANDLING_UNITS           = LT_HAND_UNIT
          PROT                        = LT_PROTT
        EXCEPTIONS
          EF_ERROR_ANY_0              = 1
          EF_ERROR_IN_ITEM_DELETION_0 = 2
          EF_ERROR_IN_POD_UPDATE_0    = 3
          EF_ERROR_IN_INTERFACE_0     = 4
          EF_ERROR_IN_GOODS_ISSUE_0   = 5
          EF_ERROR_IN_FINAL_CHECK_0   = 6
          EF_ERROR_PARTNER_UPDATE     = 7
          EF_ERROR_SERNR_UPDATE       = 8
          ERROR_MESSAGE               = 9
          OTHERS                      = 10.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值