Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 9656

Re: BOM Report

$
0
0

Hi all ;

 

I developed a abap report with MAST - MARA - MATKL - STKO - STAS - STPO tables. I did not understand relation of work center in BOM report. If you explain details for wc , someone give idea.

 

------------------------------------------------------------------------------------------------------------------------------------------------

 

*&---------------------------------------------------------------------*

*& Report  ZPP_BILL_OF_MATERIAL

*&

*&---------------------------------------------------------------------*

*& M.Ozgur Unal ------ 04.11.2014

*& Ürün ağaçları listeleme raporudur.

*&---------------------------------------------------------------------*

 

REPORT  zpp_bill_of_material.

 

TYPE-POOLS : slis.

CONSTANTS : c_tcode(4) TYPE c VALUE 'CS03'.

TABLES : mast , stko , stpo , stas , makt , mara .

 

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

* DATA TYPES DEFINITIONS*

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

 

TYPES : BEGIN OF ty_mast,

           matnr  TYPE mast-matnr,

           werks  TYPE mast-werks,

           stlan  TYPE mast-stlan,

           stlnr  TYPE mast-stlnr,

           stlal  TYPE mast-stlal,

           maktx  TYPE makt-maktx,

           matkl  TYPE mara-matkl,

        END OF ty_mast.

 

TYPES : BEGIN OF ty_stko,

           stlnr TYPE stko-stlnr,

           stlal TYPE stko-stlal,

           datuv TYPE stko-datuv,

           bmein TYPE stko-bmein,

           bmeng TYPE stko-bmeng,

           stlst TYPE stko-stlst,

         END OF ty_stko.

 

TYPES : BEGIN OF ty_stpo,

           stlnr TYPE stpo-stlnr,

           stlkn TYPE stpo-stlkn,

           datuv TYPE stpo-datuv,

           idnrk TYPE stpo-idnrk,

           meins TYPE stpo-meins,

           menge TYPE stpo-menge,

           aennr TYPE stpo-aennr,

           andat TYPE stpo-andat,

           annam TYPE stpo-annam,

           aenam TYPE stpo-aenam,

           posnr TYPE stpo-posnr,

           maktx TYPE makt-maktx,

         END OF ty_stpo.

 

TYPES : BEGIN OF ty_stas,

           stlnr TYPE stas-stlnr,

           stlal TYPE stas-stlal,

           stlkn TYPE stas-stlkn,

           lkenz TYPE stas-lkenz,

         END OF ty_stas.

 

 

 

TYPES : BEGIN OF ty_final,

           matnr TYPE mast-matnr,

           werks TYPE mast-werks,

           stlan TYPE mast-stlan,

           stlnr TYPE mast-stlnr,

           stlal TYPE mast-stlal,

           datuv TYPE stko-datuv,

           bmein TYPE stko-bmein,

           bmeng TYPE stko-bmeng,

           idnrk TYPE stpo-idnrk,

           posnr TYPE stpo-posnr,

           meins TYPE stpo-meins,

           menge TYPE stpo-menge,

           maktx TYPE makt-maktx,

           aennr TYPE stpo-aennr,

           andat TYPE stpo-andat,

           annam TYPE stpo-annam,

           aenam TYPE stpo-aenam,

           matkl TYPE mara-matkl,

           stlst TYPE stko-stlst,

           lkenz TYPE stas-lkenz,

           maktx2 TYPE makt-maktx,

   END OF ty_final.

 

 

DATA : it_mast TYPE TABLE OF ty_mast, wa_mast LIKE LINE OF it_mast.

DATA : it_stko TYPE TABLE OF ty_stko, wa_stko LIKE LINE OF it_stko.

DATA : it_stko2 TYPE ty_stko.

DATA : it_stpo TYPE TABLE OF ty_stpo, wa_stpo LIKE LINE OF it_stpo,

        it_stas TYPE TABLE OF ty_stas, wa_stas LIKE LINE OF it_stas,

        gt_final TYPE TABLE OF ty_final,

        gw_final TYPE  ty_final,

        gt_fcat  TYPE slis_t_fieldcat_alv,

        gw_fcat  TYPE slis_fieldcat_alv.

 

 

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

*SELECTION SCREEN*

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

 

SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text-001.

 

SELECT-OPTIONS: s_matnr FOR  mast-matnr OBLIGATORY,

                 s_matkl FOR  mara-matkl.

PARAMETERS p_werks TYPE mast-werks OBLIGATORY.

 

SELECTION-SCREEN END OF BLOCK blk.

 

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

*GET DATA & INSERT TO GT_FINAL*

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

 

PERFORM get_data.

 

PERFORM loop_data.

 

 

IF gt_final[] IS NOT INITIAL.

 

   PERFORM f_fill_fcat .

   PERFORM f_display_alv .

 

ELSE .

   MESSAGE 'Veri bulunamadı' TYPE 'I'.

ENDIF.

 

PERFORM plant_validation.

 

*&---------------------------------------------------------------------*

*&      Form  FETCH_DATA_RETREIVE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM get_data .

 

   break ounal.

 

   SELECT mast~matnr mast~werks mast~stlan mast~stlnr mast~stlal

          makt~maktx mara~matkl

 

            INTO CORRESPONDING FIELDS OF TABLE it_mast

            FROM mast

            INNER JOIN makt

            ON mast~matnr = makt~matnr

            INNER JOIN mara

            ON makt~matnr = mara~matnr

            WHERE  mast~matnr IN s_matnr

                 AND mast~werks = p_werks

                 AND mast~stlan = '1'

                 AND mara~matkl IN s_matkl.

 

   IF NOT it_mast IS INITIAL.

     SELECT stlnr stlal datuv bmein bmeng

            aennr andat annam  aenam stlst

            FROM stko

            INTO CORRESPONDING FIELDS OF TABLE it_stko

            FOR ALL ENTRIES IN it_mast

            WHERE stlnr = it_mast-stlnr AND

                  stlal = it_mast-stlal.

 

     SORT it_stko BY datuv descending.

 

     SELECT stlnr stlal stlkn lkenz

            FROM stas INTO CORRESPONDING FIELDS OF TABLE it_stas

            FOR ALL ENTRIES IN it_mast

            WHERE stlnr = it_mast-stlnr AND

                  stlal = it_mast-stlal.

 

   ENDIF.

 

 

   IF NOT it_stko IS INITIAL.

     SELECT stlnr stlkn datuv idnrk posnr meins menge

            aennr andat annam aenam posnr

            maktx

            FROM stpo

            INNER JOIN makt

            ON stpo~idnrk = makt~matnr

            INTO CORRESPONDING FIELDS OF TABLE it_stpo

            FOR ALL ENTRIES IN it_mast

            WHERE stlnr = it_mast-stlnr.

 

   ENDIF.

 

 

ENDFORM.                    " FETCH_DATA_RETREIVE

 

 

 

*&---------------------------------------------------------------------*

*&      Form  LOOP_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM loop_data .

 

   REFRESH gt_final.

 

   LOOP AT it_mast INTO wa_mast.

 

     SORT it_stpo BY idnrk.

     LOOP AT it_stas INTO wa_stas WHERE stlnr = wa_mast-stlnr AND

                                        stlal = wa_mast-stlal.

 

 

       MOVE: wa_mast-matnr  TO gw_final-matnr,

             wa_mast-werks  TO gw_final-werks,

             wa_mast-stlal  TO gw_final-stlal,

             wa_mast-stlan  TO gw_final-stlan,

             wa_mast-matkl  TO gw_final-matkl,

             wa_stas-lkenz  TO gw_final-lkenz,

             wa_mast-maktx TO gw_final-maktx2.

 

       READ TABLE it_stko INTO wa_stko WITH KEY stlnr = wa_mast-stlnr

                                                stlal = wa_mast-stlal.

 

       IF sy-subrc = 0.

         MOVE: wa_stko-stlnr TO gw_final-stlnr,

               wa_stko-stlal TO gw_final-stlal,

               wa_stko-stlst TO gw_final-stlst,

               wa_stko-bmein TO gw_final-bmein,

               wa_stko-bmeng TO gw_final-bmeng.

 

       ENDIF.

 

       READ TABLE it_stpo INTO wa_stpo WITH KEY stlkn = wa_stas-stlkn.

 

 

       IF sy-subrc = 0.

         MOVE: wa_stpo-idnrk TO gw_final-idnrk,

               wa_stpo-menge TO gw_final-menge,

               wa_stpo-aennr TO gw_final-aennr,

               wa_stpo-andat TO gw_final-andat,

               wa_stpo-annam TO gw_final-annam,

               wa_stpo-aenam TO gw_final-aenam,

               wa_stpo-posnr TO gw_final-posnr,

               wa_stpo-meins TO gw_final-meins,

               wa_stpo-maktx TO gw_final-maktx,

               wa_stpo-datuv TO gw_final-datuv.

 

 

         APPEND gw_final TO gt_final.

         CLEAR gw_final.

       ENDIF.

     ENDLOOP.

   ENDLOOP.

 

* added by ounal - 06.11.2014

* eğer silme işareti var ise ilgili tüm kodlarda update ettik

* çünkü stas tanlosunda aynı kodun hem silinmişini hem eski kaydını

* değişiklik no ile tutuyor.

 

  SORT gt_final BY posnr lkenz DESCENDING.

 

  FIELD-SYMBOLS: <fs_gt_final> LIKE LINE OF gt_final.

 

  IF LINES( gt_final ) NE 0.

    LOOP AT gt_final ASSIGNING <fs_gt_final>.

      IF <fs_gt_final> IS ASSIGNED.

       READ TABLE gt_final INTO gw_final

       WITH KEY stlnr = <fs_gt_final>-stlnr

                idnrk = <fs_gt_final>-idnrk

               " stlkn = <fs_gt_final>-stlkn

                menge = <fs_gt_final>-menge

                posnr = <fs_gt_final>-posnr.

        IF <fs_gt_final> IS ASSIGNED AND sy-subrc = 0.

        <fs_gt_final>-lkenz = gw_final-lkenz .

        ENDIF.

      ENDIF.

    ENDLOOP.

  ENDIF.

 

ENDFORM.                    " LOOP_DATA

 

*&---------------------------------------------------------------------*

*&      Form  f_fill_fcat

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM f_fill_fcat .

 

   gw_fcat-col_pos = 1.

   gw_fcat-fieldname = 'WERKS'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Üretim yeri'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

 

   gw_fcat-col_pos = 2.

   gw_fcat-fieldname = 'STLNR'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Ürün ağacı no.'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 3.

   gw_fcat-fieldname = 'STLAL'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Alternatif bom'.

*   gw_fcat-do_sum = 'X'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 4.

   gw_fcat-fieldname = 'MATNR'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Malzeme No.'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

 

   gw_fcat-col_pos = 5.

   gw_fcat-fieldname = 'MAKTX2'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Kısa metin'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 6.

   gw_fcat-fieldname = 'IDNRK'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Bileşen'.

   gw_fcat-outputlen   = 10.

*  gw_fcat-emphasize   = 'X'.

*  gw_fcat-key         = 'X'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 7.

   gw_fcat-fieldname = 'POSNR'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Kalem no'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 8.

   gw_fcat-fieldname = 'BMENG'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Temel miktar'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 9.

   gw_fcat-fieldname = 'MENGE'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Bileşen miktarı'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 10.

   gw_fcat-fieldname = 'AENAM'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Değiştiren'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 11.

   gw_fcat-fieldname = 'MATKL'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Mal grubu'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 12.

   gw_fcat-fieldname = 'AENNR'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Değişiklik no'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 13.

   gw_fcat-fieldname = 'ANDAT'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Kayıt tarihi'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 14.

   gw_fcat-fieldname = 'ANNAM'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Kaydeden'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 15.

   gw_fcat-fieldname = 'DATUV'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Geçerlilik başı'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 16.

   gw_fcat-fieldname = 'STLST'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Statü'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 17.

   gw_fcat-fieldname = 'BMEIN'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Temel ölçü'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 18.

   gw_fcat-fieldname = 'MEINS'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Bileşen ölçü'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 19.

   gw_fcat-fieldname = 'MAKTX'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Bileşen metni'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

   gw_fcat-col_pos = 20.

   gw_fcat-fieldname = 'LKENZ'.

   gw_fcat-tabname = 'GT_FINAL'.

   gw_fcat-seltext_m = 'Silme'.

   APPEND gw_fcat TO gt_fcat.

   CLEAR gw_fcat.

 

ENDFORM.                    "f_fill_fcat

 

*&---------------------------------------------------------------------*

*&      Form  f_display_alv

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM f_display_alv .

   DATA:lv_repid TYPE sy-repid.

   lv_repid = sy-cprog.

 

   DATA: w_layout TYPE slis_layout_alv.

   w_layout-colwidth_optimize = 'X'.

   w_layout-zebra = 'X'.

 

 

   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

      EXPORTING

 

        i_callback_program      = sy-cprog

        is_layout               = w_layout

        i_callback_user_command = 'USER_COMMAND'

        it_fieldcat             = gt_fcat[]

        i_default               = 'X'

        i_save                  = 'A'

      TABLES

        t_outtab                = gt_final

      EXCEPTIONS

        program_error           = 1

        OTHERS                  = 2.

   IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

   ENDIF.

 

ENDFORM.                    "f_display_alv

*&---------------------------------------------------------------------*

*&      Form  PLANT_VALIDATION

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM plant_validation .

   DATA : lv_plant TYPE mast-werks.

   SELECT SINGLE werks

          FROM mast

         INTO  lv_plant

     WHERE werks  = p_werks.

 

   IF sy-subrc NE 0.

     MESSAGE 'Üretim yerini kontrol ediniz' TYPE 'I'.

     RETURN.

   ENDIF.

ENDFORM.                    "PLANT_VALIDATION

 

 

 

*&---------------------------------------------------------------------*

*&      Form  user_command

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->R_UCOMM      text

*      -->RS_SELFIELD  text

*----------------------------------------------------------------------*

FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE

slis_selfield.

 

   IF r_ucomm = '&IC1'.

 

     READ TABLE gt_final INTO gw_final INDEX rs_selfield-tabindex.

 

     rs_selfield-value = gw_final-matnr.

 

     SET PARAMETER ID 'MAT' FIELD rs_selfield-value.

     CALL TRANSACTION 'CS03' AND SKIP FIRST SCREEN.

 

   ENDIF.

 

ENDFORM.                    "user_command




Viewing all articles
Browse latest Browse all 9656

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>