PP - QM: Reversal of the usage decision

Hi Gurus,
We have completed Result Recording using QE51N transaction and Usage decision using QA11. It has posted a stock from QI to Unrestricted use. Now I want to take it back from Unrestricted use to QI. This needs reversal of usage decision (What I think).
Can you suggest me the proper way of performing the said transaction?
I will really appreciate your concern.
Thanks
Shiv

R/3 note no.   175842                        14.12.2001           Page 1
     Number              0175842
     Version             0021 from 29.11.2001
     Status              Released for customer
     Set by              SAP AG on 03.12.2001
     Language            EN
     Short text          Inspection lot: Reversal of goods movements from UD
     Administrator       SAP AG
     Component           QM-IM-UD Inspection Lot Completion
     Long text
     Symptom
     Goods movements, which were created from the transactions of the usage
     decision, can no longer be reversed.
     Additional key words
     QA11, QA12, QA14, MBST, MF41
     Inspection lot, usage decision, goods movements, reversal, material
     document
     Cause and preconditions
     Presently, the function is not provided in the standard system.
     Solution
     The function is not provided in the standard system up to and including
     Release 4.6C.
     When you do this bear the following in mind:
     1. Using the attached program corrections, stock transfer postings can
        be reset for the usage decision.If it is possible to post this
        document in the stock management, the inspection lot is also
        corrected and the Quality Management Information System is if
        necessary updated.After the reset has been successfully carried out,
        the inspection lot, related to the stocks, has the status before the
        first stock credit entry.The usage decision is not reset.If, after
        the usage decision, further transfer postings are carried out in the
        stock management which lead to the usage decision transfer postings
        not being able to be reset due to missing availability, these
        postings must be reversed first.
     2. The goods movement is carried out in each case with the reversal
        movement type (document neutral reversal).The original documents are
        not reversed related to the document.This may lead to deviations in
        the accounting caused by valuation.
     3. Resetting postings for materials requiring serial numbers is not
        supported.
     4. With this correction program, you cannot reverse goods movements for
        inpection lots for handling units (HU).
     5. Batch status changes which have possibly been carried out are not
        cancelled.
     6. Batches which have been created in the usage decision during a
        transfer posting are not deleted.The classification of these batches
        is not changed either.
                                                                       Page 2
     7. Within the adjustment posting, in Release 4.x, the reference records
        are also adjusted between the material document and inspection
        lot.This can possibly lead to an incorrect description of the
        reference type when displaying material documents for the inspection
        lot.In Release 3.x, the reference records are deleted in order to
        make sure that individual documents cannot be cancelled several
        times.
     8. The program does not contain any own authorization checks and should
        be used with utmost care and ONLY after a successful test. The
        program should ONLY be applied in exceptions and should not be part
        of the standard procedure.
     9. The logic implemented in the program for the generation of material
        documents or for the update of inspection lot quantities and
        inspection lot status should under no circumstances be be changed as
        this might lead to inconsistent data. Since this is a program that is
        not contained in the standard system, problems that are created as a
        result of the program application can be dealt with as problems that
        have arisen as a result of a customer modification.
     To implement the program, proceed as follows:
     1. Create an executable program and copy the attached source code.Then
        maintain the text for selection parameter PRUEFLOS by transferring
        the Dictionary text.
     2. If you a use a Release < 4.6, you must create the function group
        ZQMB. In this function group, you must create function module
        'ZQMB_QAMB_CANCEL'. Flag the function module as an update function
        module (Start immediately) and include table interface parameter
        'I_QAMB_TAB' (type specification LIKE, reference structure QAMB).
        Afterwards you must include exception 'ERROR_DURING_UPDATE' and
        implement the attached source code.
     3. Use Transaction OMJJ to enter further entries in level 'Allowed
        transactions' (table T158B) for transaction code 'QA11' (Record Usage
        Decision).The movement types for which these entries must be created
        are derived from the system settings for the goods movements for the
        usage decision (table TQ07M):The reversal movement type must be
        determined for every movement type that is entered in table TQ07M
        with the key VMENGE01 - VMENGE09 and the corresponding entry must be
        included in the above-mentioned table.You can use table T156N for
        determining the reversal movement type:You can determine the reversal
        movement type by entering the movement type (BWART) and function code
        (FCODE) ST (BWART_NEXT).For missing entries, the system generates
        error M7096 'Goods movement not possible with mvmt type &'.
     Source code corrections
                                                                       Page 3
     Valid releases
     R/3 Standard        46C - 46D
                         46A - 46B
                         45A - 45B
                         40A - 40B
                         30F - 31I
     Other components
     QM-IM               Quality Inspection
     Reference to related notes
     Number    Short text
     0033924   Cancelling usage decisions
     0048815   Checking possible inconsistencies between MM and QM
                                                                       Page 4
     Assigned correction instructions
$$----
$$
$ Correction Instr.        : 0120024545 0000111772                   $
$ Software Component       : SAP_APPL   SAP Application              $
*$----
$*
$ Validity    : 40A          SAPKH40A01 - SAPKH40A25                 $
$             : 40B          All Patches                             $
$             : 45A          All Patches                             $
$             : 45B          All Patches                             $
*$----
$*
$ Changes/Objects Not Contained in Standard SAP System               $
$$----
$$
     *& Object          FUNC ZQMB_QAMB_CANCEL
     *& Object Header   FUGR ZQMB
     *& FUNCTION ZQMB_QAMB_CANCEL
     *>>>> START OF INSERTION <<<<
       UPDATE QAMB FROM TABLE I_QAMB_TAB.
       IF NOT SY-SUBRC IS INITIAL.
         RAISE ERROR_DURING_UPDATE.
       ENDIF.
     *>>>> END OF INSERTION <<<<<<
     *& Object          REPS RQEVAC50
     *& Object Header   PROG RQEVAC50
     *& REPORT RQEVAC50
     *>>>> START OF INSERTION <<<<
     REPORT RQEVAC50 MESSAGE-ID QA.
     TYPES:
       T_QAMB_TAB  LIKE QAMB  OCCURS 0,
       T_MKPF_TAB  LIKE MKPF  OCCURS 0,
       T_MSEG_TAB  LIKE MSEG  OCCURS 0.
     PARAMETERS:
       PRUEFLOS LIKE QALS-PRUEFLOS OBLIGATORY MEMORY ID QLS.
     DATA:
       G_MSGV1       LIKE SY-MSGV1,
       G_QALS        LIKE QALS,
       G_QALS_LEISTE LIKE QALS,
       G_QAMB_TAB    TYPE T_QAMB_TAB,
       G_QAMB_VB_TAB TYPE T_QAMB_TAB,
       G_MKPF_TAB    TYPE T_MKPF_TAB,
       G_MSEG_TAB    TYPE T_MSEG_TAB,
       G_SUBRC       LIKE SY-SUBRC.
     START-OF-SELECTION.
                                                                       Page 5
       PERFORM ENQUEUE_QALS USING PRUEFLOS
                                  G_SUBRC.
       IF NOT G_SUBRC IS INITIAL.
         MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
         SUBMIT (SY-REPID) VIA SELECTION-SCREEN.
       ENDIF.
       PERFORM READ_QALS USING PRUEFLOS
                               G_QALS
                               G_QALS_LEISTE
                               G_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_QALS
                               G_SUBRC.
       IF NOT G_SUBRC IS INITIAL.
         CASE G_SUBRC.
           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_QALS
                               G_QAMB_TAB
                               G_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_TAB
                               G_MKPF_TAB
                               G_SUBRC.
       IF NOT G_SUBRC IS INITIAL.
                                                                       Page 6
         MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
         SUBMIT (SY-REPID) VIA SELECTION-SCREEN.
       ENDIF.
       PERFORM CHECK_MKPF USING G_MKPF_TAB
                                G_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_TAB
                               G_MSEG_TAB
                               G_SUBRC.
       IF NOT G_SUBRC IS INITIAL.
         MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
         SUBMIT (SY-REPID) VIA SELECTION-SCREEN.
       ENDIF.
       PERFORM CHECK_MSEG USING G_MSEG_TAB
                                G_QAMB_TAB
                                G_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_QALS
                                           G_MSEG_TAB
                                           G_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_QALS
                               G_QALS_LEISTE
                               G_QAMB_TAB
                               G_QAMB_VB_TAB
                               G_SUBRC.
       IF NOT G_SUBRC IS INITIAL.
         MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
                 WITH 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'
                                                                       Page 7
                 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-PRUEFLOS
                             P_SUBRC    LIKE SY-SUBRC.
       CLEAR: P_SUBRC.
       CALL FUNCTION 'ENQUEUE_EQQALS1'
            EXPORTING
                 PRUEFLOS       = P_PRUEFLOS
            EXCEPTIONS
                 FOREIGN_LOCK   = 1
                 SYSTEM_FAILURE = 2
                 OTHERS         = 3.
       P_SUBRC = SY-SUBRC.
     ENDFORM.                               " ENQUEUE_QALS
      Form  READ_QALS                                                *
      Prüflos lesen                                                  *
     FORM READ_QALS USING P_PRUEFLOS    LIKE QALS-PRUEFLOS
                          P_QALS        LIKE QALS
                          P_QALS_LEISTE LIKE QALS
                          P_SUBRC       LIKE SY-SUBRC.
       CLEAR: P_SUBRC.
       CALL FUNCTION 'QPSE_LOT_READ'
            EXPORTING
                 I_PRUEFLOS  = P_PRUEFLOS
                 I_RESET_LOT = 'X'
            IMPORTING
                 E_QALS      = P_QALS
            EXCEPTIONS
                 NO_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                                                *
                                                                       Page 8
      Prüflos prüfen                                                 *
     FORM CHECK_LOT USING P_QALS  LIKE QALS
                          P_SUBRC LIKE SY-SUBRC.
       DATA:
         L_STAT      LIKE JSTAT,
         L_STAT_TAB  LIKE JSTAT OCCURS 0 WITH HEADER LINE.
       P_SUBRC = 128.
     */Serialized Material
       IF NOT P_QALS-SERNP IS INITIAL.
         EXIT.
       ELSE.
         P_SUBRC = 64.
       ENDIF.
     */BERF
       CALL FUNCTION 'STATUS_CHECK'
            EXPORTING
                 OBJNR             = P_QALS-OBJNR
                 STATUS            = 'I0203'
            EXCEPTIONS
                 STATUS_NOT_ACTIVE = 2.
       IF NOT SY-SUBRC IS INITIAL.
         EXIT.
       ELSE.
         P_SUBRC = 32.
       ENDIF.
     */BTEI & BEND
       CLEAR L_STAT. CLEAR L_STAT_TAB. REFRESH L_STAT_TAB.
       L_STAT-STAT = 'I0219'. APPEND L_STAT TO L_STAT_TAB. "BTEI
       L_STAT-STAT = 'I0220'. APPEND L_STAT TO L_STAT_TAB. "BEND
       CALL FUNCTION 'STATUS_OBJECT_CHECK_MULTI'
            EXPORTING
                 OBJNR        = P_QALS-OBJNR
            TABLES
                 STATUS_CHECK = L_STAT_TAB.
       IF L_STAT_TAB[] IS INITIAL.
         EXIT.
       ELSE.
         P_SUBRC = 16.
       ENDIF.
     */LSTO & LSTV
       CLEAR L_STAT. CLEAR L_STAT_TAB. REFRESH L_STAT_TAB.
       L_STAT-STAT = 'I0224'. APPEND L_STAT TO L_STAT_TAB. "LSTO
       L_STAT-STAT = 'I0232'. APPEND L_STAT TO L_STAT_TAB. "LSTV
       CALL FUNCTION 'STATUS_OBJECT_CHECK_MULTI'
            EXPORTING
                                                                       Page 9
                 OBJNR        = P_QALS-OBJNR
            TABLES
                 STATUS_CHECK = L_STAT_TAB.
       IF NOT L_STAT_TAB[] IS INITIAL.
         EXIT.
       ELSE.
         P_SUBRC = 8.
       ENDIF.
     */ARSP & ARCH & REO1 & REO2 & REO3
       CLEAR L_STAT. CLEAR L_STAT_TAB. REFRESH L_STAT_TAB.
       L_STAT-STAT = 'I0225'. APPEND L_STAT TO L_STAT_TAB. "ARSP
       L_STAT-STAT = 'I0226'. APPEND L_STAT TO L_STAT_TAB. "ARCH
       L_STAT-STAT = 'I0227'. APPEND L_STAT TO L_STAT_TAB. "REO3
       L_STAT-STAT = 'I0228'. APPEND L_STAT TO L_STAT_TAB. "REO2
       L_STAT-STAT = 'I0229'. APPEND L_STAT TO L_STAT_TAB. "REO1
       CALL FUNCTION 'STATUS_OBJECT_CHECK_MULTI'
            EXPORTING
                 OBJNR        = P_QALS-OBJNR
            TABLES
                 STATUS_CHECK = L_STAT_TAB.
       IF NOT L_STAT_TAB[] IS INITIAL.
         EXIT.
       ELSE.
         P_SUBRC = 4.
       ENDIF.
     */SPER
       CALL FUNCTION 'STATUS_CHECK'
            EXPORTING
                 OBJNR             = P_QALS-OBJNR
                 STATUS            = 'I0043'
            EXCEPTIONS
                 STATUS_NOT_ACTIVE = 2.
       IF SY-SUBRC IS INITIAL.
         EXIT.
       ELSE.
         P_SUBRC = 2.
       ENDIF.
     */HUM
       CALL FUNCTION 'STATUS_CHECK'
            EXPORTING
                 OBJNR             = P_QALS-OBJNR
                 STATUS            = 'I0443'
            EXCEPTIONS
                 STATUS_NOT_ACTIVE = 2.
       IF SY-SUBRC IS INITIAL.
         EXIT.
       ELSE.
         P_SUBRC = 0.
       ENDIF.
                                                                      Page 10
     ENDFORM.                               " CHECK_LOT
      Form  READ_QAMB                                                *
      QAMBs lesen                                                    *
     FORM READ_QAMB USING P_QALS     LIKE QALS
                          P_QAMB_TAB TYPE T_QAMB_TAB
                          P_SUBRC    LIKE SY-SUBRC.
       CLEAR: P_SUBRC.
       SELECT * FROM QAMB INTO TABLE P_QAMB_TAB
         WHERE PRUEFLOS =  P_QALS-PRUEFLOS
           AND TYP   = '3'.
       P_SUBRC = SY-SUBRC.
     ENDFORM.                               " READ_QAMB
      Form  READ_MKPF                                                *
      Read material document header                                  *
     FORM READ_MKPF USING P_QAMB_TAB TYPE T_QAMB_TAB
                          P_MKPF_TAB TYPE T_MKPF_TAB
                          P_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'
              EXPORTING
                   MBLNR          = L_MKPF_KEY_TAB-MBLNR
                   MJAHR          = L_MKPF_KEY_TAB-MJAHR
              EXCEPTIONS
                   FOREIGN_LOCK   = 1
                                                                      Page 11
                   SYSTEM_FAILURE = 2
                   OTHERS         = 3.
         IF NOT SY-SUBRC IS INITIAL.
           L_XEXIT = 'X'.
           EXIT.
         ENDIF.
         CLEAR: L_MKPF.
         CALL FUNCTION 'MB_READ_MATERIAL_HEADER'
              EXPORTING
                   MBLNR         = L_MKPF_KEY_TAB-MBLNR
                   MJAHR         = L_MKPF_KEY_TAB-MJAHR
                   TRTYP         = L_TRTYP
                   VGART         = L_VGART
              IMPORTING
                   KOPF          = L_MKPF
              EXCEPTIONS
                   ERROR_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_TAB
                          P_MSEG_TAB TYPE T_MSEG_TAB
                          P_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'
              EXPORTING
                                                                      Page 12
                   MBLNR  = L_MKPF-MBLNR
                   MJAHR  = L_MKPF-MJAHR
                   TRTYP  = L_TRTYP
     */            ZEILB  = P_ZEILE
     */            ZEILE  = P_ZEILE
              TABLES
                 SEQTAB = L_MSEG_TAB
            EXCEPTIONS
                 ERROR_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öscht
         DELETE P_MSEG_TAB WHERE XAUTO NE SPACE
                              OR 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 QALS
                                      P_MSEG_TAB TYPE T_MSEG_TAB
                                      P_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.
                                                                      Page 13
     */QAMB initialisieren
       CALL FUNCTION 'QAMB_REFRESH_DATA'.
     */Kopf füllen
       L_IMKPF-BLDAT = SY-DATLO.
       L_IMKPF-BUDAT = SY-DATLO.
       L_IMKPF-BKTXT = 'Cancellation of QM UD postings'.
     */Ursprüngliche zu buchende Menge merken + inkrementieren
       L_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 aufbauen
       L_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üllt
         IF 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 setzen
         MOVE:
             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 setzen
         MOVE: 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 initialisieren
         CLEAR: L_IMSEG-MBLNR,
                L_IMSEG-MENGE,
                L_IMSEG-MEINS.
     */  Bewegungsart lesen
         SELECT SINGLE XSTBW FROM T156 INTO L_XSTBW
           WHERE BWART = L_IMSEG-BWART.
                                                                      Page 14
         IF NOT SY-SUBRC IS INITIAL.
           P_SUBRC = 4.
           EXIT.
         ENDIF.
     */  Werk/Lagerort füllen
         IF 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 Felder
         MOVE P_QALS-MENGENEINH TO L_IMSEG-ERFME.
         "MOVE P_GRUND           TO L_IMSEG-GRUND.
         "MOVE P_ELIKZ           TO L_IMSEG-ELIKZ.
     */  Kennzeichen Storno-Buchung setzen
         MOVE '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 SPACE
              AND L_IMSEG-WERKS NE SPACE
              AND L_IMSEG-LGORT NE SPACE
              AND L_IMSEG-UMWRK NE SPACE
              AND L_IMSEG-UMLGO NE SPACE
              AND L_IMSEG-WERKS EQ L_IMSEG-UMWRK
              AND L_IMSEG-UMLGO EQ L_IMSEG-UMLGO.
     */      Dummy Buchung bei WE-Sperrbestand & Stichprobe
           ELSE.
             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 tauschen
         DO.
           READ TABLE L_IMSEG_TAB INDEX SY-INDEX INTO L_IMSEG.
           IF     SY-SUBRC      IS INITIAL
              AND L_IMSEG-KZBEW EQ SPACE
              AND L_IMSEG-WERKS NE SPACE
              AND L_IMSEG-LGORT NE SPACE
              AND L_IMSEG-UMWRK NE SPACE
              AND L_IMSEG-UMLGO NE SPACE
                                                                      Page 15
              AND L_IMSEG-WERKS EQ L_IMSEG-UMWRK
              AND 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 do
           ENDIF.
         ENDDO.
       ENDIF.
     */QM deaktivieren
       CALL FUNCTION 'QAAT_QM_ACTIVE_INACTIVE'
            EXPORTING
                 AKTIV = SPACE.
     */Buchen
       CALL FUNCTION 'MB_CREATE_GOODS_MOVEMENT'
            EXPORTING
                 IMKPF = L_IMKPF
                 XALLP = 'X'
                 XALLR = 'X'
                 CTCOD = L_TCODE
                 XQMCL = ' '
            IMPORTING
                 EMKPF = L_EMKPF
            TABLES
                 IMSEG = L_IMSEG_TAB
                 EMSEG = L_EMSEG_TAB.
     */QM wieder aktivieren
       CALL FUNCTION 'QAAT_QM_ACTIVE_INACTIVE'
            EXPORTING
                 AKTIV = 'X'.
     */Buchung auswerten
       IF L_EMKPF-SUBRC GT 1.
         IF L_EMKPF-MSGID NE SPACE.
     */    Fehler auf Kopfebene
           MESSAGE ID L_EMKPF-MSGID TYPE 'S'
                   NUMBER L_EMKPF-MSGNO
                   WITH L_EMKPF-MSGV1 L_EMKPF-MSGV2
                        L_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-MSGNO
                     WITH L_EMSEG-MSGV1 L_EMSEG-MSGV2
                          L_EMSEG-MSGV3 L_EMSEG-MSGV4.
                                                                      Page 16
               SUBMIT (SY-REPID) VIA SELECTION-SCREEN.
             ENDIF.
           ENDLOOP.
         ENDIF.
       ENDIF.
       LOOP AT L_EMSEG_TAB INTO L_EMSEG.
         CALL FUNCTION 'QAMB_COLLECT_RECORD'
              EXPORTING
                   LOTNUMBER   = P_QALS-PRUEFLOS
                   DOCYEAR     = L_EMKPF-MJAHR
                   DOCNUMBER   = L_EMKPF-MBLNR
                   DOCPOSITION = L_EMSEG-MBLPO
                   TYPE        = '7'.
       ENDLOOP.
     */Sonderkorrektur für Frei-An-Frei & WE-Sperr-An-We-Sperr
       IF 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_LMENGEGEB
            AND 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'.
                                                                      Page 17
     ENDFORM.                               " POST_GOODS_MOVEMENT
      Form  POST_DATA                                                *
      QM-Daten verbuchen                                             *
     FORM POST_DATA USING P_QALS        LIKE QALS
                          P_QALS_LEISTE LIKE QALS
                          P_QAMB_TAB    TYPE T_QAMB_TAB
                          P_QAMB_VB_TAB TYPE T_QAMB_TAB
                          P_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ücknehmen
       CLEAR L_STAT. CLEAR L_STAT_TAB.
       L_STAT-INACT = 'X'.
       L_STAT-STAT = 'I0219'. APPEND L_STAT TO L_STAT_TAB. "BTEI
       L_STAT-STAT = 'I0220'. APPEND L_STAT TO L_STAT_TAB. "BEND
       CALL FUNCTION 'STATUS_CHANGE_INTERN'
            EXPORTING
                 OBJNR         = P_QALS-OBJNR
            TABLES
                 STATUS        = L_STAT_TAB
            EXCEPTIONS
                 ERROR_MESSAGE = 1.
       IF SY-SUBRC <> 0.
         MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
         SUBMIT (SY-REPID) VIA SELECTION-SCREEN.
       ENDIF.
     */Prüflos aktualisieren
       CALL FUNCTION 'QPL1_UPDATE_MEMORY'
            EXPORTING
                 I_QALS  = P_QALS
                 I_UPDKZ = L_UPDKZ.
       CALL FUNCTION 'QPL1_INSPECTION_LOTS_POSTING'.
       CALL FUNCTION 'STATUS_UPDATE_ON_COMMIT'.
     */QAMB initialisieren
       CALL FUNCTION 'QAMB_REFRESH_DATA'.
                                                                      Page 18
       PERFORM UPDATE_QAMB ON COMMIT.
       P_SUBRC = 0.
     ENDFORM.                               " POST_DATA
      Form  UPDATE_QAMB                                              *

Similar Messages

  • The Usage decision cancellation & quantity reversal

    Daer All,
    While cancelling the Goods receipt, system gives the error Deficit of SL Stck.in qual.insp 10 M : 5000017/1 PMT1 RMST as the usage decision of quality lot generated for the goods receipt is done.
    I want to cancel/reverse the usage decision made & the quantity release from the lot to be initialised, so I can cancel the Goods receipt.
    I have applied the Note 175842 & User Exit QEVA0008
    But when I cancel the usage decision in QA11, only the usage decision is cancelled. The quantity which is moved to un-restricted stock after usage decision is not reversed.
    I want to reverse the quantity, so i can cancell the goods receipt.
    Regards,
    Prakash

    Hi Prakash,
    Please note that SAP doesnt provide an option to reverse a UD once its done.
    Now to solve your issue, Since you have already done QA inspection the stock is moved to Un-res.
    So when you cancel the Material/GR document, select the stock type as un-res then system will allow to post the document.
    Regards,

  • Return process for the PO which has done the usage decision with QM

    Hi Guru,
    We are running below process right now, and stop there, don't know how to return to vendor:
    PO for external vendor -> Goods purchased physically arrive -> Create a inbound delivery for this PO -> Post the GR with the inbound delivery created -> QA team performed the usage decision and rejected.
    At this moment, how can we reverse the good receipt? We canu2019t use VL09 to reverse the inbound delivery, and we can not use MBST to reverse the material doucment which created during Post good receipt.
    What's the correct process to return it to vendor?
    Thanks,

    Hi Rick,
    Can use t.code MIGO and select return delivery for material document or delivery note.
    Then select the respective document, it will display the details, now you can select the material which you want return and unselect the materials which you dont want to return and the quantities accordingly.
    Save the document.
    This will use movement type 122.
    Regards
    vk

  • Error while doing the Usage Decision in transaction QA32

    Hello Friends,
    While doing the goods receipt for customer returns from customer, system generated a inspection lot with inspection type 06.
    So in QA32 transaction, system is showing that inspection lot, but in same screen, against the column InspPlan: Material, system is not showing any entry.
    Later on after analysis, i found that no inspection plan was assinged to the material, Plant for which that inspection lot was created. When i checked that inpection lot in transaction QA03, in Insp. Specifications tab, agaisnt the Assigned Specification section, system was not showing any entry in fields Group, Group Counter, Plant, Usage.
    And against that inspection lot,status CRTD, PREQ, CHCR are active.
    Because of  which, when user is trying to do the UD against this lot system throwing the error message as Status check error.
    When i checked again i found that status CRTD is throwing the error message.
    Hence friend, i want to do the Usage decision  for that inspection lot than how to do?
    Now user has assigned the material, plant to the inspection plan in QP02.
    Should i go to QA02 transaction, and in Insp. Specification tab, for fields group, group counter, usage, Plant, maintain the values?
    Will this allow me to do the usage decision against the inspection lot which got generated when no inspection plan was assingned to that material, plant?
    Waiting for your valuable inputs.

    For Result Recording and Ud the inspection lot status must be REL as u told ur status is CRTD it Mean Some master
    is missing in inspection lot,generally inspection plan for that u run QA02 enter inspection lot no go to specification tab
    there a button assigned specification there click on that as u click on button u will find that plan for above material copied to lot and it will show u plan detail line group and group counter no.
    then go to next screen Sample if sample management is active and click on sample then system will calculate sample size then save ur lot. it would get Status As REL now ui can enter result or take UD
    for QM setting Refer
    http://sap-questions.blogspot.com/

  • Mapping the Follow-up action to the Usage-Decision

    Hi All,
               I have a the following requirement in my development:
    The Usage decision needs three function-modules for the three cases of the follow-up process.
    In addition to that this ,service shall have a control table in Customizing, where the customer is able to decide which follow-up action should be made. (not standard customzing). The function-module for this process is not standard.
    1) Does the second requirement also require FM?
    2) Please give me the steps to map the Follow-up action to the Usage-Decision in SPRO
    Thanks,
    Vasuki

    Hi
    First create the follow up action which you want, and assign the same in QS51 t.code to your UD code group.
    Thanks
    S.Murali

  • Error message during the usage decision

    Dear Gurus,
    While performing the usage decision in txn  code QA11, i entered the relavant quantities in unrestricted-use.
    Then when i tried to assign the UD code i am getting the following error message.
    "You have no authorization for this catalog entry Message no. QS291"
    But QA11 authorization is already there, apart from that which authorization is required.
    Please give your inputs
    Thanks and Regards
    Hari

    Hi,
    As the error message says Authorisation for Calatalg 3 and the related code group is missing.
    When u get this message just run /nsu53 on your screen so you know which objects are missing. Maintain those vlaues or ask Basis to mainatin these values.
    Regards,
    Nitin

  • What will effect the usage decision on vendor, Stock, purchasing,production

    Hello Expert,
    what will effect the usage decision on vendor, Stock, purchasing,production
    Thanks regards,
    Ram Rathode
    Moderator: Please, avoid asking basic questions

    Hi,
    Usage Decision completes the inspection and  life of Inspection lot will be over - when you take UD. Thus: by UD:
    ·        A quality score is determined for the inspection lot
    ·        The quality level (inspection stages for the next inspection lot) is updated
    ·        The quality management information system is updated with statistical data
    ·        Automatic follow-up actions are triggered
    Affect of Usage Decision on:
    Vendor: rating would come down.
    Stock: no affect (unless you make it mandatory for "Accept" UD to be used for stock posting).
    Purchasing: if the stock is returned to vendor, Purchase order would still be active. Also, Vendor rating would be affected
    Production: UD has no affect on production except when it is linked to stock posting.
    Outgoing certificates: In Certificate profile, if "accepted" lots are to be considered for Quality Certificate creation, then it may cause problem.
    Regards,
    KrishnaM
    Edited by: Krishna. Madduri on Jun 13, 2011 3:56 PM

  • Blocking the usage decision

    Dear
    How to block the user giving usage descion as accepted if any of the  Inspection characteristics were rejected during the Recording result
    thanks in advance
    Faisal

    Dear Faisal,
    1.     It may happen under specific circumstances that you accept the inspection lot despite of rejected characteristic. That can be referred as acceptance of the lot under deviation. Hence there is no link between valuation of characteristic and usage decision.
    2.     If at all you want to link it, you may have to go for share of scrap UD. The control for the same lies in material master.
    3.     But taking your additional requirement (changing of lot UD after rework) in to consideration I would suggest to continue with your existing setting.
    The scenario you came across is quite often and there could be another way to deal with this situation.
    1.     You do result recording and reject the characteristics. Post the stock to block stock giving UD as REJ- Rejected.
    2.     Simultaneously record the defects and assign the task as u201CReworku201D
    3.     As soon as you finish rework close the task in QM02
    4.     You can create a UD code letu2019s say (AOD- Accepted on deviation) or" ARW (accepted after rework)
    5.     Change the UD code again in QA12 from REJ to ARW
    6.     I am bit doubtful if you use user exit, you use hard coded logic. If at all you are going for exit kindly take precaution that you keep some space for changing UD code.
    Just check this feasibility!
    Regards,
    Anand

  • Reverse the usage decision

    Dear
    I wrongly give a UD as accepted and material is posted as unrestricted automatically
    1.Give me a solution that how i can reverse this material from unrestricted,
    2.If i change my UD material will be reverse to inspection stock?
    3.How we can reverse a UD
    Faisal

    1.To reverse Stock posting : Using SAP note 175842 you can reverse stock to inspection stock then you can cancel the original material document
    2.To cancel UD : Exit QEVA0008 can be used. Also explore  SAP Note 33924
    This will only cancel the UD.

  • Reset Usage Decision and reverse posting in tcode QA12

    Hi Friends,
    I have a requirement to reset usage decision by creating a customer funtion button in tcode QA12 and reverse the posting quantity from restricted area to to be posted area.
    I have implemented SAP Note# 175842.So now decision is getting reset but for reverse posting, i need to run RQEVAC50 program separately.But i need it in one go,like if user presses 'customer function' button, system should both reset the decision as well as reverse the posting quantity.
    Can anybody tell me how to do this...
    Many Thanks,
    Madhu

    I am not sure but I have tried the same thing combining is possible when you do not have any stock posting praposal for selected set of UD.
    What you have to do is make a separate program where implement aforesaid SAP note( as suggested in the note) and in the same program call for the screen to cancel the Usage decision(Read the user exit carefully)
    QEVA0008-->Usage decision: Customer function key (e.g. to cancel UD) you can create a routine to call the screen & make changes in the background.
    Seek help of Abaper !!

  • Usage decision - Reversal

    Hi
    How to reverse the Usage decision if we did by mistake ?. Any help will be appreciated
    Thanks
    JJ

    Hi JJ,
    for cancelling usage decision use user exit QEVA0008.With the help of Abaper Proceed with following steps.Once you apply this exit you can reset the UD.
    1) GOTO T. CODE CMOD
    2) CREATE NEW PROJECT FOR EXAMPLE "ZUDRE"
    3)GIVE SHORT BTEXT & SAVE IN REQUIRED PACKAGE
    4)CLICK ON ENHANCEMENT ASSIGNMENT PUSHBUTTON
    5)ASSIGN USER EXIT QEVA0008
    6)CLICK ON COMPONENTS PUSHBUTTON
    7)DOUBLE CLICK ON" EXIT_SAPMQEVA_008"
    8)DOUBLE CLICK ON "INCLUDE ZXQEVU10"
    9)WARNING MESSAGE WILL APPEAR ON STANDARD TOOL BAR IN YELLOW COLOUR
    10)HIT THE ENTER BUTTON OF KEYBOARD
    11)CREATE OBJECT MESSAGE APPEARS . CLICK ON YES
    12)SAVE CREATED OBJECT IN REQUIRED PACKAGE
    13)CLICK BACK TWO TIMES TO COME TO SCREEN OF DISPLAY PROJECT
    14)SINGLE CLICK ON ICON IN FRONT OF FUNCTION EXIT UNDER COLUMN EXP.
    15)COPY THE DISPLAYED PROGRAM
    16)COME BACK TO "INCLUDE ZXQEVU10" AND PASTE COPIED PROGRAM INTO "INCLUDE ZXQEVU10."
    17)SAVE AND COME BACK TO SMODE INITIAL SCREEN AND CLICK ON ACTIVATE PROJECT ICON.
    18) NOW ON UD SCREEN U WILL GET CUSTOMER FUNCTION PUSHBUTTON.CLICK ON THIS BUTTON, UD WILL GET REVERSED.
    Regards
    Amit

  • Reversal of Usage Decision for insp type 10 lot

    Dear Friends,
    I am using the inspection type 10 for the inspection during despatch.
    Please explain the process of reversing the usage decision specifically for a lot of insp type 10.
    Regards,
    Avinash

    If the UD was already made, why do you have to cancel the UD?
    You can change  a UD via QA12.
    You can cancel the delivery document.
    Since inspection type 10's don't control stock, (they can block the PGI on the delivery), I wouldn't see any need to actually cancel the inspection lot once a UD was made.
    Craig

  • Solution to Non-Reversal of Usage Decision

    Hi Experts,
    I have facing an Issue over Goods movement .
    Issue is User has done GR against PO using Transaction MIGO with mvmt Type - 101 and GR is posted to Quality stock for inspection , there user has accepted the usage Decision using QA32 and posted the Stock to Unrestricted using movement type -321. But Now they want to cancel the GR earlier done because they have posted wrong Quantity.
    Now since reversal of UD is not a standard solution and also is not a immediate solution to this problem, so what solution i should suggest to client to have his requirement fulfilled for this Issue without doing reversal of UD. We can think of Developing Zprogram of reversal of UD later.
    your response will be appreciated.
    Thanks in Advance
    Regards
    kaushik Ghosh

    It is time to correct something.
    first of all the initial question was already a frequently discussed question.
    The question " will any accounting entries get effected" is again a basic and frequently discussed question.
    You have to search before posting - this is a rule in SCN
    Unfortunately I was not present to reject this question right away, as this would have been a better solution, as it had forced you to search. But rejecting it now will only create damage since you got wrong advice.
    Not sure where all these myths come from and why they are spread.
    A return is something quite different from a cancellation, even that both lead to zero stock at the end, a return is used in external processing, it is about sending materials back to your vendor, a cancellation of a receipt is pure internal processing to correct a wrong entered value (no physical movement). It is statistically not the same, receiving and cancelling it again is just as good as not received anything as it nullifies. Receiving and doing a return are different processes , an inbound and an outbound process, it is visible separately. It is taken into account in vendor evaluation.
    To cancel the receipt movement after the usage decision you can use MIGO, but do not choose cancel material document, because the material document only knows that the stock is in quality status, which is not the case anymore after a usage decision.
    just do again goods receipt - reference to PO - but change then the movement type to the cancellation movement type (102).
    Then goto the detail into WHERE tab and change status to the stock status your stock has right now.
    Do you really think that "Developing Zprogram of reversal of UD" would do any good (or just create inconsistencies) if the processes and basic handling of MIGO are not even understood?

  • Automatic Batch creation at the time of usage decision in qa32

    hi all,
    while doing usage decision in transaction qa32, user has to enter batch. can this batch assignment be done automatically at any stage of quality inspection? any ideas?
    Best Regards,
    AI.

    Hi,
    When the Material is subjected to Quality management & batch management is active for that material.
    Then during Goods receipt you can use automatic batch for that material so the material will be in Quality inspection with batch update
    when you do the GR in 101
    Whenever you do the usage decision then the same batch will flow.
    rgds
    Chidanand

  • Control the Posting of Quantity through Usage Decision

    Hi Qm Gurus,
       How will i control the posting of quantities from quality inspection to any types of stock? For instance, If the Usage Decision Code made is Rejected, how will the user be controlled or prompted to post quantities only to blocked stock and not to unrestricted or any types; without viewing the Manager's Usage Decision "Rejected".This is very crucial to pharmaindustries because normally, the manager is the one who made the usage decision, and the rank and file will be assigned to post the quantities. how shall this be resolved. Hope anybody can help me. if possible teach me on how to configure this, and there tcodes to be used by different users. I think Qa11 by manager.
    Regards,
    Matildo, edsel
    Qm Consultant

    Dear Murugsan,
    Can i control the posting of qty from UD in storage location level e.g. if a user give the UD from Q/INSP. location (1701) & by mistake he does not change the location TO (2500 BSR) then system put the qty in 1701(unrestricted) my requirement is that system by default pick the 2500 location if UD is given for acceptance as OK.I have seen your reply to another similar type of requirement but does not find any storage location option in QS51.
    R SEHGAL

Maybe you are looking for