Skip to Content
0
Former Member
Feb 28, 2008 at 04:37 AM

performance tuning

27 Views

Hi,

The program(developed by someother person) which was given to me is having performance issue. Its giving RUNTIME ERROR 'TIME LIMIT EXCEEDED'. Can u please suggest me in what way i can improve the performance of the program.

please help me in resolving this.

TABLES : MARA, "General Material Data

MARC, "Plant Data for Material

VBAP, "Sales Document: Item Data

MARD, "Storage Location Data for Material

MAST, "Material to BOM Link

MKPF, "Header: Material Document

MSEG, "Document Segment: Material

PKHD, "Control Cycle

PKPS, "Control Cycle Item / Kanban

PVBE, "Supply area

ZTGRP, "Wabco Technology Group table

ZZC10. "Kanban status table

----


  • I N T E R N A L T A B L E D E C L A R A T I O N *

----


  • INTERNAL TABLE FOR TECH.GROUP AND PLANT

DATA: BEGIN OF IT_MARC_ZTGRP OCCURS 0,

MATNR LIKE MARC-MATNR,

WERKS LIKE MARC-WERKS,

ZZPTG LIKE ZTGRP-ZZPTG,

ZZPTD LIKE ZTGRP-ZZPTD,

END OF IT_MARC_ZTGRP.

  • INTERNAL TABLE FOR RETURN VALUES

DATA IT_RETURN LIKE TABLE OF BAPIRET2 WITH HEADER LINE.

  • INTERNAL TABLE FOR SUBASSEMBLY AND FINISHED GOOD

DATA: BEGIN OF IT_MATERIAL OCCURS 0,

IDNRK LIKE STPO-IDNRK,

MATNR LIKE MAST-MATNR,

END OF IT_MATERIAL.

  • INTERNAL TABLE FOR OUTPUT YESTERDAY

DATA: BEGIN OF IT_KBED_KAKO OCCURS 0,

KBEAREST LIKE KBED-KBEAREST,

KRUEREST LIKE KBED-KRUEREST,

KEINH LIKE KBED-KEINH,

END OF IT_KBED_KAKO.

  • INTERNAL TABLE FOR MATERIAL AND PLANT

DATA: BEGIN OF IT_PLANT OCCURS 0,

MATNR LIKE MARC-MATNR,

WERKS LIKE MARC-WERKS,

END OF IT_PLANT.

DATA: BEGIN OF IT_COBK OCCURS 0,

RUECK LIKE COBK-REFBN,

END OF IT_COBK.

DATA: BEGIN OF IT_COEPL OCCURS 0,

KOKRS LIKE COEPL-KOKRS,

BELNR LIKE COEPL-BELNR,

END OF IT_COEPL.

DATA: BEGIN OF IT_CAPACITIES OCCURS 0,

LSBBTR LIKE COEPL-LSBBTR,

MEINB LIKE COEPL-MEINB,

END OF IT_CAPACITIES.

DATA: BEGIN OF IT_MKPF_MSEG OCCURS 0,

MBLNR LIKE MKPF-MBLNR,

MJAHR LIKE MKPF-MJAHR,

BUDAT LIKE MKPF-BUDAT,

BWART LIKE MSEG-BWART,

MATNR LIKE MSEG-MATNR,

MENGE LIKE MSEG-MENGE,

MEINS LIKE MSEG-MEINS,

DMBTR LIKE MSEG-DMBTR,

WERKS LIKE MSEG-WERKS,

END OF IT_MKPF_MSEG.

  • INTERNAL TABLE FOR MATERIAL-TO-BOM LINK

DATA: IT_MAST LIKE MAST OCCURS 0 WITH HEADER LINE.

  • INTERNAL TABLE FOR MATERIAL

DATA: BEGIN OF IT_MAT OCCURS 0,

MATNR LIKE MARA-MATNR,

END OF IT_MAT.

  • INTERNAL TABLE FOR STORAGE LOCATION DATA FOR SUBASSEMBLY

DATA: BEGIN OF IT_MARD OCCURS 0,

LABST LIKE MARD-LABST,

END OF IT_MARD.

  • INTERNAL TABLE FOR PLANT FOR MATERIALS

DATA IT_MARC LIKE MARC OCCURS 0 WITH HEADER LINE.

  • INTERNAL TABLE FOR BOM ITEM DATA

DATA: IT_STPO LIKE STPO OCCURS 0 WITH HEADER LINE.

  • INTERNAL TABLE FOR KANBAN STATUS DATA

DATA IT_ZZC10 LIKE ZZC10 OCCURS 0 WITH HEADER LINE.

  • TEMPORARY INTERNAL TABLE FOR KANBAN STATUS DATA

DATA IT_ZZC10_TEMP LIKE ZZC10 OCCURS 0 WITH HEADER LINE.

  • INTERNAL TABLE FOR CONTROL CYCLE

DATA IT_PKHD LIKE PKHD OCCURS 0 WITH HEADER LINE.

  • INTERNAL TABLE FOR CONTROL CYCLE ITEM

DATA IT_PKPS LIKE PKPS OCCURS 0 WITH HEADER LINE.

  • INTERNAL TABLE FOR MATERIAL DOCUMENT HEADER

DATA IT_MKPF LIKE MKPF OCCURS 0 WITH HEADER LINE.

  • INTERNAL TABLE FOR MATERIAL DOCUMENT ITEM

DATA IT_MSEG LIKE MSEG OCCURS 0 WITH HEADER LINE.

  • TEMPORARY INTERNAL TABLE FOR ACTUAL QUANTITY

DATA : BEGIN OF IT_TEMP OCCURS 0,

TECH LIKE ZTGRP-ZZPTD,

MATNR LIKE ZZC10-MATNR,

FINISHED LIKE MAST-MATNR,

PKNUM LIKE PKHD-PKNUM,

WERKS LIKE ZZC10-WERKS,

GSMNG LIKE PLAF-GSMNG,

MEINS LIKE PLAF-MEINS,

BEHAZ LIKE PKHD-BEHAZ,

BEHMG LIKE PKHD-BEHMG,

PKBMG LIKE ZZC10-PKBMG,

LATEHOURS LIKE PKHD-KWBZM,

FILLRATE TYPE P DECIMALS 2,

REPL_LEAD_TIME TYPE P DECIMALS 3,

QTY_1 LIKE PLAF-GSMNG,

QTY_2 LIKE PLAF-GSMNG,

QTY_3 LIKE PLAF-GSMNG,

QTY_4 LIKE PLAF-GSMNG,

QTY_5 LIKE PLAF-GSMNG,

QTY_6 LIKE PLAF-GSMNG,

GSMNG_OUTY LIKE PLAF-GSMNG,

MEINS_OUTY LIKE PLAF-MEINS,

KAPBD_OUTY LIKE COEPL-LSTBTR,

KEINH_OUTY LIKE COEPL-MEINH,

GSMNG_OUTM LIKE MSEG-MENGE,

MEINS_OUTM LIKE MSEG-MEINS,

KAPBD_OUTM LIKE COEPL-LSTBTR,

KEINH_OUTM LIKE COEPL-MEINH,

GSMNG_BORD LIKE PLAF-GSMNG,

MEINS_BORD LIKE MSEG-MEINS,

KAPBD_BORD LIKE KBED-KBEAREST,

KEINH_BORD LIKE COEPL-MEINH,

GSMNG_TDAY LIKE PLAF-GSMNG,

KAPBD_TDAY LIKE KBED-KBEAREST,

GSMNG_DAY1 LIKE PLAF-GSMNG,

KAPBD_DAY1 LIKE KBED-KBEAREST,

GSMNG_DAY2 LIKE PLAF-GSMNG,

KAPBD_DAY2 LIKE KBED-KBEAREST,

GSMNG_DAY3 LIKE PLAF-GSMNG,

KAPBD_DAY3 LIKE KBED-KBEAREST,

GSMNG_DAY4 LIKE PLAF-GSMNG,

KAPBD_DAY4 LIKE KBED-KBEAREST,

GSMNG_DAY5 LIKE PLAF-GSMNG,

KAPBD_DAY5 LIKE KBED-KBEAREST,

STOCK_PO01 LIKE MARD-LABST,

F_GSMNG_BORD LIKE PLAF-GSMNG,

F_MEINS_BORD LIKE MSEG-MEINS,

F_KAPBD_BORD LIKE KBED-KBEAREST,

F_KEINH_BORD LIKE COEPL-MEINH,

F_GSMNG_TDAY LIKE PLAF-GSMNG,

F_MEINS_TDAY LIKE MSEG-MEINS,

F_KAPBD_TDAY LIKE KBED-KBEAREST,

F_KEINH_TDAY LIKE COEPL-MEINH,

F_GSMNG_DAY1 LIKE PLAF-GSMNG,

F_MEINS_DAY1 LIKE MSEG-MEINS,

F_KAPBD_DAY1 LIKE KBED-KBEAREST,

F_KEINH_DAY1 LIKE COEPL-MEINH,

F_GSMNG_DAY2 LIKE PLAF-GSMNG,

F_MEINS_DAY2 LIKE MSEG-MEINS,

F_KAPBD_DAY2 LIKE KBED-KBEAREST,

F_KEINH_DAY2 LIKE COEPL-MEINH,

F_GSMNG_DAY3 LIKE PLAF-GSMNG,

F_MEINS_DAY3 LIKE MSEG-MEINS,

F_KAPBD_DAY3 LIKE KBED-KBEAREST,

F_KEINH_DAY3 LIKE COEPL-MEINH,

F_GSMNG_DAY4 LIKE PLAF-GSMNG,

F_MEINS_DAY4 LIKE MSEG-MEINS,

F_KAPBD_DAY4 LIKE KBED-KBEAREST,

F_KEINH_DAY4 LIKE COEPL-MEINH,

F_GSMNG_DAY5 LIKE PLAF-GSMNG,

F_MEINS_DAY5 LIKE MSEG-MEINS,

F_KAPBD_DAY5 LIKE KBED-KBEAREST,

F_KEINH_DAY5 LIKE COEPL-MEINH,

F_GSMNG_OUTM LIKE MSEG-MENGE,

F_MEINS_OUTM LIKE MSEG-MEINS,

F_KAPBD_OUTM LIKE COEPL-LSTBTR,

F_KEINH_OUTM LIKE COEPL-MEINH,

F_GSMNG_OUTN LIKE MSEG-MENGE,

F_MEINS_OUTN LIKE MSEG-MEINS,

F_KAPBD_OUTN LIKE KBED-KBEAREST,

F_KEINH_OUTN LIKE COEPL-MEINH,

END OF IT_TEMP.

  • INTERNAL TABLE FOR PLANNED DATA

DATA IT_PLAF LIKE PLAF OCCURS 0 WITH HEADER LINE.

  • INTERNAL TABLE FOR FACTORY CALENDER AND CURRENCY

DATA: BEGIN OF IT_T001W OCCURS 0,

WERKS LIKE T001W-WERKS,

BWKEY LIKE T001W-BWKEY,

FABKL LIKE T001W-FABKL,

END OF IT_T001W.

