Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

performance tuning

Former Member
0 Likes
521

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

2 REPLIES 2
Read only

Former Member
0 Likes
442

Do you really expect an answer?

You can not simply copy your coding without layout and expect an answer.

Run the SE30

/people/siegfried.boes/blog/2007/11/13/the-abap-runtime-trace-se30--quick-and-easy

Check the total time and contributions in the hitlist with more than 5% of the total time.

Go to source code and you will see what causes problems.

Come back with a specific question on a few lines!

Siegfried

Read only

Former Member
0 Likes
442

Hi Ramya,

1) Declarae Internal tablel without work areas.

DATA: <itab> TYPE STANDARDTABLE OF <structure>

then create work ares: <wa> TYPE <structure>

2) Avoid selecting same Database Table more than once.

First select data, then check the internal table data.

Select only required fields instead of giving *

3) Use for all entries in the reqired places

4) Check the Code inspector

5) Run T code ST05 and check how much time i staking for selected statements

Regards,

Sunil

If helpful, reward points