0% found this document useful (0 votes)
14 views14 pages

EAM Availability Reportcument

EAM Availability report

Uploaded by

Tushar Karhale
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views14 pages

EAM Availability Reportcument

EAM Availability report

Uploaded by

Tushar Karhale
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 14

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

*& Report Z_AVAILABILITY_REPORT


*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_AVAILABILITY_REPORT.

*&---------------------------------------------------------------------*
*& Report Z_OPER_LOG_REPORT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*

INCLUDE Z_AVAILABILITY_REPORT_TOP.
INCLUDE Z_AVAILABILITY_REPORT_SS.
INCLUDE Z_AVAILABILITY_REPORT_F01.

*----------------------------------------------------------------------*
* Start of selection
*----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM DATA_PROCESS.
PERFORM EVENT.
PERFORM FIELDCAT.
PERFORM DISPLAY.
*---------------------------------------------------------------------*
* End of selection
*---------------------------------------------------------------------*
END-OF-SELECTION.
* TOP-OF-PAGE.
PERFORM TOP_OF_PAGE.

*&---------------------------------------------------------------------*
*& Include Z_AVAILABILITY_REPORT_TOP
*&---------------------------------------------------------------------*

TABLES: PROJ,EQUI,IMRG.

TYPES : BEGIN OF TY_FINAL2,


EQUNR TYPE EQUI-EQUNR,
EQKTX TYPE EQKT-EQKTX,
THRS TYPE EKPO-MENGE,
OVTHR TYPE EKPO-MENGE,
AVHRS TYPE EKPO-MENGE,
UTHRS TYPE EKPO-MENGE,
BRKHR TYPE I,
MNTHR TYPE I,
HLDHR TYPE I,
RUNHR TYPE I,
AVPER TYPE EKPO-MENGE,
UTPER TYPE EKPO-MENGE,
END OF TY_FINAL2.

TYPES : BEGIN OF TY_FINAL,


IDATE TYPE IMRG-IDATE,
EQUNR TYPE EQUI-EQUNR,
EQKTX TYPE EQKT-EQKTX,
THRS TYPE EKPO-MENGE,
OVTHR TYPE EKPO-MENGE,
AVHRS TYPE EKPO-MENGE,
UTHRS TYPE EKPO-MENGE,
BRKHR TYPE I,
MNTHR TYPE I,
HLDHR TYPE I,
RUNHR TYPE I,
AVPER TYPE EKPO-MENGE,
UTPER TYPE EKPO-MENGE,
END OF TY_FINAL.

TYPES : BEGIN OF TY_FINAL3,


EQUNR TYPE EQUI-EQUNR,
EQKTX TYPE EQKT-EQKTX,
THRS TYPE EKPO-MENGE,
OVTHR TYPE EKPO-MENGE,
AVHRS TYPE EKPO-MENGE,
UTHRS TYPE EKPO-MENGE,
BRKHR TYPE I,
MNTHR TYPE I,
HLDHR TYPE I,
RUNHR TYPE I,
AVPER TYPE EKPO-MENGE,
UTPER TYPE EKPO-MENGE,
END OF TY_FINAL3.

DATA : GT_FINAL2 TYPE TABLE OF TY_FINAL2,


GS_FINAL2 TYPE TY_FINAL2,
GT_FINAL TYPE TABLE OF TY_FINAL,
GS_FINAL TYPE TY_FINAL,
GT_FINAL3 TYPE TABLE OF TY_FINAL3,
GS_FINAL3 TYPE TY_FINAL3.

DATA : GT_FCAT TYPE SLIS_T_FIELDCAT_ALV,


GT_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE,

GS_FCAT TYPE SLIS_FIELDCAT_ALV,


GS_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA : G_SAVE TYPE C VALUE 'A'.

*&---------------------------------------------------------------------*
*& Include Z_AVAILABILITY_REPORT_SS
*&---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS :
* S_PSPNR FOR PROJ-PSPNR NO INTERVALS NO-EXTENSION OBLIGATORY,
S_WERKS FOR PROJ-WERKS NO INTERVALS NO-EXTENSION OBLIGATORY,
S_EQUNR FOR EQUI-EQUNR,
S_DATE FOR IMRG-IDATE OBLIGATORY.

SELECTION-SCREEN END OF BLOCK B1.

*AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_PSPNR-LOW.