----


  • V A R I A B L E S *

----


DATA: AUX_BORD LIKE SY-DATUM,

AUX_YDAY LIKE SY-DATUM,

AUX_TDAY LIKE SY-DATUM,

AUX_DAY1 LIKE SY-DATUM,

AUX_DAY2 LIKE SY-DATUM,

AUX_DAY3 LIKE SY-DATUM,

AUX_DAY4 LIKE SY-DATUM,

AUX_DAY5 LIKE SY-DATUM,

AUX_CURRENT LIKE SY-DATUM,

AUX_PREVIOUS LIKE SY-DATUM,

AUX_TECH LIKE ZTGRP-ZZPTD,

AUX_BUDAT LIKE MKPF-BUDAT,

AUX_LOW LIKE MKPF-BUDAT,

AUX_HIGH LIKE MKPF-BUDAT,

AUX_MNG LIKE MSEG-MENGE,

AUX_MENGE LIKE MSEG-MENGE,

AUX_QUANT LIKE PLAF-GSMNG,

AUX_SUM_UNIT LIKE UMADD-MSEHI,

AUX_TIMESTAMP1 LIKE CCUPEAKA-TIMESTAMP,

AUX_TIMESTAMP2 LIKE CCUPEAKA-TIMESTAMP,

AUX_BUKRS LIKE T001K-BUKRS,

AUX_BWKEY LIKE T001W-BWKEY,

AUX_GSMNG LIKE PLAF-GSMNG,

AUX_PKBMG LIKE ZZC10-PKBMG,

AUX_FILL LIKE ZZC10-PKBMG,

AUX_TOTAL LIKE ZZC10-PKBMG,

AUX_FABKL LIKE SCAL-FCALID,

AUX_WAERS LIKE MSEG-WAERS,

AUX_ZZC10_HR TYPE P DECIMALS 3,

AUX_PLAF_HR TYPE P DECIMALS 3,

AUX_KAPBD_OUTY TYPE P DECIMALS 3,

AUX_KAPBD_OUTM TYPE P DECIMALS 3,

AUX_KAPBD_BORD TYPE P DECIMALS 3,

AUX_F_KAPBD_BORD TYPE P DECIMALS 3,

AUX_F_KAPBD_TDAY TYPE P DECIMALS 3,

AUX_F_KAPBD_DAY1 TYPE P DECIMALS 3,

AUX_F_KAPBD_DAY2 TYPE P DECIMALS 3,

AUX_F_KAPBD_DAY3 TYPE P DECIMALS 3,

AUX_F_KAPBD_DAY4 TYPE P DECIMALS 3,

AUX_F_KAPBD_DAY5 TYPE P DECIMALS 3,

AUX_F_KAPBD_OUTM TYPE P DECIMALS 3,

AUX_F_KAPBD_OUTN TYPE P DECIMALS 3,

AUX_PKHD_TIME TYPE P DECIMALS 3,

AUX_LATEHOURS TYPE P DECIMALS 3,

AUX_DIFF TYPE I,

AUX_FLAG TYPE C,

AUX_SET TYPE C,

AUX_DATUMABSOLUT(5) TYPE P,

AUX_FDAY LIKE SY-DATUM,

AUX_DAYS LIKE PKHD-KWBZD,

AUX_HOURS LIKE IT_ZZC10-TIME_EMPTY,

AUX_TIME LIKE PKHD-KWBZM,

AUX_PKHD_DAYS LIKE PKHD-KWBZD,

AUX_PKHD_HOURS LIKE PKHD-KWBZM,

AUX_TMP_DAYS LIKE PKHD-KWBZM VALUE 24,

AUX_TMP_HRS LIKE PKHD-KWBZM,

AUX_FILL_DAYS LIKE PKHD-KWBZD,

AUX_FILL_HOURS LIKE AUX_HOURS,

AUX_FILL_TIME LIKE PKHD-KWBZM,

AUX_TOTAL_QTY LIKE PKHD-BEHMG,

AUX_RATID LIKE PLAF-RATID,

AUX_MATNR LIKE PLAF-MATNR,

AUX_HEADER LIKE MARA-MATNR,

AUX_ZZPTG LIKE MARC-ZZPTG,

AUX_PEDTR LIKE PLAF-PEDTR,

AUX_KRUEREST LIKE KBED-KRUEREST,

AUX_KBEAREST LIKE KBED-KBEAREST,

AUX_KRUEREST_T LIKE KBED-KRUEREST,

AUX_KBEAREST_T LIKE KBED-KBEAREST,

AUX_KEINH LIKE KBED-KEINH,

AUX_KAPBD LIKE KBED-KBEAREST,

AUX_ARBPL LIKE MKAL-MDV01,

AUX_ARBID LIKE CRHD-OBJID,

AUX_QUALF LIKE CRHD-QUALF,

AUX_SAT1800 LIKE SY-UZEIT VALUE '180000'.

----


  • S E L E C T I O N S C R E E N *

----


  • INPUT SELECTION

SELECTION-SCREEN : BEGIN OF BLOCK BL0 WITH FRAME TITLE TEXT-000.

SELECT-OPTIONS : SO_PRVBE FOR PVBE-PRVBE,

SO_MATNR FOR MARA-MATNR,

SO_ZZPTG FOR MARC-ZZPTG OBLIGATORY,

SO_WERKS FOR MARC-WERKS OBLIGATORY,

SO_BUDAT FOR MKPF-BUDAT OBLIGATORY.

SELECTION-SCREEN : END OF BLOCK BL0.

----


  • I N I T I A L I Z A T I O N *

----


INITIALIZATION.

MOVE SY-DATUM TO AUX_CURRENT.

AUX_PREVIOUS = AUX_CURRENT - 1.

MOVE SY-DATUM TO SO_BUDAT-LOW.

MOVE '01' TO SO_BUDAT-LOW+6(2).

APPEND SO_BUDAT.

AUX_PREVIOUS = AUX_CURRENT - 1.

----


  • A T S E L E C T I O N - S C R E E N *

----


AT SELECTION-SCREEN.

  • CHECK ON SELECTION SCREEN

PERFORM CHECK_ON_SELECTION.

----


  • S T A R T O F S E L E C T I O N *

----


START-OF-SELECTION.

  • CHECK IF BOM EXISTS FOR THE COMPONENTS

PERFORM CHECK_BOM_EXISTENCE.

  • GET FINISHED PRODUCT NUMBER FOR THE SUBASSEMBLIES

IF NOT IT_MARC_ZTGRP[] IS INITIAL.

LOOP AT IT_MARC_ZTGRP.

PERFORM GET_HEADER_MATERIAL USING IT_MARC_ZTGRP-MATNR.

IF NOT IT_MAT[] IS INITIAL.

PERFORM GET_FINISHED_GOOD TABLES IT_MAT.

ENDIF.

CLEAR IT_MARC_ZTGRP.

ENDLOOP.

ELSE.

MESSAGE S010 WITH 'No data present for given selection'.

ENDIF.

  • CHECK IF SALES DATA EXIST FOR THE FINISHED GOOD

PERFORM CHECK_SALESDATA_EXISTENCE.

  • GET CONTROL CYCLE AND KANBAN DATA

PERFORM GET_KANBAN_DATA.

  • GET VALUATION AREA DATA

PERFORM GET_VALUATION_AREA.

  • GET MATERIAL DOCUMENT DATA

PERFORM GET_MATERIAL_DOC_DATA.

  • GET KANBAN DETAILS

PERFORM GET_KANBAN_DETAILS.

----


  • E N D O F S E L E C T I O N *

----


END-OF-SELECTION.

IF NOT IT_TEMP[] IS INITIAL.

  • DISPLAY OUTPUT

PERFORM DISPLAY_OUTPUT.

ENDIF.

&----


*& Form CHECK_ON_SELECTION

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CHECK_ON_SELECTION .

  • CHECK IF ENTERED PLANT IS VALID

IF NOT SO_WERKS-LOW IS INITIAL AND SO_WERKS-HIGH IS INITIAL.

SELECT SINGLE * FROM MARC WHERE WERKS EQ SO_WERKS-LOW.

IF SY-SUBRC NE 0.

SET CURSOR FIELD 'SO_WERKS-LOW'.

MESSAGE E010 WITH 'Please enter a valid Plant'.

ENDIF.

ENDIF.

  • CHECK IF SUPPLY AREA AND PLANT IS VALID

IF NOT SO_PRVBE-LOW IS INITIAL AND SO_PRVBE-HIGH IS INITIAL.

IF NOT SO_WERKS IS INITIAL AND SO_WERKS-HIGH IS INITIAL.

SELECT SINGLE * FROM PVBE WHERE WERKS EQ SO_WERKS-LOW

AND PRVBE EQ SO_PRVBE-LOW.

IF SY-SUBRC NE 0.

SET CURSOR FIELD 'SO_PRVBE-LOW'.

MESSAGE E010 WITH 'Supply Area' SO_PRVBE-LOW 'donot belong to'

SO_WERKS-LOW.

ENDIF.

ENDIF.

ENDIF.

  • CHECK IF ENTERED MATERIAL NUMBER IS VALID

IF NOT SO_MATNR-LOW IS INITIAL AND SO_MATNR-HIGH IS INITIAL.

SELECT SINGLE * FROM MARA WHERE MATNR EQ SO_MATNR-LOW.

IF SY-SUBRC NE 0.

SET CURSOR FIELD 'SO_MATNR-LOW'.

MESSAGE E010 WITH 'Please enter a valid Material Number'.

ELSE.

IF NOT SO_WERKS-LOW IS INITIAL AND SO_WERKS-HIGH IS INITIAL.

SELECT SINGLE * FROM MARC WHERE MATNR EQ SO_MATNR-LOW

AND WERKS EQ SO_WERKS-LOW.

IF SY-SUBRC NE 0.

SET CURSOR FIELD 'SO_MATNR-LOW'.

MESSAGE E010 WITH 'Material' SO_MATNR-LOW

'doesnot belong to plant' SO_WERKS-LOW.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

  • CHECK IF TECHNOLOGY GROUP AND PLANT IS VALID

IF NOT SO_ZZPTG-LOW IS INITIAL AND SO_ZZPTG-HIGH IS INITIAL.

IF NOT SO_WERKS-LOW IS INITIAL AND SO_WERKS-HIGH IS INITIAL.

SELECT SINGLE * FROM MARC WHERE WERKS EQ SO_WERKS-LOW

AND ZZPTG EQ SO_ZZPTG-LOW.

IF SY-SUBRC NE 0.

SET CURSOR FIELD 'SO_ZZPTG-LOW'.

MESSAGE E010 WITH 'Tech.Group' SO_ZZPTG-LOW 'doesnot belong to plant'

SO_WERKS-LOW.

ENDIF.

ENDIF.

ENDIF.

ENDFORM. " CHECK_ON_SELECTION

&----


*& Form CHECK_BOM_EXISTENCE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CHECK_BOM_EXISTENCE .

  • JOIN MARC AND ZTGRP TABLES TO GET THE COMPONENTS BASED ON THE INPUT

  • CRITERIA

REFRESH IT_MARC_ZTGRP.

