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

 本人诚心接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.

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果您在 ABAP 系统中建立内向交货单时,发现参考采购订单没有物料,这可能是由于以下几种原因造成的: 1. 采购订单中的物料已经全部交货,因此在建立内向交货单时无法找到物料。 2. 采购订单的有效期已过,因此无法在其上建立内向交货单。 3. 采购订单被取消或关闭,因此无法在其上建立内向交货单。 4. 采购订单的物料被删除,因此无法在其上建立内向交货单。 如果您遇到这种情况,建议您检查采购订单的状态并核实是否有以上原因导致无法建立内向交货单。 ### 回答2: ABAP参考采购订单建立的内向交货单没有物料,可以理解为在系统中通过ABAP编程语言构建的内向交货单,其内容为空,即没有任何物料信息。 通常情况下,内向交货单是基于采购订单而创建的,它用于表示供应商向公司交付的物料或服务,并且包含有关交货日期、数量、价格等信息。然而,有时候在使用ABAP编程语言来创建内向交货单的过程中,可能会遇到一些问题,例如忘记在代码中添加物料信息的处理逻辑。这导致创建的内向交货单没有任何与之相关的物料。 对于这种情况,我们可以采取以下解决方法之一: 1. 检查代码:通过仔细审查ABAP程序代码,确认是否存在错误或遗漏的处理逻辑。如果确实存在漏掉物料信息的部分,那么可以通过添加正确的代码来修复该问题。 2. 联系开发人员:如果自己对ABAP编程不熟悉或无法修复代码中的问题,可以联系相关的开发人员或技术支持团队来寻求帮助。他们会研究代码并提供解决方案。 3. 检查采购订单:检查原始的采购订单,确定其中是否存在问题。可能是采购订单本身存在缺失或错误,导致创建的内向交货单没有物料信息。 总之,ABAP参考采购订单建立的内向交货单没有物料是由于在编程过程中出现问题或原始采购订单本身存在错误所致。需要仔细检查代码、与开发人员协商或检查采购订单,以找到并解决问题。 ### 回答3: ABAP是一种编程语言,常用于SAP系统的开发和定制。参考采购订单是在SAP系统中为了创建内向交货单时提供参考的基础文档。 当我们使用ABAP编写的程序来创建内向交货单时,如果发现内向交货单中没有物料,那么可能是由以下几个因素导致的。 首先,可能是在参考采购订单的过程中发生了错误。可能是在创建采购订单时没有正确地填写物料信息,或者物料信息已被删除或更改,导致在创建内向交货单时无法正确提取物料信息。 其次,也有可能是在使用ABAP编写的程序时,出现了代码逻辑上的问题。可能是程序在提取采购订单数据或创建内向交货单时,出现了错误的判断或计算逻辑,导致没有正确地提取或显示物料信息。 此外,还有可能是在SAP系统中设置了一些规则或限制,导致在创建内向交货单时无法正确地提取或显示物料信息。可能是在系统中设置了某些限制条件,例如只有特定类型的采购订单才能作为参考,并且该采购订单必须满足一定的物料信息要求。 总之,当我们在使用ABAP编写程序创建内向交货单时,如果发现内向交货单中没有物料,就需要仔细排查以上可能的原因,逐一检查和排除可能存在的错误或问题,确保程序逻辑正确,物料信息能够正确地被提取和显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值