* DATA: LT_RETURN LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE,
* LS_PROJ TYPE PROJ.
*
* " Fetch the project details for F4 help display.
* SELECT PSPNR,POST1 FROM PROJ INTO TABLE @DATA(LT_PROJ).
*
* IF LT_PROJ[] IS NOT INITIAL.
* REFRESH LT_RETURN[].
* FREE : S_PSPNR-LOW.
** BREAK KUNALB.
* CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
* EXPORTING
* RETFIELD = 'PSPNR'
* VALUE_ORG = 'S'
* TABLES
* VALUE_TAB = LT_PROJ
** FIELD_TAB = LT_RETURN
* RETURN_TAB = LT_RETURN.
*
* IF LT_RETURN[] IS NOT INITIAL.
* READ TABLE LT_RETURN INDEX 1.
* IF SY-SUBRC IS INITIAL.
* CALL FUNCTION 'CONVERSION_EXIT_KONPD_INPUT'
* EXPORTING
* INPUT = LT_RETURN-FIELDVAL
* IMPORTING
* OUTPUT = S_PSPNR-LOW
* PROJWA = LS_PROJ
* EXCEPTIONS
* NOT_FOUND = 1
* OTHERS = 2.
* ENDIF.
* ENDIF.
* ENDIF.

*IF S_WERKS[] IS INITIAL.


* MESSAGE 'Please Enter Plant' TYPE 'E'.
* ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_WERKS-LOW.


DATA: LT_RETURN1 LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE.

" Fetch the plant number based on the entered project.


* SELECT PSPNR,WERKS FROM PROJ INTO TABLE @DATA(LT_PLANT) WHERE PSPNR EQ @S_PSPNR-
LOW.
*
* IF LT_Plant[] IS NOT INITIAL.

SELECT WERKS,NAME1 FROM T001W INTO TABLE @DATA(LT_T001W).


IF LT_T001W[] IS NOT INITIAL.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'WERKS'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = LT_T001W
* FIELD_TAB = LT_RETURN1
RETURN_TAB = LT_RETURN1.

IF LT_RETURN1[] IS NOT INITIAL.


READ TABLE LT_RETURN1 INDEX 1.
IF SY-SUBRC IS INITIAL.
S_werks-LOW = LT_RETURN1-FIELDVAL.
S_WERKS-SIGN = 'I'.
S_WERKS-OPTION = 'EQ'.
APPEND S_WERKS.
ENDIF.
ELSE.
MESSAGE 'No Plant Exist' TYPE 'S' .
ENDIF.
ENDIF.
* ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_EQUNR-LOW.


DATA: LT_RETURN2 LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE.

SELECT ILOAN,
SWERK
FROM ILOA
INTO TABLE @DATA(LT_ILOA1)
WHERE SWERK IN @S_WERKS.

IF LT_ILOA1[] IS NOT INITIAL.


SORT LT_ILOA1 BY ILOAN.
*BREAK KUNALB.
* Get Equipment Number
SELECT EQUNR FROM EQUZ
INTO TABLE @DATA(LT_EQUZ1)
FOR ALL ENTRIES IN @LT_ILOA1
WHERE ILOAN EQ @LT_ILOA1-ILOAN.

IF LT_EQUZ1[] IS NOT INITIAL.


SORT LT_EQUZ1 BY EQUNR.
DELETE ADJACENT DUPLICATES FROM LT_EQUZ1 COMPARING EQUNR.

SELECT * FROM EQUI


INTO TABLE @DATA(LT_EQUI1)
FOR ALL ENTRIES IN @LT_EQUZ1
WHERE EQUNR EQ @LT_EQUZ1-EQUNR AND
ZZITO_PARMETER EQ 'M'.

IF LT_EQUI1[] IS NOT INITIAL.


SORT LT_EQUI1 BY EQUNR.
DELETE ADJACENT DUPLICATES FROM LT_EQUI1 COMPARING EQUNR.

SELECT EQUNR,EQKTX FROM EQKT


INTO TABLE @DATA(LT_EQKT)
FOR ALL ENTRIES IN @LT_EQUI1
WHERE EQUNR EQ @LT_EQUI1-EQUNR.

IF LT_EQKT[] IS NOT INITIAL.


SORT LT_EQKT BY EQUNR.
DELETE ADJACENT DUPLICATES FROM LT_EQKT COMPARING EQUNR.