SELECT MARCMATNR MARCWERKS ZTGRPZZPTG ZTGRPZZPTD

INTO TABLE IT_MARC_ZTGRP

FROM MARC INNER JOIN ZTGRP

ON MARCWERKS EQ ZTGRPWERKS AND

MARCZZPTG EQ ZTGRPZZPTG

WHERE MARC~WERKS IN SO_WERKS

AND MARC~ZZPTG IN SO_ZZPTG

AND MARC~MATNR IN SO_MATNR

AND MARC~LVORM NE 'X'

AND ( MARC~BESKZ EQ 'E' OR

MARC~BESKZ EQ 'X' ).

IF NOT IT_MARC_ZTGRP[] IS INITIAL.

  • CHECK THE EXISTENCE OF BOM FOR THE SELECTED COMPONENTS.

  • IF NOT PRESENT, DELETE THE ENTRY FROM INTERNAL TABLE

LOOP AT IT_MARC_ZTGRP.

REFRESH IT_RETURN.

CALL FUNCTION 'BAPI_MAT_BOM_EXISTENCE_CHECK'

EXPORTING

MATERIAL = IT_MARC_ZTGRP-MATNR

PLANT = IT_MARC_ZTGRP-WERKS

BOMUSAGE = '1'

TABLES

RETURN = IT_RETURN.

IF NOT IT_RETURN[] IS INITIAL.

DELETE IT_MARC_ZTGRP WHERE MATNR EQ IT_MARC_ZTGRP-MATNR

AND WERKS EQ IT_MARC_ZTGRP-WERKS

AND ZZPTG EQ IT_MARC_ZTGRP-ZZPTG.

ENDIF.

CLEAR IT_MARC_ZTGRP.

ENDLOOP.

ELSE.

MESSAGE S010 WITH 'No data present for given selection'.

ENDIF.

ENDFORM. " CHECK_BOM_EXISTENCE

&----


*& Form GET_HEADER_MATERIAL

&----


  • text

----


  • -->P_IT_MARC_ZTGRP_MATNR text

----


FORM GET_HEADER_MATERIAL USING P_MATNR.

REFRESH IT_STPO.

  • GET BOM ITEM DATA FOR THE COMPONENT

SELECT * FROM STPO INTO TABLE IT_STPO WHERE IDNRK EQ P_MATNR

AND DATUV LE SO_BUDAT-LOW

AND LKENZ NE 'X'.

IF NOT IT_STPO[] IS INITIAL.

  • IF BOM ITEM DATA IS PRESENT FOR THE COMPONENT

REFRESH IT_MAST.

  • GET MATERIAL TO BOM LINK

SELECT * FROM MAST INTO TABLE IT_MAST FOR ALL ENTRIES IN IT_STPO

WHERE STLNR EQ IT_STPO-STLNR.

IF NOT IT_MAST[] IS INITIAL.

SORT IT_MAST BY MATNR.

DELETE ADJACENT DUPLICATES FROM IT_MAST COMPARING MATNR.

LOOP AT IT_MAST.

CLEAR AUX_SET.

REFRESH IT_PLANT.

  • GET ALL THE PLANTS FOR THE COMPONENT

SELECT MATNR WERKS FROM MARC INTO TABLE IT_PLANT

WHERE MATNR EQ IT_MAST-MATNR.

LOOP AT IT_PLANT.

REFRESH IT_RETURN.

  • CHECK FOR BOM EXISTENCE FOR MATERIAL IN ALL PLANTS

CALL FUNCTION 'BAPI_MAT_BOM_EXISTENCE_CHECK'

EXPORTING

MATERIAL = IT_MAST-MATNR

PLANT = IT_PLANT-WERKS

BOMUSAGE = '1'

TABLES

RETURN = IT_RETURN.

IF IT_RETURN[] IS INITIAL.

MOVE 'X' TO AUX_SET.

ENDIF.

CLEAR IT_PLANT.

ENDLOOP.

  • IF BOM EXISTS FOR THE COMPONENT IN ANY PLANT, MOVE THE COMPONENT

  • TO INTERNAL TABLE IT_MAT

IF AUX_SET EQ 'X'.

MOVE IT_MAST-MATNR TO IT_MAT-MATNR.

APPEND IT_MAT.

CLEAR IT_MAT.

ELSE.

  • IF BOM DOESNOT EXISTS FOR THE COMPONENT IN ALL PLANTS,

  • SELECT THE COMPONENT AS THE FINISHED PRODUCT

CLEAR MARA.

SELECT SINGLE * FROM MARA WHERE MATNR EQ IT_MAST-MATNR.

IF SY-SUBRC EQ 0 AND MARA-LVORM NE 'X'.

MOVE: IT_MARC_ZTGRP-MATNR TO IT_MATERIAL-IDNRK,

IT_MAST-MATNR TO IT_MATERIAL-MATNR.

APPEND IT_MATERIAL.

CLEAR IT_MATERIAL.

ENDIF.

ENDIF.

CLEAR IT_MAST.

ENDLOOP.

ENDIF.

ELSE.

  • IF BOM ITEM DATA DOESNOT PRESENT FOR THE COMPONENT,

  • CONSIDER THE COMPONENT AS FINISHED PRODUCT

CLEAR MARA.

SELECT SINGLE * FROM MARA WHERE MATNR EQ P_MATNR.

IF SY-SUBRC EQ 0 AND MARA-LVORM NE 'X'.

MOVE: IT_MARC_ZTGRP-MATNR TO IT_MATERIAL-IDNRK,

P_MATNR TO IT_MATERIAL-MATNR.

APPEND IT_MATERIAL.

CLEAR IT_MATERIAL.

ENDIF.

ENDIF.

ENDFORM. " GET_HEADER_MATERIAL

&----


*& Form GET_FINISHED_GOOD

&----


  • text

----


  • -->P_IT_MAT text

----


FORM GET_FINISHED_GOOD TABLES P_IT_MAT LIKE IT_MAT[].

LOOP AT P_IT_MAT.

PERFORM GET_HEADER_MATERIAL USING P_IT_MAT-MATNR.

DELETE P_IT_MAT INDEX 1.

CLEAR P_IT_MAT.

ENDLOOP.

ENDFORM. " GET_FINISHED_GOOD

&----


*& Form CHECK_SALESDATA_EXISTENCE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CHECK_SALESDATA_EXISTENCE .

IF NOT IT_MATERIAL[] IS INITIAL.

LOOP AT IT_MATERIAL.

CLEAR VBAP.

SELECT SINGLE * FROM VBAP WHERE MATNR EQ IT_MATERIAL-MATNR.

IF SY-SUBRC NE 0.

DELETE IT_MATERIAL WHERE IDNRK EQ IT_MATERIAL-IDNRK

AND MATNR EQ IT_MATERIAL-MATNR.

ENDIF.

CLEAR IT_MATERIAL.

ENDLOOP.

ENDIF.

ENDFORM. " CHECK_SALESDATA_EXISTENCE

&----


*& Form GET_KANBAN_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_KANBAN_DATA.

SORT IT_MATERIAL BY IDNRK MATNR.

DELETE ADJACENT DUPLICATES FROM IT_MATERIAL COMPARING ALL FIELDS.

IF NOT IT_MATERIAL[] IS INITIAL.

  • GET CONTROL CYCLE HEADER DATA

SELECT * FROM PKHD INTO TABLE IT_PKHD

FOR ALL ENTRIES IN IT_MATERIAL

WHERE WERKS IN SO_WERKS

AND MATNR EQ IT_MATERIAL-IDNRK

AND PRVBE IN SO_PRVBE.

IF NOT IT_PKHD[] IS INITIAL.

  • GET CONTROL CYCLE ITEM DATA

SELECT * FROM PKPS INTO TABLE IT_PKPS

FOR ALL ENTRIES IN IT_PKHD

WHERE PKNUM EQ IT_PKHD-PKNUM.

IF NOT IT_PKPS[] IS INITIAL.

  • GET KANBAN STATUS DATA

SELECT * FROM ZZC10 INTO TABLE IT_ZZC10_TEMP

FOR ALL ENTRIES IN IT_PKPS

WHERE PKKEY EQ IT_PKPS-PKKEY

AND PKNUM EQ IT_PKPS-PKNUM

AND ZDATE BETWEEN SO_BUDAT-LOW AND SY-DATUM

AND STATUS EQ '5'.

ENDIF.

ENDIF.

ENDIF.

ENDFORM. " GET_KANBAN_DATA

&----


*& Form GET_VALUATION_AREA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_VALUATION_AREA.

IF NOT IT_MARC_ZTGRP[] IS INITIAL.

SELECT WERKS BWKEY FABKL FROM T001W INTO TABLE IT_T001W

FOR ALL ENTRIES IN IT_MARC_ZTGRP

WHERE WERKS EQ IT_MARC_ZTGRP-WERKS.

ENDIF.

ENDFORM. " GET_VALUATION_AREA

&----


*& Form GET_MATERIAL_DOC_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_MATERIAL_DOC_DATA.

  • GET MATERIAL DOCUMENT HEADER DATA

SELECT * FROM MKPF INTO TABLE IT_MKPF

WHERE BUDAT IN SO_BUDAT.

IF NOT IT_MKPF[] IS INITIAL.

  • GET MATERIAL DOCUMENT ITEM DATA

SELECT * FROM MSEG INTO TABLE IT_MSEG

FOR ALL ENTRIES IN IT_MKPF

WHERE MBLNR EQ IT_MKPF-MBLNR

AND WERKS IN SO_WERKS

AND MJAHR EQ SY-DATUM+0(4)

AND ( BWART EQ '131' OR BWART EQ '132' ).

IF NOT IT_MATERIAL[] IS INITIAL.

LOOP AT IT_MSEG.

READ TABLE IT_MATERIAL WITH KEY IDNRK = IT_MSEG-MATNR.

IF SY-SUBRC NE 0.

DELETE IT_MSEG WHERE MATNR EQ IT_MSEG-MATNR.

ENDIF.

CLEAR: IT_MATERIAL, IT_MSEG.

ENDLOOP.

ENDIF.

ENDIF.

ENDFORM. " GET_MATERIAL_DOC_DATA

&----


*& Form GET_KANBAN_DETAILS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_KANBAN_DETAILS .

SORT IT_PKHD BY PKNUM.

IF NOT IT_ZZC10_TEMP[] IS INITIAL.

LOOP AT IT_ZZC10_TEMP.

CLEAR: AUX_FILL, AUX_PKBMG.

MOVE IT_ZZC10_TEMP[] TO IT_ZZC10[].

DELETE IT_ZZC10 WHERE MATNR NE IT_ZZC10_TEMP-MATNR

AND WERKS NE IT_ZZC10_TEMP-WERKS.

LOOP AT IT_ZZC10.

CLEAR: AUX_TIMESTAMP1, AUX_TIMESTAMP2, AUX_ZZC10_HR, AUX_DIFF.

  • EMPTY DATE GREATER THAN FULL DATE

IF IT_ZZC10-DATE_EMPTY GT IT_ZZC10-DATE_FULL.

