QP01 - To Create a Inspection Plan

Hi Associates and Consultants,
Have any one worked on T-Code QP01 to create a Inspection Plan Using BDC's or BAPI's.
If so please try to ping me.
Regards,
sg

*& Report  ZQMB_QP01_INSP_PLAN_NEW
REPORT  ZQMB_QP01_INSP_PLAN_NEW
       NO STANDARD PAGE HEADING LINE-SIZE 255 MESSAGE-ID ZQMB_INSP_PLAN_NEW.
D A T A   D E C L A R A T I O N                                     *
TYPES: BEGIN OF TY_TABDATA,
       MATNR TYPE RC27M-MATNR, "Material No
       WERKS TYPE RC27M-WERKS, "Plant
       PLNNR TYPE RC271-PLNNR, "Key for Task List Group
      AENNR TYPE RC271-AENNR, "Change Number
       KTEXT TYPE PLKOD-KTEXT, "Task list description
       VERWE TYPE PLKOD-VERWE, "Task list usage
       STATU TYPE PLKOD-STATU, "Status
       SLWBEZ TYPE PLKOD-SLWBEZ, "Identification for the Inspection Point Field Combination
       QPRZIEHVER TYPE PLKOD-QPRZIEHVER, "Sample-Drawing Procedure
       END OF TY_TABDATA.
TYPES: BEGIN OF TY_TBCTRL1,
       MATNR TYPE RC27M-MATNR, "Material No
       WERKS TYPE RC27M-WERKS, "Plant
       PLNNR TYPE RC271-PLNNR, "Key for Task List Group
      AENNR TYPE RC271-AENNR, "Change Number
       ARBPL TYPE PLPOD-ARBPL, "Work center
       STEUS TYPE PLPOD-STEUS, "Control key
       LTXA1 TYPE PLPOD-LTXA1, "Operation short text
       END OF TY_TBCTRL1.
TYPES: BEGIN OF TY_TBCTRL2,
       MATNR TYPE RC27M-MATNR, "Material No
       WERKS TYPE RC27M-WERKS, "Plant
       PLNNR TYPE RC271-PLNNR, "Key for Task List Group
      AENNR TYPE RC271-AENNR, "Change Number
      ARBPL TYPE PLPOD-ARBPL, "Work center
      STEUS TYPE PLPOD-STEUS, "Control key
       VERWMERKM TYPE PLMKB-VERWMERKM, "Master Inspection Characteristics
       PMETHODE TYPE PLMKB-PMETHODE, "Inspection Method
     PMTVERSION TYPE PLMKB-PMTVERSION, "Version Number of the Inspection Method
       STICHPRVER TYPE PLMKB-STICHPRVER, "Sampling Procedure in Inspection Characteristic
      PRUEFEINH(7)," TYPE PLMKB-PRUEFEINH, " Value
      PROBEMGEH(3)," TYPE PLMKB-PROBEMGEH, "Unit
       STELLEN(3), "TYPE PLMKB-STELLEN, "Number of Places to the Right of a Decimal Point (Accuracy)
       MASSEINHSW TYPE RQPAS-MASSEINHSW, "Measurement Unit in Which Quantitative Data Is Maintained
       SOLLWERT TYPE QFLTP-SOLLWERT, "Target Value for a Quantitative Characteristic
       TOLERANZUN TYPE QFLTP-TOLERANZUN, "Lower Specification Limit
       TOLERANZOB TYPE QFLTP-TOLERANZOB, "Upper Specification Limit
       DUMMY10 TYPE PLMKB-DUMMY10,  "Info Field1
       DUMMY20 TYPE PLMKB-DUMMY20,  "Info Field2
       DUMMY40 TYPE PLMKB-DUMMY40,  "Info Field3
       END OF TY_TBCTRL2.
TYPES: BEGIN OF TY_CHECK,
        MATNR TYPE RC27M-MATNR,   "Material No
        WERKS TYPE RC27M-WERKS,   "Plant
        PLNNR TYPE RC271-PLNNR,   "Key for Task List Group
       AENNR TYPE RC271-AENNR,   "Change Number
       END OF TY_CHECK.
Declaration of the Internal Table & Work Area.
DATA:   ITST_TABDATA TYPE SORTED  TABLE OF TY_TABDATA WITH
                    UNIQUE KEY  MATNR WERKS PLNNR, " AENNR,
                                            " Internal table for Non-Table Control Records
        WA_TABDATA TYPE TY_TABDATA,
        ITST_TABCTRL1 TYPE TABLE OF TY_TBCTRL1 ,  " Internal table for the First Screen with Table Control
        WA_TABCTRL1 TYPE TY_TBCTRL1,
        ITST_TABCTRL2 TYPE TABLE OF TY_TBCTRL2, " Internal table for the Second Screen with Table Control
        WA_TABCTRL2 TYPE TY_TBCTRL2,
        ITST_CHECK TYPE TABLE OF TY_CHECK, " Internal table to check if record already exists
        WA_CHECK TYPE TY_CHECK.
Constants
CONSTANTS: C_QP01 TYPE CHAR4 VALUE 'QP01', " Transaction Name
           C_A TYPE CHAR1 VALUE 'A',       " Mode
           C_S TYPE CHAR1 VALUE 'S'.       " Status
   Global data Declaration
DATA: GV_YEAR(4) TYPE C, " Year part for Date
      GV_MNTH(2) TYPE C, " Month part for Date
      GV_DATE(2) TYPE C, " Day part for Date
      GV_DATUM(10) TYPE C, " Concatenated Date in dd.mm.yyyy Format
      GV_ANS TYPE C, " Answer to Continue
      GV_FLAG_NEW(1) TYPE N VALUE 0. " Flag to set if Inspection Plan exists.
Declaration of the Internal Table with Header Line comprising of the uploaded data.
DATA:  BEGIN  OF  IT_FILE_UPLOAD  OCCURS  0.
INCLUDE  STRUCTURE  ALSMEX_TABLINE.  "  Rows for Table with Excel Data
DATA:  END  OF  IT_FILE_UPLOAD.
Batch Input Data for a single Transaction.
Message of Call Transaction.
DATA:  ITST_BDCDATA  LIKE  BDCDATA     OCCURS  0  WITH  HEADER  LINE,  " BDC Table
       ITST_MSGTAB   LIKE  BDCMSGCOLL  OCCURS  0  WITH  HEADER  LINE.  " BDC Messages
S E L E C T I O N - S C R E E N                                     *
SELECTION-SCREEN:  BEGIN  OF  BLOCK  B1  WITH  FRAME TITLE TEXT-001,
                       BEGIN  OF  BLOCK  B2  WITH  FRAME TITLE TEXT-004.
PARAMETERS: P_FNAME  LIKE  RLGRAP-FILENAME  OBLIGATORY.
SELECTION-SCREEN:      END  OF  BLOCK  B2,
                   END  OF  BLOCK  B1.
E V E N T : AT    S E L E C T I O N - S C R E E N                   *
AT  SELECTION-SCREEN  ON  VALUE-REQUEST  FOR  P_FNAME.
  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    EXPORTING
      STATIC    = 'X'
    CHANGING
      FILE_NAME = P_FNAME.
E V E N T : S T A R T - O F - S E L E C T I O N                     *
START-OF-SELECTION.
Upload Excel file into Internal Table.
  PERFORM  UPLOAD_EXCEL_FILE.                      " To Upload the Excel File
  IF  NOT  IT_FILE_UPLOAD  IS  INITIAL.
  Confirm whether you want to proceed with the Upload.
    PERFORM  CONFIRM_UPLOAD.
    IF  GV_ANS  EQ  '1'.
  Organize the uploaded data into another Internal Table.
      PERFORM  ORGANIZE_UPLOADED_DATA.
Validate if already some Inspection Plan exists for that Material Plant
      IF ITST_TABDATA[] IS NOT INITIAL.
        SELECT MATNR
               WERKS
               PLNNR
        FROM MAPL
        INTO TABLE ITST_CHECK
        FOR ALL ENTRIES IN ITST_TABDATA
        WHERE MATNR = ITST_TABDATA-MATNR AND WERKS = ITST_TABDATA-WERKS AND
                                  PLNNR = ITST_TABDATA-PLNNR
                                  AND PLNTY = 'Q' AND LOEKZ <> 'X'.
      ENDIF.
      LOOP AT ITST_CHECK INTO WA_CHECK .
        LOOP AT ITST_TABDATA INTO WA_TABDATA WHERE MATNR = WA_CHECK-MATNR
                                              AND WERKS = WA_CHECK-WERKS AND PLNNR = WA_CHECK-PLNNR.
                                             AND AENNR = WA_CHECK-AENNR.
          IF SY-SUBRC = 0.                 " If exists SET FLAG = 1.
           GV_FLAG_NEW = 1.
            DELETE ITST_TABDATA WHERE MATNR = WA_CHECK-MATNR AND WERKS = WA_CHECK-WERKS
                                                             AND PLNNR = WA_CHECK-PLNNR.
                                                            AND AENNR = WA_CHECK-AENNR.
            DELETE  ITST_TABCTRL1 WHERE MATNR = WA_CHECK-MATNR AND WERKS = WA_CHECK-WERKS
                                                               AND PLNNR = WA_CHECK-PLNNR.
                                                              AND AENNR = WA_CHECK-AENNR.
            DELETE  ITST_TABCTRL2 WHERE MATNR = WA_CHECK-MATNR AND WERKS = WA_CHECK-WERKS
                                                               AND PLNNR = WA_CHECK-PLNNR.
                                                              AND AENNR = WA_CHECK-AENNR.
          ENDIF.
        ENDLOOP.
      ENDLOOP.
    Kick-start BDC Operation
      PERFORM  F_START_BDC.    " If answer is YES, then start BDC Operations
    ENDIF.
  ELSE.
    LEAVE PROGRAM.           " If answer is NO or CANCEL then leave program
  ENDIF.