IF LT_EQKT[] IS NOT INITIAL.


CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'EQUNR'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = LT_EQKT
* FIELD_TAB = LT_RETURN2
RETURN_TAB = LT_RETURN2.

IF LT_RETURN2[] IS NOT INITIAL.


READ TABLE LT_RETURN2 INDEX 1.
IF SY-SUBRC IS INITIAL.
S_EQUNR-LOW = LT_RETURN2-FIELDVAL.
S_EQUNR-SIGN = 'I'.
S_EQUNR-OPTION = 'EQ'.
APPEND S_EQUNR.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_WERKS-HIGH.


DATA: LT_RETURN1 LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE.

" Fetch the plant number based on the entered project.


* SELECT PSPNR,WERKS FROM PROJ INTO TABLE @DATA(LT_PLANT) WHERE PSPNR EQ @S_PSPNR-
LOW.
*
* IF LT_Plant[] IS NOT INITIAL.

SELECT WERKS,NAME1 FROM T001W INTO TABLE @DATA(LT_T001W).


IF LT_T001W[] IS NOT INITIAL.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'WERKS'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = LT_T001W
* FIELD_TAB = LT_RETURN1
RETURN_TAB = LT_RETURN1.

IF LT_RETURN1[] IS NOT INITIAL.


READ TABLE LT_RETURN1 INDEX 1.
IF SY-SUBRC IS INITIAL AND S_WERKS-LOW IS NOT INITIAL.
REFRESH:S_WERKS.
S_WERKS-SIGN = 'I'.
S_WERKS-OPTION = 'BT'.
S_werks-HIGH = LT_RETURN1-FIELDVAL.
APPEND S_WERKS.
ENDIF.
ELSE.
MESSAGE 'No Plant Exist' TYPE 'S' .
ENDIF.
ENDIF.
* ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_EQUNR-HIGH.


DATA: LT_RETURN2 LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE.

SELECT ILOAN,
SWERK
FROM ILOA
INTO TABLE @DATA(LT_ILOA1)
WHERE SWERK IN @S_WERKS.

IF LT_ILOA1[] IS NOT INITIAL.


SORT LT_ILOA1 BY ILOAN.
* Get Equipment Number
SELECT EQUNR FROM EQUZ
INTO TABLE @DATA(LT_EQUZ1)
FOR ALL ENTRIES IN @LT_ILOA1
WHERE ILOAN EQ @LT_ILOA1-ILOAN.

IF LT_EQUZ1[] IS NOT INITIAL.


SORT LT_EQUZ1 BY EQUNR.
DELETE ADJACENT DUPLICATES FROM LT_EQUZ1 COMPARING EQUNR.

SELECT * FROM EQUI


INTO TABLE @DATA(LT_EQUI1)
FOR ALL ENTRIES IN @LT_EQUZ1
WHERE EQUNR EQ @LT_EQUZ1-EQUNR AND
ZZITO_PARMETER EQ 'M'.

IF LT_EQUI1[] IS NOT INITIAL.


SORT LT_EQUI1 BY EQUNR.
DELETE ADJACENT DUPLICATES FROM LT_EQUI1 COMPARING EQUNR.

SELECT EQUNR,EQKTX FROM EQKT


INTO TABLE @DATA(LT_EQKT)
FOR ALL ENTRIES IN @LT_EQUI1
WHERE EQUNR EQ @LT_EQUI1-EQUNR.

IF LT_EQKT[] IS NOT INITIAL.


SORT LT_EQKT BY EQUNR.
DELETE ADJACENT DUPLICATES FROM LT_EQKT COMPARING EQUNR.

IF LT_EQKT[] IS NOT INITIAL.


CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'EQUNR'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = LT_EQKT
* FIELD_TAB = LT_RETURN2
RETURN_TAB = LT_RETURN2.

IF LT_RETURN2[] IS NOT INITIAL.


READ TABLE LT_RETURN2 INDEX 1.
IF SY-SUBRC IS INITIAL AND S_EQUNR-LOW IS NOT INITIAL.
REFRESH:S_EQUNR.
S_EQUNR-SIGN = 'I'.
S_EQUNR-OPTION = 'BT'.
S_EQUNR-HIGH = LT_RETURN2-FIELDVAL.
APPEND S_EQUNR.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
*& Include Z_AVAILABILITY_REPORT_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form DATA_PROCESS
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM DATA_PROCESS .