CONCATENATE IT_ZZC10-DATE_EMPTY IT_ZZC10-TIME_EMPTY

INTO AUX_TIMESTAMP1.

CONCATENATE IT_ZZC10-DATE_FULL IT_ZZC10-TIME_FULL

INTO AUX_TIMESTAMP2.

CALL FUNCTION 'CCU_TIMESTAMP_DIFFERENCE'

EXPORTING

TIMESTAMP1 = AUX_TIMESTAMP1

TIMESTAMP2 = AUX_TIMESTAMP2

IMPORTING

DIFFERENCE = AUX_DIFF.

AUX_ZZC10_HR = AUX_DIFF / 3600.

  • FULL DATE GREATER THAN EMPTY DATE

ELSEIF IT_ZZC10-DATE_FULL GT IT_ZZC10-DATE_EMPTY.

CONCATENATE IT_ZZC10-DATE_EMPTY IT_ZZC10-TIME_EMPTY

INTO AUX_TIMESTAMP2.

CONCATENATE IT_ZZC10-DATE_FULL IT_ZZC10-TIME_FULL

INTO AUX_TIMESTAMP1.

CALL FUNCTION 'CCU_TIMESTAMP_DIFFERENCE'

EXPORTING

TIMESTAMP1 = AUX_TIMESTAMP1

TIMESTAMP2 = AUX_TIMESTAMP2

IMPORTING

DIFFERENCE = AUX_DIFF.

AUX_ZZC10_HR = AUX_DIFF / 3600.

  • FULL DATE EQUAL TO EMPTY DATE

ELSEIF IT_ZZC10-DATE_FULL EQ IT_ZZC10-DATE_EMPTY.

  • EMPTY TIME GREATER THAN FULL TIME

IF IT_ZZC10-TIME_EMPTY GT IT_ZZC10-TIME_FULL.

CONCATENATE IT_ZZC10-DATE_EMPTY IT_ZZC10-TIME_EMPTY

INTO AUX_TIMESTAMP1.

CONCATENATE IT_ZZC10-DATE_FULL IT_ZZC10-TIME_FULL

INTO AUX_TIMESTAMP2.

CALL FUNCTION 'CCU_TIMESTAMP_DIFFERENCE'

EXPORTING

TIMESTAMP1 = AUX_TIMESTAMP1

TIMESTAMP2 = AUX_TIMESTAMP2

IMPORTING

DIFFERENCE = AUX_DIFF.

AUX_ZZC10_HR = AUX_DIFF / 3600.

  • FULL TIME GREATER THAN EMPTY TIME

ELSEIF IT_ZZC10-TIME_FULL GT IT_ZZC10-TIME_EMPTY.

CONCATENATE IT_ZZC10-DATE_EMPTY IT_ZZC10-TIME_EMPTY

INTO AUX_TIMESTAMP2.

CONCATENATE IT_ZZC10-DATE_FULL IT_ZZC10-TIME_FULL

INTO AUX_TIMESTAMP1.

CALL FUNCTION 'CCU_TIMESTAMP_DIFFERENCE'

EXPORTING

TIMESTAMP1 = AUX_TIMESTAMP1

TIMESTAMP2 = AUX_TIMESTAMP2

IMPORTING

DIFFERENCE = AUX_DIFF.

AUX_ZZC10_HR = AUX_DIFF / 3600.

  • FULL TIME EQUAL TO EMPTY TIME

ELSEIF IT_ZZC10-TIME_FULL EQ IT_ZZC10-TIME_EMPTY.

AUX_ZZC10_HR = 0.

ENDIF.

ENDIF.

READ TABLE IT_PKHD WITH KEY PKNUM = IT_ZZC10-PKNUM

BINARY SEARCH.

IF SY-SUBRC EQ 0.

CLEAR: AUX_TIMESTAMP1, AUX_TIMESTAMP2,

AUX_PKHD_DAYS, AUX_PKHD_HOURS, AUX_TMP_DAYS,

AUX_PKHD_TIME.

AUX_PKHD_DAYS = IT_PKHD-KWBZD.

AUX_PKHD_HOURS = IT_PKHD-KWBZM.

IF AUX_PKHD_DAYS NE 0.

AUX_TMP_DAYS = AUX_PKHD_DAYS * 24.

AUX_PKHD_TIME = AUX_TMP_DAYS + AUX_PKHD_HOURS.

ELSE.

AUX_PKHD_TIME = AUX_PKHD_HOURS.

ENDIF.

  • COMPARE STATUS CHANGE TIME WITH REPLENISHMENT LEAD TIME

IF AUX_ZZC10_HR GT AUX_PKHD_TIME.

CLEAR: AUX_LATEHOURS.

  • LATE HOURS

AUX_LATEHOURS = AUX_ZZC10_HR - AUX_PKHD_TIME.

  • LATE QUANTITY FOR +1 DAY

IF AUX_LATEHOURS LE 24.

IT_TEMP-QTY_1 = IT_TEMP-QTY_1 + IT_ZZC10-PKBMG.

  • LATE QUANTITY FOR +2 DAYS

ELSEIF AUX_LATEHOURS GT 24

AND AUX_LATEHOURS LE 48.

IT_TEMP-QTY_2 = IT_TEMP-QTY_2 + IT_ZZC10-PKBMG.

  • LATE QUANTITY FOR +3 DAYS

ELSEIF AUX_LATEHOURS GT 48

AND AUX_LATEHOURS LE 72.

IT_TEMP-QTY_3 = IT_TEMP-QTY_3 + IT_ZZC10-PKBMG.

  • LATE QUANTITY FOR +4 DAYS

ELSEIF AUX_LATEHOURS GT 72

AND AUX_LATEHOURS LE 96.

IT_TEMP-QTY_4 = IT_TEMP-QTY_4 + IT_ZZC10-PKBMG.

  • LATE QUANTITY FOR +5 DAYS

ELSEIF AUX_LATEHOURS GT 96

AND AUX_LATEHOURS LE 120.

IT_TEMP-QTY_5 = IT_TEMP-QTY_5 + IT_ZZC10-PKBMG.

  • LATE QUANTITY FOR MORE THAN 5 DAYS

ELSEIF AUX_LATEHOURS GT 120.

IT_TEMP-QTY_6 = IT_TEMP-QTY_6 + IT_ZZC10-PKBMG.

ENDIF.

  • TOTAL KANBAN LATE QUANTITIES

AUX_PKBMG = AUX_PKBMG + IT_ZZC10-PKBMG.

ELSE.

AUX_FILL = AUX_FILL + IT_ZZC10-PKBMG.

CONTINUE.

ENDIF.

ENDIF.

ENDLOOP.

  • SUBASSEMBLY PART NUMBER

IT_TEMP-MATNR = IT_ZZC10-MATNR.

  • FINISHED GOOD

READ TABLE IT_MATERIAL WITH KEY IDNRK = IT_ZZC10-MATNR.

IT_TEMP-FINISHED = IT_MATERIAL-MATNR.

  • TECHNOLOGY GROUP

READ TABLE IT_MARC_ZTGRP WITH KEY WERKS = IT_ZZC10-WERKS

MATNR = IT_ZZC10-MATNR.

IF SY-SUBRC EQ 0.

MOVE IT_MARC_ZTGRP-ZZPTD TO IT_TEMP-TECH.

ENDIF.

  • NUMBER OF KANBAN CONTAINERS

IT_TEMP-BEHAZ = IT_PKHD-BEHAZ.

  • KANBAN QUANTITY

IT_TEMP-BEHMG = IT_PKHD-BEHMG.

  • LATE HOURS

AUX_LATEHOURS = AUX_ZZC10_HR - AUX_PKHD_TIME.

IT_TEMP-LATEHOURS = AUX_LATEHOURS.

  • REPLENISHMENT LEAD TIME

IT_TEMP-REPL_LEAD_TIME = AUX_PKHD_TIME.

  • KANBAN LATE QUANTITIES

IT_TEMP-GSMNG = AUX_PKBMG.

  • FILL RATE

AUX_TOTAL = AUX_PKBMG + AUX_FILL.

IT_TEMP-FILLRATE = ( AUX_FILL / AUX_TOTAL ) * 100.

  • GET STOCK IN PO01

REFRESH IT_MARD.

SELECT LABST FROM MARD INTO TABLE IT_MARD

WHERE MATNR EQ IT_ZZC10-MATNR

AND WERKS EQ IT_ZZC10-WERKS.

IF SY-SUBRC EQ 0.

LOOP AT IT_MARD.

SUM.

ENDLOOP.

MOVE IT_MARD-LABST TO IT_TEMP-STOCK_PO01.

CLEAR IT_MARD.

ENDIF.

  • GET YESTERDAY'S OUTPUT QUANTITY

PERFORM GET_YESTERDAY_QTY.

  • CUMULATIVE OUTPUT FOR ACTUAL MONTH

PERFORM GET_CUMULATIVE_OUTPUT.

  • GET BACKORDER SUBASSEMBLY DATA

PERFORM GET_BACKORDER_QTY.

  • GET BACKORDER FINISHED GOODS, TODAY, +1, +2, +3, +4, +5

  • AND AVERAGE OUPTUT NEEDED DATA

PERFORM GET_FINISHEDGOODS_DATA.

  • GET DATA FOR ACTUAL MONTH DELIVERED

PERFORM GET_ACTUAL_MONTH_DATA.

APPEND IT_TEMP.

CLEAR IT_TEMP.

DELETE IT_ZZC10_TEMP WHERE MATNR EQ IT_ZZC10_TEMP-MATNR

AND WERKS EQ IT_ZZC10_TEMP-WERKS.

CLEAR: IT_ZZC10, IT_ZZC10_TEMP, IT_PKHD.

ENDLOOP.

ENDIF.

ENDFORM. " GET_KANBAN_DETAILS

&----


*& Form GET_YESTERDAY_QTY

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_YESTERDAY_QTY .

CLEAR: AUX_BUKRS, AUX_WAERS.

READ TABLE IT_T001W WITH KEY WERKS = IT_PKHD-WERKS.

IF SY-SUBRC EQ 0.

CLEAR AUX_FABKL.

MOVE IT_T001W-FABKL TO AUX_FABKL.

SELECT SINGLE BUKRS INTO AUX_BUKRS FROM T001K

WHERE BWKEY = IT_T001W-BWKEY.

IF SY-SUBRC EQ 0.

SELECT SINGLE WAERS INTO AUX_WAERS FROM T001

WHERE BUKRS = AUX_BUKRS.

ENDIF.

IF 'WD;WF;WN;WP;WU' CS AUX_FABKL.

AUX_FABKL(1) = 'P'.

ENDIF.

MOVE SY-DATUM TO AUX_DATUMABSOLUT.

PERFORM WEEKDAY USING AUX_DATUMABSOLUT.

MOVE 'W' TO AUX_FLAG.

PERFORM CHECK_WORKING_DAY CHANGING AUX_FLAG.

IF AUX_DATUMABSOLUT = 0.

AUX_YDAY = SY-DATUM.

ELSEIF AUX_DATUMABSOLUT = 1.

