MBLNR TYPE MSEG-MBLNR, MJAHR TYPE MSEG-MJAHR, ZEILE TYPE MSEG-ZEILE, BWART TYPE MSEG-BWART, OBJNR TYPE QALS-OBJNR, END OF W_MSEG. DATA : IT_MSEG TYPE STANDARD TABLE OF W_MSEG. DATA : WA_MSEG TYPE W_MSEG. DATA : LS_OBJNR TYPE QALS-OBJNR, LS_RSEG_NEW TYPE RSEG, LI_RSEG_NEW TYPE RSEG, LS_JEST TYPE JEST, LI_JEST TYPE JEST, LS_EKKN TYPE EKKN, LS_MTART TYPE MARA-MTART, LS_WEBRE TYPE EKPO-WEBRE, W_ART TYPE QMAT-ART, W_INSMK TYPE EKPO-INSMK, W_LINES TYPE I, W_OBJNR TYPE QALS-OBJNR. * if any inspection lot is created, then logic is to block the invoice * creation. * in this case, invoice creation is allowed only if the postings are * made. * so ststus in jest is checked for I0220. * CHECK FOR - iv IS BASED ON gr OR NOT * check for inspection lot for each item LOOP AT TI_RSEG_NEW INTO LS_RSEG_NEW. * Start of Code added by Niraj on 07-03-2005 * Check if Inspection setup is not blank for the material and plant * combination. SELECT SINGLE ART FROM QMAT INTO W_ART WHERE WERKS = LS_RSEG_NEW-WERKS AND MATNR = LS_RSEG_NEW-MATNR. IF SY-SUBRC EQ 0. IF W_ART IS NOT INITIAL. * end of Code added by Niraj on 07-03-2005 to check the stock type from * ekpo. * Previous Code SELECT SINGLE WEBRE INTO LS_WEBRE FROM EKPO CLIENT SPECIFIED WHERE MANDT = SY-MANDT AND EBELN = LS_RSEG_NEW-EBELN AND EBELP = LS_RSEG_NEW-EBELP. IF SY-SUBRC EQ 0 AND LS_WEBRE EQ 'X' . * If invoice is not based on GR, do not check further. IF NOT LS_RSEG_NEW-LFBNR IS INITIAL. * select the inspection lot SELECT SINGLE OBJNR INTO LS_OBJNR FROM QALS CLIENT SPECIFIED WHERE MANDANT = SY-MANDT AND MBLNR = LS_RSEG_NEW-LFBNR AND ZEILE = LS_RSEG_NEW-LFPOS AND MJAHR = LS_RSEG_NEW-LFGJA. * if found IF SY-SUBRC EQ 0. * check for account assignment SELECT SINGLE * FROM EKKN CLIENT SPECIFIED INTO LS_EKKN WHERE MANDT = SY-MANDT AND EBELN = LS_RSEG_NEW-EBELN AND EBELP = LS_RSEG_NEW-EBELP. IF SY-SUBRC EQ 0. SELECT SINGLE * FROM JEST CLIENT SPECIFIED INTO LS_JEST WHERE MANDT = SY-MANDT AND OBJNR = LS_OBJNR AND STAT = 'I0218'. ELSE. * get the status SELECT SINGLE * FROM JEST CLIENT SPECIFIED INTO LS_JEST WHERE MANDT = SY-MANDT AND OBJNR = LS_OBJNR AND STAT = 'I0220'. ENDIF. * if stock is not posted/UD not made , do not allow the invoice creation IF SY-SUBRC NE 0. MESSAGE E116(ZMM). * GR is still in quality inspection stage. * RAISE ERROR_WITH_MESSAGE . ENDIF. ENDIF. ENDIF. ENDIF. * Previous Code * Start of Code addition by Niraj on 05-03-2005 * If reference document number exists then IF NOT LS_RSEG_NEW-LFBNR IS INITIAL. * Select all record from qals for movement type 105 into internal table * it_mseg SELECT A~MBLNR A~MJAHR A~BWART A~ZEILE B~OBJNR FROM MSEG AS A INNER JOIN QALS AS B ON A~MBLNR = B~MBLNR AND A~MJAHR = B~MJAHR AND A~ZEILE = B~ZEILE INTO CORRESPONDING FIELDS OF WA_MSEG WHERE A~LFBNR = LS_RSEG_NEW-LFBNR AND A~MATNR = LS_RSEG_NEW-MATNR AND A~WERKS = LS_RSEG_NEW-WERKS AND A~BWART = '105'. APPEND WA_MSEG TO IT_MSEG. ENDSELECT. IF SY-SUBRC = 0. LOOP AT IT_MSEG INTO WA_MSEG. * check for status 'I0224' in the jest table SELECT SINGLE OBJNR FROM JEST INTO W_OBJNR WHERE OBJNR = WA_MSEG-OBJNR AND STAT ='I0224'. * if found then the delete the document no from it_mseg IF SY-SUBRC = 0. DELETE TABLE IT_MSEG FROM WA_MSEG. ENDIF. ENDLOOP. * check if atleast one record exists DESCRIBE TABLE IT_MSEG LINES W_LINES. * if no records found then check for movement type 103. IF W_LINES = 0 . SELECT SINGLE MBLNR MJAHR BWART ZEILE FROM MSEG CLIENT SPECIFIED INTO CORRESPONDING FIELDS OF WA_MSEG WHERE LFBNR = LS_RSEG_NEW-LFBNR AND MATNR = LS_RSEG_NEW-MATNR AND WERKS = LS_RSEG_NEW-WERKS AND BWART = '101'. * check if stock has been released for inspection IF SY-SUBRC <> 0 . MESSAGE E117(ZMM). ENDIF. ENDIF. LOOP AT IT_MSEG INTO WA_MSEG. * select the inspection lot SELECT SINGLE OBJNR INTO LS_OBJNR FROM QALS CLIENT SPECIFIED WHERE MANDANT = SY-MANDT AND MBLNR = WA_MSEG-MBLNR AND ZEILE = WA_MSEG-ZEILE AND MJAHR = WA_MSEG-MJAHR. * if found IF SY-SUBRC EQ 0. * check for account assignment SELECT SINGLE * FROM EKKN CLIENT SPECIFIED INTO LS_EKKN WHERE MANDT = SY-MANDT AND EBELN = LI_RSEG_NEW-EBELN AND EBELP = LI_RSEG_NEW-EBELP. * IF SY-SUBRC EQ 0 AND LS_MTART NE 'ZNSK'. IF SY-SUBRC EQ 0. SELECT SINGLE * FROM JEST CLIENT SPECIFIED INTO LI_JEST WHERE MANDT = SY-MANDT AND OBJNR = LS_OBJNR AND STAT = 'I0218'. ELSE. * get the status SELECT SINGLE * FROM JEST CLIENT SPECIFIED INTO LI_JEST WHERE MANDT = SY-MANDT AND OBJNR = LS_OBJNR AND STAT = 'I0220'. ENDIF. * if stock is not posted/UD not made , do not allow the invoice creation IF SY-SUBRC NE 0. MESSAGE E116(ZMM). * GR is still in quality inspection stage. * RAISE ERROR_WITH_MESSAGE. ENDIF. ENDIF. endloop. ELSE. * break-point. SELECT SINGLE MBLNR MJAHR BWART ZEILE FROM MSEG CLIENT SPECIFIED INTO CORRESPONDING FIELDS OF WA_MSEG WHERE LFBNR = LS_RSEG_NEW-LFBNR AND MATNR = LS_RSEG_NEW-MATNR AND WERKS = LS_RSEG_NEW-WERKS AND BWART = '101'. IF SY-SUBRC <> 0 . MESSAGE E117(ZMM). ENDIF. ENDIF. ENDIF. * End of Code addition by Niraj on 05-03-2005 * Start of Code added by Niraj on 07-03-2005 to check the stock type * from ekpo. ENDIF. * endif. ENDIF. * end of Code addition by Niraj on 07-03-2005 to check the stock type * from ekpo. ENDLOOP. ENDMETHOD.