修改包装单元(handling unit)用户状态[HU_STATUS_UPDATE]详解编程语言

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

修改包装单元(handling unit)用户状态[HU_STATUS_UPDATE]详解编程语言

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

修改包装单元(handling unit)用户状态[HU_STATUS_UPDATE]详解编程语言

例子代码:

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.

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/19254.html

(0)
上一篇 2021年7月19日 22:01
下一篇 2021年7月19日 22:01

相关推荐

发表回复

登录后才能评论