*&      Form  F_START_BDC
      text
-->  p1        text
<--  p2        text
FORM F_START_BDC .
  DATA :  LV_FNAM(20) TYPE C, " Concatenated field name
          LV_IDX1(3) TYPE  N VALUE 1, " Index For Table Control 1
          LV_IDX2(3) TYPE N VALUE 1, " Index For Table Control 2
          LV_GOTO(4) TYPE N ,  " Index for GoTo Line No incase of Page Down
          LV_PG(3) TYPE N VALUE 1, " Index for Page No
          LV_IDX(3) TYPE N VALUE 1.
  IF ITST_TABDATA[] IS INITIAL.
    MESSAGE E000.              " If Inspection Plan exists for all items in file, show error message
  ENDIF.
  LOOP AT ITST_TABDATA INTO WA_TABDATA.
    LV_IDX2 = '1'.
    CLEAR ITST_BDCDATA.
    REFRESH ITST_BDCDATA.
    GV_YEAR = SY-DATUM+0(4).
    GV_MNTH = SY-DATUM+4(2).
    GV_DATE = SY-DATUM+6(2).
    CONCATENATE GV_DATE '.' GV_MNTH '.' GV_YEAR  INTO GV_DATUM.
    PERFORM BDC_DYNPRO      USING 'SAPLCPDI' '8010'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'RC27M-MATNR'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.
    PERFORM BDC_FIELD       USING 'RC27M-MATNR'
                                  WA_TABDATA-MATNR.         " 'kiz0006c'
    PERFORM BDC_FIELD       USING 'RC27M-WERKS'
                                  WA_TABDATA-WERKS.         " 'B001'
    PERFORM BDC_FIELD       USING 'RC271-PLNNR'
                                  WA_TABDATA-PLNNR.         " 60000000-99999999
    PERFORM BDC_FIELD       USING 'RC271-STTAG'
                                  GV_DATUM.                 " '16.01.2008'
   PERFORM BDC_FIELD       USING 'RC271-AENNR'
                                 WA_TABDATA-AENNR.         " CHANGE NUMBER
   IF GV_FLAG_NEW = 1.        " If Exists then diff screen for clicking NEW ENTRIES tab
     PERFORM BDC_DYNPRO USING 'SAPLCPDI' '1200'.
     PERFORM BDC_FIELD USING  'BDC_CURSOR'
                               'RC27X-ENTRY_ACT'.
     PERFORM BDC_FIELD USING 'BDC_OKCODE'
                             '=ANLG'.
     PERFORM BDC_FIELD USING 'RC27X-ENTRY_ACT'
                             '1'.
     PERFORM BDC_DYNPRO      USING 'SAPLCPDA' '1200'.
     PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                 '/00'.
   ELSE.
    PERFORM BDC_DYNPRO      USING 'SAPLCPDA' '1200'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '/00'.
   ENDIF.
    IF WA_TABDATA-KTEXT <> SPACE.
      PERFORM BDC_FIELD       USING 'PLKOD-KTEXT'
                                    WA_TABDATA-KTEXT.        " 'ZOLMITRIPTAN STAGE C1111'
    ENDIF.
    PERFORM BDC_FIELD       USING 'PLKOD-VERWE'
                                  WA_TABDATA-VERWE.         " '5'
    PERFORM BDC_FIELD       USING 'PLKOD-STATU'
                                  WA_TABDATA-STATU.         " '4'
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'PLKOD-QPRZIEHVER'.
    PERFORM BDC_FIELD       USING 'PLKOD-SLWBEZ'
                                  WA_TABDATA-SLWBEZ.        " '200'
    PERFORM BDC_FIELD       USING 'PLKOD-QPRZIEHVER'
                                  WA_TABDATA-QPRZIEHVER.    " 'ACTIVE'
   PERFORM BDC_FIELD       USING 'PLKOD-CHRULE'
                                  '1'.                     " With change number
   PERFORM BDC_FIELD       USING 'PLKOD-CCOAA'
                                  '1'.                     " Change Type for all objects
    PERFORM BDC_DYNPRO      USING 'SAPLCPDA' '1200'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=VOUE'.
    LOOP AT ITST_TABCTRL1 INTO WA_TABCTRL1 WHERE MATNR = WA_TABDATA-MATNR
                                                 AND WERKS = WA_TABDATA-WERKS
                                                 AND PLNNR = WA_TABDATA-PLNNR.
                                                AND AENNR = WA_CHECK-AENNR.
      ON CHANGE OF WA_TABCTRL1-MATNR OR WA_TABCTRL1-WERKS OR WA_TABCTRL1-PLNNR." OR WA_TABCTRL1-AENNR.
        PERFORM BDC_DYNPRO      USING 'SAPLCPDI' '1400'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'PLPOD-LTXA1(01)'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        CONCATENATE 'PLPOD-ARBPL(' LV_IDX1 ')' INTO LV_FNAM.
        PERFORM BDC_FIELD       USING LV_FNAM
                                      WA_TABCTRL1-ARBPL.    " 'qc01'
        CONCATENATE 'PLPOD-STEUS(' LV_IDX1 ')' INTO LV_FNAM.
        PERFORM BDC_FIELD       USING LV_FNAM
                                      WA_TABCTRL1-STEUS.    " 'qm01'
        CONCATENATE 'PLPOD-LTXA1(' LV_IDX1 ')' INTO LV_FNAM.
        PERFORM BDC_FIELD       USING LV_FNAM
                                      WA_TABCTRL1-LTXA1.       " 'opearation1'
        PERFORM BDC_DYNPRO      USING 'SAPLCPDI' '1400'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'PLPOD-VORNR(01)'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=QMUE'.
        PERFORM BDC_FIELD       USING 'RC27X-ENTRY_ACT'
                                      '1'.
        PERFORM BDC_FIELD       USING 'RC27X-FLG_SEL(01)'
                                      'X'.
        PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '0150'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                        'PLMKB-STELLEN(01)'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                        '/00'.
        LOOP AT ITST_TABCTRL2 INTO WA_TABCTRL2 WHERE MATNR = WA_TABCTRL1-MATNR AND
                                                     WERKS = WA_TABCTRL1-WERKS AND
                                                     PLNNR = WA_TABCTRL1-PLNNR.
                                                 AND   AENNR = WA_TABCTRL1-AENNR.
                                                  AND ARBPL = WA_TABCTRL1-ARBPL AND
                                                    STEUS = WA_TABCTRL1-STEUS.
          LV_GOTO = LV_PG * 140.  " For Page Down on Second Table Control
          IF LV_IDX2 >= 14.
            PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '0150'.
            PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                        'RQPAS-AB_MKNR'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '/00'.
            PERFORM BDC_FIELD       USING 'RQPAS-AB_MKNR'
                                           LV_GOTO .
            LV_IDX2 = 2.
            LV_PG = LV_PG + 1.
            PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '0150'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                           '/00'.
          ELSE.
            PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '0150'.
            PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                          'PLMKB-STELLEN(01)'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '/00'.
          ENDIF.
          CONCATENATE 'PLMKB-VERWMERKM(' LV_IDX2 ')' INTO LV_FNAM.
          PERFORM BDC_FIELD       USING LV_FNAM
                                        WA_TABCTRL2-VERWMERKM.              " 'MIC00001'/ ' MIC00050'
          IF WA_TABCTRL2-PMETHODE <> SPACE.
            CONCATENATE 'PLMKB-PMETHODE(' LV_IDX2')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-PMETHODE.               " 'met00001'
         CONCATENATE 'PLMKB-PMTVERSION(' LV_IDX2 ')' INTO LV_FNAM.
         PERFORM BDC_FIELD       USING LV_FNAM
                                       WA_TABCTRL2-PMTVERSION.              " '1'
            CONCATENATE 'PLMKB-STICHPRVER(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-STICHPRVER." 'APIFX1'
          CONCATENATE 'PLMKB-PRUEFEINH(' LV_IDX2 ')' INTO LV_FNAM.
          PERFORM BDC_FIELD       USING LV_FNAM
                                        WA_TABCTRL2-PRUEFEINH.               " '20'
          CONCATENATE 'PLMKB-PROBEMGEH(' LV_IDX2 ')' INTO LV_FNAM.
          PERFORM BDC_FIELD       USING LV_FNAM
                                        WA_TABCTRL2-PROBEMGEH.               " 'G'
          IF WA_TABCTRL2-STELLEN <> SPACE.
            CONCATENATE 'PLMKB-STELLEN(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-STELLEN." '2'
          ENDIF.
          IF WA_TABCTRL2-MASSEINHSW <> SPACE.
            CONCATENATE 'RQPAS-MASSEINHSW(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-MASSEINHSW.             " '%'
          ENDIF.
          IF WA_TABCTRL2-SOLLWERT <> SPACE.
            CONCATENATE 'QFLTP-SOLLWERT(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-SOLLWERT." '10'
          ENDIF.
          IF WA_TABCTRL2-TOLERANZUN <> SPACE.
            CONCATENATE 'QFLTP-TOLERANZUN(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-TOLERANZUN." '5'
          ENDIF.
          IF WA_TABCTRL2-TOLERANZOB <> SPACE.
            CONCATENATE 'QFLTP-TOLERANZOB(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-TOLERANZOB." '15'
          ENDIF.
          IF WA_TABCTRL2-DUMMY10 <> SPACE.
            CONCATENATE 'PLMKB-DUMMY10(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-DUMMY10." Info Field 1
          ENDIF.
          IF WA_TABCTRL2-DUMMY20 <> SPACE.
            CONCATENATE 'PLMKB-DUMMY20(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-DUMMY20." Info Field 2
          ENDIF.
          IF WA_TABCTRL2-DUMMY40 <> SPACE.
            CONCATENATE 'PLMKB-DUMMY40(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-DUMMY40." Info Field 3
          ENDIF.
            PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '1501'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '=ENT1'.
            PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                          'PLMKB-VERWMERKM'.
            PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '1502'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '=ENT1'.
            PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                          'PLMKB-PMETHODE'.
            PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '1502'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '=ENT1'.
            PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                          'PLMKB-PMETHODE'.
            PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '0150'.
            CONCATENATE 'PLMKB-MERKNR('LV_IDX2')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                          LV_FNAM.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '=QMAM'.
            PERFORM BDC_FIELD       USING 'RQPAS-ENTRY_ACT'
                                          '1'.
            IF LV_IDX2 = 1.          " If only one entry then select it
              CONCATENATE 'RQPAS-SEL_FLG('LV_IDX2')' INTO LV_FNAM.
              PERFORM BDC_FIELD       USING LV_FNAM
                                    'X'.
            ELSE.
              LV_IDX = LV_IDX2 - 1. " Deselect previous entry and select current one
              CONCATENATE 'RQPAS-SEL_FLG('LV_IDX')' INTO LV_FNAM.
              PERFORM BDC_FIELD       USING LV_FNAM
              CONCATENATE 'RQPAS-SEL_FLG('LV_IDX2')' INTO LV_FNAM.
              PERFORM BDC_FIELD       USING LV_FNAM
                                       'X'.
            ENDIF.
            PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '0160'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                       '=QMBW'.
           PERFORM BDC_FIELD       USING 'PLMKB-KURZTEXT'
                                      'Description'.
            PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                   'PLMKB-QERGDATH'.
            PERFORM BDC_FIELD       USING 'PLMKB-QERGDATH'
                                      '01'.  " Quality Certificate
          ELSE.
         CONCATENATE 'PLMKB-PMTVERSION(' LV_IDX2 ')' INTO LV_FNAM.
         PERFORM BDC_FIELD       USING LV_FNAM
                                       WA_TABCTRL2-PMTVERSION.               " '1'
            CONCATENATE 'PLMKB-STICHPRVER(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-STICHPRVER." 'APIFX1'
          CONCATENATE 'PLMKB-PRUEFEINH(' LV_IDX2 ')' INTO LV_FNAM.
          PERFORM BDC_FIELD       USING LV_FNAM
                                        WA_TABCTRL2-PRUEFEINH.                " '20'
          CONCATENATE 'PLMKB-PROBEMGEH(' LV_IDX2 ')' INTO LV_FNAM.
          PERFORM BDC_FIELD       USING LV_FNAM
                                        WA_TABCTRL2-PROBEMGEH.                " 'G'
            IF WA_TABCTRL2-STELLEN <> SPACE.
            CONCATENATE 'PLMKB-STELLEN(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-STELLEN." '2'
            ENDIF.
            IF WA_TABCTRL2-MASSEINHSW <> SPACE.
            CONCATENATE 'RQPAS-MASSEINHSW(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-MASSEINHSW.                " '%'
            ENDIF.
            IF WA_TABCTRL2-SOLLWERT <> SPACE.
            CONCATENATE 'QFLTP-SOLLWERT(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-SOLLWERT." '10'
            ENDIF.
            IF WA_TABCTRL2-TOLERANZUN <> SPACE.
            CONCATENATE 'QFLTP-TOLERANZUN(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-TOLERANZUN." '5'
            ENDIF.
            IF WA_TABCTRL2-TOLERANZOB <> SPACE.
            CONCATENATE 'QFLTP-TOLERANZOB(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-TOLERANZOB." '15'
            ENDIF.
            IF WA_TABCTRL2-DUMMY10 <> SPACE.
            CONCATENATE 'PLMKB-DUMMY10(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-DUMMY10." Info Field 1
            ENDIF.
            IF WA_TABCTRL2-DUMMY20 <> SPACE.
            CONCATENATE 'PLMKB-DUMMY20(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-DUMMY20." Info Field 2
            ENDIF.
            IF WA_TABCTRL2-DUMMY40 <> SPACE.
            CONCATENATE 'PLMKB-DUMMY40(' LV_IDX2 ')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING LV_FNAM
                                          WA_TABCTRL2-DUMMY40." Info Field 3
            ENDIF.
            PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '1501'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                         '=ENT1'.
            PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                          'PLMKB-QMTB_WERKS'.
            PERFORM BDC_FIELD       USING 'PLMKB-VERWMERKM'
                                           WA_TABCTRL2-VERWMERKM.
            PERFORM BDC_FIELD       USING 'PLMKB-QPMK_WERKS'
                                           WA_TABCTRL2-WERKS.
            PERFORM BDC_FIELD       USING 'PLMKB-QMTB_WERKS'
            PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '0150'.
            CONCATENATE 'PLMKB-MERKNR('LV_IDX2')' INTO LV_FNAM.
            PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                          LV_FNAM.
            PERFORM BDC_FIELD      USING 'BDC_OKCODE'
                                         '=QMAM'.
             PERFORM BDC_FIELD      USING 'RQPAS-ENTRY_ACT'
                                         '1'.
              IF LV_IDX2 = 1. " If first entry select it
              CONCATENATE 'RQPAS-SEL_FLG('LV_IDX2')' INTO LV_FNAM.
              PERFORM BDC_FIELD       USING LV_FNAM
                                    'X'.
              ELSE.
              LV_IDX = LV_IDX2 - 1. " Deselect Previous entry ans select current one
              CONCATENATE 'RQPAS-SEL_FLG('LV_IDX')' INTO LV_FNAM.
              PERFORM BDC_FIELD       USING LV_FNAM
             CONCATENATE 'RQPAS-SEL_FLG('LV_IDX2')' INTO LV_FNAM.
              PERFORM BDC_FIELD       USING LV_FNAM
                                       'X'.
             ENDIF.
            PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '0160'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                       '=QMBW'.
           PERFORM BDC_FIELD       USING 'PLMKB-KURZTEXT'
                                      'Description'.
            PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                   'PLMKB-QERGDATH'.
            PERFORM BDC_FIELD       USING 'PLMKB-QERGDATH'
                                      '01'. " Quality Certificate
          ENDIF.
          LV_IDX2 = LV_IDX2 + 1.
        ENDLOOP.
      ENDON.
    ENDLOOP.
    PERFORM BDC_DYNPRO      USING 'SAPLQPAA' '0150'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                  'RQPAS-ENTRY_ACT'.
    PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                  '=QMBU'.
    PERFORM BDC_FIELD       USING 'RQPAS-ENTRY_ACT'
                                  '1'.
    CALL TRANSACTION  C_QP01 USING ITST_BDCDATA
                MODE  C_A UPDATE C_S
                MESSAGES INTO ITST_MSGTAB.               "#EC CI_CALLTA
  ENDLOOP.
