Zbc Workload Extract

Embed Size (px)

DESCRIPTION

ZBC_WORKLOAD_EXTRACT.txt

Citation preview

************************************************************************ ALSTOM ************************************************************************* Project : None* Module/Component : BC* Functional ref. : M. BOUSSAID (Integration Leader)* Functional spec. : Report Extract ST03N.doc* Functional (pers):* Technical ref. : TONALH* Technical spec. :* Developer (pers) :* Creation date : 12/11/2012* Description : Workload extraction (ST03N)* Frequency :* Execution mode : [X]Background [X]Foreground* Data IN :* Data OUT :* Tables modified :* BTCI transaction :* Program copied :************************************************************************ MODIFICATIONS ************************************************************************* Nbr | Date | Author | Author full name ** | | | Description of the modification(s) ************************************************************************* Mnnn | DD/MM/YYYY | XXX | xxxxxxxxxxxx* | | | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx***********************************************************************REPORT ZBC_WORKLOAD_EXTRACT.TYPES: BEGIN OF ty_statdir, summary TYPE swnc_t_aggtasktype, hitlist_dbcalls TYPE swnc_t_agghitlist, hitlist_respti TYPE swnc_t_agghitlist, accountstat_tasktype TYPE swnc_t_agguserworkload, time_stat TYPE swnc_t_aggtimes, table_record_stat TYPE swnc_t_aggtablerec, application_stat TYPE swnc_t_aggusertcode, terminal_io_stat TYPE swnc_t_aggfrontend, tasktype_stat TYPE swnc_t_aggtasktimes, memory_stat TYPE swnc_t_aggmemory, rfc_client_stat TYPE swnc_t_aggrfccli, rfc_server_stat TYPE swnc_t_aggrfcsrv, rfc_client_dest_stat TYPE swnc_t_aggrfcclid, rfc_server_dest_stat TYPE swnc_t_aggrfcsrvd, spool_activity_stat TYPE swnc_t_aggspoolact, spool_print_stat TYPE swnc_t_aggspool, dbprocedure_stat TYPE swnc_t_aggdbprocs, detailtcode_stat TYPE swnc_t_aggtcdet, externsys TYPE swnc_t_aggextsystem, dbcon TYPE swnc_t_aggdbc, vmc_stat TYPE swnc_t_aggvmc, web_client TYPE swnc_t_aggwebclnt, web_client_dest TYPE swnc_t_aggwebdest, web_server TYPE swnc_t_aggwebclnt, web_server_dest TYPE swnc_t_aggwebdest, comp_hierarchy TYPE swnc_t_aggcomphier, org_unit TYPE swnc_t_aggorgunit,* Application Statistic as_statistic TYPE swnc_t_aggastat, as_hitl_dbcalls TYPE swnc_t_aggashitlist, as_hitl_respti TYPE swnc_t_aggashitlist, END OF ty_statdir.PARAMETERS: p_host TYPE swnchostname OBLIGATORY, p_period TYPE c OBLIGATORY, p_date LIKE sapwlserv-lastday OBLIGATORY.* TYPE-POOLSTYPE-POOLS: slis, spro, icon.* CONSTANTSCONSTANTS: gc_user_command TYPE slis_formname VALUE 'USER_COMMAND', gc_pf_status TYPE slis_formname VALUE 'PF_STATUS_SET', gc_top_of_page TYPE char30 VALUE 'SET_TOP_OF_PAGE', true TYPE boolean VALUE 'X'.*DECLARATIONS FOR ALV INTERFACEDATA: gv_save TYPE c, gv_memory TYPE syrepid, gv_repid TYPE syrepid, gs_variant TYPE disvariant, gs_layout TYPE slis_layout_alv, gt_fieldcat TYPE slis_t_fieldcat_alv, gt_filter TYPE slis_t_filter_alv, gt_sort TYPE slis_t_sortinfo_alv, gt_special_groups TYPE slis_t_sp_group_alv, gt_event_exit TYPE slis_t_event_exit, gt_header TYPE slis_t_listheader, gs_header TYPE slis_listheader, gs_report_data TYPE swncaggmemory, gt_report_data TYPE swnc_t_aggmemory, gs_report_data2 TYPE swncaggmemory, gt_report_data2 TYPE swnc_t_aggmemory, ls_str1 TYPE string, ls_str2 TYPE string.DATA ex_data TYPE ty_statdir.START-OF-SELECTION. PERFORM init_report. PERFORM main_form. PERFORM display_data.*&---------------------------------------------------------------------**& Form init_report*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM init_report. IF p_period NE 'D' AND p_period NE 'W' AND p_period NE 'M'. MESSAGE 'Please choose either ''D'' or ''W'' or ''M'' for the period' TYPE 'E'. ENDIF.* set fields for ALV gv_repid = sy-repid. gv_memory = sy-repid. gv_save = 'A'. gs_variant-report = sy-repid. gs_variant-username = sy-uname. gs_layout-detail_popup = true. gs_layout-zebra = true. gs_layout-colwidth_optimize = true. gs_layout-f2code = 'DETAIL'. gs_layout-info_fieldname = 'LINE_COLOR'.ENDFORM. "init_report*&---------------------------------------------------------------------**& Form display_data*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM display_data . CLEAR gt_header. REFRESH gt_header.******** H = Header, S = Selection, A = Action************* HEADER OF LIST *************************** Report Scope ************** gs_header-typ = 'H'. CONCATENATE 'ST03N : launched the' sy-datum 'at' sy-uzeit INTO gs_header-info SEPARATED BY space. APPEND gs_header TO gt_header.************** Nb Entries ************** gs_header-typ = 'S'. gs_header-key = 'Details: '. CONCATENATE ' ' p_host ' / ' p_period ' / ' p_date INTO gs_header-info. APPEND gs_header TO gt_header. DATA: lv_gui_active TYPE boolean. PERFORM build_fieldcatalog. PERFORM add_fieldcat_text. CALL FUNCTION 'GUI_IS_AVAILABLE' IMPORTING return = lv_gui_active. PERFORM set_top_of_page. IF lv_gui_active = 'X'. PERFORM display_alv_grid. ELSE. PERFORM display_alv_list. ENDIF.ENDFORM. " DISPLAY_DATA*&---------------------------------------------------------------------**& Form build_fieldcatalog*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM build_fieldcatalog .* build fieldcatalog with structure ZTMWFLOW_CONFLICT_REPORT_ALL CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = gv_repid* i_structure_name = 'SWNCHITLIST' i_structure_name = 'SWNCAGGMEMORY'" swncaggmemory CHANGING ct_fieldcat = gt_fieldcat EXCEPTIONS OTHERS = 0.ENDFORM. " BUILD_FIELDCATALOG*&---------------------------------------------------------------------**& Form add_fieldcat_text*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM add_fieldcat_text . FIELD-SYMBOLS: LIKE LINE OF gt_fieldcat. LOOP AT gt_fieldcat ASSIGNING . IF -fieldname NE 'ENTRY_ID' AND -fieldname NE 'ACCOUNT' AND -fieldname NE 'COUNTER'. -no_out = 'X'.* modify gt_fieldcat from . ELSE. IF -fieldname EQ 'ENTRY_ID'. -seltext_s = -seltext_m = -seltext_l = 'Entry ID - Trans./Report'. ENDIF. IF -fieldname EQ 'ACCOUNT' . -seltext_s = -seltext_m = -seltext_l = 'SAP User'. ENDIF. IF -fieldname EQ 'COUNTER'. -seltext_s = -seltext_m = -seltext_l = 'Dial. Step Counter'. ENDIF. ENDIF. ENDLOOP.ENDFORM. " ADD_FIELDCAT_TEXT*&---------------------------------------------------------------------**& Form display_alv_grid*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM display_alv_grid . CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = gv_repid i_callback_user_command = gc_user_command i_callback_top_of_page = gc_top_of_page is_layout = gs_layout it_fieldcat = gt_fieldcat i_default = 'X' i_save = gv_save TABLES t_outtab = gt_report_data 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. " DISPLAY_ALV_GRID*&---------------------------------------------------------------------**& Form display_alv_list*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM display_alv_list . CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING i_callback_program = gv_repid i_callback_user_command = gc_user_command is_layout = gs_layout it_fieldcat = gt_fieldcat i_default = 'X' i_save = ' ' TABLES t_outtab = gt_report_data 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. " DISPLAY_ALV_LIST*&---------------------------------------------------------------------**& Form get_current_fieldcat*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM get_current_fieldcat . CALL FUNCTION 'REUSE_ALV_LIST_LAYOUT_INFO_GET' IMPORTING et_fieldcat = gt_fieldcat et_filter = gt_filter et_sort = gt_sort EXCEPTIONS OTHERS = 0.ENDFORM. " GET_CURRENT_FIELDCAT*&---------------------------------------------------------------------**& Form set_top_of_page*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM set_top_of_page. "#EC CALLED CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING it_list_commentary = gt_header EXCEPTIONS 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. "SET_TOP_OF_PAGE*&---------------------------------------------------------------------**& Form user_command*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->LV_UCOMM text* -->LS_SELFIELD text*----------------------------------------------------------------------*FORM user_command USING lv_ucomm TYPE syucomm ls_selfield TYPE slis_selfield. MESSAGE 'No function has been assigned to this command' TYPE 'S'.ENDFORM. "user_command*&---------------------------------------------------------------------**& Form main_form*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM main_form. DATA ls_tpfid TYPE tpfid. DATA lv_week TYPE kweek. DATA lv_date LIKE sy-datum. IF p_host IS INITIAL OR p_host = '*'. p_host = 'TOTAL'. ENDIF. IF p_host NE 'TOTAL'. SELECT SINGLE * FROM tpfid INTO ls_tpfid WHERE apserver = p_host. IF sy-subrc NE 0. MESSAGE 'The Chose Application Server does not exist' TYPE 'E'. ENDIF. ENDIF. IF p_period EQ 'D'. lv_date = p_date. ELSEIF p_period EQ 'W'.* Get week CALL FUNCTION 'DATE_GET_WEEK' EXPORTING date = p_date IMPORTING week = lv_week.* Get First Day of the week CALL FUNCTION 'WEEK_GET_FIRST_DAY' EXPORTING week = lv_week IMPORTING date = lv_date. ELSEIF p_period EQ 'M'. CONCATENATE p_date(6) '01' INTO lv_date. ENDIF. CALL FUNCTION 'SWNC_COLLECTOR_GET_AGGREGATES' EXPORTING component = p_host periodtype = p_period periodstrt = p_date factor = 1000 TABLES memory = ex_data-memory_stat EXCEPTIONS no_data_found = 1 OTHERS = 2. LOOP AT ex_data-memory_stat INTO gs_report_data. SPLIT gs_report_data-entry_id AT ' ' INTO ls_str1 ls_str2. gs_report_data-entry_id = ls_str1. APPEND gs_report_data TO gt_report_data. ENDLOOP. SORT gt_report_data ASCENDING BY entry_id account. PERFORM add_steps. IF sy-subrc NE 0. MESSAGE 'Error retriving information ! - Make Sure data available in ST03n !' TYPE 'E'. ENDIF.ENDFORM. "main_form*&---------------------------------------------------------------------**& Form add_steps*&---------------------------------------------------------------------** text*---------------------------------------------------------------------*FORM add_steps. DATA lv_last_entry LIKE gs_report_data-entry_id. DATA lv_last_user LIKE gs_report_data-account. DATA lv_counter LIKE gs_report_data-counter. CLEAR : lv_last_entry, lv_last_user, lv_counter. LOOP AT gt_report_data INTO gs_report_data. IF sy-tabix = 1. " initialise les variables temporaires lv_last_entry = gs_report_data-entry_id. lv_last_user = gs_report_data-account. ENDIF. IF gs_report_data-entry_id NE lv_last_entry . " nouvelle transaction gs_report_data2-counter = lv_counter. APPEND gs_report_data2 TO gt_report_data2. CLEAR lv_counter. lv_counter = gs_report_data-counter. ELSE. IF gs_report_data-account NE lv_last_user . " nouvel utilisateur --> rinitialise compteur gs_report_data2-counter = lv_counter. APPEND gs_report_data2 TO gt_report_data2. CLEAR lv_counter. lv_counter = gs_report_data-counter. ELSE. lv_counter = lv_counter + gs_report_data-counter. ENDIF. ENDIF. lv_last_entry = gs_report_data-entry_id. lv_last_user = gs_report_data-account. gs_report_data2 = gs_report_data. ENDLOOP. REFRESH gt_report_data. gt_report_data[] = gt_report_data2[].ENDFORM. "add_steps