AUX_YDAY = SY-DATUM - 1.

ELSEIF AUX_FLAG = 'F'.

AUX_YDAY = SY-DATUM.

ENDIF.

IF AUX_DATUMABSOLUT = 0 OR

AUX_DATUMABSOLUT = 1 OR

AUX_FLAG = 'F'.

PERFORM DATE_WITH_OFFSET USING 0 CHANGING AUX_TDAY.

PERFORM DATE_WITH_OFFSET USING 1 CHANGING AUX_DAY1.

PERFORM DATE_WITH_OFFSET USING 2 CHANGING AUX_DAY2.

PERFORM DATE_WITH_OFFSET USING 3 CHANGING AUX_DAY3.

PERFORM DATE_WITH_OFFSET USING 4 CHANGING AUX_DAY4.

PERFORM DATE_WITH_OFFSET USING 5 CHANGING AUX_DAY5.

ELSE.

PERFORM DATE_WITH_OFFSET USING 0 CHANGING AUX_YDAY.

PERFORM DATE_WITH_OFFSET USING 1 CHANGING AUX_TDAY.

PERFORM DATE_WITH_OFFSET USING 2 CHANGING AUX_DAY1.

PERFORM DATE_WITH_OFFSET USING 3 CHANGING AUX_DAY2.

PERFORM DATE_WITH_OFFSET USING 4 CHANGING AUX_DAY3.

PERFORM DATE_WITH_OFFSET USING 5 CHANGING AUX_DAY4.

PERFORM DATE_WITH_OFFSET USING 6 CHANGING AUX_DAY5.

ENDIF.

AUX_BORD = '19000101'.

  • GET PLANNED ORDER DATA FOR YESTERDAY

REFRESH IT_PLAF.

CLEAR: AUX_KAPBD, AUX_KBEAREST, AUX_KRUEREST, AUX_GSMNG.

SELECT * FROM PLAF INTO TABLE IT_PLAF

WHERE MATNR EQ IT_PKHD-MATNR

AND PLWRK EQ IT_PKHD-WERKS

AND ( PAART EQ 'KD' OR PAART EQ 'PE' )

AND RATID GT 0

AND PEDTR EQ AUX_YDAY.

IF NOT IT_PLAF[] IS INITIAL.

LOOP AT IT_PLAF.

REFRESH IT_KBED_KAKO.

SELECT KBED~KBEAREST KBED~KRUEREST KBED~KEINH

FROM KBED INNER JOIN KAKO

ON KBED~KAPID EQ KAKO~KAPID

INTO TABLE IT_KBED_KAKO

WHERE KBED~BEDID = IT_PLAF-RATID

AND KAKO~KAPAR = '001'.

IF NOT IT_KBED_KAKO[] IS INITIAL.

LOOP AT IT_KBED_KAKO.

IF IT_KBED_KAKO-KEINH NE 'STD'.

CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'

EXPORTING

INPUT = IT_KBED_KAKO-KBEAREST

UNIT_IN = IT_KBED_KAKO-KEINH

UNIT_OUT = 'STD'

IMPORTING

OUTPUT = IT_KBED_KAKO-KBEAREST.

CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'

EXPORTING

INPUT = IT_KBED_KAKO-KRUEREST

UNIT_IN = IT_KBED_KAKO-KEINH

UNIT_OUT = 'STD'

IMPORTING

OUTPUT = IT_KBED_KAKO-KRUEREST.

ENDIF.

ADD IT_KBED_KAKO-KBEAREST TO AUX_KBEAREST.

ADD IT_KBED_KAKO-KRUEREST TO AUX_KRUEREST.

CLEAR IT_KBED_KAKO.

ENDLOOP.

AUX_KAPBD = AUX_KBEAREST + AUX_KRUEREST.

ENDIF.

CLEAR IT_PLAF.

ENDLOOP.

ENDIF.

READ TABLE IT_KBED_KAKO INDEX 1.

MOVE: AUX_KAPBD TO IT_TEMP-KAPBD_OUTY,

IT_KBED_KAKO-KEINH TO IT_TEMP-KEINH_OUTY.

  • GET OUTPUT QUANTITY FOR YESTERDAY

REFRESH: IT_MKPF, IT_MSEG.

CLEAR: AUX_MENGE.

SELECT * FROM MKPF INTO TABLE IT_MKPF

WHERE BUDAT EQ AUX_PREVIOUS.

IF NOT IT_MKPF[] IS INITIAL.

  • GET MATERIAL DOCUMENT ITEM DATA

SELECT * FROM MSEG INTO TABLE IT_MSEG

FOR ALL ENTRIES IN IT_MKPF

WHERE MBLNR EQ IT_MKPF-MBLNR

AND MATNR IN SO_MATNR

AND WERKS IN SO_WERKS

AND MJAHR EQ SY-DATUM+0(4)

AND ( BWART EQ '131' OR BWART EQ '132' ).

IF NOT IT_MSEG[] IS INITIAL.

LOOP AT IT_MSEG.

AUX_MENGE = AUX_MENGE + IT_MSEG-MENGE.

CLEAR IT_MSEG.

ENDLOOP.

ENDIF.

ENDIF.

READ TABLE IT_MSEG INDEX 1.

MOVE: AUX_MENGE TO IT_TEMP-GSMNG_OUTY,

IT_MSEG-MEINS TO IT_TEMP-MEINS_OUTY.

CLEAR IT_T001W.

ENDIF.

ENDFORM. " GET_YESTERDAY_QTY

&----


*& Form GET_BACKORDER_QTY

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_BACKORDER_QTY .

  • GET PLANNED ORDER DATA FOR BACKORDER

REFRESH IT_PLAF.

CLEAR: AUX_KAPBD, AUX_KBEAREST, AUX_KRUEREST, AUX_GSMNG, AUX_QUANT.

SELECT * FROM PLAF INTO TABLE IT_PLAF

WHERE MATNR EQ IT_ZZC10-MATNR

AND PLWRK EQ IT_ZZC10-WERKS

AND ( PAART EQ 'KD' OR PAART EQ 'PE' )

AND RATID GT 0

AND PEDTR GE SO_BUDAT-LOW

AND PEDTR LE SY-DATUM.

IF NOT IT_PLAF[] IS INITIAL.

LOOP AT IT_PLAF.

CLEAR: AUX_TIMESTAMP1, AUX_TIMESTAMP2, AUX_PLAF_HR, AUX_DIFF.

  • EMPTY DATE GREATER THAN FULL DATE

CONCATENATE SY-DATUM SY-UZEIT

INTO AUX_TIMESTAMP1.

CONCATENATE IT_PLAF-PEDTR IT_PLAF-PEDTI

INTO AUX_TIMESTAMP2.

CALL FUNCTION 'CCU_TIMESTAMP_DIFFERENCE'

EXPORTING

TIMESTAMP1 = AUX_TIMESTAMP1

TIMESTAMP2 = AUX_TIMESTAMP2

IMPORTING

DIFFERENCE = AUX_DIFF.

AUX_PLAF_HR = AUX_DIFF / 3600.

IF AUX_PLAF_HR > AUX_PKHD_TIME.

AUX_GSMNG = AUX_GSMNG + IT_PLAF-GSMNG.

REFRESH IT_KBED_KAKO.

SELECT KBEDKBEAREST KBEDKRUEREST KBED~KEINH

FROM KBED INNER JOIN KAKO

ON KBEDKAPID EQ KAKOKAPID

INTO TABLE IT_KBED_KAKO

WHERE KBED~BEDID = IT_PLAF-RATID

AND KAKO~KAPAR = '001'.

IF NOT IT_KBED_KAKO[] IS INITIAL.

LOOP AT IT_KBED_KAKO.

IF IT_KBED_KAKO-KEINH NE 'STD'.

CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'

EXPORTING

INPUT = IT_KBED_KAKO-KBEAREST

UNIT_IN = IT_KBED_KAKO-KEINH

UNIT_OUT = 'STD'

IMPORTING

OUTPUT = IT_KBED_KAKO-KBEAREST.

CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'

EXPORTING

INPUT = IT_KBED_KAKO-KRUEREST

UNIT_IN = IT_KBED_KAKO-KEINH

UNIT_OUT = 'STD'

IMPORTING

OUTPUT = IT_KBED_KAKO-KRUEREST.

ENDIF.

AUX_KBEAREST = AUX_KBEAREST + IT_KBED_KAKO-KBEAREST.

AUX_KRUEREST = AUX_KRUEREST + IT_KBED_KAKO-KRUEREST.

CLEAR IT_KBED_KAKO.

ENDLOOP.

AUX_KAPBD = AUX_KBEAREST + AUX_KRUEREST.

ENDIF.

ENDIF.

ENDLOOP.

READ TABLE IT_PLAF INDEX 1.

MOVE: AUX_GSMNG TO IT_TEMP-GSMNG_BORD,

IT_PLAF-MEINS TO IT_TEMP-MEINS_BORD.

READ TABLE IT_KBED_KAKO INDEX 1.

MOVE: AUX_KAPBD TO IT_TEMP-KAPBD_BORD,

IT_KBED_KAKO-KEINH TO IT_TEMP-KEINH_BORD.

ENDIF.

ENDFORM. " GET_BACKORDER_QTY

&----


*& Form WEEKDAY

&----


  • text

----


  • -->P_AUX_DATUMABSOLUT text

----


FORM WEEKDAY USING P_DATUMABSOLUT.

P_DATUMABSOLUT = P_DATUMABSOLUT MOD 7.

ENDFORM. " WEEKDAY

&----


*& Form CHECK_WORKING_DAY

&----


  • text

----


  • <--P_AUX_FLAG text

----


FORM CHECK_WORKING_DAY CHANGING P_FLAG.

CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'

EXPORTING

DATE = SY-DATUM

FACTORY_CALENDAR_ID = AUX_FABKL

IMPORTING

DATE = AUX_FDAY

EXCEPTIONS

CALENDAR_BUFFER_NOT_LOADABLE = 1

CORRECT_OPTION_INVALID = 2

DATE_AFTER_RANGE = 3

DATE_BEFORE_RANGE = 4

DATE_INVALID = 5

FACTORY_CALENDAR_NOT_FOUND = 6

OTHERS = 7.

IF AUX_FDAY NE SY-DATUM.

AUX_FLAG = 'F'.

ENDIF.

ENDFORM. " CHECK_WORKING_DAY

&----


*& Form DATE_WITH_OFFSET

&----


  • text

----


  • -->P_0 text

  • <--P_AUX_TDAY text

----


FORM DATE_WITH_OFFSET USING AUX_OFFSET

CHANGING P_TDAY.

DATA:

AUX_CALENDARDATE LIKE SCAL-DATE,

AUX_FACTORYDATE LIKE SCAL-FACDATE.

CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'

EXPORTING

DATE = SY-DATUM

FACTORY_CALENDAR_ID = AUX_FABKL

IMPORTING

FACTORYDATE = AUX_FACTORYDATE

EXCEPTIONS

CALENDAR_BUFFER_NOT_LOADABLE = 1

CORRECT_OPTION_INVALID = 2

DATE_AFTER_RANGE = 3