DATA: LV_MPOBJ TYPE IMPTT-MPOBJ,


LV_LRDR TYPE CHA_CLASS_VIEW-SOLLWERT,
Gv_thrs TYPE N LENGTH 2.
RANGES :R_MPOBJ FOR IMPTT-MPOBJ.
SELECT * FROM ZOPER_LOG INTO TABLE @DATA(LT_ZOPER_LOG)
WHERE
* PSPNR EQ @S_PSPNR-LOW AND
WERKS IN @S_WERKS AND
EQUNR IN @S_equnr AND
IDATE IN @S_date.

IF LT_ZOPER_LOG[] IS NOT INITIAL.


SORT LT_ZOPER_LOG BY WERKS.
LOOP AT LT_zOPER_LOG INTO DATA(LS_LOG1).
TRANSLATE LS_LOG1-SHIFT TO UPPER CASE.
MODIFY LT_zOPER_LOG FROM LS_LOG1 TRANSPORTING SHIFT.
ENDLOOP.

SELECT * FROM ZSHIFT_HRS INTO TABLE @DATA(LT_SHIFT)


FOR ALL ENTRIES IN @LT_ZOPER_LOG
WHERE SHIFT EQ @LT_ZOPER_LOG-SHIFT.

SELECT * FROM EQUI INTO TABLE @DATA(LT_EQUI)


FOR ALL ENTRIES IN @LT_ZOPER_LOG
WHERE EQUNR EQ @LT_ZOPER_LOG-EQUNR.
SORT LT_EQUI BY EQUNR.

LOOP AT LT_EQUI INTO DATA(LS_EQUI).


R_MPOBJ-SIGN = 'I'.
R_MPOBJ-OPTION = 'EQ'.
R_MPOBJ-LOW = LS_EQUI-OBJNR.
APPEND R_MPOBJ.
CLEAR : LV_MPOBJ.
ENDLOOP.

SELECT * FROM IMPTT INTO TABLE @DATA(LT_IMPTT)


WHERE MPOBJ IN @r_MPOBJ.
IF LT_IMPTT[] IS NOT INITIAL.
SORT LT_IMPTT BY MPOBJ.
SELECT * FROM IMRG INTO TABLE @DATA(LT_IMRG)
FOR ALL ENTRIES IN @LT_IMPTT
WHERE POINT EQ @LT_IMPTT-POINT AND CANCL NE 'X'.
SORT LT_IMRG BY POINT IDATE.
ENDIF.
LOOP AT LT_ZOPER_LOG[] INTO DATA(LS_LOG).

READ TABLE LT_SHIFT INTO DATA(LS_SHIFT) WITH KEY SHIFT = LS_LOG-SHIFT.

IF SY-SUBRC IS INITIAL.
Gv_thrs = LS_SHIFT-THRS.
GS_FINAL-THRS = Gv_thrs.
ENDIF.

READ TABLE LT_EQUI INTO LS_EQUI WITH KEY EQUNR = LS_LOG-EQUNR


BINARY SEARCH.
IF SY-SUBRC IS INITIAL.
CLEAR : LV_MPOBJ.
LV_MPOBJ = LS_EQUI-OBJNR.
READ TABLE LT_IMPTT INTO DATA(LS_IMPTT) WITH KEY MPOBJ = LV_MPOBJ
PSORT = 'OT_HR'.

IF SY-SUBRC IS INITIAL .
READ TABLE LT_IMRG INTO DATA(LS_IMRG) WITH KEY POINT = LS_IMPTT-POINT
IDATE = LS_LOG-IDATE
BINARY SEARCH.
IF SY-SUBRC IS INITIAL.
CLEAR : LV_LRDR.
CALL FUNCTION 'QSS0_FLTP_TO_CHAR_CONVERSION'
EXPORTING
I_NUMBER_OF_DIGITS = 22
I_FLTP_VALUE = LS_IMRG-RECDV
* I_VALUE_NOT_INITIAL_FLAG = 'X'
* I_SCREEN_FIELDLENGTH = 16
IMPORTING
E_CHAR_FIELD = LV_LRDR.

CONDENSE LV_LRDR.

IF LV_LRDR IS NOT INITIAL.


GS_FINAL-OVTHR = LV_LRDR.
ENDIF.
ENDIF.
ENDIF.

CLEAR : LV_MPOBJ.
LV_MPOBJ = LS_EQUI-OBJNR.
READ TABLE LT_IMPTT INTO LS_IMPTT WITH KEY MPOBJ = LV_MPOBJ
PSORT = 'BD_HR'.

IF SY-SUBRC IS INITIAL .
READ TABLE LT_IMRG INTO LS_IMRG WITH KEY POINT = LS_IMPTT-POINT
IDATE = LS_LOG-IDATE
BINARY SEARCH.
IF SY-SUBRC IS INITIAL.
CLEAR : LV_LRDR.
CALL FUNCTION 'QSS0_FLTP_TO_CHAR_CONVERSION'
EXPORTING
I_NUMBER_OF_DIGITS = 22
I_FLTP_VALUE = LS_IMRG-RECDV
* I_VALUE_NOT_INITIAL_FLAG = 'X'
* I_SCREEN_FIELDLENGTH = 16
IMPORTING
E_CHAR_FIELD = LV_LRDR.
CONDENSE LV_LRDR.

IF LV_LRDR IS NOT INITIAL.


GS_FINAL-BRKHR = LV_LRDR.
ENDIF.
ENDIF.
ENDIF.

CLEAR : LV_MPOBJ.
LV_MPOBJ = LS_EQUI-OBJNR.
READ TABLE LT_IMPTT INTO LS_IMPTT WITH KEY MPOBJ = LV_MPOBJ
PSORT = 'RUN_HR'.

IF SY-SUBRC IS INITIAL .
READ TABLE LT_IMRG INTO LS_IMRG WITH KEY POINT = LS_IMPTT-POINT
IDATE = LS_LOG-IDATE
BINARY SEARCH.
IF SY-SUBRC IS INITIAL.
CLEAR : LV_LRDR.
CALL FUNCTION 'QSS0_FLTP_TO_CHAR_CONVERSION'
EXPORTING
I_NUMBER_OF_DIGITS = 22
I_FLTP_VALUE = LS_IMRG-CDIFF
* I_VALUE_NOT_INITIAL_FLAG = 'X'
* I_SCREEN_FIELDLENGTH = 16
IMPORTING
E_CHAR_FIELD = LV_LRDR.

CONDENSE LV_LRDR.
LV_LRDR = LV_LRDR / 3600.
GS_FINAL-RUNHR = LV_LRDR.
ENDIF.
ENDIF.

CLEAR : LV_MPOBJ.
LV_MPOBJ = LS_EQUI-OBJNR.
READ TABLE LT_IMPTT INTO LS_IMPTT WITH KEY MPOBJ = LV_MPOBJ
PSORT = 'MAINT_HR'.

IF SY-SUBRC IS INITIAL .
READ TABLE LT_IMRG INTO LS_IMRG WITH KEY POINT = LS_IMPTT-POINT
IDATE = LS_LOG-IDATE
BINARY SEARCH.
IF SY-SUBRC IS INITIAL.
CLEAR : LV_LRDR.
CALL FUNCTION 'QSS0_FLTP_TO_CHAR_CONVERSION'
EXPORTING
I_NUMBER_OF_DIGITS = 22
I_FLTP_VALUE = LS_IMRG-RECDV
* I_VALUE_NOT_INITIAL_FLAG = 'X'
* I_SCREEN_FIELDLENGTH = 16
IMPORTING
E_CHAR_FIELD = LV_LRDR.
CONDENSE LV_LRDR.

IF LV_LRDR IS NOT INITIAL.


GS_FINAL-MNTHR = LV_LRDR.
ENDIF.
ENDIF.
ENDIF.
CLEAR : LV_MPOBJ.
LV_MPOBJ = LS_EQUI-OBJNR.
READ TABLE LT_IMPTT INTO LS_IMPTT WITH KEY MPOBJ = LV_MPOBJ
PSORT = 'HOLD_HR'.

IF SY-SUBRC IS INITIAL .
READ TABLE LT_IMRG INTO LS_IMRG WITH KEY POINT = LS_IMPTT-POINT
IDATE = LS_LOG-IDATE
BINARY SEARCH.
IF SY-SUBRC IS INITIAL.
CLEAR : LV_LRDR.
CALL FUNCTION 'QSS0_FLTP_TO_CHAR_CONVERSION'
EXPORTING
I_NUMBER_OF_DIGITS = 22
I_FLTP_VALUE = LS_IMRG-RECDV
* I_VALUE_NOT_INITIAL_FLAG = 'X'
* I_SCREEN_FIELDLENGTH = 16
IMPORTING
E_CHAR_FIELD = LV_LRDR.
CONDENSE LV_LRDR.