ENDFORM.                    " F_START_BDC
*&      Form  UPLOAD_EXCEL_FILE
      text
-->  p1        text
<--  p2        text
FORM UPLOAD_EXCEL_FILE .
  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      FILENAME    = P_FNAME
      I_BEGIN_COL = 1
      I_BEGIN_ROW = 2
      I_END_COL   = 24
      I_END_ROW   = 9999
    TABLES
      INTERN      = IT_FILE_UPLOAD.
ENDFORM.                    " UPLOAD_EXCEL_FILE
*&      Form  CONFIRM_UPLOAD
      text
-->  p1        text
<--  p2        text
FORM CONFIRM_UPLOAD .
  CALL FUNCTION 'POPUP_TO_CONFIRM'
    EXPORTING
      TITLEBAR       = TEXT-002
      TEXT_QUESTION  = TEXT-003
    IMPORTING
      ANSWER         = GV_ANS
    EXCEPTIONS
      TEXT_NOT_FOUND = 1
      OTHERS         = 2.
ENDFORM.                    " CONFIRM_UPLOAD
*&      Form  BDC_DYNPRO
      text
     -->P_0589   text
     -->P_0590   text
FORM BDC_DYNPRO  USING    PROGRAM
                          DYNPRO.
  CLEAR:  ITST_BDCDATA.
  ITST_BDCDATA-PROGRAM   =  PROGRAM.
  ITST_BDCDATA-DYNPRO    =  DYNPRO.
  ITST_BDCDATA-DYNBEGIN  =  'X'.
  APPEND  ITST_BDCDATA.
ENDFORM.                    " BDC_DYNPRO
*&      Form  BDC_FIELD
      text
     -->P_0729   text
     -->P_0730   text
FORM BDC_FIELD  USING    FNAM
                         FVAL.
  CLEAR:  ITST_BDCDATA.
  ITST_BDCDATA-FNAM  =  FNAM.
  ITST_BDCDATA-FVAL  =  FVAL.
  APPEND  ITST_BDCDATA.
ENDFORM.                    " BDC_FIELD
*&      Form  ORGANIZE_UPLOADED_DATA
      text
-->  p1        text
<--  p2        text
FORM ORGANIZE_UPLOADED_DATA .
  DATA : LV_TOTROW TYPE I, " Total Records
         LV_ROW TYPE I.    " Row No
  LV_TOTROW = 1.
  SORT  IT_FILE_UPLOAD  BY  ROW
                            COL.
  LOOP AT IT_FILE_UPLOAD.
    LV_TOTROW = IT_FILE_UPLOAD-ROW.        " To find total rows
  ENDLOOP.
  LV_ROW = 1.
  WHILE LV_ROW <= LV_TOTROW.
    LOOP  AT  IT_FILE_UPLOAD WHERE ROW = LV_ROW.
      CASE  IT_FILE_UPLOAD-COL.
        WHEN '0001'.                                                       " Material
          TRANSLATE IT_FILE_UPLOAD-VALUE TO UPPER CASE.
          WA_TABDATA-MATNR = IT_FILE_UPLOAD-VALUE.
          WA_TABCTRL1-MATNR = IT_FILE_UPLOAD-VALUE.
          WA_TABCTRL2-MATNR = IT_FILE_UPLOAD-VALUE.
        WHEN '0002'.                                                       " Plant
          TRANSLATE IT_FILE_UPLOAD-VALUE TO UPPER CASE.
          WA_TABDATA-WERKS = IT_FILE_UPLOAD-VALUE.
          WA_TABCTRL1-WERKS = IT_FILE_UPLOAD-VALUE.
          WA_TABCTRL2-WERKS = IT_FILE_UPLOAD-VALUE.
        WHEN '0003'.                                                       " Group Key
          WA_TABDATA-PLNNR = IT_FILE_UPLOAD-VALUE.
          WA_TABCTRL1-PLNNR = IT_FILE_UPLOAD-VALUE.
          WA_TABCTRL2-PLNNR = IT_FILE_UPLOAD-VALUE.
       WHEN '0004'.                                                       " Change Number
         WA_TABDATA-AENNR = IT_FILE_UPLOAD-VALUE.
         WA_TABCTRL1-AENNR = IT_FILE_UPLOAD-VALUE.
         WA_TABCTRL2-AENNR = IT_FILE_UPLOAD-VALUE.
        WHEN '0004'.                                                      " Group Counter Desc
          WA_TABDATA-KTEXT = IT_FILE_UPLOAD-VALUE.
        WHEN '0005'.                                                      " Usage
          WA_TABDATA-VERWE = IT_FILE_UPLOAD-VALUE.
        WHEN '0006'.                                                      " Status
          WA_TABDATA-STATU = IT_FILE_UPLOAD-VALUE.
        WHEN '0007'.                                                      " Inspection Point
          WA_TABDATA-SLWBEZ = IT_FILE_UPLOAD-VALUE.
        WHEN '0008'.                                                      " Sample Drawing Procedure
          WA_TABDATA-QPRZIEHVER = IT_FILE_UPLOAD-VALUE.
        WHEN '0009'.                                                      " Work Centre
          WA_TABCTRL1-ARBPL = IT_FILE_UPLOAD-VALUE.
         WA_TABCTRL2-ARBPL = IT_FILE_UPLOAD-VALUE.
        WHEN '0010'.                                                      " Control Key
          WA_TABCTRL1-STEUS = IT_FILE_UPLOAD-VALUE.
         WA_TABCTRL2-STEUS = IT_FILE_UPLOAD-VALUE.
        WHEN '0011'.                                                      " Desc
          WA_TABCTRL1-LTXA1 = IT_FILE_UPLOAD-VALUE.
        WHEN '0012'.                                                      " MIC
          WA_TABCTRL2-VERWMERKM = IT_FILE_UPLOAD-VALUE.
        WHEN '0013'.                                                      " Method
          WA_TABCTRL2-PMETHODE = IT_FILE_UPLOAD-VALUE.
       WHEN '0014'.
         WA_TABCTRL2-PMTVERSION = IT_FILE_UPLOAD-VALUE.
        WHEN '0014'.                                                      " Sampling
          WA_TABCTRL2-STICHPRVER = IT_FILE_UPLOAD-VALUE.
        WHEN '0015'.
          WA_TABCTRL2-PRUEFEINH = IT_FILE_UPLOAD-VALUE.
        WHEN '0016'.
          WA_TABCTRL2-PROBEMGEH = IT_FILE_UPLOAD-VALUE.
        WHEN '0017'.                                                      " Accuracy
          WA_TABCTRL2-STELLEN = IT_FILE_UPLOAD-VALUE.
        WHEN '0018'.                                                      " Unit
          WA_TABCTRL2-MASSEINHSW = IT_FILE_UPLOAD-VALUE.
        WHEN '0019'.                                                      " Target Value
          WA_TABCTRL2-SOLLWERT = IT_FILE_UPLOAD-VALUE.
        WHEN '0020'.                                                      " Lower Limit
          WA_TABCTRL2-TOLERANZUN = IT_FILE_UPLOAD-VALUE.
        WHEN '0021'.                                                      " Upper Limit
          WA_TABCTRL2-TOLERANZOB = IT_FILE_UPLOAD-VALUE.
        WHEN '0022'.                                                      " Info Field1
          WA_TABCTRL2-DUMMY10 = IT_FILE_UPLOAD-VALUE.
        WHEN '0023'.                                                      " Info Field2
          WA_TABCTRL2-DUMMY20 = IT_FILE_UPLOAD-VALUE.
        WHEN '0024'.                                                      " Info Field3
          WA_TABCTRL2-DUMMY40 = IT_FILE_UPLOAD-VALUE.
      ENDCASE.
    ENDLOOP.
    LV_ROW = LV_ROW + 1.
    INSERT WA_TABDATA INTO TABLE  ITST_TABDATA .
    APPEND WA_TABCTRL1 TO ITST_TABCTRL1.
    APPEND WA_TABCTRL2 TO ITST_TABCTRL2.
    CLEAR :WA_TABDATA,WA_TABCTRL1,WA_TABCTRL2.
  ENDWHILE.
ENDFORM.                    " ORGANIZE_UPLOADED_DATA
E N D - O F - S E L E C T I O N                                               *
END-OF-SELECTION.
Free all internal tables
  FREE: ITST_TABDATA,
        ITST_TABCTRL1,
        ITST_TABCTRL2.

