3.party系统中的多级处理单元

2020-08-14 09:17发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我们正在运行标准的SAP...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我们正在运行标准的SAP ECC系统。

我们有一个3.party系统,可在托盘上生成装卸单元(SSCC)。 这是多级装卸单元,例如将2个半托盘装在一个新托盘上。 然后,将2个处理单元装入一个新的处理单元中。

在集成中,我们正在处理流程订单。 我们有HU管理的存储位置。

对于单个处理单元,当使用标准IDOC消息类型WMMBXY时,这不是问题。 我们有外部处理单元编号分配。 使用段E1MBXYJ-EXIDV中的处理单元自动创建内向交货。

对于需要在SAP中为收货流程创建的多级处理单位,我们没有找到任何解决方案。

解决了这个问题的人吗?

2条回答
太Q了
2020-08-14 09:48

嗨,

我最终找到了解决方案,当然还进行了一些增强。

我们使用IDOC MBGMCR03,但是在段E1BPPAREX-STRUCTURE和E1BPPAREX- VALUEPART(X)中添加了处理单元。

我们使用Z功能模块创建了一个新的IDOC消息类型Z_MBGMCR。

我们使用功能模块BAPI_INB_DELIVERY_CONFIRM_DEC创建HU并将其打包为多个:

  • 导入参数:
  • HEADER_DATA-DELIV_NUMB =执行IDOC时创建的内向交货
  • HEADER_CONTROL-DELIV_NUMB =执行IDOC时创建的内向交货
  • 交付 =执行IDOC时创建的内向交货
  • 表格:
  • HANDLING_UNIT_HEADER-DELIV_NUMB =执行IDOC时创建的内向交货
  • HANDLING_UNIT_HEADER-HDL_UNIT_EXID =来自IDOC细分E1BPPAREX-VALUEPART1(仅来自第一个E1BPPAREX细分)。 来自IDOC段E1BPPAREX-VALUEPART2(对于所有重复的E1BPPAREX段)。
  • HANDLING_UNIT_HEADER-SHIP_MAT = 在表PACKPO中查找,表LIPS-MATNR中包含材料,然后获取字段PACKNR和PAITEMTYPE ='P',并在同一表PACKPO 中查找。 您将在字段MATNR中获得包装材料编号:
  • HANDLING_UNIT_ITEM-HDL_UNIT_EXID_INTO =应该对段E1BPPAREX-VALUEPART1和E1BPPAREX-VALUEPART2中的所有唯一处理单元重复此操作
  • HANDLING_UNIT_ITEM-HDL_UNIT_EXID =应该适用于段E1BPPAREX-VALUEPART2中的所有处理单位
  • HANDLING_UNIT_ITEM-DELIV_NUMB =执行IDOC时创建的内向交货
  • HANDLING_UNIT_ITEM-DELIV_ITEM = LIPS-POSNR(其中LIPS-VBELN = DELIV_NUMB)
  • 以下所有数据字段均与将物料包装到装卸单元中有关:
  • HANDLING_UNIT_ITEM-PACK_QTY =来自IDOC E1EBP2017-GM_ITEM_CREATE-ENTRY_QNT(如果段E1BPPAREX-STRUCTURE = 1在VALUEPART2中没有段值(意味着收货仅存在一个处理单位)。 而不是每个重复的E1BPPAREX(1、2、3)在此表字段中重复的数量为1
  • HANDLING_UNIT_ITEM-SALES_UNIT = LIPS-MEINS(其中LIPS-VBELN = DELIV_NUMB)
  • HANDLING_UNIT_ITEM-MATERIAL = LIPS-MATNR(其中LIPS-VBELN = DELIV_NUMB)
  • HANDLING_UNIT_ITEM-BATCH = LIPS-CHARG(其中LIPS-VBELN = DELIV_NUMB)
  • HANDLING_UNIT_ITEM-ITEM_TYPE =" 1"(带物料包装的订单项)和" 3"(无物料)

我们在功能模块V51P_PACKING_DETERMINATION中添加了增强功能,以防止基于系统中的打包指令进行自动打包,因为我们正在基于来自IDOC中3.party系统的处理单元进行手动打包。

增强1 ZENH_PREV_AUTO_PACKING。 "活动版本

DATA:lo_idoc_control类型引用到ZCL_IDOC_MGBMCR_SINGLETON,
ls_edidc类型edidc,
lv_name1类型ediphone名称。

*获取Singleton类的实例
lo_idoc_control = ZCL_IDOC_MGBMCR_SINGLETON => get_instance()。

*从类
ls_edidc = lo_idoc_control-> get_edidc()中获取Idoc控件记录。

*从合作伙伴配置中获取名称
从ediphone中选择单个名称
放入lv_name1
在其中parnum EQ ls_edidc-sndprn
AND partyp EQ ls_edidc-sndprt
AND parfct EQ ls_edidc-sndpfc
AND直接EQ ls_ed -direct
AND mestyp EQ ls_edidc-mestyp
AND mescod EQ ls_edidc-mescod
AND mesfct EQ ls_edidc-mesfct
并测试EQ空间。

*如果配置保持NO_PACKING 对于合作伙伴,则不要将记录
*添加到PACKGOODS中,这将防止自动打包
如果lv_name1 EQ'NO_PACKING'。
退出。

希望能对您有所帮助。

当我第一次发现要使用哪个BAPI(BAPI_INB_DELIVERY_CONFIRM_DEC)在inb中创建和打包外部处理单元时。 交付,一切正常。

一周热门 更多>