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


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

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

    例子代码:

    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.
  • 相关阅读:
    使用dom4j 解析xml
    xml schema 建立xml文档
    xml dtd 约束建立xml文档
    DBCP 连接池的使用
    c++面向过程和面向对象-C++编译器是如何管理类和对象的
    c++读取文本文件
    一个范围的两个数进行数位的累加,实现对两个数num1和num2的数位和相加
    C++批量注释代码段取消注释代码段快捷键
    利用MATLAB截取一张复杂图片中想要的区域
    python学习之路系列
  • 原文地址:https://www.cnblogs.com/datie/p/11434453.html
Copyright © 2020-2023  润新知