DATE_BEFORE_RANGE = 4

DATE_INVALID = 5

FACTORY_CALENDAR_NOT_FOUND = 6

OTHERS = 7.

AUX_FACTORYDATE = AUX_FACTORYDATE + AUX_OFFSET.

CALL FUNCTION 'FACTORYDATE_CONVERT_TO_DATE'

EXPORTING

FACTORYDATE = AUX_FACTORYDATE

FACTORY_CALENDAR_ID = AUX_FABKL

IMPORTING

DATE = AUX_CALENDARDATE

EXCEPTIONS

CALENDAR_BUFFER_NOT_LOADABLE = 1

FACTORYDATE_AFTER_RANGE = 2

FACTORYDATE_BEFORE_RANGE = 3

FACTORYDATE_INVALID = 4

FACTORY_CALENDAR_ID_MISSING = 5

FACTORY_CALENDAR_NOT_FOUND = 6

OTHERS = 7.

P_TDAY = AUX_CALENDARDATE.

ENDFORM. " DATE_WITH_OFFSET

&----


*& Form GET_CUMULATIVE_OUTPUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_CUMULATIVE_OUTPUT .

CLEAR: AUX_LOW, AUX_HIGH.

MOVE: SY-DATUM TO AUX_LOW,

SY-DATUM TO AUX_HIGH.

MOVE: '01' TO AUX_LOW+6(2),

'31' TO AUX_HIGH+6(2).

REFRESH IT_MKPF_MSEG.

CLEAR AUX_MNG.

SELECT MKPFMBLNR MKPFMJAHR MKPF~BUDAT

MSEGBWART MSEGMATNR MSEGMENGE MSEGMEINS MSEGDMBTR MSEGWERKS

INTO TABLE IT_MKPF_MSEG

FROM MKPF JOIN MSEG

ON MKPFMBLNR EQ MSEGMBLNR

WHERE MKPF~BUDAT BETWEEN AUX_LOW AND AUX_HIGH

AND MKPF~MJAHR EQ AUX_CURRENT+0(4)

AND MKPF~VGART EQ 'WS'

AND MSEG~ZEILE EQ 1

AND MSEG~WERKS EQ SO_WERKS

AND MSEG~MATNR EQ IT_PKHD-MATNR

AND MSEG~BWART IN ('131', '132').

IF NOT IT_MKPF_MSEG[] IS INITIAL.

LOOP AT IT_MKPF_MSEG.

AUX_MNG = AUX_MNG + IT_MKPF_MSEG-MENGE.

CLEAR IT_MKPF_MSEG.

ENDLOOP.

ENDIF.

MOVE AUX_MNG TO IT_TEMP-GSMNG_OUTM.

READ TABLE IT_MKPF_MSEG INDEX 1.

MOVE IT_MKPF_MSEG-MEINS TO IT_TEMP-MEINS_OUTM.

REFRESH IT_COBK.

SELECT DISTINCT BLPP~RUECK FROM BLPK INNER JOIN BLPP

ON BLPKPRTNR EQ BLPPPRTNR

INTO TABLE IT_COBK

WHERE BLPK~WERKS EQ SO_WERKS

AND BLPK~MATNR EQ SO_MATNR

AND BLPK~DATUM BETWEEN AUX_LOW

AND AUX_HIGH

AND BLPP~PRTPS EQ '0002'.

IF NOT IT_COBK[] IS INITIAL.

REFRESH IT_COEPL.

SELECT KOKRS BELNR FROM COBK

INTO CORRESPONDING FIELDS OF TABLE IT_COEPL

FOR ALL ENTRIES IN IT_COBK

WHERE REFBT EQ 'R'

AND REFBN EQ IT_COBK-RUECK

AND BLDAT BETWEEN AUX_LOW AND AUX_HIGH.

CLEAR IT_CAPACITIES.

REFRESH IT_CAPACITIES.

LOOP AT IT_COEPL.

SELECT LSBBTR MEINB FROM COEPL

APPENDING CORRESPONDING FIELDS OF TABLE IT_CAPACITIES

WHERE KOKRS EQ IT_COEPL-KOKRS

AND BELNR EQ IT_COEPL-BELNR

AND OBJNR LIKE '%DLABOR'.

CALL FUNCTION 'UNIT_SUM'

IMPORTING

QUANTITY_SUM = IT_TEMP-KAPBD_OUTM

UNIT_SUM = AUX_SUM_UNIT

TABLES

QUANTITIES_UNITS = IT_CAPACITIES.

CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'

EXPORTING

INPUT = IT_TEMP-KAPBD_OUTM

UNIT_IN = AUX_SUM_UNIT

UNIT_OUT = 'STD'

IMPORTING

OUTPUT = IT_TEMP-KAPBD_OUTM.

ENDLOOP.

READ TABLE IT_CAPACITIES INDEX 1.

MOVE IT_CAPACITIES-MEINB TO IT_TEMP-KEINH_OUTM.

ENDIF.

ENDFORM. " GET_CUMULATIVE_OUTPUT

&----


*& Form GET_FINISHEDGOODS_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_FINISHEDGOODS_DATA .

  • GET PLANNED ORDER DATA

REFRESH IT_PLAF.

CLEAR: AUX_KAPBD, AUX_KBEAREST, AUX_KRUEREST, AUX_GSMNG.

SELECT * FROM PLAF INTO TABLE IT_PLAF

WHERE MATNR EQ IT_TEMP-FINISHED

AND ( PAART EQ 'KD' OR PAART EQ 'PE' )

AND RATID GT 0

AND PEDTR GE AUX_BORD

AND PEDTR LE AUX_DAY5.

IF NOT IT_PLAF[] IS INITIAL.

LOOP AT IT_PLAF.

CLEAR: AUX_KAPBD, AUX_GSMNG.

REFRESH IT_KBED_KAKO.

SELECT KBEDKBEAREST KBEDKRUEREST KBED~KEINH

FROM KBED INNER JOIN KAKO

ON KBEDKAPID EQ KAKOKAPID

INTO TABLE IT_KBED_KAKO

WHERE KBED~BEDID = IT_PLAF-RATID

AND KAKO~KAPAR = '001'.

IF NOT IT_KBED_KAKO[] IS INITIAL.

CLEAR AUX_KAPBD.

LOOP AT IT_KBED_KAKO.

IF IT_KBED_KAKO-KEINH NE 'STD'.

CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'

EXPORTING

INPUT = IT_KBED_KAKO-KBEAREST

UNIT_IN = IT_KBED_KAKO-KEINH

UNIT_OUT = 'STD'

IMPORTING

OUTPUT = IT_KBED_KAKO-KBEAREST.

CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'

EXPORTING

INPUT = IT_KBED_KAKO-KRUEREST

UNIT_IN = IT_KBED_KAKO-KEINH

UNIT_OUT = 'STD'

IMPORTING

OUTPUT = IT_KBED_KAKO-KRUEREST.

ENDIF.

ADD IT_KBED_KAKO-KBEAREST TO AUX_KBEAREST.

ADD IT_KBED_KAKO-KRUEREST TO AUX_KRUEREST.

CLEAR IT_KBED_KAKO.

ENDLOOP.

AUX_KAPBD = AUX_KBEAREST + AUX_KRUEREST.

ENDIF.

READ TABLE IT_KBED_KAKO INDEX 1.

CASE IT_PLAF-PEDTR.

WHEN AUX_DAY5.

AUX_GSMNG = IT_PLAF-GSMNG.

IT_TEMP-F_GSMNG_DAY5 = IT_TEMP-F_GSMNG_DAY5 + AUX_GSMNG.

IT_TEMP-F_MEINS_DAY5 = IT_PLAF-MEINS.

IT_TEMP-F_KAPBD_DAY5 = IT_TEMP-F_KAPBD_DAY5 + AUX_KAPBD.

IT_TEMP-F_KEINH_DAY5 = IT_KBED_KAKO-KEINH.

WHEN AUX_DAY4.

AUX_GSMNG = IT_PLAF-GSMNG.

IT_TEMP-F_GSMNG_DAY4 = IT_TEMP-F_GSMNG_DAY4 + AUX_GSMNG.

IT_TEMP-F_MEINS_DAY4 = IT_PLAF-MEINS.

IT_TEMP-F_KAPBD_DAY4 = IT_TEMP-F_KAPBD_DAY4 + AUX_KAPBD.

IT_TEMP-F_KEINH_DAY4 = IT_KBED_KAKO-KEINH.

WHEN AUX_DAY3.

AUX_GSMNG = IT_PLAF-GSMNG.

IT_TEMP-F_GSMNG_DAY3 = IT_TEMP-F_GSMNG_DAY3 + AUX_GSMNG.

IT_TEMP-F_MEINS_DAY3 = IT_PLAF-MEINS.

IT_TEMP-F_KAPBD_DAY3 = IT_TEMP-F_KAPBD_DAY3 + AUX_KAPBD.

IT_TEMP-F_KEINH_DAY3 = IT_KBED_KAKO-KEINH.

WHEN AUX_DAY2.

AUX_GSMNG = IT_PLAF-GSMNG.

IT_TEMP-F_GSMNG_DAY2 = IT_TEMP-F_GSMNG_DAY2 + AUX_GSMNG.

IT_TEMP-F_MEINS_DAY2 = IT_PLAF-MEINS.

IT_TEMP-F_KAPBD_DAY2 = IT_TEMP-F_KAPBD_DAY2 + AUX_KAPBD.

IT_TEMP-F_KEINH_DAY2 = IT_KBED_KAKO-KEINH.

WHEN AUX_DAY1.

AUX_GSMNG = IT_PLAF-GSMNG.

IT_TEMP-F_GSMNG_DAY1 = IT_TEMP-F_GSMNG_DAY1 + AUX_GSMNG.

IT_TEMP-F_MEINS_DAY1 = IT_PLAF-MEINS.

IT_TEMP-F_KAPBD_DAY1 = IT_TEMP-F_KAPBD_DAY1 + AUX_KAPBD.

IT_TEMP-F_KEINH_DAY1 = IT_KBED_KAKO-KEINH.

WHEN AUX_TDAY.

AUX_GSMNG = IT_PLAF-GSMNG.

IT_TEMP-F_GSMNG_TDAY = IT_TEMP-F_GSMNG_TDAY + AUX_GSMNG.

IT_TEMP-F_MEINS_TDAY = IT_PLAF-MEINS.

IT_TEMP-F_KAPBD_TDAY = IT_TEMP-F_KAPBD_TDAY + AUX_KAPBD.

IT_TEMP-F_KEINH_TDAY = IT_KBED_KAKO-KEINH.

WHEN OTHERS.

AUX_GSMNG = IT_PLAF-GSMNG.

IT_TEMP-F_GSMNG_BORD = IT_TEMP-F_GSMNG_BORD + AUX_GSMNG.

IT_TEMP-F_MEINS_BORD = IT_PLAF-MEINS.

IT_TEMP-F_KAPBD_BORD = IT_TEMP-F_KAPBD_BORD + AUX_KAPBD.

IT_TEMP-F_KEINH_BORD = IT_KBED_KAKO-KEINH.