Similar Messages

  • Error while creating the Inspection plan by T.C QP01

    Hello Friends,
    In QP01, When i am trying to create a inspection plan system throwing the error message "The inspection plan identifier exists already. Enter another."
    Message no. QP054
    But in QP02, When i checked  for that material, Plant, Group Number, Group counter, Usage, Status, i didn't find the entry over there.
    Actually my requirement is to create a inspection plan for a material and plant combination with speicfic Usage as 61(customer requirement and status 4) but when i am trying to create that system throwing the error message explained above.
    Thanks and Regards,
    Jitendra Chauhan.
    Edited by: jitendra chauhan on Jun 1, 2010 4:28 PM

    Hello Friends,
    Thanks for your valuable answers.
    I checked in table MAPL, for a particular material, Plant, Group Number and Group Counter, there is no entry.
    Where as in table PLKO, for a particular Group Number and Group Counter, entry is there. Actually this Inspection Plan Group Number and Group Counter is assigned to multiple materials through Material Assignment. If i delete the entry for this in table PLKO, than for all rest of the materials also entry will be deleted.
    Hence how to resolve this?
    Actually for other material number, same plant, same group number and same group counter, entry exist. So can i simply go in the inspection plan of other material,same plant,same group number,same group counter and than inside the material assignment to assign the required  material code, plant and the group counter number?
    Looking ahead for valuable inputs from the genius.
    Thanks and Regards,
    Jitendra
    Edited by: jitendra chauhan on Jun 2, 2010 8:09 AM

  • QP01 - To Create Inspection Plant

    Hi Associates and Consultants,
    Have any one worked on T-Code QP01 to create a Inspection Plan Using BDC's or BAPI's.
    If so please try to ping me.
    Regards,
    sg

    Hi friend,
    check the code
    REPORT ZQMB_QP01_INSP_PLAN
    NO STANDARD PAGE HEADING LINE-SIZE 255 MESSAGE-ID ZQMB_INSP_PLAN.
    Description: Upload Program for Create Inspection Plan *
    ABAP Name : ZQMB_QP01_INSP_PLAN *
    Autor : Vanessa Noronha *
    Type : BDC Program for QP01 Transaction. *
    Module : QM *
    Date : 17 January 2008 *
    Transport : D01K948244 -- TR-BDC for QP01 *
    Changes (internal Version: Documentation/Info on line level) *
    Date Name internal Transp.No. Description *
    -Version- *
    D A T A D E C L A R A T I O N *
    TYPES: BEGIN OF TY_TABDATA,
    MATNR TYPE RC27M-MATNR, "Material No
    WERKS TYPE RC27M-WERKS, "Plant
    PLNNR TYPE RC271-PLNNR, "Key for Task List Group
    KTEXT TYPE PLKOD-KTEXT, "Task list description
    VERWE TYPE PLKOD-VERWE, "Task list usage
    STATU TYPE PLKOD-STATU, "Status
    SLWBEZ TYPE PLKOD-SLWBEZ, "Identification for the Inspection Point Field Combination
    QPRZIEHVER TYPE PLKOD-QPRZIEHVER, "Sample-Drawing Procedure
    END OF TY_TABDATA.
    TYPES: BEGIN OF TY_TBCTRL1,
    MATNR TYPE RC27M-MATNR, "Material No
    WERKS TYPE RC27M-WERKS, "Plant
    PLNNR TYPE RC271-PLNNR, "Key for Task List Group
    ARBPL TYPE PLPOD-ARBPL, "Work center
    STEUS TYPE PLPOD-STEUS, "Control key
    LTXA1 TYPE PLPOD-LTXA1, "Operation short text
    END OF TY_TBCTRL1.
    TYPES: BEGIN OF TY_TBCTRL2,
    MATNR TYPE RC27M-MATNR, "Material No
    WERKS TYPE RC27M-WERKS, "Plant
    PLNNR TYPE RC271-PLNNR, "Key for Task List Group
    ARBPL TYPE PLPOD-ARBPL, "Work center
    STEUS TYPE PLPOD-STEUS, "Control key
    VERWMERKM TYPE PLMKB-VERWMERKM, "Master Inspection Characteristics
    PMETHODE TYPE PLMKB-PMETHODE, "Inspection Method
    PMTVERSION TYPE PLMKB-PMTVERSION, "Version Number of the Inspection Method
    STICHPRVER TYPE PLMKB-STICHPRVER, "Sampling Procedure in Inspection Characteristic
    PRUEFEINH(7)," TYPE PLMKB-PRUEFEINH,
    PROBEMGEH(3)," TYPE PLMKB-PROBEMGEH,
    STELLEN(3), "TYPE PLMKB-STELLEN, "Number of Places to the Right of a Decimal Point (Accuracy)
    MASSEINHSW TYPE RQPAS-MASSEINHSW, "Measurement Unit in Which Quantitative Data Is Maintained
    SOLLWERT TYPE QFLTP-SOLLWERT, "Target Value for a Quantitative Characteristic
    TOLERANZUN TYPE QFLTP-TOLERANZUN, "Lower Specification Limit
    TOLERANZOB TYPE QFLTP-TOLERANZOB, "Upper Specification Limit
    END OF TY_TBCTRL2.
    TYPES: BEGIN OF TY_CHECK,
    MATNR TYPE RC27M-MATNR, "Material No
    WERKS TYPE RC27M-WERKS, "Plant
    PLNNR TYPE RC271-PLNNR, "Key for Task List Group
    END OF TY_CHECK.
    Declaration of the Internal Table & Work Area.
    DATA: ITST_TABDATA TYPE SORTED TABLE OF TY_TABDATA WITH
    UNIQUE KEY MATNR WERKS PLNNR,
    " Internal table for Non-Table Control Records
    WA_TABDATA TYPE TY_TABDATA,
    ITST_TABCTRL1 TYPE TABLE OF TY_TBCTRL1 , " Internal table for the First Screen with Table Control
    WA_TABCTRL1 TYPE TY_TBCTRL1,
    ITST_TABCTRL2 TYPE TABLE OF TY_TBCTRL2, " Internal table for the Second Screen with Table Control
    WA_TABCTRL2 TYPE TY_TBCTRL2,
    ITST_CHECK TYPE TABLE OF TY_CHECK, " Internal table to check if record already exists
    WA_CHECK TYPE TY_CHECK.
    Constants
    CONSTANTS: C_QP01 TYPE CHAR4 VALUE 'QP01', " Transaction Name
    C_A TYPE CHAR1 VALUE 'E', " Mode
    C_S TYPE CHAR1 VALUE 'S'. " Status
    Global data Declaration
    DATA: GV_YEAR(4) TYPE C, " Year part for Date
    GV_MNTH(2) TYPE C, " Month part for Date
    GV_DATE(2) TYPE C, " Day part for Date
    GV_DATUM(10) TYPE C, " Concatenated Date in dd.mm.yyyy Format
    GV_ANS TYPE C, " Answer to Continue
    GV_FLAG_NEW(1) TYPE N VALUE 0. " Flag to set if Inspection Plan exists.
    Declaration of the Internal Table with Header Line comprising of the uploaded data.
    DATA: BEGIN OF IT_FILE_UPLOAD OCCURS 0.
    INCLUDE STRUCTURE ALSMEX_TABLINE. " Rows for Table with Excel Data
    DATA: END OF IT_FILE_UPLOAD.
    Batch Input Data for a single Transaction.
    Message of Call Transaction.
    DATA: ITST_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE, " BDC Table
    ITST_MSGTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. " BDC Messages
    S E L E C T I O N - S C R E E N *
    SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001,
    BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-004.
    PARAMETERS: P_FNAME LIKE RLGRAP-FILENAME OBLIGATORY.
    SELECTION-SCREEN: END OF BLOCK B2,
    END OF BLOCK B1.
    E V E N T : AT S E L E C T I O N - S C R E E N *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.
    CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    EXPORTING
    STATIC = 'X'
    CHANGING
    FILE_NAME = P_FNAME.
    E V E N T : S T A R T - O F - S E L E C T I O N *
    START-OF-SELECTION.
    Upload Excel file into Internal Table.
    PERFORM UPLOAD_EXCEL_FILE. " To Upload the Excel File
    IF NOT IT_FILE_UPLOAD IS INITIAL.
    Confirm whether you want to proceed with the Upload.
    PERFORM CONFIRM_UPLOAD.
    IF GV_ANS EQ '1'.
    Organize the uploaded data into another Internal Table.
    PERFORM ORGANIZE_UPLOADED_DATA.
    Validate if already some Inspection Plan exists for that Material Plant
    IF ITST_TABDATA[] IS NOT INITIAL.
    SELECT MATNR
    WERKS
    PLNNR
    FROM MAPL
    INTO TABLE ITST_CHECK
    FOR ALL ENTRIES IN ITST_TABDATA
    WHERE MATNR = ITST_TABDATA-MATNR AND WERKS = ITST_TABDATA-WERKS AND
    PLNNR = ITST_TABDATA-PLNNR AND PLNTY = 'Q' AND LOEKZ 'X'.
    ENDIF.
    LOOP AT ITST_CHECK INTO WA_CHECK .
    LOOP AT ITST_TABDATA INTO WA_TABDATA WHERE MATNR = WA_CHECK-MATNR
    AND WERKS = WA_CHECK-WERKS AND PLNNR = WA_CHECK-PLNNR.
    IF SY-SUBRC = 0. " If exists SET FLAG = 1.
    GV_FLAG_NEW = 1.
    DELETE ITST_TABDATA WHERE MATNR = WA_CHECK-MATNR AND WERKS = WA_CHECK-WERKS
    AND PLNNR = WA_CHECK-PLNNR.
    DELETE ITST_TABCTRL1 WHERE MATNR = WA_CHECK-MATNR AND WERKS = WA_CHECK-WERKS
    AND PLNNR = WA_CHECK-PLNNR.
    DELETE ITST_TABCTRL2 WHERE MATNR = WA_CHECK-MATNR AND WERKS = WA_CHECK-WERKS
    AND PLNNR = WA_CHECK-PLNNR.
    ENDIF.
    ENDLOOP.
    ENDLOOP.
    Kick-start BDC Operation
    PERFORM F_START_BDC. " If answer is YES, then start BDC Operations
    ENDIF.
    ELSE.
    LEAVE PROGRAM. " If answer is NO or CANCEL then leave program
    ENDIF.
    *& Form F_START_BDC
    text
    --> p1 text
    <-- p2 text
    FORM F_START_BDC .
    DATA : LV_FNAM(20) TYPE C, " Concatenated field name
    LV_IDX1(3) TYPE N VALUE 1, " Index For Table Control 1
    LV_IDX2(3) TYPE N VALUE 1, " Index For Table Control 2
    LV_GOTO(4) TYPE N , " Index for GoTo Line No incase of Page Down
    LV_PG(3) TYPE N VALUE 1. " Index for Page No
    IF ITST_TABDATA[] IS INITIAL.
    MESSAGE E000. " If Inspection Plan exists for all items in file, show error message
    ENDIF.
    LOOP AT ITST_TABDATA INTO WA_TABDATA.
    LV_IDX2 = '1'.
    CLEAR ITST_BDCDATA.
    REFRESH ITST_BDCDATA.
    GV_YEAR = SY-DATUM+0(4).
    GV_MNTH = SY-DATUM+4(2).
    GV_DATE = SY-DATUM+6(2).
    CONCATENATE GV_DATE '.' GV_MNTH '.' GV_YEAR INTO GV_DATUM.
    PERFORM BDC_DYNPRO USING 'SAPLCPDI' '8010'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'RC27M-MATNR'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '/00'.
    PERFORM BDC_FIELD USING 'RC27M-MATNR'
    WA_TABDATA-MATNR. " 'kiz0006c'
    PERFORM BDC_FIELD USING 'RC27M-WERKS'
    WA_TABDATA-WERKS. " 'B001'
    PERFORM BDC_FIELD USING 'RC271-PLNNR'
    WA_TABDATA-PLNNR. " 60000000-99999999
    PERFORM BDC_FIELD USING 'RC271-STTAG'
    GV_DATUM. " '16.01.2008'
    IF GV_FLAG_NEW = 1. " If Exists then diff screen for clicking NEW ENTRIES tab
    PERFORM BDC_DYNPRO USING 'SAPLCPDI' '1200'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'RC27X-ENTRY_ACT'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=ANLG'.
    PERFORM BDC_FIELD USING 'RC27X-ENTRY_ACT'
    '1'.
    PERFORM BDC_DYNPRO USING 'SAPLCPDA' '1200'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '/00'.
    ELSE.
    PERFORM BDC_DYNPRO USING 'SAPLCPDA' '1200'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '/00'.
    ENDIF.
    IF WA_TABDATA-KTEXT SPACE.
    PERFORM BDC_FIELD USING 'PLKOD-KTEXT'
    WA_TABDATA-KTEXT. " 'ZOLMITRIPTAN STAGE C1111'
    ENDIF.
    PERFORM BDC_FIELD USING 'PLKOD-VERWE'
    WA_TABDATA-VERWE. " '5'
    PERFORM BDC_FIELD USING 'PLKOD-STATU'
    WA_TABDATA-STATU. " '4'
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'PLKOD-QPRZIEHVER'.
    PERFORM BDC_FIELD USING 'PLKOD-SLWBEZ'
    WA_TABDATA-SLWBEZ. " '200'
    PERFORM BDC_FIELD USING 'PLKOD-QPRZIEHVER'
    WA_TABDATA-QPRZIEHVER. " 'ACTIVE'
    PERFORM BDC_DYNPRO USING 'SAPLCPDA' '1200'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=VOUE'.
    LOOP AT ITST_TABCTRL1 INTO WA_TABCTRL1 WHERE MATNR = WA_TABDATA-MATNR
    AND WERKS = WA_TABDATA-WERKS
    AND PLNNR = WA_TABDATA-PLNNR.
    ON CHANGE OF WA_TABCTRL1-MATNR OR WA_TABCTRL1-WERKS OR WA_TABCTRL1-PLNNR.
    PERFORM BDC_DYNPRO USING 'SAPLCPDI' '1400'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'PLPOD-LTXA1(01)'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '/00'.
    CONCATENATE 'PLPOD-ARBPL(' LV_IDX1 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL1-ARBPL. " 'qc01'
    CONCATENATE 'PLPOD-STEUS(' LV_IDX1 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL1-STEUS. " 'qm01'
    CONCATENATE 'PLPOD-LTXA1(' LV_IDX1 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL1-LTXA1. " 'opearation1'
    PERFORM BDC_DYNPRO USING 'SAPLCPDI' '1400'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'PLPOD-VORNR(01)'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=QMUE'.
    PERFORM BDC_FIELD USING 'RC27X-ENTRY_ACT'
    '1'.
    PERFORM BDC_FIELD USING 'RC27X-FLG_SEL(01)'
    'X'.
    PERFORM BDC_DYNPRO USING 'SAPLQPAA' '0150'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'PLMKB-STELLEN(01)'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '/00'.
    LOOP AT ITST_TABCTRL2 INTO WA_TABCTRL2 WHERE MATNR = WA_TABCTRL1-MATNR AND
    WERKS = WA_TABCTRL1-WERKS AND
    PLNNR = WA_TABCTRL1-PLNNR.
    AND ARBPL = WA_TABCTRL1-ARBPL AND
    STEUS = WA_TABCTRL1-STEUS.
    LV_GOTO = LV_PG * 140. " For Page Down on Second Table Control
    IF LV_IDX2 >= 14.
    PERFORM BDC_DYNPRO USING 'SAPLQPAA' '0150'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'RQPAS-AB_MKNR'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '/00'.
    PERFORM BDC_FIELD USING 'RQPAS-AB_MKNR'
    LV_GOTO .
    LV_IDX2 = 2.
    LV_PG = LV_PG + 1.
    PERFORM BDC_DYNPRO USING 'SAPLQPAA' '0150'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '/00'.
    ELSE.
    PERFORM BDC_DYNPRO USING 'SAPLQPAA' '0150'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'PLMKB-STELLEN(01)'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '/00'.
    ENDIF.
    CONCATENATE 'PLMKB-VERWMERKM(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-VERWMERKM. " 'MIC00001'/ ' MIC00050'
    IF WA_TABCTRL2-PMETHODE SPACE.
    CONCATENATE 'PLMKB-PMETHODE(' LV_IDX2')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-PMETHODE. " 'met00001'
    CONCATENATE 'PLMKB-PMTVERSION(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-PMTVERSION. " '1'
    CONCATENATE 'PLMKB-STICHPRVER(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-STICHPRVER. " 'APIFX1'
    CONCATENATE 'PLMKB-PRUEFEINH(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-PRUEFEINH. " '20'
    CONCATENATE 'PLMKB-PROBEMGEH(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-PROBEMGEH. " 'G'
    CONCATENATE 'PLMKB-STELLEN(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-STELLEN. " '2'
    CONCATENATE 'RQPAS-MASSEINHSW(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-MASSEINHSW. " '%'
    CONCATENATE 'QFLTP-SOLLWERT(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-SOLLWERT. " '10'
    CONCATENATE 'QFLTP-TOLERANZUN(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-TOLERANZUN. " '5'
    CONCATENATE 'QFLTP-TOLERANZOB(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-TOLERANZOB. " '15'
    PERFORM BDC_DYNPRO USING 'SAPLQPAA' '1501'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=ENT1'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'PLMKB-VERWMERKM'.
    PERFORM BDC_DYNPRO USING 'SAPLQPAA' '1502'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=ENT1'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'PLMKB-PMETHODE'.
    PERFORM BDC_DYNPRO USING 'SAPLQPAA' '1502'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=ENT1'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'PLMKB-PMETHODE'.
    ELSE.
    CONCATENATE 'PLMKB-PMTVERSION(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-PMTVERSION. " '1'
    CONCATENATE 'PLMKB-STICHPRVER(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-STICHPRVER. " 'APIFX1'
    CONCATENATE 'PLMKB-PRUEFEINH(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-PRUEFEINH. " '20'
    CONCATENATE 'PLMKB-PROBEMGEH(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-PROBEMGEH. " 'G'
    CONCATENATE 'PLMKB-STELLEN(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-STELLEN. " '2'
    CONCATENATE 'RQPAS-MASSEINHSW(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-MASSEINHSW. " '%'
    CONCATENATE 'QFLTP-SOLLWERT(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-SOLLWERT. " '10'
    CONCATENATE 'QFLTP-TOLERANZUN(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-TOLERANZUN. " '5'
    CONCATENATE 'QFLTP-TOLERANZOB(' LV_IDX2 ')' INTO LV_FNAM.
    PERFORM BDC_FIELD USING LV_FNAM
    WA_TABCTRL2-TOLERANZOB. " '15'
    PERFORM BDC_DYNPRO USING 'SAPLQPAA' '1501'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=ENT1'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'PLMKB-QMTB_WERKS'.
    PERFORM BDC_FIELD USING 'PLMKB-VERWMERKM'
    WA_TABCTRL2-VERWMERKM.
    PERFORM BDC_FIELD USING 'PLMKB-QPMK_WERKS'
    WA_TABCTRL2-WERKS.
    PERFORM BDC_FIELD USING 'PLMKB-QMTB_WERKS'
    ENDIF.
    LV_IDX2 = LV_IDX2 + 1.
    ENDLOOP.
    ENDON.
    ENDLOOP.
    PERFORM BDC_DYNPRO USING 'SAPLQPAA' '0150'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'RQPAS-ENTRY_ACT'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=QMBU'.
    PERFORM BDC_FIELD USING 'RQPAS-ENTRY_ACT'
    '1'.
    CALL TRANSACTION C_QP01 USING ITST_BDCDATA
    MODE C_A UPDATE C_S
    MESSAGES INTO ITST_MSGTAB. "#EC CI_CALLTA
    ENDLOOP.
    ENDFORM. " F_START_BDC
    *& Form UPLOAD_EXCEL_FILE
    text
    --> p1 text
    <-- p2 text
    FORM UPLOAD_EXCEL_FILE .
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
    FILENAME = P_FNAME
    I_BEGIN_COL = 1
    I_BEGIN_ROW = 2
    I_END_COL = 19
    I_END_ROW = 9999
    TABLES
    INTERN = IT_FILE_UPLOAD.
    ENDFORM. " UPLOAD_EXCEL_FILE
    *& Form CONFIRM_UPLOAD
    text
    --> p1 text
    <-- p2 text
    FORM CONFIRM_UPLOAD .
    CALL FUNCTION 'POPUP_TO_CONFIRM'
    EXPORTING
    TITLEBAR = TEXT-002
    TEXT_QUESTION = TEXT-003
    IMPORTING
    ANSWER = GV_ANS
    EXCEPTIONS
    TEXT_NOT_FOUND = 1
    OTHERS = 2.
    ENDFORM. " CONFIRM_UPLOAD
    *& Form BDC_DYNPRO
    text
    -->P_0589 text
    -->P_0590 text
    FORM BDC_DYNPRO USING PROGRAM
    DYNPRO.
    CLEAR: ITST_BDCDATA.
    ITST_BDCDATA-PROGRAM = PROGRAM.
    ITST_BDCDATA-DYNPRO = DYNPRO.
    ITST_BDCDATA-DYNBEGIN = 'X'.
    APPEND ITST_BDCDATA.
    ENDFORM. " BDC_DYNPRO
    *& Form BDC_FIELD
    text
    -->P_0729 text
    -->P_0730 text
    FORM BDC_FIELD USING FNAM
    FVAL.
    CLEAR: ITST_BDCDATA.
    ITST_BDCDATA-FNAM = FNAM.
    ITST_BDCDATA-FVAL = FVAL.
    APPEND ITST_BDCDATA.
    ENDFORM. " BDC_FIELD
    *& Form ORGANIZE_UPLOADED_DATA
    text
    --> p1 text
    <-- p2 text
    FORM ORGANIZE_UPLOADED_DATA .
    DATA : LV_TOTROW TYPE I, " Total Records
    LV_ROW TYPE I. " Row No
    LV_TOTROW = 1.
    SORT IT_FILE_UPLOAD BY ROW
    COL.
    LOOP AT IT_FILE_UPLOAD.
    LV_TOTROW = IT_FILE_UPLOAD-ROW. " To find total rows
    ENDLOOP.
    LV_ROW = 1.
    WHILE LV_ROW <= LV_TOTROW.
    LOOP AT IT_FILE_UPLOAD WHERE ROW = LV_ROW.
    CASE IT_FILE_UPLOAD-COL.
    WHEN '0001'. " Material
    TRANSLATE IT_FILE_UPLOAD-VALUE TO UPPER CASE.
    WA_TABDATA-MATNR = IT_FILE_UPLOAD-VALUE.
    WA_TABCTRL1-MATNR = IT_FILE_UPLOAD-VALUE.
    WA_TABCTRL2-MATNR = IT_FILE_UPLOAD-VALUE.
    WHEN '0002'. " Plant
    TRANSLATE IT_FILE_UPLOAD-VALUE TO UPPER CASE.
    WA_TABDATA-WERKS = IT_FILE_UPLOAD-VALUE.
    WA_TABCTRL1-WERKS = IT_FILE_UPLOAD-VALUE.
    WA_TABCTRL2-WERKS = IT_FILE_UPLOAD-VALUE.
    WHEN '0003'. " Group Key
    WA_TABDATA-PLNNR = IT_FILE_UPLOAD-VALUE.
    WA_TABCTRL1-PLNNR = IT_FILE_UPLOAD-VALUE.
    WA_TABCTRL2-PLNNR = IT_FILE_UPLOAD-VALUE.
    WHEN '0004'. " Group Counter Desc
    WA_TABDATA-KTEXT = IT_FILE_UPLOAD-VALUE.
    WHEN '0005'. " Usage
    WA_TABDATA-VERWE = IT_FILE_UPLOAD-VALUE.
    WHEN '0006'. " Status
    WA_TABDATA-STATU = IT_FILE_UPLOAD-VALUE.
    WHEN '0007'. " Inspection Point
    WA_TABDATA-SLWBEZ = IT_FILE_UPLOAD-VALUE.
    WHEN '0008'. " Sample Drawing Procedure
    WA_TABDATA-QPRZIEHVER = IT_FILE_UPLOAD-VALUE.
    WHEN '0009'. " Work Centre
    WA_TABCTRL1-ARBPL = IT_FILE_UPLOAD-VALUE.
    WA_TABCTRL2-ARBPL = IT_FILE_UPLOAD-VALUE.
    WHEN '0010'. " Control Key
    WA_TABCTRL1-STEUS = IT_FILE_UPLOAD-VALUE.
    WA_TABCTRL2-STEUS = IT_FILE_UPLOAD-VALUE.
    WHEN '0011'. " Desc
    WA_TABCTRL1-LTXA1 = IT_FILE_UPLOAD-VALUE.
    WHEN '0012'. " MIC
    WA_TABCTRL2-VERWMERKM = IT_FILE_UPLOAD-VALUE.
    WHEN '0013'. " Method
    WA_TABCTRL2-PMETHODE = IT_FILE_UPLOAD-VALUE.
    WHEN '0014'.
    WA_TABCTRL2-PMTVERSION = IT_FILE_UPLOAD-VALUE.
    WHEN '0014'. " Sampling
    WA_TABCTRL2-STICHPRVER = IT_FILE_UPLOAD-VALUE.
    WHEN '0016'.
    WA_TABCTRL2-PRUEFEINH = IT_FILE_UPLOAD-VALUE.
    WHEN '0017'.
    WA_TABCTRL2-PROBEMGEH = IT_FILE_UPLOAD-VALUE.
    WHEN '0015'. " Accuracy
    WA_TABCTRL2-STELLEN = IT_FILE_UPLOAD-VALUE.
    WHEN '0016'. " Unit
    WA_TABCTRL2-MASSEINHSW = IT_FILE_UPLOAD-VALUE.
    WHEN '0017'. " Target Value
    WA_TABCTRL2-SOLLWERT = IT_FILE_UPLOAD-VALUE.
    WHEN '0018'. " Lower Limit
    WA_TABCTRL2-TOLERANZUN = IT_FILE_UPLOAD-VALUE.
    WHEN '0019'. " Upper Limit
    WA_TABCTRL2-TOLERANZOB = IT_FILE_UPLOAD-VALUE.
    ENDCASE.
    ENDLOOP.
    LV_ROW = LV_ROW + 1.
    INSERT WA_TABDATA INTO TABLE ITST_TABDATA .
    APPEND WA_TABCTRL1 TO ITST_TABCTRL1.
    APPEND WA_TABCTRL2 TO ITST_TABCTRL2.
    CLEAR :WA_TABDATA,WA_TABCTRL1,WA_TABCTRL2.
    ENDWHILE.
    ENDFORM. " ORGANIZE_UPLOADED_DATA
    E N D - O F - S E L E C T I O N *
    END-OF-SELECTION.
    Free all internal tables
    FREE: ITST_TABDATA,
    ITST_TABCTRL1,
    ITST_TABCTRL2.
    Regards,
    Raj.

  • Create Inspection plan at once for many materials through QP01. Possible?

    Dear Friends,
    Is it possible to create Inspection Plant for more than one material at onece through QP01 when operation activity and Characteristics are same. I will change the Characteristics specifications afterwards.

    As suggested in earlier reply you can assign multiple materials to one inspection plan.
    But you may still need more than one plan because of
    1. UOM is maintained in Inspection plan header. So you have to create different inspection plan if you receive materials in different Unit of measures.
    2. Usage is also at header level, so depending on configuration, usage for 01 inspection type may be different from usage for 0101 inspection type.
    If you like the user exit approach.
    1. Create a dummy material and assign default inspection plan to this material.
    2. In the user exit change the inspection plan assignment.  Assign inspection plan from this dummy material.
    Form us this was a very useful approach during testing or for new material where inspection plan was not created in time.
    Once this default inspection plan is assigned, inspection lot is released even without inspection plan. If we need,  we can always change the default inspection plan in QA02 transaction before RR
    AK Marwadi.

  • ERROR WHEN CREATING INSPECTION PLAN

    HI GURUS,
    WHEN CREATE AN INSPECTION PLAN GET THE FOLLOWING ERROR
    Op. 0010, CH 0180: Char. ident. SMS used for QDI several times in task list.
    THIS BECAUSE MY CLIENT WANTS TO REPEAT THIS M.I.C TWICE.HOW CAN I SOLVE THIS
    REGARDS
    AMIT

    Hi,
    It is not a error message It is a warning message for Use the Same MIC in Multiple time, No problem just you can save the Inspection plan, It will not reflect any problem any where.
    Regards,
    S.Babusingh

  • Creating Inspection plan using BAPI

    HI all,
    I am using the FM 'BAPI_INSPECTIONPLAN_CREATE'. I am unable to update the Inspection characteristics as multiple entries. Its getting updated only the last item.
    Expecting answer from the experts.
    Ravi.

    Hi,
       you can check the BAPI_INSPECTIONPLAN_CREATE for the named purpose, the values you named are in the structure BAPI1191_CHA_C please read the BAPI documentation:
    Functionality
    You can use this function module to create inspection plans and all its subordinate objects.
    You can create a key date view and the complete history of an inspection plan. It is useful to have a history when transferring data from external systems.
    Example
    You want to create an inspection plan with operations and inspection characteristics for key date 01.01.2000. Make an entry in the following tables for each object:
    TASK
    OPERATION
    INSPCHARACTERISTIC
    If you want to assign test equipment to the inspection characteristic in field ITEM_NO_OF_PRODUCTION_RESOURCE, you must have assigned this test equipment in PARAMETER PRODUCTIONRESOURCE.
    Notes
    If no error occurs during the transfer of data, the export parameters GROUP and GROUPCOUNTER contain the key for the task list created. A COMMIT WORK must be executed for writing data to the database.
    All errors that have occured are logged in the export parameter RETURN. If there are inconsistencies, the inspection plan to be created is rejected
    <b>Reward points</b>
    Regards

  • How to map revision level materials to already created inspection plan?

    Dear All,
    I have created single inspection plan for many existing raw materials. Now it has been found that each raw material have different revision level as well as valid from date.
    My inspection plan is created on 02.07.2014 and each raw material has different revision level with valid from date which is also very old (like 11.03.2012 for revision level 09).
    My Requirement is:  how to correct my inspection plan?,  so that it will work for each assigned raw material and there will not be any material revision level wise problem created for the inspection lot so that my inspection lot should be created in REL status in QA32 transaction i.e. inspection lot is assigned automatically as per standard SAP functionality.
    Thanks,
    Narresh

    Hi Amol,
    Thanks for your reply.
    In this business scenario, we are not creating inspection plan for each raw material because there is similarity in inspection for 40-50 raw materials and total number of raw materials are around 500. This will be very difficult and unnecessarily data creation in the system.
    As per my understanding revision level is for material master revision and if material master changes then how it affect so much on inspection plan? also is it means that for every revision in future we will have to create new inspection plan?  hence I believe that if I will make back dated inspection plan for raw materials then it may work. Is my understanding is correct?
    Expecting much better solution from QM experts.
    Thanks,
    Narresh

  • Usage decision and inspection plan

    Hi,
    1. Once Usage decision has been done, can we still change it? how can i set that it can be changed?
    2.Is it possible to create an Inspection plan for a group of material? for example, I just need to maintain 1 Inspection plan for 30 material. something like it can be group like reference operation set? if yes how? if no, why?
    Thank you so much,
    raymond

    Hi
    Hi,
    1. Once Usage decision has been done, can we still change it? how can i set that it can be changed?
    Yes UD  can be changed anytime but you can not change the stock postng.Also for history in QM view tick on "document req"
    2.Is it possible to create an Inspection plan for a group of material? for example, I just need to maintain 1 Inspection plan for 30 material. something like it can be group like reference operation set? if yes how? if no, why?
    Yes this is possible through QP01/02 --->in header there is one tab"Material assignment" here you can enter
    Group conter (same say "1" ) material & plant.
    Same Inspection plan is reffered to the multiple materials.You can add as materials possible.
    But remember that Unit of measurement of all materials must be same.
    Sujit

  • LSMW for Inspection Plan

    Hi Sapiens,
    I am a requirement to upload the Quality Management data through LSMW.
    1) Quality Info Recrod
    2) Inspection Plan
    For the first one, I could able to create Project in LSMW and successfully do for over 200 customers.
    I am saying problem in creating and uploading the Inspection Plan data.
    I created one inspection plan with a material in QP01 (Tcode), and assigned one customer in "Material Assignment".
    We have only hand full of materials (6-10 max) with MICs (10 - 15 max). So I using the same Inspection plan for material and I want to assign all the customer in Inspection plan at "Material Assignment". But at "Run Batch Input Record" in LSMW, it is failing. due to the below errors.
    1) Field MAPL-PLNAL(2) is not an input field
    2) Field MAPL-MATNR(2) is not an input field
    3) Field MAPL-WERKS(2) is not an input field
    I understand that these fields are repeating, as these fields are required in "Material Assignment" tab, where I will mention Counter, Matl, Plant and Customer. but it is saying these fields are not for input. If I dont use these fields in Field mapping then it will throw an error during actual recording.
    So, I need some inputs on it and all of your suggestions will be valuable.
    Awaiting of your reply on this soon.
    thanks,
    Mukesh

    Hi Mukesh,
    I would suggest to go for BAPI instead of LSMW for the inspection plans, if possible.
    Regards,
    Rahul

  • Inspection plan - Valid to date

    Dear gurus,
    Iam using change number to create Inspection plan. System is displaying always Valid to date as "31.12.9999". But as per business requirement of the client, validity period is 3 yrs. How can i change the date.
    1)     Can i cahnge at change number level?
    2)     or At inspection plan level?
    Iam giving you the details of the field at Inspection plan level.
    Transaction: Qp01
    screen no: 1200
    screen Field name: PLKOD-DATUB 
    Program name: SAPLCPDI
    Package: CP
    Pls guide me how to get valid date as 3 yrs plus valid from date.
    thanks and regards
    Venkat. V

    Hi,
    For change number effetivity we can think of another alternative.
    1) Create one change number and create a inspection plan with group counter 1.
    2) Create another change number and create another inspection plan with group counter 2.Second change number   
         validity should be from 01.01.2012
    3) When a goods receipt is done system automatically assigns the inspection plan with group counter 1 till 31.12.2011.
    4) When a goods receipt is done on 01.01.2012 system will create the inspection lot with status created as there are
         2 inspection lots from 01.01.2012.
    5) Go to the first inspection lot and change the status to 1 and assign second inspection lot which is valid from 01.01.2012.
    CSN

  • Inspection plan 2985 has been deleted error

    Hi,
    We ahve created a new material and gr made for that materail as it is coming frist time we have created a inspection plan with QP01, but when i done  QA02, chnage inspection lot to calculate the sample quantity system is giving error that   Inspection plan 2985 has been deleted , and we are not getting the sample quantity and also the material is not coming in QE51 to update .
    regards,
    zafar

    Hi Zafar,
    Make sure you have assigned the material to a valid inspection plan in transaction QP02, once the material is assigned to the plan then go to QA02 under the inspection spefication tab click the task list / spec button, this will then automatically assign the inspection plan to the inspection lot. If you have assigned the material to multiple plans for the same usage it will give you a pop up selection of which plan to choose. Once the plan is assigned you will be able to see the inspection lot in transaction QE51N.
    Regards,
    Roderick

  • Error while uploading Inspection plan

    Dear Friends,
    I am creating inspection plans using BDC. The MIChas 2 versions. When i am using version 1, the inspection plan is created. Whereas when i am using MIC version 2 i am getting error "error occured while checking type group".Kindly let me know how do i resolve this.
    Regards
    Vivek

    Hi,
    Thanks for the reply. when i am trying to create a inspection plan in other plant, we have 4-5 sampling procesures to select from. But for this perticular plant where we are having problem, its showing only one. How do i get more options?How do i extend a sampling procedure to a new plant.
    Vivek
    Edited by: vivek mankad on Feb 23, 2010 7:57 AM

  • Inspection plan based on workcentre

    Dear Sir
    We have one plant,in that we are using two interfaces,result recording has to come from this interfaces for that there is only one material code,we are using workcenter in inspection plan and even for that plan there are two operation,so how get the correct plan for the production confirmation
    Aim if there is eg X work center  its should take X plan
    If there is Y workcenter it  should take take Y plan
    We donu2019t want to use dynamic modification rule ,and in search field in we use some to detect  the plan,it will peak but how to segregate that w r t to workcentre

    Dear Kunal,
    I am not so sure what sort of user interface you are dealing with.
    First of all may I request you to clarify with which inspection type you are working (03, 04, 01 or 89)?
    For every operation you can assign only 1 work center and 1 inspection plan may contain several operations.
    Inspection characteristics are defined at operation level only. These MICs may also vary operation to operation depending upon nature of operation. For example, if your inspection plan contains u201CDrillingu201D and u201CInner Threadingu201D as 2 operations, you can have diameter as inspection parameter for drilling and pitch for threading. Kindly note this entire information is associated with only 1 plan.
    When the inspection lot is created and you click on results tab in QA32, system throws pop up of operations. There you need to choose for which operation you want to perform result recording. If you select Drilling, only diameter will be displayed to you to put observed reading.
    To sum up, this mechanism ensures to pick operation specific (work center specific) inspection characteristics. There is no need to create 2 inspection plans if your plan contains 2 operations in a single plan.
    Regards,
    Anand Rao

  • Material specification and Inspection plan - Task list usage

    Dear Friends,
    In inspection type  Task list usage is assigned
    For Example
    inspection type 01  -  usage - 03
    inspection type 05  -  usage - 05
    inspection type 06  -  usage - 07
    inspection type 10  -  usage - 06
    In my scenario i want to use all the above inspection type for a product
    if i use mateial specification there is no any problem with my  Task list usage
    If suppose i use inspection plan do i need to create different inspection plan with different usage
    or is it possible to create one inspection plan with all the above usage
    what about universal usage 03  can i use it
    i try to use but system does not triggering inspection lot
    can any one Suggest some ideas
    Many Thanks & Regards
    Raj

    Hi Raju,
    All of first pls understand the concept of Task list and specification.
    If you need to inspection any material in very systematic manner, where you will have well segregated operations where the appropriate Work Centers will be bind and under that hierarchy MIC will be attached. The inspection will be governed by some inspection points. And according the the same Samples will be calculated. When you wanna go with all these functionality then you must have to use Task list (Inspection plan).
    And if you don't wish to have these functions then simply go with the material specification.
    Now it comes the actual query about task list usage.
    If there is a common inspection plan is supposed to be used for all the inspection types for your material then you can prepare only one inspection plan, put ant of the Usage to it it can be 05 or 03 universal. But what you have to do is,
    Go to SPRO->Quality Management->Quality Inspection->Inspection Lot Creation->Maintain Inspection Types Execute and set the Task list usage as the same it is set in the inspection plan for all those Inspection types for which that common inspection plan is supposed to be used.
    Note:- There is no any link between inspection lot creation and task list usage of inspection plan.
    Regards,
    Shyamal

  • Muliple inspection plan for same material and same usage

    Hi,
    I need to create multiple inspection plans for same material with same usage.during the inspection lot creation i need to select any one inspection plan.
    In standard SAP its not possible.Any user exits available for this..
    Regards,
    S.P.Selvathangam

    Dear Selvathangam Palanisamy ,
                                                       My Dear Shayamal is absolutely correct and we are corrently using this SAP facility. You can create 'N' number of inspectio plans for a material and then whenever the inspection lot will created ( Thru a process order or Manual) then you will get the Inspection Lot Status 'CRTD' (Created mode) then you have to select your Inspection Task list manually by two way...
    Either go to QA02 and then select it from the list of multiple plans.
    Or you can directly go from QA32 ...select your inspection lot row and directly click on the Inspection Lot icon to go directly to the inspection lot window to slect the Task list.
    Further there is no need to remove the Automatic Assignment from the QM View of the Material Master as if there is only one task List then system will automatically assign the TASK LIST, if you deselect it then you have to select in every case.
    Thanks

Maybe you are looking for

  • How do I change the color of one of my calendars

    My calendar for work changed to a very bright blue (by itself). How do I change back to the original red color it had?

  • Trigger Application successful but with no transfer

    Hello, I am using CRS 5.01 I am sending callers to another application once we close.  Once the call is sent to the Trigger Application step.  The call is then fowarded successfully but I do not hear the next script. 1.  I created the Application and

  • Ipod is messed up

    when i am syncing all my music and videos it isn't putting them all there like it will only put 974 songs out of 5250 items any idears that would fix and i have already tried restoreing it too

  • Is a JMF client dl required?

    I am looking into developing a system that may use JMF. My very simple question (albiet one that I don't yet have a clear answer on) is: Does a client viewing an applet have to have d/led JMF in order to have the applet run correctly?

  • Anyone know where I can get a program that'll tell me...

    ...my mouses screen position? For example: I click...it displays somehow to me, it's x,y coords on my screen... I really need this badly, and hopefully soon and quickly :) Either someone knowing where I can get a prog that does this, or maybe someone