根据物料序列号获取最新的HU号码_SAP刘梦_新浪博客

本文详细介绍了一段ABAP代码,用于处理SAP系统中物料的移动操作,包括从一个库位到另一个库位的物料转移,涉及外部ID的读取、SER06表的选择、去重处理、HU_ITEMS的创建及更新等关键步骤。

DEMO代码

 

 
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(IF_EVENT) TYPE  HUWBEVENT
*"  TABLES
*"      IT_DATA (自己定义)
*"      ET_data(自己定义)
*"----------------------------------------------------------------------


  
DATA:lt_ser06 TYPE TABLE OF ser06.
  
DATA:ls_ser06 TYPE         ser06.
  
DATA:ls_data              LIKE LINE OF it_data.
  
DATA:lv_lines             TYPE int4.

  
DATA:ls_tmp           LIKE LINE OF it_data.
  
DATA:ls_edata           LIKE LINE OF et_block.
  
DATAit_move_to           TYPE  hum_data_move_to_t WITH HEADER LINE.
  
DATAit_external_id       TYPE  hum_exidv_t WITH HEADER LINE.

  
DATA:is_imkpf              TYPE  imkpf.

  
DATAl_subrc              TYPE  sysubrc,
        wa_message           
TYPE  huitem_messages,
        it_message           
TYPE  huitem_messages_t WITH HEADER LINE.

  
DATAlv_mblnr TYPE mblnr.


  
DATA:hu_items  TYPE hum_humseg_t.
  
DATA:ls_hu_item LIKE LINE OF hu_items.
  
FIELD-SYMBOLS: LIKE LINE OF hu_items.


  
CLEAR ls_tmp.
  
CLEAR lv_lines.
  
CLEAR lv_mblnr.

  
CHECK it_data[] IS NOT INITIAL.

  
SELECT FROM ser06 INTO TABLE lt_ser06
    
FOR ALL ENTRIES IN it_data
    
WHERE exidv it_data-exidv.


  
"去重
  
SORT it_data BY matnr sernr.
  
DELETE ADJACENT DUPLICATES FROM  it_data COMPARING  matnr sernr.

  
SORT it_data BY  matnr werks lgort.

  
CLEAR it_external_id[]REFRESH it_external_id.
  
CLEAR it_move_to[]REFRESH it_move_to.

  
DATA:lv_count TYPE int4.

  
CLEAR lv_count.
  
LOOP AT it_data INTO ls_data .

    lv_lines 
lv_lines   1.
    
IF ls_tmp IS INITIAL."第一次
      ls_tmp 
ls_data.
    
ENDIF.

*&不同工厂库位 不同行项目
    
IF ls_tmp-matnr ls_data-matnr
      
AND ls_tmp-werks ls_data-werks
      
AND ls_tmp-lgort ls_data-lgort.

      it_external_id
-exidv ls_data-exidv.
      
APPEND it_external_id.

*&move-to HU_ITEMS
      
READ TABLE lt_ser06 INTO ls_ser06
        
WITH KEY exidv ls_data-exidv.

      
CLEAR ls_hu_item.
      ls_hu_item
-venum ls_ser06-venum.
      ls_hu_item
-vepos ls_ser06-vepos.
***      ls_hu_item-quantity = 1. "no need

      
READ TABLE hu_items ASSIGNING 
        
WITH KEY
          venum 
ls_hu_item-venum
          vepos 
ls_hu_item-vepos.

      
IF sy-subrc 0.
*        -quantity = -quantity   1.
      
ELSE.
        
APPEND ls_hu_item TO hu_items.
      
ENDIF.


    
ELSE.
      
CLEAR lv_mblnr.
      it_move_to
-lgort ls_tmp-lgort.
      it_move_to
-werks =  ls_tmp-werks.
      it_move_to
-matnr ls_tmp-matnr.

      it_move_to
-hu_items hu_items[].

      
APPEND it_move_to.

      
CLEAR hu_items[].

      it_external_id
-exidv ls_data-exidv.
      
APPEND it_external_id.

*&move-to HU_ITEMS
      
READ TABLE lt_ser06 INTO ls_ser06
        
WITH KEY exidv ls_data-exidv.

      
CLEAR ls_hu_item.
      ls_hu_item
-venum ls_ser06-venum.
      ls_hu_item
-vepos ls_ser06-vepos.
**      ls_hu_item-quantity = 1."no need

      
READ TABLE hu_items ASSIGNING 
        
WITH KEY
          venum 
ls_hu_item-venum
          vepos 
ls_hu_item-vepos.

      
IF sy-subrc 0.

      ELSE.
        
APPEND ls_hu_item TO hu_items.
      
ENDIF.

*&g更新参考变量
      ls_tmp 
ls_data.
    
ENDIF."    IF ls_tmp-matnr = ls_data-matnr


  
ENDLOOP."  LOOP AT it_data INTO ls_data .


  it_move_to
-lgort ls_data-lgort.
  it_move_to
-werks ls_data-werks.
  it_move_to
-matnr ls_data-matnr.

  it_move_to
-hu_items hu_items[].
  
APPEND it_move_to.

  
CLEAR lv_mblnr.

  is_imkpf
-budat sy-datum.
  is_imkpf
-bldat sy-datum.

  
CLEAR lv_mblnr.
  
CLEAR ls_edata.

  
"清空变量
  
CALL FUNCTION 'SERIAL_INTTAB_REFRESH'
* EXPORTING
*   OBJECTS_STATUS_REFRESH       = ' '
            
.

  
CALL FUNCTION 'HU_CREATE_GOODS_MOVEMENT'
    
EXPORTING
      if_event       
if_event "'0023' "block '0022' "unblock
      if_commit      
space
      is_imkpf       
is_imkpf
      it_move_to     
it_move_to[]
      it_external_id 
it_external_id[]
    
IMPORTING
      ef_posted      
l_subrc     "return
      es_message     
wa_message  "export message
      et_messages    
it_message[]"


  
READ TABLE it_message WITH KEY
      msgid 
=  'HUGENERAL'
      msgty 
=    'S'
      msgno 
=   '309'.
  
IF sy-subrc 0.

    lv_mblnr 
it_message-msgv1.


  
ELSE.
 

  ENDIF.

ENDFUNCTION.


根据物料序列号获取最新的HU号码
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值