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

 

 

 

 

 

 

屏幕效果图:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM