Академический Документы
Профессиональный Документы
Культура Документы
Step-by-Step Solution
Please follow the steps below. Step 1: create an ABAP- report, e.g. ZZ_INA_OBJECTS_SENTINEL (refer to the end of this document for the complete ABAP- code)
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
Step 3: create a variant which you will use for job scheduling: e.g.
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
=> you will receive an email wich contains de-activated BW- objects from the last 3 days.
Alternative to Step 3 and Step 4: Run the program in SA38 w/o ticking the send email box. Then you will get a list of inactive objects.
=>
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
Conclusion
In order to re-activate the inactive objects there are different options: either activate and re-transport them from development to productive system or run appropriate activation program for multi cubes, transfer rule etc. in your productive landscape directly (remark: not for all objects a program exists/ is usable!). With an automated process (job scheduling, email), you are prevented from failing process chains caused by inactive objects since you are able to react on it beforehand.
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
*&---------------------------------------------------------------------* *& Report * Date: * * How to use this program? * * * * * Content: * this program lists inactive objects like multi provider, cubes, update * rules, transformations and transfer structures based on a certain time * range you can specify in the selection screen. * * Selection-screen help: * 1) Number of days to Consider * * * * * * * Enter a value between 0 and 999 days (=D); depending on that the program looks for all changed objects in the time range from D till today (sy-datum) Mark this checkbox, if you want to send email notification. If you don't mark it, then you get a list as an output. The list of people to be notified is entered here, but only if 'Send email?' is flagged. Schedule this program using a job (sm36/sm37) at regular frequency. The frequency should closely follow the transport request import frequency. ZZ_INA_OBJECTS_SENTINEL *&---------------------------------------------------------------------* 31.05.2011 Created by: H.Wetzel * Version Change Request 20110519-0189/M013676.
* 2) Send email?
* 3) Email receipients
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
* *************** * Date: dd.mm.yyyy Changed by: X. XXXXXXX * Version Change Request XXXXX. * Content: *************************************************************** REPORT z_ina_obj_watch_dog_02 NO STANDARD PAGE HEADING MESSAGE-ID 00. *----------------------------------------------------------------------* * Constants *----------------------------------------------------------------------* CONSTANTS: gc_false gc_true TYPE rs_bool TYPE rs_bool VALUE ' ', VALUE 'X'. Highlighted with: HW001
*----------------------------------------------------------------------* * Internal tables DATA: wa_ur TYPE rsupdinfo, wa_transf TYPE rstran. DATA: l_t_data_cube TYPE STANDARD TABLE OF rsdcube, l_s_data_cube TYPE rsdcube. DATA: l_t_data_ur TYPE STANDARD TABLE OF rsupdinfo, l_s_data_ur TYPE rsupdinfo. DATA: l_t_data_transf TYPE STANDARD TABLE OF rstran, l_s_data_transf TYPE rstran. DATA: l_t_data_trstr TYPE STANDARD TABLE OF rsts, l_s_data_trstr TYPE rsts. DATA: i_date_cube LIKE sy-datum, i_date_ur LIKE sy-datum, i_date_transf LIKE sy-datum, i_date_trstr LIKE sy-datum. * *----------------------------------------------------------------------*
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
DATA: recv
LIKE
*----------------------------------------------------------------------* * Variables DATA: gv_receiver TYPE somlreci1-receiver, gv_date1 TYPE sy-datum, gv_date2 TYPE sy-datum, gv_timestmp1 TYPE ad_tstamp, gv_timestmp2 TYPE ad_tstamp, gv_sts_cube TYPE sy-subrc, gv_sts_ur TYPE sy-subrc, gv_sts_transf TYPE sy-subrc, gv_sts_trstr TYPE sy-subrc. *----------------------------------------------------------------------* * Selection-Screen * *----------------------------------------------------------------------* SELECTION-SCREEN BEGIN OF BLOCK om1 WITH FRAME TITLE text-555. PARAMETERS: p_days(3) TYPE n DEFAULT 1. SELECTION-SCREEN END OF BLOCK om1. SELECTION-SCREEN BEGIN OF BLOCK om2 WITH FRAME TITLE text-556. PARAMETERS: p_email AS CHECKBOX DEFAULT 'X'. SELECT-OPTIONS: s_mail FOR gv_receiver LOWER CASE NO INTERVALS. SELECTION-SCREEN END OF BLOCK om2. AT SELECTION-SCREEN. * *----------------------------------------------------------------------*
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
IF p_email = gc_true. READ TABLE s_mail INDEX 1. IF sy-subrc <> 0. MESSAGE e001 WITH 'Please enter at least one email address'. ENDIF. ENDIF. LOOP AT s_mail. IF NOT s_mail-high IS INITIAL. MESSAGE e001 WITH s_mail-high 'is not valid. Please enter with no intervals'. ENDIF. ENDLOOP. START-OF-SELECTION. *----------------------------------------------------------------------* * Date conversions * *----------------------------------------------------------------------* gv_date1 = sy-datum. gv_date2 = sy-datum - p_days. * today PERFORM convert_date USING gv_date1 gv_timestmp1. * lower date-range value PERFORM convert_date USING gv_date2 gv_timestmp2. *----------------------------------------------------------------------* * Check out inactive objects *----------------------------------------------------------------------* SELECT * FROM rsdcube INTO CORRESPONDING FIELDS OF TABLE l_t_data_cube WHERE objvers = 'A' AND objstat = 'INA' AND *
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
( timestmp LE gv_timestmp1 AND timestmp GE gv_timestmp2 ). gv_sts_cube = sy-subrc. SELECT * FROM rsupdinfo INTO CORRESPONDING FIELDS OF TABLE l_t_data_ur WHERE objvers = 'A' AND objstat = 'INA' AND ( timestmp LE gv_timestmp1 AND timestmp GE gv_timestmp2 ). gv_sts_ur = sy-subrc. SELECT * FROM rstran INTO CORRESPONDING FIELDS OF TABLE l_t_data_transf WHERE objvers = 'A' AND objstat = 'INA' AND ( timestmp LE gv_timestmp1 AND timestmp GE gv_timestmp2 ). gv_sts_transf = sy-subrc. SELECT * FROM rsts INTO CORRESPONDING FIELDS OF TABLE l_t_data_trstr WHERE objvers = 'A' AND objstat = 'INA' AND ( timestmp LE gv_timestmp1 AND timestmp GE gv_timestmp2 ). gv_sts_trstr = sy-subrc. IF gv_sts_cube = 0 OR gv_sts_ur = 0 OR gv_sts_transf = 0 OR gv_sts_trstr = 0. * output email IF p_email = gc_true. objcont-line = 'The below-listed Objects are inactive which most probably will cause issues.'. APPEND objcont.
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
objcont-line = 'Please check and take appropriate action!'. APPEND objcont. IF gv_sts_cube = 0. WRITE: sy-uline(66) TO objcont-line. APPEND objcont. CONCATENATE sy-vline 'System ' sy-vline 'Provider ' sy-vline 'Type ' sy-vline 'Changed by ' sy-vline 'Changed on ' INTO objcont-line. APPEND objcont. WRITE: sy-uline(66) TO objcont-line. APPEND objcont. LOOP AT l_t_data_cube INTO l_s_data_cube. CALL FUNCTION 'RS_TBBW_CONVERT_TIMESTAMP' EXPORTING i_timestamp = l_s_data_cube-timestmp IMPORTING e_dat = i_date_cube.
PERFORM send_email USING l_s_data_cube-infocube l_s_data_cube-cubetype l_s_data_cube-tstpnm i_date_cube. ENDLOOP. ENDIF. IF gv_sts_ur = 0. WRITE: sy-uline(66) TO objcont-line. APPEND objcont. CONCATENATE sy-vline 'System ' sy-vline 'Update Rule ' sy-vline 'Target ' sy-vline 'Source' sy-vline 'Changed by ' sy-vline 'Changed on ' INTO objcont-line. APPEND objcont. WRITE: sy-uline(66) TO objcont-line.
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
APPEND objcont. LOOP AT l_t_data_ur INTO l_s_data_ur. CALL FUNCTION 'RS_TBBW_CONVERT_TIMESTAMP' EXPORTING i_timestamp = l_s_data_ur-timestmp IMPORTING e_dat = i_date_ur.
PERFORM send_email02 USING l_s_data_ur-updid l_s_data_ur-infocube l_s_data_ur-isource l_s_data_ur-tstpnm i_date_ur. ENDLOOP. ENDIF. IF gv_sts_transf = 0. WRITE: sy-uline(66) TO objcont-line. APPEND objcont. CONCATENATE sy-vline 'System ' sy-vline 'Transformation ' sy-vline 'Target ' sy-vline 'Source' sy-vline 'Changed by ' sy-vline 'Changed on ' INTO objcont-line. APPEND objcont. WRITE: sy-uline(66) TO objcont-line. APPEND objcont. LOOP AT l_t_data_transf INTO l_s_data_transf. CALL FUNCTION 'RS_TBBW_CONVERT_TIMESTAMP' EXPORTING i_timestamp = l_s_data_transf-timestmp IMPORTING e_dat = i_date_transf.
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
PERFORM send_email03 USING l_s_data_transf-tranid l_s_data_transf-targetname l_s_data_transf-sourcename l_s_data_transf-tstpnm i_date_transf. ENDLOOP. ENDIF. IF gv_sts_trstr = 0. WRITE: sy-uline(66) TO objcont-line. APPEND objcont. CONCATENATE sy-vline 'System ' sy-vline 'Transferstructure ' sy-vline 'Changed by ' sy-vline 'Changed on ' INTO objcont-line. APPEND objcont. WRITE: sy-uline(66) TO objcont-line. APPEND objcont. LOOP AT l_t_data_trstr INTO l_s_data_trstr. CALL FUNCTION 'RS_TBBW_CONVERT_TIMESTAMP' EXPORTING i_timestamp = l_s_data_trstr-timestmp IMPORTING e_dat = i_date_trstr.
PERFORM send_email04 USING l_s_data_trstr-transtru l_s_data_trstr-tstpnm i_date_transf. ENDLOOP. ENDIF. REFRESH recv. CLEAR recv. LOOP AT s_mail.
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
* receivers recv-receiver = s_mail-low. recv-express = 'X'. recv-rec_type = 'U'. APPEND recv. ENDLOOP. * document data - description is subject line v_document_data-obj_name = 'Inactive Objects Watchdog'. v_document_data-obj_descr = 'Inactive BW- Objects!'. * send mail message CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1' EXPORTING document_data document_type put_in_outbox commit_work IMPORTING new_object_id TABLES object_content receivers EXCEPTIONS too_many_receivers document_not_sent document_type_not_exist parameter_error x_error enqueue_error OTHERS IF sy-subrc <> 0. =6 =7 = 8. =5 =1 =2 =3 = objcont = recv = object_id = v_document_data = 'RAW' = 'X' = 'X' "internet email "recipient
operation_no_authorization = 4
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
MESSAGE s001 WITH 'Email was not sent'. ELSE. MESSAGE s001 WITH 'Email was successfully sent'. ENDIF. ELSE. * output list IF gv_sts_cube = 0. SKIP 2. WRITE: / 'Multiprovider/ Cubes', sy-datum . ULINE AT /(46). WRITE: / sy-vline, (9) 'Provider', sy-vline, 'Type', sy-vline, (10) 'Changed by', sy-vline, (10) 'Changed on', sy-vline. ULINE AT /(46). LOOP AT l_t_data_cube INTO l_s_data_cube. CALL FUNCTION 'RS_TBBW_CONVERT_TIMESTAMP' EXPORTING i_timestamp = l_s_data_cube-timestmp IMPORTING e_dat = i_date_cube.
WRITE: / sy-vline, (9) l_s_data_cube-infocube, sy-vline, (4) l_s_data_cube-cubetype, sy-vline, (10) l_s_data_cube-tstpnm, sy-vline, (10) i_date_cube, sy-vline. ULINE AT /(46). ENDLOOP. ENDIF. IF gv_sts_ur = 0.
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
SKIP 2. WRITE: / 'Update Rules', sy-datum . ULINE AT /(81). WRITE: / sy-vline, (25) 'UpdateRule', sy-vline, (10) 'Target', sy-vline, (10) 'Source', sy-vline, (10) 'Changed by', sy-vline, (10) 'Changed on', sy-vline. ULINE AT /(81). LOOP AT l_t_data_ur INTO l_s_data_ur. CALL FUNCTION 'RS_TBBW_CONVERT_TIMESTAMP' EXPORTING i_timestamp = l_s_data_ur-timestmp IMPORTING e_dat = i_date_ur.
WRITE: / sy-vline, (25) l_s_data_ur-updid, sy-vline, (10) l_s_data_ur-infocube, sy-vline, (10) l_s_data_ur-isource, sy-vline, (10) l_s_data_ur-tstpnm, sy-vline, (10) i_date_ur, sy-vline. ULINE AT /(81). ENDLOOP. ENDIF. IF gv_sts_transf = 0. SKIP 2. WRITE: / 'Transformations', sy-datum . ULINE AT /(88). WRITE: / sy-vline, (32) 'Transformation', sy-vline, (10) 'Target', sy-vline,
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
(10) 'Source', sy-vline, (10) 'Changed by', sy-vline, (10) 'Changed on', sy-vline. ULINE AT /(88). LOOP AT l_t_data_transf INTO l_s_data_transf. CALL FUNCTION 'RS_TBBW_CONVERT_TIMESTAMP' EXPORTING i_timestamp = l_s_data_transf-timestmp IMPORTING e_dat = i_date_transf.
WRITE: / sy-vline, (32) l_s_data_transf-tranid, sy-vline, (10) l_s_data_transf-targetname, sy-vline, (10) l_s_data_transf-sourcename, sy-vline, (10) l_s_data_transf-tstpnm, sy-vline, (10) i_date_transf, sy-vline. ULINE AT /(88). ENDLOOP. ENDIF. IF gv_sts_trstr = 0. SKIP 2. WRITE: / 'Transfer Strcutures', sy-datum . ULINE AT /(62). WRITE: / sy-vline, (32) 'Transfer Structure', sy-vline, (10) 'Changed by', sy-vline, (10) 'Changed on', sy-vline. ULINE AT /(62). LOOP AT l_t_data_trstr INTO l_s_data_trstr. CALL FUNCTION 'RS_TBBW_CONVERT_TIMESTAMP' EXPORTING
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
WRITE: / sy-vline, (32) l_s_data_trstr-transtru, sy-vline, (10) l_s_data_trstr-tstpnm, sy-vline, (10) i_date_trstr, sy-vline. ULINE AT /(62). ENDLOOP. ENDIF. ENDIF. ELSE. MESSAGE s001 WITH 'No data for used selection'. ENDIF. *&---------------------------------------------------------------------* *& * Form send_email text text text *&---------------------------------------------------------------------* *----------------------------------------------------------------------* * --> p1 * <-- p2
*----------------------------------------------------------------------* FORM send_email USING p_provider TYPE rsdcube-infocube p_cubetype TYPE rsdcube-cubetype p_changer TYPE rsdcube-tstpnm p_date TYPE sy-datum. CLEAR objcont. CONCATENATE sy-vline sy-sysid(7) sy-vline p_provider(8) sy-vline p_cubetype(1) sy-vline p_changer(8) sy-vline p_date(8) INTO objcont-line. APPEND objcont.
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
ENDFORM. *& *
" send_email
*&---------------------------------------------------------------------* Form send_email02 text text text *&---------------------------------------------------------------------* *----------------------------------------------------------------------* * --> p1 * <-- p2
*----------------------------------------------------------------------* FORM send_email02 USING p_updid TYPE rsupdinfo-updid p_infocube TYPE rsupdinfo-infocube p_isource TYPE rsupdinfo-isource p_tstpnm TYPE rsupdinfo-tstpnm p_date TYPE sy-datum. CLEAR objcont. CONCATENATE sy-vline sy-sysid(7) sy-vline p_updid sy-vline p_infocube sy-vline p_isource sy-vline p_tstpnm sy-vline p_date INTO objcont-line. APPEND objcont. ENDFORM. " send_email02
*&---------------------------------------------------------------------* *& * Form send_email03 text text text *&---------------------------------------------------------------------* *----------------------------------------------------------------------* * --> p1 * <-- p2
*----------------------------------------------------------------------* FORM send_email03 USING p_tranid TYPE rstran-tranid p_targetname TYPE rstran-targetname p_sourcename TYPE rstran-sourcename p_tstpnm TYPE rstran-tstpnm
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
p_date TYPE sy-datum. CLEAR objcont. CONCATENATE sy-vline sy-sysid(7) sy-vline p_tranid sy-vline p_targetname sy-vline p_sourcename sy-vline p_tstpnm sy-vline p_date INTO objcont-line. APPEND objcont. ENDFORM. " send_email03
*&---------------------------------------------------------------------* *& * Form send_email04 text text text *&---------------------------------------------------------------------* *----------------------------------------------------------------------* * --> p1 * <-- p2
*----------------------------------------------------------------------* FORM send_email04 USING p_transtru TYPE rsts-transtru p_tstpnm TYPE rstran-tstpnm p_date CLEAR objcont. CONCATENATE sy-vline sy-sysid(7) sy-vline p_transtru sy-vline p_tstpnm sy-vline p_date INTO objcont-line. APPEND objcont. ENDFORM. " send_email04 TYPE sy-datum.
*&---------------------------------------------------------------------* *& * Form convert_date text date timestamp *&---------------------------------------------------------------------* *----------------------------------------------------------------------* * --> p1 * <-- p2
*----------------------------------------------------------------------*
harald.wetzel: SAP BW: monitor inactive objects (Multiprovider, Cubes, Update Rules etc.) after the import of transport requests
FORM convert_date USING p_date TYPE sy-datum p_timestmp TYPE ad_tstamp. CALL FUNCTION 'ADDR_CONVERT_DATE_TO_TIMESTAMP' EXPORTING iv_date * IV_HIGH IMPORTING ev_timestamp ENDFORM.
20 Views Jun 19, 2011 10:59 PM konduru Prashanth Thanks for the blog.