IF LV_LRDR IS NOT INITIAL.


GS_FINAL-HLDHR = LV_LRDR.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
GS_FINAL-IDATE = LS_LOG-IDATE.
GS_FINAL-EQUNR = LS_LOG-EQUNR.
GS_FINAL-EQKTX = LS_LOG-EQKTX.
APPEND GS_FINAL TO GT_FINAL.
CLEAR : GS_FINAL.
ENDLOOP.
ENDIF.

LOOP AT GT_FINAL INTO GS_FINAL.


MOVE-CORRESPONDING GS_FINAL TO GS_FINAL3.
COLLECT GS_FINAL3 INTO GT_FINAL3.
CLEAR : GS_FINAL3.
ENDLOOP.

LOOP AT GT_FINAL3 INTO GS_FINAL3.


GS_FINAL3-AVHRS = GS_FINAL3-THRS - ( GS_FINAL3-BRKHR + GS_FINAL3-MNTHR ).
GS_FINAL3-UTHRS = GS_FINAL3-RUNHR + GS_FINAL3-OVTHR + GS_FINAL3-HLDHR .
GS_FINAL3-AVPER = ( GS_FINAL3-AVHRS / GS_FINAL3-THRS ) * 100.
GS_FINAL3-UTPER = ( GS_FINAL3-UTHRS / GS_FINAL3-THRS ) * 100.
APPEND GS_FINAL3 TO GT_FINAL2.
ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form EVENT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM EVENT .

DATA : GS_events TYPE SLIS_ALV_EVENT.


CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = Gt_events[]
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2.

GS_events-NAME = 'TOP_OF_PAGE'.
GS_events-FORM = 'TOP_OF_PAGE'.
APPEND GS_events TO Gt_events.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FIELDCAT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FIELDCAT .

CLEAR : GS_fcat.
GS_fcat-FIELDNAME = 'EQUNR'.
GS_fcat-TABNAME = 'GT_FINAL2'.
GS_fcat-SELTEXT_L = 'Equipment'.
GS_fcat-OUTPUTLEN = '22'.
INSERT GS_fcat INTO TABLE GT_fcat.

CLEAR : GS_fcat.
GS_fcat-FIELDNAME = 'EQKTX'.
GS_fcat-TABNAME = 'GT_FINAL2'.
GS_fcat-SELTEXT_L = 'Equipment Description'.
GS_fcat-OUTPUTLEN = '40'.
INSERT GS_fcat INTO TABLE GT_fcat.

CLEAR : GS_fcat.
GS_fcat-FIELDNAME = 'THRS'.
GS_fcat-TABNAME = 'GT_FINAL2'.
GS_fcat-SELTEXT_L = 'Total Hours'.
GS_fcat-OUTPUTLEN = '22'.
INSERT GS_fcat INTO TABLE GT_fcat.

CLEAR : GS_fcat.
GS_fcat-FIELDNAME = 'OVTHR'.
GS_fcat-TABNAME = 'GT_FINAL2'.
GS_fcat-SELTEXT_L = 'Overtime Hours'.
GS_fcat-OUTPUTLEN = '22'.
INSERT GS_fcat INTO TABLE GT_fcat.

CLEAR : GS_fcat.
GS_fcat-FIELDNAME = 'AVHRS'.
GS_fcat-TABNAME = 'GT_FINAL2'.
GS_fcat-SELTEXT_L = 'Available Hours'.
GS_fcat-OUTPUTLEN = '22'.
INSERT GS_fcat INTO TABLE GT_fcat.

CLEAR : GS_fcat.
GS_fcat-FIELDNAME = 'UTHRS'.
GS_fcat-TABNAME = 'GT_FINAL2'.
GS_fcat-SELTEXT_L = 'Utilization Hours'.
GS_fcat-OUTPUTLEN = '22'.
INSERT GS_fcat INTO TABLE GT_fcat.

CLEAR : GS_fcat.
GS_fcat-FIELDNAME = 'AVPER'.
GS_fcat-TABNAME = 'GT_FINAL2'.
GS_fcat-SELTEXT_L = '% Availability'.
GS_fcat-OUTPUTLEN = '22'.
INSERT GS_fcat INTO TABLE GT_fcat.

