REPORT ZABC. ******************************************************************************* *TITLE: daily status reporting of BW production Support * *will be giving information like Infoarea, Infopakages loaded , Data Targets, * *Type of Data Target (Basic Cube or ODS), Available for Reporting or * *not (Infocube & ODS), Load status etc./ * *Author: Arun Purohit * ******************************************************************************* **********TABLES************* TABLES: rsreqdone, rsmonictab, rsdcube, rsldpio. **TIME ZONE ADJUSTMENT*************************** DATA: v_tst(14) TYPE c, v_tstt(14) TYPE c, v_var(10) TYPE c, v_count TYPE i, v_cnt TYPE i, v_i TYPE i, v_r1 LIKE rsreqdone-rnr, v_ifarea(30) TYPE c, v_rnsidlast LIKE rsiccont-rnsidlast, v_techok LIKE rsmdatastate-techok, v_wa_tst_p(8) TYPE p, v_wa_tstt_p(8) TYPE p, v_wa_tzone(6) TYPE c VALUE 'EST', v_select_date LIKE sy-datum, v_diff TYPE i. ******** CONSTANTS CONSTANTS v_gv_uline TYPE i VALUE 135. *** SELECT-OPTIONS / PARAMETERS SELECTION-SCREEN SKIP. SELECTION-SCREEN BEGIN OF BLOCK b11 WITH FRAME TITLE text-001. SELECTION-SCREEN SKIP. PARAMETERS: p_ok AS CHECKBOX DEFAULT 'X', p_ok_0 AS CHECKBOX DEFAULT 'X', p_notfin AS CHECKBOX DEFAULT 'X', p_notok AS CHECKBOX DEFAULT 'X'. SELECTION-SCREEN END OF BLOCK b11. SELECTION-SCREEN SKIP 4. SELECTION-SCREEN BEGIN OF BLOCK b12 WITH FRAME TITLE text-002. SELECTION-SCREEN SKIP. SELECT-OPTIONS: s_date FOR sy-datum, s_uzeit FOR sy-uzeit. SELECTION-SCREEN END OF BLOCK b12. ******************************TYPES*************************** TYPES: BEGIN OF k_monitor, rnr LIKE rsreqdone-rnr, "Request number logdpid LIKE rsreqdone-logdpid, "InfoPackage (ID) tstatus LIKE rsreqdone-tstatus, "Request status datum LIKE rsreqdone-datum, "Start date uzeit LIKE rsreqdone-uzeit, "Start time tuzeit LIKE rsreqdone-tuzeit, "End time records LIKE rsreqdone-records, "Records source LIKE rsldpio-source, "InfoSource logsys LIKE rsldpio-logsys, "Source System objvers LIKE rsldpio-objvers, infocube(10) TYPE c, "like rsmonictab-infocube, infoarea(20) TYPE c ,"like rsdcube-infoarea, viewed(6) TYPE c, dt_type TYPE c, END OF k_monitor. TYPES: BEGIN OF k_monic, rnr LIKE rsreqdone-rnr, logdpid LIKE rsreqdone-logdpid, infocube(10) TYPE c, objvers LIKE rsldpio-objvers, uzeit LIKE rsreqdone-uzeit, tuzeit LIKE rsreqdone-tuzeit, records LIKE rsreqdone-records, source LIKE rsldpio-source, logsys LIKE rsldpio-logsys, infoarea(20) TYPE c , viewed(6) TYPE c, dt_type TYPE c, tstatus LIKE rsreqdone-tstatus, datum LIKE rsreqdone-datum, END OF k_monic. ********************INTERNAL TABLES******************************** DATA: i_monitor TYPE STANDARD TABLE OF k_monitor WITH HEADER LINE. DATA: i_monitor3 TYPE STANDARD TABLE OF k_monic WITH HEADER LINE. AT SELECTION-SCREEN OUTPUT. IF s_date[] IS INITIAL. MOVE sy-datum TO s_date-high. s_date-low = sy-datum - 1 . APPEND s_date. ENDIF. START-OF-SELECTION. v_diff = s_date-high - s_date-low. **************************************** IF v_diff EQ 1. ************* IF s_uzeit IS NOT INITIAL. SELECT l~rnr l~logdpid l~datum l~tstatus l~uzeit l~tuzeit records r~source r~logsys r~objvers INTO CORRESPONDING FIELDS OF TABLE i_monitor FROM rsreqdone AS l LEFT OUTER JOIN rsldpio AS r ON l~logdpid = r~logdpid WHERE ( l~datum EQ s_date-low AND l~uzeit GT s_uzeit-low ) OR ( l~datum EQ s_date-high AND l~uzeit LT s_uzeit-high ). *************** ELSE. SELECT l~rnr l~logdpid l~datum l~tstatus l~uzeit l~tuzeit records r~source r~logsys r~objvers INTO CORRESPONDING FIELDS OF TABLE i_monitor FROM rsreqdone AS l LEFT OUTER JOIN rsldpio AS r ON l~logdpid = r~logdpid WHERE l~datum IN s_date. ENDIF. **************************************** ELSEIF v_diff EQ 0. ************* IF s_uzeit IS INITIAL. SELECT l~rnr l~logdpid l~datum l~tstatus l~uzeit l~tuzeit records r~source r~logsys r~objvers INTO CORRESPONDING FIELDS OF TABLE i_monitor FROM rsreqdone AS l LEFT OUTER JOIN rsldpio AS r ON l~logdpid = r~logdpid WHERE l~datum IN s_date. *************** ELSE. SELECT l~rnr l~logdpid l~datum l~tstatus l~uzeit l~tuzeit records r~source r~logsys r~objvers INTO CORRESPONDING FIELDS OF TABLE i_monitor FROM rsreqdone AS l LEFT OUTER JOIN rsldpio AS r ON l~logdpid = r~logdpid WHERE l~datum IN s_date AND l~uzeit IN s_uzeit. ENDIF. **************************************** ELSEIF v_diff GT 1. SELECT l~rnr l~logdpid l~datum l~tstatus l~uzeit l~tuzeit records r~source r~logsys r~objvers INTO CORRESPONDING FIELDS OF TABLE i_monitor FROM rsreqdone AS l LEFT OUTER JOIN rsldpio AS r ON l~logdpid = r~logdpid WHERE l~datum IN s_date. ENDIF. *************************************************************************** *****************TZONE ADJUSTMENT**************************************** LOOP AT i_monitor. CONCATENATE i_monitor-datum i_monitor-uzeit INTO v_tst. v_wa_tst_p = v_tst. CONCATENATE i_monitor-datum i_monitor-tuzeit INTO v_tstt. v_wa_tstt_p = v_tstt. CONVERT TIME STAMP v_wa_tstt_p TIME ZONE v_wa_tzone INTO DATE i_monitor-datum TIME i_monitor-tuzeit. CONVERT TIME STAMP v_wa_tst_p TIME ZONE v_wa_tzone INTO DATE i_monitor-datum TIME i_monitor-uzeit. ************+++++++++*************** IF i_monitor-tstatus+1(2) = '08'. i_monitor-tstatus = ' (08)'. ENDIF. IF i_monitor-tstatus+1(2) = '09'. i_monitor-tstatus = ' (09)'. ENDIF. IF i_monitor-tstatus+1(2) = '0A'. i_monitor-tstatus = ' (0A)'. ENDIF. MODIFY i_monitor. ENDLOOP. *************************************************************************** ************************************************************************** v_select_date = sy-datum - 1. SORT i_monitor BY rnr. *********Get rid of unwanted entries and sort DELETE i_monitor WHERE objvers <> 'A' OR source = ' '. SORT i_monitor BY datum uzeit source logdpid. END-OF-SELECTION. ************************************************************ LOOP AT i_monitor. v_count = v_count + 1. SELECT SINGLE rnr INTO v_r1 FROM rsiccont WHERE rnr = i_monitor-rnr. IF sy-subrc <> 0. DELETE i_monitor . ENDIF. ENDLOOP. ************************************************************** *** loop at i_monitor. *** endloop. *********************************************************** LOOP AT i_monitor. SELECT infocube INTO v_var FROM rsmonictab WHERE rnr = i_monitor-rnr. i_monitor-infocube = v_var. IF v_i = 0 . MODIFY i_monitor. v_i = 1. ELSE. APPEND i_monitor. ENDIF. CLEAR v_var. ENDSELECT. IF sy-subrc <> 0. SELECT icube INTO v_var FROM rsiccont WHERE rnr = i_monitor-rnr. i_monitor-infocube = v_var. IF v_i = 0 . MODIFY i_monitor. v_i = 1. ELSE. APPEND i_monitor. ENDIF. CLEAR v_var. ENDSELECT. ENDIF. CLEAR i_monitor. v_i = 0. v_cnt = v_cnt + 1. IF v_count = v_cnt. EXIT. ENDIF. ENDLOOP. ********************************************* ********************************************* LOOP AT i_monitor. SELECT SINGLE infoarea INTO v_ifarea FROM rsdcube WHERE infocube = i_monitor-infocube. IF sy-subrc = 0. i_monitor-dt_type = 'C'. *********++++++++++++++++++++++++++++******** ***************IC AFR************************Checking - Infocube - Available for Reporting *********++++++++++++++++++++++++++++******** CLEAR v_var. CLEAR v_rnsidlast. SELECT SINGLE rnsidlast icube INTO (v_rnsidlast, v_var) FROM rsiccont WHERE rnr = i_monitor-rnr AND icube = i_monitor-infocube. SELECT SINGLE techok INTO v_techok FROM rsmdatastate WHERE infocube = v_var. IF v_rnsidlast LE v_techok. i_monitor-viewed = 'X'. ELSE. i_monitor-viewed = ' '. ENDIF. MODIFY i_monitor. CLEAR v_var. CLEAR v_rnsidlast. CLEAR v_techok. *********************************************** *********************************************** ELSEIF sy-subrc <> 0. SELECT SINGLE infoarea INTO v_ifarea FROM rsdodso WHERE odsobject = i_monitor-infocube. i_monitor-dt_type = 'O'. *********++++++++++++++++++++++++++++******** ************************ODS AFR**************Checking - ODS - Available for Reporting *********++++++++++++++++++++++++++++******** v_i = 0. SELECT request INTO v_r1 FROM rsodsactreq WHERE operation = 'A' AND status = 0 AND request = i_monitor-rnr. IF sy-subrc = 0. i_monitor-viewed = 'X'. IF v_i = 0 . MODIFY i_monitor. v_i = 1. ELSE. APPEND i_monitor. ENDIF. ENDIF. ENDSELECT. CLEAR v_r1. ********************************************** ********************************************** ENDIF. i_monitor-infoarea = v_ifarea. MODIFY i_monitor. CLEAR i_monitor. CLEAR v_ifarea. ENDLOOP. ******************STATUS: SUCCESSFUL IF p_ok = 'X'. READ TABLE i_monitor WITH KEY tstatus+1(2) = '08'. "GREEN IF sy-subrc = 0. ULINE /(34). WRITE: / sy-vline. FORMAT COLOR COL_POSITIVE. WRITE: 'Status InfoPackage: Successful'. FORMAT COLOR OFF. WRITE: sy-vline. ULINE AT /(v_gv_uline). PERFORM header. FORMAT COLOR COL_NORMAL. ************************************************************************ ************************************************************************ ************************************************************************ LOOP AT i_monitor WHERE tstatus+1(2) = '08' "GREEN AND records NE 0. WRITE: / sy-vline, i_monitor-logdpid, sy-vline, i_monitor-infocube, sy-vline, i_monitor-datum, sy-vline, i_monitor-uzeit, sy-vline, i_monitor-tuzeit, sy-vline, i_monitor-records, sy-vline, i_monitor-infoarea, sy-vline, i_monitor-tstatus, sy-vline, i_monitor-viewed, sy-vline. HIDE: i_monitor-logdpid. ENDLOOP. FORMAT COLOR OFF. ULINE AT /(v_gv_uline). SKIP. ENDIF. ENDIF. **********STATUS: SUCCESSFUL WITH 0 RECORD LOADED IF p_ok_0 = 'X'. READ TABLE i_monitor WITH KEY tstatus+1(2) = '08'. "GREEN IF sy-subrc = 0. ULINE /(48). WRITE: / sy-vline. FORMAT COLOR COL_GROUP. WRITE: 'Status InfoPackage: Successful with 0 record'. FORMAT COLOR OFF. WRITE: sy-vline. ULINE AT /(v_gv_uline). PERFORM header. FORMAT COLOR COL_NORMAL. LOOP AT i_monitor WHERE tstatus+1(2) = '08' "GREEN AND records EQ 0. WRITE: / sy-vline, i_monitor-logdpid, sy-vline, i_monitor-infocube, sy-vline, i_monitor-datum, sy-vline, i_monitor-uzeit, sy-vline, i_monitor-tuzeit, sy-vline, i_monitor-records, sy-vline, i_monitor-infoarea, sy-vline, i_monitor-tstatus, sy-vline, i_monitor-viewed, sy-vline. HIDE: i_monitor-logdpid. ENDLOOP. FORMAT COLOR OFF. ULINE AT /(v_gv_uline). SKIP. ENDIF. ENDIF. ********** STATUS: NOT YET COMPLETED IF p_notfin = 'X'. READ TABLE i_monitor WITH KEY tstatus+1(2) = '09'. "YELLOW IF sy-subrc = 0. ULINE /(41). WRITE: / sy-vline. FORMAT COLOR COL_TOTAL. WRITE: 'Status InfoPackage: Not Yet Completed'. FORMAT COLOR OFF. WRITE: sy-vline. ULINE AT /(v_gv_uline). PERFORM header. FORMAT COLOR COL_NORMAL. LOOP AT i_monitor WHERE tstatus+1(2) = '09'. "YELLOW WRITE: / sy-vline, i_monitor-logdpid, sy-vline, i_monitor-infocube, sy-vline, i_monitor-datum, sy-vline, i_monitor-uzeit, sy-vline, i_monitor-tuzeit, sy-vline, i_monitor-records, sy-vline, i_monitor-infoarea, sy-vline, i_monitor-tstatus, sy-vline, i_monitor-viewed, sy-vline. HIDE: i_monitor-logdpid. ENDLOOP. FORMAT COLOR OFF. ULINE AT /(v_gv_uline). SKIP. ENDIF. ENDIF. *********************** STATUS: INCORRECT IF p_notok = 'X'. READ TABLE i_monitor WITH KEY tstatus+1(2) = '0A'. "RED IF sy-subrc = 0. ULINE /(33). WRITE: / sy-vline. FORMAT COLOR COL_NEGATIVE. WRITE: 'Status InfoPackage: Incorrect'. FORMAT COLOR OFF. WRITE: sy-vline. ULINE AT /(v_gv_uline). PERFORM header. FORMAT COLOR COL_NORMAL. LOOP AT i_monitor WHERE tstatus+1(2) = '0A'. "RED WRITE: / sy-vline, i_monitor-logdpid, sy-vline, i_monitor-infocube, sy-vline, i_monitor-datum, sy-vline, i_monitor-uzeit, sy-vline, i_monitor-tuzeit, sy-vline, i_monitor-records, sy-vline, i_monitor-infoarea, sy-vline, i_monitor-tstatus, sy-vline, i_monitor-viewed, sy-vline. HIDE: i_monitor-logdpid. ENDLOOP. FORMAT COLOR OFF. ULINE AT /(v_gv_uline). ENDIF. ENDIF. LOOP AT i_monitor. IF i_monitor-tstatus+1(2) = '08'. i_monitor-tstatus = 'SUCC'. ENDIF. IF i_monitor-tstatus+1(2) = '09'. i_monitor-tstatus = 'RUN'. ENDIF. IF i_monitor-tstatus+1(2) = '0A'. i_monitor-tstatus = 'FAIL'. ENDIF. MODIFY i_monitor. CLEAR i_monitor. ENDLOOP. LOOP AT i_monitor. MOVE-CORRESPONDING i_monitor TO i_monitor3. APPEND i_monitor3. ENDLOOP. SORT i_monitor3 BY rnr logdpid infocube. DELETE i_monitor3 WHERE tstatus = 'FAIL'. ****************************** DELETE FROM z40tbiw_monitor1. COMMIT WORK. ****************************** DELETE ADJACENT DUPLICATES FROM i_monitor3 COMPARING rnr logdpid infocube objvers. INSERT z40tbiw_monitor1 FROM TABLE i_monitor3. ******************************************************************************* **********************Subroutine- header************************************* ******************************************************************************* FORM header. FORMAT COLOR COL_HEADING. WRITE: / sy-vline, 'InfoPackage', 34 sy-vline, 35 'InfoCube', 47 sy-vline, 48 'Start Date', 60 sy-vline, 61 'Start Time', 71 sy-vline, 72 'End Time', 82 sy-vline, 83 'Records', 96 sy-vline, 97 'InfoArea', 119 sy-vline, 120 'Status', 126 sy-vline, 127 'Rstatus', 135 sy-vline. FORMAT COLOR OFF. ULINE AT /(v_gv_uline). ENDFORM. "Header