取消检验批过账(决策)
1、当检验批决策合格之后,怎么撤回。通过SAP给的一个程序可以进行撤回决策。
*&------------------------------------------------------------------*
*& Report ZRQEVAC50
*&
*&------------------------------------------------------------------*
*&
*&sap notes 175842
*&------------------------------------------------------------------*REPORT rqevac50 MESSAGE-ID qa.
TYPES:t_mkpf_tab LIKE mkpf OCCURS 0,t_mseg_tab LIKE mseg OCCURS 0.
PARAMETERS:PRUEFLOS LIKE QALS-PRUEFLOS OBLIGATORY MEMORY ID QLS.
PARAMETERS:BUDAT LIKE MKPF-BUDAT .
SELECTION-SCREEN BEGIN OF LINE .
SELECTION-SCREEN COMMENT 3(50) TEXT-s01 .
*SELECTION-SCREEN comment 3(50) text-s02 .
SELECTION-SCREEN END OF LINE .
SELECTION-SCREEN BEGIN OF LINE .
*SELECTION-SCREEN comment 3(83) text-s01 .
SELECTION-SCREEN COMMENT 8(50) TEXT-s02 .
SELECTION-SCREEN END OF LINE .
DATA:g_msgv1 LIKE sy-msgv1,g_qals LIKE qals,g_qals_leiste LIKE qals,g_qamb_tab TYPE qambtab,g_qamb_vb_tab TYPE qambtab,g_mkpf_tab TYPE t_mkpf_tab,g_mseg_tab TYPE t_mseg_tab,g_subrc LIKE sy-subrc.
DATA qls.START-OF-SELECTION.PERFORM enqueue_qals USING prueflosg_subrc.IF NOT g_subrc IS INITIAL.MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.SUBMIT (sy-repid) VIA SELECTION-SCREEN.ENDIF.PERFORM read_qals USING prueflosg_qalsg_qals_leisteg_subrc.IF NOT g_subrc IS INITIAL.MESSAGE ID 'QA' TYPE 'S' NUMBER '102'WITH prueflos.SUBMIT (sy-repid) VIA SELECTION-SCREEN.ENDIF.PERFORM check_lot USING g_qalsg_subrc.IF NOT g_subrc IS INITIAL.CASE g_subrc.WHEN 256.g_msgv1 = 'Lot & does not refer to a material doc'.WHEN 128.g_msgv1 = 'Material & is serialized'.REPLACE '&' WITH g_qals-matnr INTO g_msgv1.WHEN 64.g_msgv1 = 'Lot & is not stock relevant'.WHEN 32.g_msgv1 = 'Lot &: No stock transferred'.WHEN 16.g_msgv1 = 'Lot & is cancelled'.WHEN 8.g_msgv1 = 'Lot & is archived'.WHEN 4.g_msgv1 = 'Lot & is blocked'.WHEN 2.g_msgv1 = 'Lot & is HU managed'.ENDCASE.REPLACE '&' WITH prueflos INTO g_msgv1.MESSAGE ID '00' TYPE 'S' NUMBER '208'WITH g_msgv1.SUBMIT (sy-repid) VIA SELECTION-SCREEN.ENDIF.PERFORM read_qamb USING g_qalsg_qamb_tabg_subrc.IF NOT g_subrc IS INITIAL.MESSAGE ID 'QA' TYPE 'S' NUMBER '068'WITH prueflos.SUBMIT (sy-repid) VIA SELECTION-SCREEN.ENDIF.PERFORM read_mkpf USING g_qamb_tabg_mkpf_tabg_subrc.IF NOT g_subrc IS INITIAL.MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.SUBMIT (sy-repid) VIA SELECTION-SCREEN.ENDIF.PERFORM check_mkpf USING g_mkpf_tabg_subrc.IF NOT g_subrc IS INITIAL.MESSAGE ID 'QA' TYPE 'S' NUMBER '068'WITH prueflos.SUBMIT (sy-repid) VIA SELECTION-SCREEN.ENDIF.PERFORM read_mseg USING g_mkpf_tabg_mseg_tabg_subrc.IF NOT g_subrc IS INITIAL.MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.SUBMIT (sy-repid) VIA SELECTION-SCREEN.ENDIF.PERFORM check_mseg USING g_mseg_tabg_qamb_tabg_subrc.IF NOT g_subrc IS INITIAL.MESSAGE ID 'QA' TYPE 'S' NUMBER '068'WITH prueflos.SUBMIT (sy-repid) VIA SELECTION-SCREEN.ENDIF.PERFORM create_goods_movement USING g_qalsg_mseg_tabg_subrc.IF NOT g_subrc IS INITIAL.MESSAGE ID 'QA' TYPE 'S' NUMBER '068'WITH prueflos.SUBMIT (sy-repid) VIA SELECTION-SCREEN.ENDIF.PERFORM post_goods_movement.PERFORM post_data USING g_qalsg_qals_leisteg_qamb_tabg_qamb_vb_tabg_subrc.IF NOT g_subrc IS INITIAL.MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.SUBMIT (sy-repid) VIA SELECTION-SCREEN.ELSE.COMMIT WORK AND WAIT.g_msgv1 = 'inspection lot &'.REPLACE '&' WITH prueflos INTO g_msgv1.MESSAGE ID '00' TYPE 'S' NUMBER '368'WITH 'Stock posting reversed for ' g_msgv1.SUBMIT (sy-repid) VIA SELECTION-SCREEN.ENDIF.*-------------------------------------------------------------------*
* Form ENQUEUE_QALS *
*-------------------------------------------------------------------*
* Los sperren *
*-------------------------------------------------------------------*
FORM enqueue_qals USING p_prueflos LIKE qals-prueflosp_subrc LIKE sy-subrc.CLEAR: p_subrc.CALL FUNCTION 'ENQUEUE_EQQALS1'EXPORTINGprueflos = p_prueflosEXCEPTIONSforeign_lock = 1system_failure = 2OTHERS = 3.p_subrc = sy-subrc.ENDFORM. " ENQUEUE_QALS*-------------------------------------------------------------------*
* Form READ_QALS *
*-------------------------------------------------------------------*
* Prüflos lesen *
*-------------------------------------------------------------------*
FORM read_qals USING p_prueflos LIKE qals-prueflosp_qals LIKE qalsp_qals_leiste LIKE qalsp_subrc LIKE sy-subrc.CLEAR: p_subrc.CALL FUNCTION 'QPSE_LOT_READ'EXPORTINGi_prueflos = p_prueflosi_reset_lot = 'X'IMPORTINGe_qals = p_qalsEXCEPTIONSno_lot = 1.p_subrc = sy-subrc.IF p_subrc IS INITIAL.p_qals_leiste = p_qals.ELSE.CLEAR: p_qals,p_qals_leiste.ENDIF.ENDFORM. " READ_QALS*-------------------------------------------------------------------*
* Form CHECK_LOT *
*-------------------------------------------------------------------*
* Prüflos prüfen *
*-------------------------------------------------------------------*
FORM check_lot USING p_qals LIKE qalsp_subrc LIKE sy-subrc.DATA:l_stat LIKE jstat,l_stat_tab LIKE jstat OCCURS 0 WITH HEADER LINE.p_subrc = 256.*/No reference to material documentIF p_qals-zeile IS INITIAL.EXIT.ELSE.
* p_subrc = 128.p_subrc = 64.ENDIF.*/Serialized Material
*---------------CHANGED BY HANDMY AT 20190219
* IF NOT p_qals-sernp IS INITIAL.
* EXIT.
* ELSE.
* p_subrc = 64.
* ENDIF.
*---------------ADD BY HANDMY AT 20190219*/BERFCALL FUNCTION 'STATUS_CHECK'EXPORTINGobjnr = p_qals-objnrstatus = 'I0203'EXCEPTIONSstatus_not_active = 2.IF NOT sy-subrc IS INITIAL.EXIT.ELSE.p_subrc = 32.ENDIF.*/BTEI & BENDCLEAR l_stat. CLEAR l_stat_tab. REFRESH l_stat_tab.l_stat-stat = 'I0219'. APPEND l_stat TO l_stat_tab. "BTEIl_stat-stat = 'I0220'. APPEND l_stat TO l_stat_tab. "BENDCALL FUNCTION 'STATUS_OBJECT_CHECK_MULTI'EXPORTINGobjnr = p_qals-objnrTABLESstatus_check = l_stat_tab.IF l_stat_tab[] IS INITIAL.EXIT.ELSE.p_subrc = 16.ENDIF.*/LSTO & LSTVCLEAR l_stat. CLEAR l_stat_tab. REFRESH l_stat_tab.l_stat-stat = 'I0224'. APPEND l_stat TO l_stat_tab. "LSTOl_stat-stat = 'I0232'. APPEND l_stat TO l_stat_tab. "LSTVCALL FUNCTION 'STATUS_OBJECT_CHECK_MULTI'EXPORTINGobjnr = p_qals-objnrTABLESstatus_check = l_stat_tab.IF NOT l_stat_tab[] IS INITIAL.EXIT.ELSE.p_subrc = 8.ENDIF.*/ARSP & ARCH & REO1 & REO2 & REO3CLEAR l_stat. CLEAR l_stat_tab. REFRESH l_stat_tab.l_stat-stat = 'I0225'. APPEND l_stat TO l_stat_tab. "ARSPl_stat-stat = 'I0226'. APPEND l_stat TO l_stat_tab. "ARCHl_stat-stat = 'I0227'. APPEND l_stat TO l_stat_tab. "REO3l_stat-stat = 'I0228'. APPEND l_stat TO l_stat_tab. "REO2l_stat-stat = 'I0229'. APPEND l_stat TO l_stat_tab. "REO1CALL FUNCTION 'STATUS_OBJECT_CHECK_MULTI'EXPORTINGobjnr = p_qals-objnrTABLESstatus_check = l_stat_tab.IF NOT l_stat_tab[] IS INITIAL.EXIT.ELSE.p_subrc = 4.ENDIF.*/SPERCALL FUNCTION 'STATUS_CHECK'EXPORTINGobjnr = p_qals-objnrstatus = 'I0043'EXCEPTIONSstatus_not_active = 2.IF sy-subrc IS INITIAL.EXIT.ELSE.p_subrc = 2.ENDIF.*/HUMCALL FUNCTION 'STATUS_CHECK'EXPORTINGobjnr = p_qals-objnrstatus = 'I0443'EXCEPTIONSstatus_not_active = 2.IF sy-subrc IS INITIAL.EXIT.ELSE.p_subrc = 0.ENDIF.ENDFORM. " CHECK_LOT*-------------------------------------------------------------------*
* Form READ_QAMB *
*-------------------------------------------------------------------*
* QAMBs lesen *
*-------------------------------------------------------------------*
FORM read_qamb USING p_qals LIKE qalsp_qamb_tab TYPE qambtabp_subrc LIKE sy-subrc.CLEAR: p_subrc.SELECT * FROM qamb INTO TABLE p_qamb_tabWHERE prueflos = p_qals-prueflosAND typ = '3'.p_subrc = sy-subrc.ENDFORM. " READ_QAMB*-------------------------------------------------------------------*
* Form READ_MKPF *
*-------------------------------------------------------------------*
* Read material document header *
*-------------------------------------------------------------------*
FORM read_mkpf USING p_qamb_tab TYPE qambtabp_mkpf_tab TYPE t_mkpf_tabp_subrc LIKE sy-subrc.DATA:BEGIN OF l_mkpf_key_tab OCCURS 0,mblnr LIKE mkpf-mblnr,mjahr LIKE mkpf-mjahr,END OF l_mkpf_key_tab.DATA:l_qamb LIKE qamb,l_mkpf LIKE mkpf,l_trtyp LIKE t158-trtyp VALUE 'A',l_vgart LIKE t158-vgart VALUE 'WQ',l_xexit LIKE qm00-qkz.p_subrc = 4.LOOP AT p_qamb_tab INTO l_qamb.l_mkpf_key_tab-mblnr = l_qamb-mblnr.l_mkpf_key_tab-mjahr = l_qamb-mjahr.COLLECT l_mkpf_key_tab.ENDLOOP.LOOP AT l_mkpf_key_tab.CALL FUNCTION 'ENQUEUE_EMMKPF'EXPORTINGmblnr = l_mkpf_key_tab-mblnrmjahr = l_mkpf_key_tab-mjahrEXCEPTIONSforeign_lock = 1system_failure = 2OTHERS = 3.IF NOT sy-subrc IS INITIAL.l_xexit = 'X'.EXIT.ENDIF.CLEAR: l_mkpf.CALL FUNCTION 'MB_READ_MATERIAL_HEADER'EXPORTINGmblnr = l_mkpf_key_tab-mblnrmjahr = l_mkpf_key_tab-mjahrtrtyp = l_trtypvgart = l_vgartIMPORTINGkopf = l_mkpfEXCEPTIONSerror_message = 1.IF NOT sy-subrc IS INITIAL.l_xexit = 'X'.EXIT.ELSE.APPEND l_mkpf TO p_mkpf_tab.ENDIF.ENDLOOP.IF NOT l_xexit IS INITIAL.EXIT.ELSE.p_subrc = 0.ENDIF.ENDFORM. " READ_MKPF*-------------------------------------------------------------------*
* Form READ_MSEG *
*-------------------------------------------------------------------*
* MSEGs lesen *
*-------------------------------------------------------------------*
FORM read_mseg USING p_mkpf_tab TYPE t_mkpf_tabp_mseg_tab TYPE t_mseg_tabp_subrc LIKE sy-subrc.DATA:l_mkpf LIKE mkpf,l_mseg_tab LIKE mseg OCCURS 0 WITH HEADER LINE,l_trtyp LIKE t158-trtyp VALUE 'A',l_xexit LIKE qm00-qkz.p_subrc = 4.LOOP AT p_mkpf_tab INTO l_mkpf.CLEAR: l_mseg_tab. REFRESH: l_mseg_tab.CALL FUNCTION 'MB_READ_MATERIAL_POSITION'EXPORTINGmblnr = l_mkpf-mblnrmjahr = l_mkpf-mjahrtrtyp = l_trtyp
*/ ZEILB = P_ZEILE
*/ ZEILE = P_ZEILETABLESseqtab = l_mseg_tabEXCEPTIONSerror_message = 1.IF NOT sy-subrc IS INITIAL.l_xexit = 'X'.EXIT.ELSE.APPEND LINES OF l_mseg_tab TO p_mseg_tab.ENDIF.ENDLOOP.IF NOT l_xexit IS INITIAL.EXIT.ELSE.
*/ XAuto-Zeilen und Chargenzustands?nderung werden gel?schtDELETE p_mseg_tab WHERE xauto NE spaceOR bwart EQ '341'OR bwart EQ '342'.p_subrc = 0.ENDIF.ENDFORM. " READ_MSEG*-------------------------------------------------------------------*
* Form CREATE_GOODS_MOVEMENT *
*-------------------------------------------------------------------*
* Warenbewegung anlegen *
*-------------------------------------------------------------------*
FORM create_goods_movement USING p_qals LIKE qalsp_mseg_tab TYPE t_mseg_tabp_subrc LIKE sy-subrc.DATA:l_lmengezub LIKE qals-lmengezub,l_lmengegeb LIKE qals-lmengezub,l_mbqss LIKE mbqss,l_imkpf LIKE imkpf,l_imseg LIKE imseg,l_imseg_tab LIKE imseg OCCURS 1,l_emkpf LIKE emkpf,l_emseg LIKE emseg,l_emseg_tab LIKE emseg OCCURS 1,l_mseg LIKE mseg,l_mseg_tab LIKE mseg OCCURS 1,l_tcode LIKE sy-tcode VALUE 'QA11',l_tabix LIKE sy-tabix VALUE 1,l_xstbw LIKE t156-xstbw.CLEAR: p_subrc.*/QAMB initialisierenCALL FUNCTION 'QAMB_REFRESH_DATA'.*/Kopf füllenIF budat IS INITIAL .l_imkpf-bldat = sy-datlo.l_imkpf-budat = sy-datlo.ELSE .l_imkpf-bldat = budat.l_imkpf-budat = budat.ENDIF.l_imkpf-bktxt = 'Cancellation of QM UD postings'.*/Ursprüngliche zu buchende Menge merken + inkrementierenl_lmengezub = p_qals-lmengezub.l_lmengegeb = p_qals-lmenge01+ p_qals-lmenge02+ p_qals-lmenge03+ p_qals-lmenge04+ p_qals-lmenge05+ p_qals-lmenge06+ p_qals-lmenge07+ p_qals-lmenge08+ p_qals-lmenge09.*/Zeilen aufbauenl_mseg_tab[] = p_mseg_tab[].LOOP AT l_mseg_tab INTO l_mseg.MOVE-CORRESPONDING l_mseg TO l_mbqss.MOVE-CORRESPONDING l_mbqss TO l_imseg.
*/ Referenzbeleg übergeben, falls Bestellnummer gefülltIF NOT l_mseg-ebeln IS INITIAL.MOVE: l_mseg-lfbnr TO l_imseg-lfbnr,l_mseg-lfbja TO l_imseg-lfbja,l_mseg-lfpos TO l_imseg-lfpos.ENDIF.MOVE l_mseg-kdauf TO l_imseg-kdauf.MOVE l_mseg-kdpos TO l_imseg-kdpos.MOVE l_mseg-ps_psp_pnr TO l_imseg-ps_psp_pnr.*/ Umlagerungsfelder setzenMOVE:l_mseg-ummat TO l_imseg-ummat,l_mseg-umwrk TO l_imseg-umwrk,l_mseg-umlgo TO l_imseg-umlgo,l_mseg-umcha TO l_imseg-umcha.*/ Storno-Beleg setzenMOVE: l_mseg-mjahr TO l_imseg-sjahr,l_mseg-mblnr TO l_imseg-smbln,l_mseg-zeile TO l_imseg-smblp.*/ Falsch gefüllte Felder initialisierenCLEAR: l_imseg-mblnr,l_imseg-menge,l_imseg-meins.*/ Bewegungsart lesenSELECT SINGLE xstbw FROM t156 INTO l_xstbwWHERE bwart = l_imseg-bwart.IF NOT sy-subrc IS INITIAL.p_subrc = 4.EXIT.ENDIF.*/ Werk/Lagerort füllenIF p_qals-stat11 IS INITIAL.IF l_xstbw IS INITIAL.MOVE p_qals-lagortvorg TO l_imseg-lgort.ELSE.MOVE p_qals-lagortvorg TO l_imseg-umlgo.ENDIF.ENDIF.IF l_xstbw IS INITIAL.MOVE p_qals-werkvorg TO l_imseg-werks.ELSE.MOVE p_qals-werkvorg TO l_imseg-umwrk.ENDIF.*/ Zus?tzliche FelderMOVE p_qals-mengeneinh TO l_imseg-erfme."MOVE P_GRUND TO L_IMSEG-GRUND."MOVE P_ELIKZ TO L_IMSEG-ELIKZ.
*/ Kennzeichen Storno-Buchung setzenMOVE 'X' TO l_imseg-xstob.MOVE p_qals-prueflos TO l_imseg-qplos.APPEND l_imseg TO l_imseg_tab.IF p_qals-stat11 IS INITIAL.ADD l_imseg-erfmg TO l_lmengezub.SUBTRACT l_imseg-erfmg FROM l_lmengegeb.ELSE.IF l_imseg-kzbew EQ spaceAND l_imseg-werks NE spaceAND l_imseg-lgort NE spaceAND l_imseg-umwrk NE spaceAND l_imseg-umlgo NE spaceAND l_imseg-werks EQ l_imseg-umwrkAND l_imseg-umlgo EQ l_imseg-umlgo.
*/ Dummy Buchung bei WE-Sperrbestand & StichprobeELSE.ADD l_imseg-erfmg TO l_lmengezub.SUBTRACT l_imseg-erfmg FROM l_lmengegeb.ENDIF.ENDIF.ENDLOOP.IF NOT p_qals-stat11 IS INITIAL.
*/ Bei WE-Sperrbestand und Stichprobenbuchung Zeilen tauschenDO.READ TABLE l_imseg_tab INDEX sy-index INTO l_imseg.IF sy-subrc IS INITIALAND l_imseg-kzbew EQ spaceAND l_imseg-werks NE spaceAND l_imseg-lgort NE spaceAND l_imseg-umwrk NE spaceAND l_imseg-umlgo NE spaceAND l_imseg-werks EQ l_imseg-umwrkAND l_imseg-umlgo EQ l_imseg-umlgo.IF sy-tabix NE l_tabix.DELETE l_imseg_tab INDEX sy-tabix.INSERT l_imseg INTO l_imseg_tab INDEX l_tabix.l_tabix = l_tabix + 1.ELSE.l_tabix = l_tabix + 1.CONTINUE.ENDIF.ELSEIF sy-subrc IS INITIAL.CONTINUE.ELSE.EXIT. "from doENDIF.ENDDO.ENDIF.*/QM deaktivierenCALL FUNCTION 'QAAT_QM_ACTIVE_INACTIVE'EXPORTINGaktiv = space.
*/BuchenCALL FUNCTION 'MB_CREATE_GOODS_MOVEMENT'EXPORTINGimkpf = l_imkpfxallp = 'X'xallr = 'X'ctcod = l_tcodexqmcl = ' 'IMPORTINGemkpf = l_emkpfTABLESimseg = l_imseg_tabemseg = l_emseg_tab.
*/QM wieder aktivierenCALL FUNCTION 'QAAT_QM_ACTIVE_INACTIVE'EXPORTINGaktiv = 'X'.*/Buchung auswertenIF l_emkpf-subrc GT 1.IF l_emkpf-msgid NE space.
*/ Fehler auf KopfebeneMESSAGE ID l_emkpf-msgid TYPE 'S'NUMBER l_emkpf-msgnoWITH l_emkpf-msgv1 l_emkpf-msgv2l_emkpf-msgv3 l_emkpf-msgv4.SUBMIT (sy-repid) VIA SELECTION-SCREEN.ELSE.
*/ Fehler auf Zeilenebene (Ausgabe des ersten Fehlers)LOOP AT l_emseg_tab INTO l_emseg.IF l_emseg-msgid NE space.MESSAGE ID l_emseg-msgid TYPE 'S'NUMBER l_emseg-msgnoWITH l_emseg-msgv1 l_emseg-msgv2l_emseg-msgv3 l_emseg-msgv4.SUBMIT (sy-repid) VIA SELECTION-SCREEN.ENDIF.ENDLOOP.ENDIF.ENDIF.LOOP AT l_emseg_tab INTO l_emseg.CALL FUNCTION 'QAMB_COLLECT_RECORD'EXPORTINGlotnumber = p_qals-prueflosdocyear = l_emkpf-mjahrdocnumber = l_emkpf-mblnrdocposition = l_emseg-mblpotype = '7'.ENDLOOP.*/Sonderkorrektur für Frei-An-Frei & WE-Sperr-An-We-SperrIF NOT p_qals-stat11 IS INITIAL.IF p_qals-lmenge04 EQ l_lmengegeb.ADD p_qals-lmenge04 TO l_lmengezub.SUBTRACT p_qals-lmenge04 FROM l_lmengegeb.ENDIF.ELSEIF p_qals-insmk IS INITIAL.IF p_qals-lmenge01 GE l_lmengegebAND NOT p_qals-lmenge01 IS INITIAL.ADD l_lmengegeb TO l_lmengezub.SUBTRACT l_lmengegeb FROM l_lmengegeb.ENDIF.ENDIF.CLEAR: p_qals-stat34,p_qals-matnrneu,p_qals-chargneu,p_qals-lmenge01,p_qals-lmenge02,p_qals-lmenge03,p_qals-lmenge04,p_qals-lmenge05,p_qals-lmenge06,p_qals-lmenge07,p_qals-lmenge08,p_qals-lmenge09.p_qals-lmengezub = l_lmengezub.IF NOT l_lmengegeb IS INITIAL.p_subrc = 4.ENDIF.ENDFORM. " CREATE_GOODS_MOVEMENT*-------------------------------------------------------------------*
* Form POST_GOODS_MOVEMENT *
*-------------------------------------------------------------------*
* Warenbewegung buchen *
*-------------------------------------------------------------------*
FORM post_goods_movement.CALL FUNCTION 'MB_POST_GOODS_MOVEMENT'.ENDFORM. " POST_GOODS_MOVEMENT*-------------------------------------------------------------------*
* Form POST_DATA *
*-------------------------------------------------------------------*
* QM-Daten verbuchen *
*-------------------------------------------------------------------*
FORM post_data USING p_qals LIKE qalsp_qals_leiste LIKE qalsp_qamb_tab TYPE qambtabp_qamb_vb_tab TYPE qambtabp_subrc LIKE sy-subrc.DATA:l_stat LIKE jstat,l_stat_tab LIKE jstat OCCURS 0,l_qamb LIKE qamb,l_updkz LIKE qalsvb-upsl VALUE 'U'.*/QAMBs umsetzen (7 = VE-Buchung storniert)LOOP AT p_qamb_tab INTO l_qamb.l_qamb-typ = '7'.APPEND l_qamb TO p_qamb_vb_tab.ENDLOOP.*/BERF & BTEI zurücknehmenCLEAR l_stat. CLEAR l_stat_tab.l_stat-inact = 'X'.l_stat-stat = 'I0219'. APPEND l_stat TO l_stat_tab. "BTEIl_stat-stat = 'I0220'. APPEND l_stat TO l_stat_tab. "BENDCALL FUNCTION 'STATUS_CHANGE_INTERN'EXPORTINGobjnr = p_qals-objnrTABLESstatus = l_stat_tabEXCEPTIONSerror_message = 1.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.SUBMIT (sy-repid) VIA SELECTION-SCREEN.ENDIF.*/Prüflos aktualisierenCALL FUNCTION 'QPL1_UPDATE_MEMORY'EXPORTINGi_qals = p_qalsi_updkz = l_updkz.CALL FUNCTION 'QPL1_INSPECTION_LOTS_POSTING'EXPORTINGi_mode = '1'.CALL FUNCTION 'STATUS_UPDATE_ON_COMMIT'.*/QAMB initialisierenCALL FUNCTION 'QAMB_REFRESH_DATA'.PERFORM update_qamb ON COMMIT.p_subrc = 0.ENDFORM. " POST_DATA*-------------------------------------------------------------------*
* Form UPDATE_QAMB *
*-------------------------------------------------------------------*
* Update auf QAMB *
*-------------------------------------------------------------------*
FORM update_qamb.CALL FUNCTION 'QEVA_QAMB_CANCEL' IN UPDATE TASKEXPORTINGt_qamb_tab = g_qamb_vb_tab.ENDFORM. " UPDATE_QAMB*-------------------------------------------------------------------*
* Form CHECK_MSEG *
*-------------------------------------------------------------------*
* MSEGs prüfen *
*-------------------------------------------------------------------*
FORM check_mseg USING p_mseg_tab TYPE t_mseg_tabp_qamb_tab TYPE qambtabp_subrc LIKE sy-subrc.DATA:l_mseg_stor_tab LIKE mseg OCCURS 0 WITH HEADER LINE.CLEAR: p_subrc.*/Zeilen bereits storniert?SELECT mblnr mjahr zeile smbln sjahr smblpFROM mseg INTO CORRESPONDING FIELDS OF TABLE l_mseg_stor_tabFOR ALL ENTRIES IN p_mseg_tabWHERE smbln EQ p_mseg_tab-mblnrAND sjahr EQ p_mseg_tab-mjahrAND smblp EQ p_mseg_tab-zeile.IF sy-subrc IS INITIAL.LOOP AT l_mseg_stor_tab.DELETE p_mseg_tab WHERE mblnr = l_mseg_stor_tab-smblnAND mjahr = l_mseg_stor_tab-sjahrAND zeile = l_mseg_stor_tab-smblp.DELETE p_qamb_tab WHERE mblnr = l_mseg_stor_tab-smblnAND mjahr = l_mseg_stor_tab-sjahrAND zeile = l_mseg_stor_tab-smblp.ENDLOOP.IF p_mseg_tab[] IS INITIAL.p_subrc = 4.EXIT.ENDIF.ENDIF.ENDFORM. " CHECK_MSEG
*-------------------------------------------------------------------*
* Form CHECK_MKPF *
*-------------------------------------------------------------------*
* Materialbelege prüfen (Wurde durch VE-Buchung Prüfllos erzeugt?*
*-------------------------------------------------------------------*
FORM check_mkpf USING p_mkpf_tab TYPE t_mkpf_tabp_subrc LIKE sy-subrc.DATA:l_mkpf_tab TYPE t_mkpf_tab.CLEAR: p_subrc.SELECT mblnr FROM qamb INTO CORRESPONDING FIELDS OF TABLE l_mkpf_tabFOR ALL ENTRIES IN p_mkpf_tabWHERE mblnr EQ p_mkpf_tab-mblnrAND mjahr EQ p_mkpf_tab-mjahrAND typ = '1'.IF sy-subrc IS INITIAL.p_subrc = 4.ENDIF.ENDFORM. " CHECK_MKPF
取消检验批过账(决策)相关推荐
- 取消检验批过账(取消检验批UD判定到Rerel,再把非限性库存转到质检库存,然后就可以取101收货了)
直接取消101收货时,出现以下提示: (1)第一种方法:先把主数据的QM视图的QM相关信息取消,如下图: 取消QM采购激活及检验设置后,通过传输过账,把数量从非限库存转到质检库存. 过账完成后,数量从 ...
- SAP QM 内向交货单包装的时候触发的检验批不能被自动取消?
SAP QM 内向交货单包装的时候触发的检验批不能被自动取消? 如下的交货单 2500053233,包装完成后触发了三个检验批. 内向交货单并没有完成收货过账. Inspection lot 1000 ...
- SAP-QM 质检管理-检验批
1.基本概念 检验批编号的作用:通过检验批次号,记录信息. QM模块是贯穿整个ERP的核心,学习QM模块通常需要其他模块的知识作为基础铺垫(比如PP.PM.SD.MM等). 2.QM模块主要内容 包含 ...
- SAP QA11 检验决策并过帐 BAPI
在对检验批做决策时可以使用BAPI:BAPI_INSPLOT_SETUSAGEDECISION.此BAPI 其实也可以过帐,但不能针对不同的类型过帐,比如有部分数量进入非限制库存,有部分数量进入冻结库 ...
- SAP质量管理模块常见问题及解决方案
https://blog.csdn.net/zhongguomao/article/details/46237783 SAP系统中的质量管理模块是SAP的重要组成部分,它几乎影响公司中的所有过程,质量 ...
- SAP QM模块常见问题及解决方案
SAP系统中的质量管理模块是SAP的重要组成部分,它几乎影响公司中的所有过程,质量管理可以与很多应用集成,比如物料管理,生产,销售/分销等.而质量管理中最重要的概念则是检验批,用户通过检验批进行检验结 ...
- SAP vf11发票冲销
So产生的开票(vf01)可直接vf11冲销,对其他无影响.若财务已经vf02过账到财务,生成了会计凭证,也可以vf11冲销,但只能取消销售发票,会计凭证仍然存在,这里就还需要冲销这张会计凭证,要不然 ...
- 万字长文解读深度学习算法在自动驾驶规控中的应用
交流群 | 进"传感器群/滑板底盘群"请加微信号:xsh041388 交流群 | 进"汽车基础软件群"请加微信号:ckc1087 备注信息:群名称 + 真实姓名 ...
- (转载整理)SAP ERP常用T-CODE
其实最讨厌做ERP的项目了.不过,身不由己的嘛! 网上资料加一些整理. 与客户相关 VD01 建立客户 Create customer VD02 更改客户 Change customer VD03 ...
最新文章
- ThinkPHP实现静态缓存和动态缓存
- discuz“附件文件无法保存到远程服务器”故障的解决
- java课程实战培训,终获offer
- python哪本好-最好的Python入门教材是哪本?
- 如何学好计算机专业?
- 自从我这样撸代码以后,公司网页的浏览量提高了107%!
- java 读取manifest_使用JAVA从jar文件读取MANIFEST.MF文件
- 国内有哪些做H5走心的外包服务团队或公司?
- 视觉SLAM十四讲_3-李群和李代数
- NIO蔚来ET5/ET7电动汽车维修手册电路图用户手册技术资料
- php 统计一个月工作日,php – 使用strtotime在一个月内获得第一个工作日
- 从端到云:飞腾平台全栈解决方案白皮书
- BZOJ1921: [Ctsc2010]珠宝商(点分治+SAM)
- UE<C++>三步在C++中制作射击类游戏(射线检测、接口调用)
- 今天是植树节,你“植树”了吗?
- mysql创建数据库error1044_Mysql创建数据库时提示Error 1044
- 一枚研发狗的自我认知历程
- 通达信板块监控指标_通达信辅助判断指标公式行业板块看盘幅图
- 联合循环—25(了解PID原理图1)
- oracle物化视图建立触发器,物化视图上用触发器(用于同步)