CLEAR : GS_fcat.
GS_fcat-FIELDNAME = 'UTPER'.
GS_fcat-TABNAME = 'GT_FINAL2'.
GS_fcat-SELTEXT_L = '% Utilization'.
GS_fcat-OUTPUTLEN = '22'.
INSERT GS_fcat INTO TABLE GT_fcat.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM DISPLAY .

GS_LAYOUT-ZEBRA = 'X'.
GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
GS_LAYOUT-F2CODE = 'ANZ'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE'
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FCAT[]
I_DEFAULT = 'X'
I_SAVE = G_SAVE
IT_EVENTS = GT_EVENTS[]
TABLES
T_OUTTAB = GT_FINAL2[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM TOP_OF_PAGE .

DATA : LT_HEADER TYPE SLIS_T_LISTHEADER,


LS_HEADER TYPE SLIS_LISTHEADER,
T_LINE LIKE LS_HEADER-INFO,
LV_LINES TYPE I,
LV_LINESC(10) TYPE C,
LV_PROJD TYPE C.

DATA : ls_PRPS TYPE PRPS.


DATA: LV_OUTPUT LIKE PROJ-PSPID,
LV_PROJECT TYPE STRING,
LV_PLANT TYPE STRING.

LS_HEADER-TYP = 'H'.
LS_HEADER-INFO = 'Availability and Utilization Report'.
APPEND LS_HEADER TO LT_HEADER.
CLEAR LS_HEADER.

* CALL FUNCTION 'CONVERSION_EXIT_KONPD_OUTPUT'


* EXPORTING
* INPUT = S_PSPNR-LOW
* IMPORTING
* OUTPUT = LV_output
* PSELT = ls_PRPS.
*
*
* SELECT SINGLE POST1 from proj INTO @DATA(lv_pdesc)
* WHERE PSPNR eq @S_PSPNR-LOW.
* IF sy-subrc is INITIAL.
* CONCATENATE lv_output lv_pdesc INTO lv_project SEPARATED BY space.
* ENDIF.
*
* LS_HEADER-TYP = 'S'.
* LS_HEADER-KEY = 'Project:'.
* LS_HEADER-INFO = lv_project.
* APPEND LS_HEADER TO LT_HEADER.
* CLEAR: LS_HEADER.

SELECT SINGLE NAME1 FROM T001W INTO @DATA(LV_NAME1)


WHERE WERKS EQ @S_WERKS-LOW.
IF SY-SUBRC IS INITIAL.
CONCATENATE S_WERKS-LOW LV_NAME1 INTO LV_PLANT SEPARATED BY SPACE.
ENDIF.

LS_HEADER-TYP = 'S'.
LS_HEADER-KEY = 'Plant:'.
LS_HEADER-INFO = LV_PLANT.
APPEND LS_HEADER TO LT_HEADER.
CLEAR: LS_HEADER.

LS_HEADER-TYP = 'S'.
LS_HEADER-KEY = 'From Date:'.
CONCATENATE S_DATE-LOW+6(2)'.'
S_DATE-LOW+4(2)'.'
S_DATE-LOW(4) INTO LS_HEADER-INFO.
APPEND LS_HEADER TO LT_HEADER.
CLEAR LS_HEADER.

LS_HEADER-TYP = 'S'.
LS_HEADER-KEY = 'To Date:'.
CONCATENATE S_DATE-HIGH+6(2)'.'
S_DATE-HIGH+4(2)'.'
S_DATE-HIGH(4) INTO LS_HEADER-INFO.
APPEND LS_HEADER TO LT_HEADER.
CLEAR LS_HEADER.

* Total No. of Records Selected


DESCRIBE TABLE GT_FINAL2 LINES LV_LINES.
LV_LINESC = LV_LINES.

CONCATENATE 'Total no. of recored selected:' LV_LINESC INTO T_LINE SEPARATED BY


SPACE.

LS_HEADER-TYP = 'A'.
LS_HEADER-INFO = T_LINE.
APPEND LS_HEADER TO LT_HEADER.
CLEAR LS_HEADER.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'


EXPORTING
IT_LIST_COMMENTARY = LT_HEADER
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
.
ENDFORM.

You might also like