修改包装单元(handling unit)用户状态[HU_STATUS_UPDATE]

通过vl02n可以修改包装单元(handling unit)的用户状态,如下图:

<img class="alignnone size-full wp-image-4603" src="http://www.baidusap.com/wp-content/uploads/2017-06-01_14-52-47.png" alt="" width="908" height="486" srcset="http://www.baidusap.com/wp-content/uploads/2017-06-01_14-52-47.png 908w, http://www.baidusap.com/wp-content/uploads/2017-06-01_14-52-47-740x396.png 740w, http://www.baidusap.com/wp-content/uploads/2017-06-01_14-52-47-768x411.png 768w" sizes="(max-width: 908px) 100vw, 908px" />

调用函数HU_STATUS_UPDATE也可以更新HU的用户状态。

<img class="alignnone size-full wp-image-4604" src="http://www.baidusap.com/wp-content/uploads/2017-06-01_15-08-52.png" alt="" width="617" height="275" />

例子代码:

REPORT ztest_change_hu_status.

TYPES:BEGIN OF ty_objnr,
        objnr TYPE hustobj-objnr,
      END OF ty_objnr.
DATA: lit_vekp        TYPE TABLE OF vekp,
      lwa_vekp        LIKE LINE OF lit_vekp,
      lit_hustatus_db TYPE vses_t_hustatus,
      lwa_hustatus_db LIKE LINE OF lit_hustatus_db,
      lit_objnr       TYPE STANDARD TABLE OF ty_objnr,
      lwa_objnr       LIKE LINE OF lit_objnr,
      lit_hustatus    TYPE vses_t_hustatus,
      lwa_hustatus    LIKE LINE OF lit_hustatus,
      lit_hustobj     TYPE vses_t_hustobj,
      lwa_hustobj     LIKE LINE OF lit_hustobj,
      lit_vepo        TYPE TABLE OF vepo,
      lwa_vepo        LIKE LINE OF lit_vepo,
      l_objnr         TYPE hustobj-objnr.
CONSTANTS:lco_hu TYPE char2 VALUE 'HU',      " HU
          lco_15 TYPE char5 VALUE 'E0006',   " user status 15 HOLD
          lco_16 TYPE char5 VALUE 'E0007'.   " user status 16 UNHOLD

PARAMETERS:p_vbeln TYPE likp-vbeln.
" get data from VEKP
SELECT * INTO TABLE lit_vekp
         FROM vekp
         WHERE vpobjkey = p_vbeln.
IF sy-subrc = 0.
  SORT lit_vekp BY exidv.
ENDIF.
" get data from VEPO
IF lit_vekp IS NOT INITIAL.
  SELECT * INTO TABLE lit_vepo
           FROM vepo
           FOR ALL ENTRIES IN lit_vekp
           WHERE venum = lit_vekp-venum.
ENDIF.
* get user status
* get HU object
LOOP AT lit_vepo INTO lwa_vepo.
  lwa_objnr-objnr = lco_hu.  "HU
  lwa_objnr+2(10) = lwa_vepo-venum.
  COLLECT lwa_objnr INTO lit_objnr.
ENDLOOP.

IF lit_objnr[] IS NOT INITIAL.
* 查找HU的状态
  SELECT *
    FROM husstat
    INTO TABLE lit_hustatus_db
     FOR ALL ENTRIES IN lit_objnr
   WHERE objnr = lit_objnr-objnr
     AND stat  = lco_15  "Hold
     AND inact <> 'X'.
  IF sy-subrc = 0.
    REFRESH:lit_hustatus.
*
    LOOP AT lit_hustatus_db INTO lwa_hustatus_db .

*     将E0006状态设置成无效
      lwa_hustatus-objnr = lwa_hustatus_db-objnr.
      lwa_hustatus-stat  = lco_15.
      lwa_hustatus-inact = abap_true.
      lwa_hustatus-mod   = 'U'.
      APPEND lwa_hustatus TO lit_hustatus.

      READ TABLE lit_hustatus_db INTO lwa_hustatus_db WITH KEY objnr = l_objnr
                                                               stat  = lco_16.
      IF sy-subrc = 0.
        lwa_hustatus-mod   = 'U'.
      ELSE.
        lwa_hustatus-mod   = 'I'.
      ENDIF.
*     插入或修改新状态
      lwa_hustatus-objnr = lwa_hustatus_db-objnr.
      lwa_hustatus-stat  = lco_16.
      lwa_hustatus-inact = abap_false.
      APPEND lwa_hustatus TO lit_hustatus.

    ENDLOOP.
    IF lit_hustatus[] IS NOT INITIAL.
      CALL FUNCTION 'HU_STATUS_UPDATE'
        EXPORTING
          it_hustatus = lit_hustatus
          it_hustobj  = lit_hustobj.
    ENDIF.
  ENDIF.
ENDIF.

 

转载于:https://www.cnblogs.com/datie/p/11434453.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值