ENDCASE.

IT_TEMP-F_GSMNG_OUTN = IT_TEMP-F_GSMNG_OUTN + AUX_GSMNG.

IT_TEMP-F_KAPBD_OUTN = IT_TEMP-F_KAPBD_OUTN + AUX_KAPBD.

ENDLOOP.

READ TABLE IT_PLAF INDEX 1.

MOVE IT_PLAF-MEINS TO IT_TEMP-F_MEINS_OUTN.

READ TABLE IT_KBED_KAKO INDEX 1.

MOVE IT_KBED_KAKO-KEINH TO IT_TEMP-F_KEINH_OUTN.

ENDIF.

ENDFORM. " GET_FINISHEDGOODS_DATA

&----


*& Form GET_ACTUAL_MONTH_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_ACTUAL_MONTH_DATA .

CLEAR: AUX_LOW, AUX_HIGH.

MOVE: '01' TO SO_BUDAT-LOW+6(2),

SO_BUDAT-LOW TO AUX_LOW,

'31' TO SO_BUDAT-LOW+6(2),

SO_BUDAT-LOW TO AUX_HIGH.

REFRESH IT_MKPF_MSEG.

CLEAR AUX_MNG.

SELECT MKPFMBLNR MKPFMJAHR MKPF~BUDAT

MSEGBWART MSEGMATNR MSEGMENGE MSEGMEINS MSEGDMBTR MSEGWERKS

INTO TABLE IT_MKPF_MSEG

FROM MKPF JOIN MSEG

ON MKPFMBLNR EQ MSEGMBLNR

WHERE MKPF~BUDAT IN SO_BUDAT

AND MKPF~MJAHR EQ AUX_CURRENT+0(4)

AND MKPF~VGART EQ 'WS'

AND MSEG~ZEILE EQ 1

AND MSEG~WERKS EQ IT_TEMP-WERKS

AND MSEG~MATNR EQ IT_TEMP-FINISHED

AND MSEG~BWART IN ('131', '132').

IF NOT IT_MKPF_MSEG[] IS INITIAL.

AUX_MNG = AUX_MNG + IT_MKPF_MSEG-MENGE.

ENDIF.

MOVE AUX_MNG TO IT_TEMP-F_GSMNG_OUTM.

READ TABLE IT_MKPF_MSEG INDEX 1.

MOVE IT_MKPF_MSEG-MEINS TO IT_TEMP-F_MEINS_OUTM.

REFRESH IT_COBK.

SELECT DISTINCT BLPP~RUECK FROM BLPK INNER JOIN BLPP

ON BLPKPRTNR EQ BLPPPRTNR

INTO TABLE IT_COBK

WHERE BLPK~WERKS EQ IT_TEMP-WERKS

AND BLPK~MATNR EQ IT_TEMP-FINISHED

AND BLPK~DATUM BETWEEN AUX_LOW

AND AUX_HIGH

AND BLPP~PRTPS EQ '0002'.

IF NOT IT_COBK[] IS INITIAL.

REFRESH IT_COEPL.

SELECT KOKRS BELNR FROM COBK

INTO CORRESPONDING FIELDS OF TABLE IT_COEPL

FOR ALL ENTRIES IN IT_COBK

WHERE REFBT EQ 'R'

AND REFBN EQ IT_COBK-RUECK

AND BLDAT BETWEEN AUX_LOW AND AUX_HIGH.

CLEAR IT_CAPACITIES.

REFRESH IT_CAPACITIES.

LOOP AT IT_COEPL.

SELECT LSBBTR MEINB FROM COEPL

APPENDING CORRESPONDING FIELDS OF TABLE IT_CAPACITIES

WHERE KOKRS EQ IT_COEPL-KOKRS

AND BELNR EQ IT_COEPL-BELNR

AND OBJNR LIKE '%DLABOR'.

CALL FUNCTION 'UNIT_SUM'

IMPORTING

QUANTITY_SUM = IT_TEMP-F_KAPBD_OUTM

UNIT_SUM = AUX_SUM_UNIT

TABLES

QUANTITIES_UNITS = IT_CAPACITIES.

CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'

EXPORTING

INPUT = IT_TEMP-F_KAPBD_OUTM

UNIT_IN = AUX_SUM_UNIT

UNIT_OUT = 'STD'

IMPORTING

OUTPUT = IT_TEMP-F_KAPBD_OUTM.

ENDLOOP.

READ TABLE IT_CAPACITIES INDEX 1.

MOVE IT_CAPACITIES-MEINB TO IT_TEMP-F_KEINH_OUTM.

ENDIF.

ENDFORM. " GET_ACTUAL_MONTH_DATA

&----


*& Form DISPLAY_OUTPUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DISPLAY_OUTPUT .

SKIP.

WRITE: /5 'Report:' COLOR 1 CENTERED INTENSIFIED ON,

13 'Backorder Report for Subassembly' COLOR 3 CENTERED INTENSIFIED ON,

50 'Date:' COLOR 1 CENTERED INTENSIFIED ON,

SY-DATUM COLOR 3 CENTERED INTENSIFIED ON,

70 'User:' COLOR 1 CENTERED INTENSIFIED ON,

SY-UNAME COLOR 3 CENTERED INTENSIFIED ON.

SKIP 2.

ULINE /5(595).

WRITE: /5 '|',

6(20) ' ' COLOR 1 CENTERED INTENSIFIED ON,

26 '|',

27(18) ' ' COLOR 1 INTENSIFIED ON,

45 '|',

46(27) 'Act.Qty oldr than' COLOR 1 CENTERED INTENSIFIED ON,

73 '|',

74(107) 'Cuml.Qty of late kanban(Days)' COLOR 1 CENTERED INTENSIFIED ON,

181 '|',

192 '|',

208 '|',

216 '|',

217(27) 'Output Yesterday' COLOR 1 CENTERED INTENSIFIED ON,

244 '|',

245(27) 'Cumul.Output.Actual.Month' COLOR 1 CENTERED INTENSIFIED ON,

272 '|',

273(27) 'Backorder subassm' COLOR 1 CENTERED INTENSIFIED ON,

300 '|',

328 '|',

347 '|',

348(27) 'Backord Finished' COLOR 1 CENTERED INTENSIFIED ON,

375 '|',

376(27) 'Today' COLOR 1 CENTERED INTENSIFIED ON,

403 '|',

404(27) 'Today+1' COLOR 1 CENTERED INTENSIFIED ON,

431 '|',

432(27) 'Today+2' COLOR 1 CENTERED INTENSIFIED ON,

459 '|',

460(27) 'Today+3' COLOR 1 CENTERED INTENSIFIED ON,

487 '|',

488(27) 'Today+4' COLOR 1 CENTERED INTENSIFIED ON,

515 '|',

516(27) 'Today+5' COLOR 1 CENTERED INTENSIFIED ON,

543 '|',

544(27) 'Act.Mon Delivered' COLOR 1 CENTERED INTENSIFIED ON,

571 '|',

572(27) 'Avg.Output Needed' COLOR 1 CENTERED INTENSIFIED ON,

599 '|'.

WRITE: /5 '|',

6(20) 'Description' COLOR 1 CENTERED INTENSIFIED ON,

26 '|',

27(18) 'Part Number' COLOR 1 CENTERED INTENSIFIED ON,

45 '|',

46(27) 'Repl.Lead.Time' COLOR 1 CENTERED INTENSIFIED ON,

73 '|'.

ULINE 74(107).

WRITE: 181 '|',

182(10) ' ' COLOR 1 INTENSIFIED ON,

192 '|',

193(15) 'Repl.Lead.Time' COLOR 1 CENTERED INTENSIFIED ON,

208 '|',

209(7) 'No of' COLOR 1 CENTERED INTENSIFIED ON,

216 '|',

217(27) '[QTY/EA]' COLOR 1 CENTERED INTENSIFIED ON,

244 '|',

245(27) '[QTY/EA]' COLOR 1 CENTERED INTENSIFIED ON,

272 '|',

273(27) '[QTY/EA]' COLOR 1 CENTERED INTENSIFIED ON,

300 '|',

301(27) 'Stock in PO01' COLOR 1 CENTERED INTENSIFIED ON,

328 '|',

329(18) 'Part Number' COLOR 1 CENTERED INTENSIFIED ON,

347 '|',

348(27) '< Today [QTY/EA]' COLOR 1 CENTERED INTENSIFIED ON,

375 '|',

376(27) '[QTY/EA]' COLOR 1 CENTERED INTENSIFIED ON,

403 '|',

404(27) '[QTY/EA]' COLOR 1 CENTERED INTENSIFIED ON,

431 '|',

432(27) '[QTY/EA]' COLOR 1 CENTERED INTENSIFIED ON,

459 '|',

460(27) '[QTY/EA]' COLOR 1 CENTERED INTENSIFIED ON,

487 '|',

488(27) '[QTY/EA]' COLOR 1 CENTERED INTENSIFIED ON,

515 '|',

516(27) '[QTY/EA]' COLOR 1 CENTERED INTENSIFIED ON,

543 '|',

544(27) '[QTY/EA]' COLOR 1 CENTERED INTENSIFIED ON,

571 '|',

572(27) '[QTY/EA]' COLOR 1 CENTERED INTENSIFIED ON,

599 '|'.

WRITE: /5 '|',

6(20) 'Tech.Group' COLOR 1 CENTERED INTENSIFIED ON,

26 '|',

27(18) 'Subassembly' COLOR 1 CENTERED INTENSIFIED ON,

45 '|',

46(27) '[QTY/EA]' COLOR 1 CENTERED INTENSIFIED ON,

73 '|',

74(17) '+1' COLOR 1 CENTERED INTENSIFIED ON,

91 '|',

92(17) '+2' COLOR 1 CENTERED INTENSIFIED ON,

109 '|',

110(17) '+3' COLOR 1 CENTERED INTENSIFIED ON,

127 '|',

128(17) '+4' COLOR 1 CENTERED INTENSIFIED ON,

145 '|',

146(17) '+5' COLOR 1 CENTERED INTENSIFIED ON,

163 '|',

164(17) '>' COLOR 1 CENTERED INTENSIFIED ON,

181 '|',

182(10) 'Fill Rate%' COLOR 1 CENTERED INTENSIFIED ON,

192 '|',

193(15) '[Time/H]' COLOR 1 CENTERED INTENSIFIED ON,

208 '|',

209(7) 'Kanbans' COLOR 1 CENTERED INTENSIFIED ON,

216 '|',

217(27) '[Capacity/h]' COLOR 1 CENTERED INTENSIFIED ON,

244 '|',

245(27) '[Capacity/h]' COLOR 1 CENTERED INTENSIFIED ON,

272 '|',

273(27) '[Capacity/h]' COLOR 1 CENTERED INTENSIFIED ON,

300 '|',

301(27) '[QTY]' COLOR 1 CENTERED INTENSIFIED ON,

328 '|',

329(18) 'Finished Goods' COLOR 1 CENTERED INTENSIFIED ON,

347 '|',

348(27) '[Capacity/h]' COLOR 1 CENTERED INTENSIFIED ON,

375 '|',

376(27) '[Capacity/h]' COLOR 1 CENTERED INTENSIFIED ON,

403 '|',

404(27) '[Capacity/h]' COLOR 1 CENTERED INTENSIFIED ON,

431 '|',

432(27) '[Capacity/h]' COLOR 1 CENTERED INTENSIFIED ON,

459 '|',

460(27) '[Capacity/h]' COLOR 1 CENTERED INTENSIFIED ON,

487 '|',

488(27) '[Capacity/h]' COLOR 1 CENTERED INTENSIFIED ON,

515 '|',

516(27) '[Capacity/h]' COLOR 1 CENTERED INTENSIFIED ON,

543 '|',

544(27) '[Capacity/h]' COLOR 1 CENTERED INTENSIFIED ON,

571 '|',

572(27) '[Capacity/h]' COLOR 1 CENTERED INTENSIFIED ON,

599 '|'.

ULINE /5(595).

SORT IT_TEMP BY TECH MATNR FINISHED.

DELETE ADJACENT DUPLICATES FROM IT_TEMP COMPARING TECH MATNR FINISHED.

SORT IT_TEMP BY TECH MATNR.

LOOP AT IT_TEMP.

CLEAR: AUX_KAPBD_OUTY, AUX_KAPBD_OUTM, AUX_KAPBD_BORD, AUX_F_KAPBD_BORD,

AUX_F_KAPBD_TDAY, AUX_F_KAPBD_DAY1, AUX_F_KAPBD_DAY2, AUX_F_KAPBD_DAY3,

AUX_F_KAPBD_DAY4, AUX_F_KAPBD_DAY5, AUX_F_KAPBD_OUTM, AUX_F_KAPBD_OUTN.

MOVE: IT_TEMP-KAPBD_OUTY TO AUX_KAPBD_OUTY,

IT_TEMP-KAPBD_OUTM TO AUX_KAPBD_OUTM,

IT_TEMP-KAPBD_BORD TO AUX_KAPBD_BORD,

IT_TEMP-F_KAPBD_BORD TO AUX_F_KAPBD_BORD,

IT_TEMP-F_KAPBD_TDAY TO AUX_F_KAPBD_TDAY,

IT_TEMP-F_KAPBD_DAY1 TO AUX_F_KAPBD_DAY1,

IT_TEMP-F_KAPBD_DAY2 TO AUX_F_KAPBD_DAY2,

IT_TEMP-F_KAPBD_DAY3 TO AUX_F_KAPBD_DAY3,

IT_TEMP-F_KAPBD_DAY4 TO AUX_F_KAPBD_DAY4,

IT_TEMP-F_KAPBD_DAY5 TO AUX_F_KAPBD_DAY5,

IT_TEMP-F_KAPBD_OUTM TO AUX_F_KAPBD_OUTM,

IT_TEMP-F_KAPBD_OUTN TO AUX_F_KAPBD_OUTN.

WRITE: /5 '|',

6(20) IT_TEMP-TECH COLOR 1 CENTERED INTENSIFIED OFF,

26 '|',

27(18) IT_TEMP-MATNR COLOR 1 CENTERED INTENSIFIED OFF,

45 '|',

46(24) IT_TEMP-GSMNG COLOR 1 CENTERED INTENSIFIED OFF,

70(3) IT_TEMP-MEINS COLOR 1 CENTERED INTENSIFIED OFF,

73 '|',

74(17) IT_TEMP-QTY_1 COLOR 1 CENTERED INTENSIFIED OFF,

91 '|',

92(17) IT_TEMP-QTY_2 COLOR 1 CENTERED INTENSIFIED OFF,

109 '|',

110(17) IT_TEMP-QTY_3 COLOR 1 CENTERED INTENSIFIED OFF,

127 '|',

128(17) IT_TEMP-QTY_4 COLOR 1 CENTERED INTENSIFIED OFF,

145 '|',

146(17) IT_TEMP-QTY_5 COLOR 1 CENTERED INTENSIFIED OFF,

163 '|',

164(17) IT_TEMP-QTY_6 COLOR 1 CENTERED INTENSIFIED OFF,

181 '|',

182(10) IT_TEMP-FILLRATE COLOR 1 CENTERED INTENSIFIED OFF,

192 '|',

193(15) IT_TEMP-REPL_LEAD_TIME COLOR 1 CENTERED INTENSIFIED OFF,

208 '|',

209(7) IT_TEMP-BEHAZ COLOR 1 CENTERED INTENSIFIED OFF,

216 '|',

217(24) IT_TEMP-GSMNG_OUTY COLOR 1 CENTERED INTENSIFIED OFF,

241(3) IT_TEMP-MEINS_OUTY COLOR 1 CENTERED INTENSIFIED OFF,

244 '|',

245(24) IT_TEMP-GSMNG_OUTM COLOR 1 CENTERED INTENSIFIED OFF,

269(3) IT_TEMP-MEINS_OUTM COLOR 1 CENTERED INTENSIFIED OFF,

272 '|',

273(24) IT_TEMP-GSMNG_BORD COLOR 1 CENTERED INTENSIFIED OFF,

297(3) IT_TEMP-MEINS_BORD COLOR 1 CENTERED INTENSIFIED OFF,

300 '|',

301(27) IT_TEMP-STOCK_PO01 COLOR 1 CENTERED INTENSIFIED OFF,

328 '|',

329(18) IT_TEMP-FINISHED COLOR 1 CENTERED INTENSIFIED OFF,

347 '|',

348(24) IT_TEMP-F_GSMNG_BORD COLOR 1 CENTERED INTENSIFIED OFF,

372(3) IT_TEMP-F_MEINS_BORD COLOR 1 CENTERED INTENSIFIED OFF,

375 '|',

376(24) IT_TEMP-F_GSMNG_TDAY COLOR 1 CENTERED INTENSIFIED OFF,

400(3) IT_TEMP-F_MEINS_TDAY COLOR 1 CENTERED INTENSIFIED OFF,

403 '|',

404(24) IT_TEMP-F_GSMNG_DAY1 COLOR 1 CENTERED INTENSIFIED OFF,

428(3) IT_TEMP-F_MEINS_DAY1 COLOR 1 CENTERED INTENSIFIED OFF,

431 '|',

432(24) IT_TEMP-F_GSMNG_DAY2 COLOR 1 CENTERED INTENSIFIED OFF,

456(3) IT_TEMP-F_MEINS_DAY2 COLOR 1 CENTERED INTENSIFIED OFF,

459 '|',

460(24) IT_TEMP-F_GSMNG_DAY3 COLOR 1 CENTERED INTENSIFIED OFF,

484(3) IT_TEMP-F_MEINS_DAY3 COLOR 1 CENTERED INTENSIFIED OFF,

487 '|',

488(24) IT_TEMP-F_GSMNG_DAY4 COLOR 1 CENTERED INTENSIFIED OFF,

512(3) IT_TEMP-F_MEINS_DAY4 COLOR 1 CENTERED INTENSIFIED OFF,

515 '|',

516(24) IT_TEMP-F_GSMNG_DAY5 COLOR 1 CENTERED INTENSIFIED OFF,

540(3) IT_TEMP-F_MEINS_DAY5 COLOR 1 CENTERED INTENSIFIED OFF,

543 '|',

544(24) IT_TEMP-F_GSMNG_OUTM COLOR 1 CENTERED INTENSIFIED OFF,

568(3) IT_TEMP-F_MEINS_OUTM COLOR 1 CENTERED INTENSIFIED OFF,

571 '|',

572(24) IT_TEMP-F_GSMNG_OUTN COLOR 1 CENTERED INTENSIFIED OFF,

596(3) IT_TEMP-F_MEINS_OUTN COLOR 1 CENTERED INTENSIFIED OFF,

599 '|'.

WRITE: /5 '|',

26 '|',

45 '|',

73 '|',

91 '|',

109 '|',

127 '|',

145 '|',

163 '|',

181 '|',

192 '|',

208 '|',

216 '|',

217(24) AUX_KAPBD_OUTY COLOR 3 CENTERED INTENSIFIED OFF,

241(3) IT_TEMP-KEINH_OUTY COLOR 3 CENTERED INTENSIFIED OFF,

244 '|',

245(24) AUX_KAPBD_OUTM COLOR 3 CENTERED INTENSIFIED OFF,

269(3) IT_TEMP-KEINH_OUTM COLOR 3 CENTERED INTENSIFIED OFF,

272 '|',

273(24) AUX_KAPBD_BORD COLOR 3 CENTERED INTENSIFIED OFF,

297(3) IT_TEMP-KEINH_BORD COLOR 3 CENTERED INTENSIFIED OFF,

300 '|',

328 '|',

347 '|',

348(24) AUX_F_KAPBD_BORD COLOR 3 CENTERED INTENSIFIED OFF,

372(3) IT_TEMP-F_KEINH_BORD COLOR 3 CENTERED INTENSIFIED OFF,

375 '|',

376(24) AUX_F_KAPBD_TDAY COLOR 3 CENTERED INTENSIFIED OFF,

400(3) IT_TEMP-F_KEINH_TDAY COLOR 3 CENTERED INTENSIFIED OFF,

403 '|',

404(24) AUX_F_KAPBD_DAY1 COLOR 3 CENTERED INTENSIFIED OFF,

428(3) IT_TEMP-F_KEINH_DAY1 COLOR 3 CENTERED INTENSIFIED OFF,

431 '|',

432(24) AUX_F_KAPBD_DAY2 COLOR 3 CENTERED INTENSIFIED OFF,

456(3) IT_TEMP-F_KEINH_DAY2 COLOR 3 CENTERED INTENSIFIED OFF,

459 '|',

460(24) AUX_F_KAPBD_DAY3 COLOR 3 CENTERED INTENSIFIED OFF,

484(3) IT_TEMP-F_KEINH_DAY3 COLOR 3 CENTERED INTENSIFIED OFF,

487 '|',

488(24) AUX_F_KAPBD_DAY4 COLOR 3 CENTERED INTENSIFIED OFF,

512(3) IT_TEMP-F_KEINH_DAY4 COLOR 3 CENTERED INTENSIFIED OFF,

515 '|',

516(24) AUX_F_KAPBD_DAY5 COLOR 3 CENTERED INTENSIFIED OFF,

540(3) IT_TEMP-F_KEINH_DAY5 COLOR 3 CENTERED INTENSIFIED OFF,

543 '|',

544(24) AUX_F_KAPBD_OUTM COLOR 3 CENTERED INTENSIFIED OFF,

568(3) IT_TEMP-F_KEINH_OUTM COLOR 3 CENTERED INTENSIFIED OFF,

571 '|',

572(24) AUX_F_KAPBD_OUTN COLOR 3 CENTERED INTENSIFIED OFF,

596(3) IT_TEMP-F_KEINH_OUTN COLOR 3 CENTERED INTENSIFIED OFF,

599 '|'.

AT END OF TECH.

ULINE /5(595).

ENDAT.

CLEAR IT_TEMP.

ENDLOOP.

ENDFORM. " DISPLAY_OUTPUT