• SAP QM UD检验批回转为REL待检验状态


    首先创建1000屏幕,后面附屏幕相关代码和效果图示

    *&---------------------------------------------------------------------*
    *& Report  ZQEVAC40 UD檢驗批迴轉REL狀態
    *&
    *&---------------------------------------------------------------------*
    *&
    *&
    *&---------------------------------------------------------------------*

    REPORT  zqevac40.

    *----------------------------------------------------------------------*
    *  Datendefinitionen
    *----------------------------------------------------------------------*
    * Tabellen
    *----------------------------------------------------------------------*
    TABLES sscrfields.
    TABLES qals.
    TABLES qave.

    CONSTANTS:
      c_rc_0  LIKE sy-subrc           VALUE 0,
      c_rc_4  LIKE sy-subrc           VALUE 4,
      c_rc_20 LIKE sy-subrc           VALUE 20,
    *
      c_kreuz LIKE qm00-qkz           VALUE 'X'.
    *

    *----------------------------------------------------------------------*
    * Eingabebildschirm
    SELECTION-SCREEN SKIP 2.
    PARAMETERS prueflos  LIKE qals-prueflos MATCHCODE OBJECT qals
                                            MEMORY ID qls .
    SELECTION-SCREEN SKIP 1.
    SELECTION-SCREEN BEGIN OF BLOCK search WITH FRAME.
    SELECTION-SCREEN BEGIN OF LINE.

    SELECTION-SCREEN PUSHBUTTON 3(20text-s01 USER-COMMAND sear.
    SELECTION-SCREEN PUSHBUTTON 40(20text-s02 USER-COMMAND show.
    *--- text-s01 “Find insp .lot” text-s02 “Show insp .lot” prueflos “Inspection Lot “

    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK search.


    *----------------------------------------------------------------------*
    AT SELECTION-SCREEN.

      IF sscrfields-ucomm EQ 'SEAR'
        OR prueflos IS INITIAL.
        CALL FUNCTION 'QELA_START_SELECTION_OF_LOTS'
          EXPORTING
            i_selid          ' '
            i_stat_aenderung 'X'
            i_stat_ero       'X'
            i_stat_frei      'X'
            i_stat_ve        ' '
          IMPORTING
            e_prueflos       = prueflos
          EXCEPTIONS
            no_entry         1
            no_selected      2
            OTHERS           3.
      ENDIF.


      IF sscrfields-ucomm EQ 'SHOW'.
        CALL FUNCTION 'QSS1_LOT_SHOW'
          EXPORTING
            i_prueflos = prueflos.
      ENDIF.

      CHECK sscrfields-ucomm EQ 'ONLI'.

    * ab hier mu# Pr#losnummer gef#lt sein.
      IF prueflos IS INITIAL.
        MESSAGE e164(qa).
      ENDIF.

    * Lesen Los
      CALL FUNCTION 'ENQUEUE_EQQALS1'
        EXPORTING
          prueflos = prueflos.

      CALL FUNCTION 'QPSE_LOT_READ'
        EXPORTING
          i_prueflos = prueflos
        IMPORTING
          e_qals     = qals
        EXCEPTIONS
          no_lot     1.
      IF NOT sy-subrc IS INITIAL.
        MESSAGE e102(qa).
      ENDIF.
    *-----------------
    * Pr#en Status
      CALL FUNCTION 'QAST_STATUS_CHECK'
        EXPORTING
          i_objnr          = qals-objnr
          i_status         'I0218' "Status VE getroffen
        EXCEPTIONS
          status_not_activ 1.
      IF NOT sy-subrc IS INITIAL.
        MESSAGE e102(qvWITH qals-prueflos.
      ENDIF.
    *
      CALL FUNCTION 'QEVA_UD_READ'
        EXPORTING
          i_prueflos = qals-prueflos
        IMPORTING
          e_qave     = qave.


    *---------------------------------------------------------------------*
    START-OF-SELECTION.
    * Vorgaben sind ok.   1. Material Umlagern und Los 輋dern

      PERFORM qals_aendern.
    *  PERFORM zqmt010_zqmt002_updated. "2015/10/27 add
    ************************************************************************
    *----------------------------------------------------------------------*
    *       FORM QALS_aendern
    *----------------------------------------------------------------------*
    FORM qals_aendern.
    *
      PERFORM status_fix_setzen USING 'I0002' c_kreuz.
      PERFORM status_fix_setzen USING 'I0216' space.
      PERFORM status_fix_setzen USING 'I0217' space.
      PERFORM status_fix_setzen USING 'I0218' space.
      CLEAR: qals-stat14.
      CLEAR: qals-stat35.
      CLEAR: qave-vauswahlmg,
           qave-vwerks,
           qave-versionam,
           qave-vcodegrp,
           qave-vcode,
           qave-vbewertung,
           qave-versioncd,
           qave-vfolgeakti,
           qave-qkennzahl.
    *--... verbuchen
      CALL FUNCTION 'QEVA_UD_UPDATE' IN UPDATE TASK
        EXPORTING
          qals_new = qals
          qave_new = qave.
      COMMIT WORK.
      MESSAGE s101(qaWITH qals-prueflos.
    ENDFORM.
    *----------------------------------------------------------------------*
    *       Form  STATUS_FIX_SETZEN
    *----------------------------------------------------------------------*
    *   Setzen eines Status aufgrund von Voreinstellungen wie QMAT etc.    *
    *----------------------------------------------------------------------*
    *  -->  STATUS    Status der gesetzt werden soll
    *  -->  AKTIV     Status wird aktiviert sonst deaktiviert
    *----------------------------------------------------------------------*
    FORM status_fix_setzen USING
                VALUE(statusLIKE tj02-istat
                VALUE(aktivLIKE c_kreuz.
    * lokale Tabelle fuer Statusfortschreibung
      DATABEGIN OF l_stattab OCCURS 0.
              INCLUDE STRUCTURE jstat.
      DATA  END OF l_stattab.
    *
    * Falls Objektnr. nicht gef#lt. --> Fehlermeldung !!!
      IF qals-objnr EQ space.
        MESSAGE e013(qv).
    *   Fehlende Objektnr.: Problem f#
      ENDIF.
      MOVE status TO l_stattab-stat.
      IF aktiv EQ space.
        MOVE c_kreuz TO l_stattab-inact.
      ENDIF.
    *
      APPEND l_stattab.
    *
      CALL FUNCTION 'STATUS_CHANGE_INTERN'
        EXPORTING
          check_only = space
          objnr      = qals-objnr
        TABLES
          status     = l_stattab.

    ENDFORM.                               " STATUS_FIX_SETZEN

    创建1000屏幕,代码如下:----BEGIN 

    PROCESS BEFORE OUTPUT.

    MODULE %_INIT_PBO.

    MODULE %_PBO_REPORT.

    MODULE %_PF_STATUS.

    MODULE %_END_OF_PBO.

    PROCESS AFTER INPUT.

      MODULE %_BACK AT EXIT-COMMAND.

      MODULE %_INIT_PAI.

    FIELD !PRUEFLOS MODULE %_PRUEFLOS .


    CHAIN.
      FIELD PRUEFLOS .
      MODULE %_END_OF_SCREEN.
      MODULE %_OK_CODE_1000.
    ENDCHAIN.

    ---END

     

    屏幕效果图:

  • 相关阅读:
    图说jdk1.8新特性(3)--- 注解与类型推测优化
    图说jdk1.8新特性(2)--- Lambda
    图说jdk1.8新特性(1)--- 函数式接口
    Linux应用与端口
    Linu如何查看磁盘占用情况及处理办法
    ThreadLocal剧集(一)
    缓存穿透、缓存击穿、缓存雪崩区别和解决方案
    MySQL 新建用户,为用户授权,指定用户访问数据库
    2019面试总结
    Java的设计模式
  • 原文地址:https://www.cnblogs.com/coderfarmer/p/13408065.html
Copyright © 2020-2023  润新知