Translate

Sunday, 9 September 2012

Cost Report (CK11) Cost Estimate with Quantity

Description : Cost Report (Tcode-ck11n) with Material Weight & Time (Routing)




**********************************************************
REPORT  ZFI_COST_DETAILS.
TABLES: MARA,CKIS.
TYPE-POOLS:SLIS.
TYPES: BEGIN OF FINAL,
       MATNR TYPE MARA-MATNR,
       MAKTX TYPE MAKT-MAKTX,
       VGW03 TYPE PLPO-VGW03,
  END OF FINAL.
DATA: BEGIN OF ITAB OCCURS 0,
       COUNT TYPE I,
       MATNR TYPE MARA-MATNR,
       MAKTX TYPE MAKT-MAKTX,
       MTART TYPE MARA-MTART,
       MATKL TYPE MARA-MATKL,
       STLAL TYPE MAST-STLAL,
       STLNR TYPE MAST-STLNR,
       C1    TYPE MARA-MATNR,
       C2    TYPE MARA-MATNR,
       C3    TYPE MARA-MATNR,
       C4    TYPE MARA-MATNR,
       C5    TYPE MARA-MATNR,
       C6    TYPE MARA-MATNR,
       C7    TYPE MARA-MATNR,
       C8    TYPE MARA-MATNR,
       D1    TYPE MAKT-MAKTX,
       D2    TYPE MAKT-MAKTX,
       D3    TYPE MAKT-MAKTX,
       D4    TYPE MAKT-MAKTX,
       D5    TYPE MAKT-MAKTX,
       D6    TYPE MAKT-MAKTX,
       D7    TYPE MAKT-MAKTX,
       D8    TYPE MAKT-MAKTX,
       TOTVAL TYPE CKCOSTLINE-GK,
       TOTVAL1 TYPE CKCOSTLINE-GK,
       VERPR TYPE MBEW-VERPR,
       VERPR1 TYPE MBEW-VERPR,
       MENGE  LIKE STPO-MENGE,
       MEINS  LIKE STPO-MEINS,
       MENGE1  LIKE STPO-MENGE,
       MEINS1  LIKE STPO-MEINS,
       TOT_QTY TYPE STPO-MENGE,
       TOT_VAL TYPE CKCOSTLINE-GK,
       VGW03 TYPE ASVRG,
       VGW031 TYPE ASVRG,
       TOT_TIME TYPE ASVRG,
  END OF ITAB.
  DATA : IT_MAKT LIKE ITAB OCCURS WITH HEADER LINE.
DATA ITAB1 LIKE ITAB OCCURS WITH HEADER LINE.
DATA ITAB2 LIKE ITAB OCCURS WITH HEADER LINE.
DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
DATA : IT_MARA LIKE ITAB OCCURS WITH HEADER LINE.
DATA: LN TYPE I.
DATA: HEADING TYPE SLIS_T_LISTHEADER WITH HEADER LINE.
DATA: LS_LAYOUT TYPE SLIS_LAYOUT_ALV.
  SELECT-OPTIONS: MATNR1 FOR MARA-MATNR.


*&------------------------------------------------------*&
  DATA: BEGIN OF IT_MAPL OCCURS 0,
      PLNNR  LIKE MAPL-PLNNR,
      PLNAL  LIKE MAPL-PLNAL,
      PLNKN  LIKE PLAS-PLNKN,
      PLNFL  LIKE PLAS-PLNFL,
      ZAEHL  LIKE PLAS-ZAEHL,
      MATNR  LIKE MAPL-MATNR,
      MAKTX  LIKE MAKT-MAKTX,
      VORNR  LIKE PLPO-VORNR,
      STEUS  LIKE PLPO-STEUS,
      MAXVOR LIKE PLPO-VORNR,
      LTXA1  LIKE PLPO-LTXA1,
      LOSVN  LIKE PLKO-LOSVN,
      LOSBS  LIKE PLKO-LOSBS,
      STATU  LIKE PLKO-STATU,
      VGW02  LIKE PLPO-VGW02,
      VGW03 TYPE ASVRG,
*      VGW03  LIKE PLPO-VGW03,
      ARBPL  LIKE CRHD-ARBPL,
      ARBID  LIKE PLPO-ARBID,
      ARBPL1 LIKE CRHD-ARBPL,
      ARBID1 LIKE PLPO-ARBID,
*      FEVOR  LIKE MARC-FEVOR,
*      DISPO  LIKE MARC-DISPO,
      RECORDS TYPE SYST-DBCNT,
      LTIME  LIKE PLPO-VGW02,
      MSTAE  LIKE MARA-MSTAE,  "Cross-Plant Material Status (03) - Blocked Material
      MTART  LIKE MARA-MTART,
      FERTH  LIKE MARA-FERTH,
      SRNO TYPE I,
     END OF IT_MAPL.
**  SELECT-OPTIONS: S_DATE  FOR CKIS-KADKY.

 DATA: BEGIN OF IPLAS OCCURS 0,
      PLNNR  LIKE MAPL-PLNNR,
      PLNAL  LIKE MAPL-PLNAL,
      PLNKN  LIKE PLAS-PLNKN,
      PLNFL  LIKE PLAS-PLNFL,
      ZAEHL  LIKE PLAS-ZAEHL,
      ARBID  LIKE PLPO-ARBID,
      VGW02  LIKE PLPO-VGW02,
      VGW03  LIKE PLPO-VGW03,
      LTIME  LIKE PLPO-VGW02,
      STEUS  LIKE PLPO-STEUS,
      LTXA1  LIKE PLPO-LTXA1,
      VORNR  LIKE PLPO-VORNR,
      RECORDS TYPE SYST-DBCNT,
     END OF IPLAS.

  DATA CNT2 TYPE I.
  DATA : PP TYPE PLNKN.
  DATA : TEMP TYPE PLNKN.

**  DATA: BEGIN OF IPLAS3 OCCURS 0,
**      PLNNR   LIKE AFKO-PLNNR,
**      PLNAL   LIKE PLAS-PLNAL,
**      PLNKN   LIKE PLAS-PLNKN,
**      VORNR   LIKE PLPO-VORNR,
**      STEUS   LIKE PLPO-STEUS,
**      RECORDS LIKE SYST-DBCNT,
**     END OF IPLAS3.
*&-----------------------------------------------------------------*&
  START-OF-SELECTION.

 SELECT FROM MARA INTO CORRESPONDING FIELDS OF TABLE IT_MARA
          WHERE MATNR IN MATNR1
          AND MTART 'ZFIN'.
   SORT IT_MARA BY MATNR.
CHECK IT_MARA[] IS NOT INITIAL.
 SELECT FROM MAKT INTO CORRESPONDING FIELDS OF TABLE IT_MAKT
          FOR ALL ENTRIES IN IT_MARA
          WHERE MATNR IT_MARA-MATNR.

   SORT IT_MAKT BY MATNR.

 LOOP AT IT_MARA.
   SELECT SINGLE STLAL STLNR FROM MAST
          INTO CORRESPONDING FIELDS OF  IT_MARA
          WHERE WERKS 'HIP' AND STLAL '01'
          AND MATNR IT_MARA-MATNR AND STLAN '1'.
   IF SY-SUBRC <> 0.
     SELECT SINGLE STLAL STLNR FROM MAST
            INTO CORRESPONDING FIELDS OF  IT_MARA
           WHERE WERKS 'HIP' AND STLAL '02'
           AND MATNR IT_MARA-MATNR AND STLAN '1'.
       IF SY-SUBRC <> 0.
         SELECT SINGLE STLAL STLNR FROM MAST
             INTO CORRESPONDING FIELDS OF IT_MARA
              WHERE WERKS 'HIP' AND STLAL '03'
               AND MATNR IT_MARA-MATNR AND STLAN '1'.
           IF SY-SUBRC 0.
          MODIFY IT_MARA.
        ELSE.
        ENDIF.
      ELSE.
        MODIFY IT_MARA.
      ENDIF.
    ELSE.
      MODIFY IT_MARA.
    ENDIF.
   ENDLOOP.

    LOOP AT IT_MARA.
    ITAB-MATNR IT_MARA-MATNR.
    ITAB-MTART IT_MARA-MTART.
    ITAB-MATKL IT_MARA-MATKL.
    ITAB-STLAL IT_MARA-STLAL.
    ITAB-STLNR IT_MARA-STLNR.
    READ TABLE IT_MAKT WITH KEY MATNR IT_MARA-MATNR BINARY SEARCH.
    ITAB-MAKTX IT_MAKT-MAKTX.
    APPEND ITAB.
  ENDLOOP.

   SORT BY ITAB-MATNR.

    DATA: BOM_TAB  TYPE TABLE OF STPO_API02 WITH HEADER LINE.
  DATA: STPU_TAB TYPE TABLE OF STPU_API01 WITH HEADER LINE.
  DATA : DE(18TYPE C,
         DE1(1TYPE C.

**BREAK-POINT.
LOOP AT ITAB.

DATA: CNT TYPE I.

 CALL FUNCTION 'CSAP_MAT_BOM_READ'
   EXPORTING
     MATERIAL             ITAB-MATNR
     PLANT                'HIP'
     BOM_USAGE            '1'
      ALTERNATIVE         ITAB-STLAL
  TABLES
    T_STPO               BOM_TAB
  EXCEPTIONS
    ERROR                1
    OTHERS               2.
 IF SY-SUBRC <> 0.
* Implement suitable error handling here
 ENDIF.
    DE ITAB-MATNR.
    SHIFT DE BY PLACES.
    DE1 DE.
 IF DE1 'D'.
     READ TABLE BOM_TAB WITH KEY ITEM_NO '0010'.
      ITAB-C1 BOM_TAB-COMPONENT .
      IF ITAB-C1+0(3'RST'.
        ITAB-MENGE BOM_TAB-COMP_QTY.
        ITAB-MEINS BOM_TAB-COMP_UNIT.

      ENDIF.
      READ TABLE BOM_TAB WITH KEY ITEM_NO '0020'.
      IF BOM_TAB-COMPONENT <> ' ' AND BOM_TAB-ITEM_NO '0020'.
        ITAB-C5 BOM_TAB-COMPONENT.
      ENDIF.

      IF ITAB-C1 <> ' '.
        SELECT MAKTX INTO ITAB-D1 FROM MAKT
               WHERE MATNR  ITAB-C1.
        ENDSELECT.
        CALL FUNCTION 'CSAP_MAT_BOM_READ'
          EXPORTING
            MATERIAL  ITAB-C1
            PLANT     'HIP'
            BOM_USAGE '1'
          TABLES
            T_STPO    BOM_TAB
          EXCEPTIONS
            ERROR     1
            OTHERS    2.
        READ TABLE BOM_TAB WITH KEY ITEM_NO '0010'.
        ITAB-C2 BOM_TAB-COMPONENT .
        IF ITAB-C2+0(3'RST'.
          ITAB-MENGE =  BOM_TAB-COMP_QTY.
          ITAB-MEINS BOM_TAB-COMP_UNIT.
        ENDIF.

      IF ITAB-C2 <> ' '.
          SELECT MAKTX INTO ITAB-D2 FROM MAKT
                 WHERE MATNR  ITAB-C2.
          ENDSELECT.
          CALL FUNCTION 'CSAP_MAT_BOM_READ'
            EXPORTING
              MATERIAL  ITAB-C2
              PLANT     'HIP'
              BOM_USAGE '1'
            TABLES
              T_STPO    BOM_TAB
            EXCEPTIONS
              ERROR     1
              OTHERS    2.
          READ TABLE BOM_TAB WITH KEY ITEM_NO '0010'.
          ITAB-C3 BOM_TAB-COMPONENT .
          IF ITAB-C3+0(3'RST'.
            ITAB-MENGE =  BOM_TAB-COMP_QTY.
            ITAB-MEINS BOM_TAB-COMP_UNIT.
          ENDIF.

       IF ITAB-C3 <> ' '.
            SELECT MAKTX INTO ITAB-D3 FROM MAKT
              WHERE MATNR  ITAB-C3.
            ENDSELECT.
            CALL FUNCTION 'CSAP_MAT_BOM_READ'
              EXPORTING
                MATERIAL  ITAB-C3
                PLANT     'HIP'
                BOM_USAGE '1'
              TABLES
                T_STPO    BOM_TAB
              EXCEPTIONS
                ERROR     1
                OTHERS    2.
            READ TABLE BOM_TAB WITH KEY ITEM_NO '0010'.
            ITAB-C4 BOM_TAB-COMPONENT .
            IF ITAB-C4+0(3'RST'.
              ITAB-MENGE =  BOM_TAB-COMP_QTY.
              ITAB-MEINS BOM_TAB-COMP_UNIT.
              SELECT SINGLE VERPR FROM MBEW INTO ITAB-VERPR
                     WHERE MATNR ITAB-C4.
                ITAB-TOTVAL ITAB-VERPR * ITAB-MENGE.
            ENDIF.
            SELECT MAKTX INTO ITAB-D4 FROM MAKT
                   WHERE MATNR  ITAB-C4.
            ENDSELECT.
          ENDIF.
        ENDIF.
      ENDIF.

      IF ITAB-C5 <> ' '.
        SELECT MAKTX INTO ITAB-D5 FROM MAKT
               WHERE MATNR  ITAB-C5.
        ENDSELECT.
        CALL FUNCTION 'CSAP_MAT_BOM_READ'
          EXPORTING
            MATERIAL  ITAB-C5
            PLANT     'HIP'
            BOM_USAGE '1'
          TABLES
            T_STPO    BOM_TAB
          EXCEPTIONS
            ERROR     1
            OTHERS    2.
        READ TABLE BOM_TAB WITH KEY ITEM_NO '0010'.
        ITAB-C6 BOM_TAB-COMPONENT .
        IF ITAB-C6+0(3'RST'.
          ITAB-MENGE BOM_TAB-COMP_QTY.
          ITAB-MEINS BOM_TAB-COMP_UNIT.
        ENDIF.

        IF ITAB-C6 <> ' '.
          SELECT MAKTX INTO ITAB-D6 FROM MAKT
                 WHERE MATNR  ITAB-C6.
          ENDSELECT.
          CALL FUNCTION 'CSAP_MAT_BOM_READ'
            EXPORTING
              MATERIAL  ITAB-C6
              PLANT     'HIP'
              BOM_USAGE '1'
            TABLES
              T_STPO    BOM_TAB
            EXCEPTIONS
              ERROR     1
              OTHERS    2.
          READ TABLE BOM_TAB WITH KEY ITEM_NO '0010'.
          ITAB-C7 BOM_TAB-COMPONENT .
          IF ITAB-C7+0(3'RST'.
            ITAB-MENGE =  BOM_TAB-COMP_QTY.
            ITAB-MEINS BOM_TAB-COMP_UNIT.

          ENDIF.

          IF ITAB-C7 <> ' '.
            SELECT MAKTX INTO ITAB-D7 FROM MAKT
                   WHERE MATNR  ITAB-C7.
            ENDSELECT.
            CALL FUNCTION 'CSAP_MAT_BOM_READ'
              EXPORTING
                MATERIAL  ITAB-C7
                PLANT     'HIP'
                BOM_USAGE '1'
              TABLES
                T_STPO    BOM_TAB
              EXCEPTIONS
                ERROR     1
                OTHERS    2.
            READ TABLE BOM_TAB WITH KEY ITEM_NO '0010'.
            ITAB-C8 BOM_TAB-COMPONENT .
            IF ITAB-C8+0(3'RST'.
              ITAB-MENGE1 BOM_TAB-COMP_QTY.
              ITAB-MEINS1 BOM_TAB-COMP_UNIT.
              SELECT SINGLE VERPR FROM MBEW INTO ITAB-VERPR1
                     WHERE MATNR ITAB-C8.
                ITAB-TOTVAL1 ITAB-VERPR1 * ITAB-MENGE1.
            ENDIF.
            SELECT MAKTX INTO ITAB-D8 FROM MAKT
                   WHERE MATNR  ITAB-C8.
            ENDSELECT.
          ENDIF.
        ENDIF.
      ENDIF.
      MODIFY ITAB.

    ELSEIF DE1 'G'.
*====================== For Single End Only =======================

      READ TABLE BOM_TAB WITH KEY ITEM_NO '0010'.
      ITAB-C1 BOM_TAB-COMPONENT .
      IF ITAB-C1+0(3'RST'.
        ITAB-MENGE =  BOM_TAB-COMP_QTY.
        ITAB-MEINS =  BOM_TAB-COMP_UNIT.
        SELECT SINGLE VERPR FROM MBEW INTO ITAB-VERPR
                     WHERE MATNR ITAB-C2.
                ITAB-TOTVAL ITAB-VERPR * ITAB-MENGE.
      ENDIF.

      IF ITAB-C1 <> ' '.
        SELECT MAKTX INTO ITAB-D1 FROM MAKT
               WHERE MATNR  ITAB-C1.
        ENDSELECT.
        CALL FUNCTION 'CSAP_MAT_BOM_READ'
          EXPORTING
            MATERIAL  ITAB-C1
            PLANT     'HIP'
            BOM_USAGE '1'
          TABLES
            T_STPO    BOM_TAB
          EXCEPTIONS
            ERROR     1
            OTHERS    2.
        READ TABLE BOM_TAB WITH KEY ITEM_NO '0010'.
        ITAB-C2 BOM_TAB-COMPONENT .
        IF ITAB-C2+0(3'RST'.
          ITAB-MENGE =  BOM_TAB-COMP_QTY.
          ITAB-MEINS =  BOM_TAB-COMP_UNIT.
          SELECT SINGLE VERPR FROM MBEW INTO ITAB-VERPR
                     WHERE MATNR ITAB-C2.
                ITAB-TOTVAL ITAB-VERPR * ITAB-MENGE.
        ENDIF.
      ENDIF.

      IF ITAB-C2 <> ' '.
        SELECT MAKTX INTO ITAB-D2 FROM MAKT
               WHERE MATNR  ITAB-C2.
        ENDSELECT.
        CALL FUNCTION 'CSAP_MAT_BOM_READ'
          EXPORTING
            MATERIAL  ITAB-C2
            PLANT     'HIP'
            BOM_USAGE '1'
          TABLES
            T_STPO    BOM_TAB
          EXCEPTIONS
            ERROR     1
            OTHERS    2.
        READ TABLE BOM_TAB WITH KEY ITEM_NO '0010'.
        ITAB-C3 BOM_TAB-COMPONENT .
        IF ITAB-C3+0(3'RST'.
          ITAB-MENGE =  BOM_TAB-COMP_QTY.
          ITAB-MEINS BOM_TAB-COMP_UNIT.
          SELECT SINGLE VERPR FROM MBEW INTO ITAB-VERPR
                     WHERE MATNR ITAB-C3.
                ITAB-TOTVAL ITAB-VERPR * ITAB-MENGE.
        ENDIF.
        SELECT MAKTX INTO ITAB-D3 FROM MAKT
               WHERE MATNR  ITAB-C3.
        ENDSELECT.
      ENDIF.
      MODIFY ITAB.

     ELSE.
       READ TABLE BOM_TAB WITH KEY ITEM_NO '0010'.
      ITAB-C5 BOM_TAB-COMPONENT .
      IF ITAB-C5+0(3'RST'.
        ITAB-MENGE1 =  BOM_TAB-COMP_QTY.
        ITAB-MEINS BOM_TAB-COMP_UNIT.
        SELECT SINGLE VERPR FROM MBEW INTO ITAB-VERPR
                     WHERE MATNR ITAB-C6.
                ITAB-TOTVAL1 ITAB-VERPR * ITAB-MENGE1.
      ENDIF.

      IF ITAB-C5 <> ' '.
        SELECT MAKTX INTO ITAB-D1 FROM MAKT
               WHERE MATNR  ITAB-C5.
        ENDSELECT.
        CALL FUNCTION 'CSAP_MAT_BOM_READ'
          EXPORTING
            MATERIAL  ITAB-C5
            PLANT     'HIP'
            BOM_USAGE '1'
          TABLES
            T_STPO    BOM_TAB
          EXCEPTIONS
            ERROR     1
            OTHERS    2.
        READ TABLE BOM_TAB WITH KEY ITEM_NO '0010'.
        ITAB-C6 BOM_TAB-COMPONENT .
        IF ITAB-C6+0(3'RST'.
          ITAB-MENGE1 =  BOM_TAB-COMP_QTY.
          ITAB-MEINS BOM_TAB-COMP_UNIT.
          SELECT SINGLE VERPR FROM MBEW INTO ITAB-VERPR
                     WHERE MATNR ITAB-C6.
                ITAB-TOTVAL1 ITAB-VERPR * ITAB-MENGE1.
        ENDIF.
      ENDIF.

      IF ITAB-C6 <> ' '.
        SELECT MAKTX INTO ITAB-D2 FROM MAKT
               WHERE MATNR  ITAB-C6.
        ENDSELECT.
        CALL FUNCTION 'CSAP_MAT_BOM_READ'
          EXPORTING
            MATERIAL  ITAB-C6
            PLANT     'HIP'
            BOM_USAGE '1'
          TABLES
            T_STPO    BOM_TAB
          EXCEPTIONS
            ERROR     1
            OTHERS    2.
        READ TABLE BOM_TAB WITH KEY ITEM_NO '0010'.
        ITAB-C7 BOM_TAB-COMPONENT .
        IF ITAB-C7+0(3'RST'.
          ITAB-MENGE1 BOM_TAB-COMP_QTY.
          ITAB-MEINS BOM_TAB-COMP_UNIT.
          SELECT SINGLE VERPR FROM MBEW INTO ITAB-VERPR
                     WHERE MATNR ITAB-C7.
                ITAB-TOTVAL1 ITAB-VERPR * ITAB-MENGE1.
        ENDIF.
        SELECT MAKTX INTO ITAB-D3 FROM MAKT
               WHERE MATNR  ITAB-C7.
        ENDSELECT.
      ENDIF.
      MODIFY ITAB.
    ENDIF.
ENDLOOP.

**BREAK-POINT.

LOOP AT ITAB.
  IF ITAB-C1+8(1'G' AND ITAB-MATNR+8(1'D'.
    SELECT  FROM MAPL INTO CORRESPONDING FIELDS OF TABLE IT_MAPL
    WHERE WERKS 'HIP' AND
          MATNR ITAB-C1 AND
          PLNAL  '01'   AND
          LOEKZ <> 'X'  AND
          PLNTY 'N' .
    SORT IT_MAPL BY PLNNR PLNAL .
  IF IT_MAPL[] IS NOT INITIAL.
   SELECT FROM PLAS INTO CORRESPONDING FIELDS OF TABLE IPLAS
   FOR ALL ENTRIES IN IT_MAPL
     WHERE PLNTY 'N'
      AND  PLNNR IT_MAPL-PLNNR
      AND  PLNAL IT_MAPL-PLNAL
       AND LOEKZ <> 'X'
      AND  PLNFL '000000'.
  SORT IPLAS BY PLNNR PLNAL PLNKN.

  LOOP AT IPLAS.
    TEMP IPLAS-PLNKN.
    CNT2 CNT2 + 1.
    AT NEW PLNNR.
      PP TEMP.
    ENDAT.
    SELECT SINGLE  VORNR  VGW03 FROM PLPO
      INTO (IPLAS-VORNR , IPLAS-VGW03)
         WHERE PLNNR IPLAS-PLNNR
           AND PLNKN IPLAS-PLNKN
           AND PLNTY 'N'.

    MODIFY IPLAS TRANSPORTING VORNR VGW03.

    ENDLOOP.
  SORT IPLAS  BY PLNNR PLNAL VORNR   DESCENDING.

  LOOP AT IT_MAPL.

   READ TABLE IPLAS WITH KEY PLNNR IT_MAPL-PLNNR
                              PLNAL IT_MAPL-PLNAL   BINARY SEARCH.
    IF SY-SUBRC 0.

      ITAB-VGW03   IPLAS-VGW03 .
    ENDIF.
   MODIFY ITAB.

   ENDLOOP.
   ENDIF.
   ENDIF.

     IF ITAB-C1+8(1'N' AND ITAB-MATNR+8(1'D'.
    SELECT  FROM MAPL INTO CORRESPONDING FIELDS OF TABLE IT_MAPL
    WHERE WERKS 'HIP' AND
          MATNR ITAB-C1 AND
          PLNAL  '01'   AND
          LOEKZ <> 'X'  AND
          PLNTY 'N' .
    SORT IT_MAPL BY PLNNR PLNAL .
  IF IT_MAPL[] IS NOT INITIAL.
   SELECT FROM PLAS INTO CORRESPONDING FIELDS OF TABLE IPLAS
   FOR ALL ENTRIES IN IT_MAPL
     WHERE PLNTY 'N'
      AND  PLNNR IT_MAPL-PLNNR
      AND  PLNAL IT_MAPL-PLNAL
       AND LOEKZ <> 'X'
      AND  PLNFL '000000'.
  SORT IPLAS BY PLNNR PLNAL PLNKN.

  LOOP AT IPLAS.
    TEMP IPLAS-PLNKN.
    CNT2 CNT2 + 1.
    AT NEW PLNNR.
      PP TEMP.
    ENDAT.
    SELECT SINGLE  VORNR  VGW03 FROM PLPO
      INTO (IPLAS-VORNR , IPLAS-VGW03)
         WHERE PLNNR IPLAS-PLNNR
           AND PLNKN IPLAS-PLNKN
           AND PLNTY 'N'.

    MODIFY IPLAS TRANSPORTING VORNR VGW03.

    ENDLOOP.
  SORT IPLAS  BY PLNNR PLNAL VORNR   DESCENDING.

  LOOP AT IT_MAPL.

   READ TABLE IPLAS WITH KEY PLNNR IT_MAPL-PLNNR
                              PLNAL IT_MAPL-PLNAL   BINARY SEARCH.
    IF SY-SUBRC 0.

      ITAB-VGW031   IPLAS-VGW03 .
    ENDIF.
   MODIFY ITAB.

   ENDLOOP.
   ENDIF.
   ENDIF.
   IF  ITAB-C5+8(1'N' AND ITAB-MATNR+8(1'D'.
    CLEAR : IT_MAPL[],IPLAS.
      SELECT  FROM MAPL INTO CORRESPONDING FIELDS OF TABLE IT_MAPL
    WHERE WERKS 'HIP' AND
          MATNR ITAB-C5 AND
          PLNAL  '01'   AND
          LOEKZ <> 'X'  AND
          PLNTY 'N' .
    SORT IT_MAPL BY PLNNR PLNAL .
   IF IT_MAPL[] IS NOT INITIAL.
   SELECT FROM PLAS INTO CORRESPONDING FIELDS OF TABLE IPLAS
   FOR ALL ENTRIES IN IT_MAPL
     WHERE PLNTY 'N'
      AND  PLNNR IT_MAPL-PLNNR
      AND  PLNAL IT_MAPL-PLNAL
       AND LOEKZ <> 'X'
      AND  PLNFL '000000'.
  SORT IPLAS BY PLNNR PLNAL PLNKN.

  LOOP AT IPLAS.
    TEMP IPLAS-PLNKN.
    CNT2 CNT2 + 1.
    AT NEW PLNNR.
      PP TEMP.
    ENDAT.
    SELECT SINGLE  VORNR VGW03 FROM PLPO
      INTO (IPLAS-VORNR , IPLAS-VGW03)
         WHERE PLNNR IPLAS-PLNNR
           AND PLNKN IPLAS-PLNKN
           AND PLNTY 'N'.

    MODIFY IPLAS TRANSPORTING VORNR VGW03.
    ENDLOOP.
  SORT IPLAS  BY PLNNR PLNAL VORNR   DESCENDING.
  LOOP AT IT_MAPL.

   READ TABLE IPLAS WITH KEY PLNNR IT_MAPL-PLNNR
                              PLNAL IT_MAPL-PLNAL   BINARY SEARCH.
    IF SY-SUBRC 0.

      ITAB-VGW031   IPLAS-VGW03.
    ENDIF.
   MODIFY ITAB.
   ENDLOOP.
   ENDIF.

    ELSEIF  ITAB-MATNR+8(1'G' OR ITAB-MATNR+8(1'N'.
    CLEAR : IT_MAPL[],IPLAS.
      SELECT  FROM MAPL INTO CORRESPONDING FIELDS OF TABLE IT_MAPL
    WHERE WERKS 'HIP' AND
          MATNR ITAB-MATNR AND
          PLNAL  '01'   AND
          LOEKZ <> 'X'  AND
          PLNTY 'N' .
    SORT IT_MAPL BY PLNNR PLNAL .
   IF IT_MAPL[] IS NOT INITIAL.
   SELECT FROM PLAS INTO CORRESPONDING FIELDS OF TABLE IPLAS
   FOR ALL ENTRIES IN IT_MAPL
     WHERE PLNTY 'N'
      AND  PLNNR IT_MAPL-PLNNR
      AND  PLNAL IT_MAPL-PLNAL
       AND LOEKZ <> 'X'
      AND  PLNFL '000000'.
  SORT IPLAS BY PLNNR PLNAL PLNKN.

  LOOP AT IPLAS.
    TEMP IPLAS-PLNKN.
    CNT2 CNT2 + 1.
    AT NEW PLNNR.
      PP TEMP.
    ENDAT.
    SELECT SINGLE  VORNR VGW03 FROM PLPO
      INTO (IPLAS-VORNR , IPLAS-VGW03)
         WHERE PLNNR IPLAS-PLNNR
           AND PLNKN IPLAS-PLNKN
           AND PLNTY 'N'.

    MODIFY IPLAS TRANSPORTING VORNR VGW03.
    ENDLOOP.
  SORT IPLAS  BY PLNNR PLNAL VORNR   DESCENDING.
  LOOP AT IT_MAPL.

   READ TABLE IPLAS WITH KEY PLNNR IT_MAPL-PLNNR
                              PLNAL IT_MAPL-PLNAL   BINARY SEARCH.
    IF SY-SUBRC 0.

      ITAB-VGW031   IPLAS-VGW03.
    ENDIF.
   MODIFY ITAB.
   ENDLOOP.
   ENDIF.

   ENDIF.
   ENDLOOP.
*&------------------------------------------------------------------
LOOP AT ITAB.
  ITAB-TOT_QTY ITAB-MENGE + ITAB-MENGE1.
  ITAB-TOT_VAL ITAB-TOTVAL + ITAB-TOTVAL1.
  ITAB-TOT_TIME ITAB-VGW03 + ITAB-VGW031.
  MODIFY ITAB.
  ENDLOOP.

DESCRIBE TABLE ITAB LINES LN.
PERFORM F_CAT.

**LS_LAYOUT-BOX_FIELDNAME = 'SEL'.


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
   I_CALLBACK_PROGRAM                SY-REPID
*   I_CALLBACK_PF_STATUS_SET          = ' '
   I_CALLBACK_USER_COMMAND           'USER_COMMAND'
   I_CALLBACK_TOP_OF_PAGE            'TOP_OF_PAGE'
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*   I_STRUCTURE_NAME                  =
*   I_BACKGROUND_ID                   = ' '
*   I_GRID_TITLE                      =
*   I_GRID_SETTINGS                   =
*   IS_LAYOUT                         = LS_LAYOUT
   IT_FIELDCAT                       IT_FIELDCAT[]
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
*   IT_SORT                           =
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
   I_SAVE                            'A'

  TABLES
    T_OUTTAB                          ITAB.

FORM F_CAT.

DATA CNT TYPE I.
 CNT CNT 1.

IT_FIELDCAT-COL_POS CNT.
IT_FIELDCAT-FIELDNAME 'MATNR'.
IT_FIELDCAT-SELTEXT_M 'MATERIAL'.
IT_FIELDCAT-OUTPUTLEN 21.
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.

CNT CNT 1.
IT_FIELDCAT-COL_POS CNT.
IT_FIELDCAT-FIELDNAME 'MAKTX'.
IT_FIELDCAT-SELTEXT_M 'DESC.'.
IT_FIELDCAT-OUTPUTLEN 22.
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.

CNT CNT 1.
IT_FIELDCAT-COL_POS CNT.
IT_FIELDCAT-FIELDNAME 'MENGE'.
IT_FIELDCAT-SELTEXT_M 'GO_WT'.
IT_FIELDCAT-OUTPUTLEN 8.
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.

CNT CNT 1.
IT_FIELDCAT-COL_POS CNT.
IT_FIELDCAT-FIELDNAME 'TOTVAL'.
IT_FIELDCAT-SELTEXT_M 'GO.MAT.COST'.
IT_FIELDCAT-OUTPUTLEN 12.
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.

CNT CNT 1.
IT_FIELDCAT-COL_POS CNT.
IT_FIELDCAT-FIELDNAME 'MENGE1'.
IT_FIELDCAT-SELTEXT_M 'NOTGO_WT'.
IT_FIELDCAT-OUTPUTLEN 10.
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.

CNT CNT 1.
IT_FIELDCAT-COL_POS CNT.
IT_FIELDCAT-FIELDNAME 'TOTVAL1'.
IT_FIELDCAT-SELTEXT_M 'NOTGO MAT.COST'.
IT_FIELDCAT-OUTPUTLEN 16.
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.

CNT CNT 1.
IT_FIELDCAT-COL_POS CNT.
IT_FIELDCAT-FIELDNAME 'TOT_QTY'.
IT_FIELDCAT-SELTEXT_M 'TOTAL WT'.
IT_FIELDCAT-OUTPUTLEN 10.
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.

CNT CNT 1.
IT_FIELDCAT-COL_POS CNT.
IT_FIELDCAT-SELTEXT_M 'TOT.MAT.COST'.
IT_FIELDCAT-FIELDNAME 'TOT_VAL'.
IT_FIELDCAT-OUTPUTLEN 14.
IT_FIELDCAT-DO_SUM 'X'.
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.

CNT CNT 1.
IT_FIELDCAT-COL_POS CNT.
IT_FIELDCAT-SELTEXT_M 'LAB.GO.TIME'.
IT_FIELDCAT-FIELDNAME 'VGW03'.
IT_FIELDCAT-OUTPUTLEN 12.
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.

CNT CNT 1.
IT_FIELDCAT-COL_POS CNT.
IT_FIELDCAT-SELTEXT_M 'LAB.NOTGO.TIME'.
IT_FIELDCAT-FIELDNAME 'VGW031'.
IT_FIELDCAT-OUTPUTLEN 15.
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.

CNT CNT 1.
IT_FIELDCAT-COL_POS CNT.
IT_FIELDCAT-SELTEXT_M 'LAB.TOT.TIME'.
IT_FIELDCAT-FIELDNAME 'TOT_TIME'.
IT_FIELDCAT-OUTPUTLEN 13.
IT_FIELDCAT-DO_SUM 'X'.
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.

LS_LAYOUT-BOX_FIELDNAME 'SEL'.
ENDFORM.

FORM TOP_OF_PAGE.

  CLEAR : HEADING,HEADING[].

  HEADING-TYP 'H'.
  HEADING-INFO 'Material Cost Estimate with Qty & Value Report'.
  APPEND HEADING.
  CLEAR  HEADING.

  HEADING-TYP 'S'.
  HEADING-KEY 'Hit Entries:'.
  HEADING-INFO LN.
  APPEND HEADING.
  CLEAR HEADING.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      IT_LIST_COMMENTARY       HEADING[].


ENDFORM.

FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM  RS_SELFIELD TYPE SLIS_SELFIELD.
  BREAK-POINT.
  CASE R_UCOMM.
    IF RS_SELFIELD-FIELDNAME 'MATNR'.
       READ TABLE ITAB INDEX RS_SELFIELD-TABINDEX.
       SET PARAMETER ID : 'MAT' FIELD ITAB-MATNR.
       CALL TRANSACTION 'CK13N' AND SKIP FIRST SCREEN.
       ENDIF.
       ENDCASE.
  ENDFORM.

****************************************************************

No comments: