Show TOC

Procedure documentationMeasurement Series Tutorial: Sample Program Locate this document in the navigation structure

Procedure

Here is the complete program that is described in the measurement series tutorial.

The program performs the following tasks. It:

  • Creates a measurement series. If the series name already exists, then the program loads the existing series.

  • Creates default selection and configuration settings for the series. The resulting objects are used only when a series is created. The default settings cannot be changed after the initial save of the series.

  • Executes a code coverage measurement and calculates a result. The result uses the default calculation configuration and entity selection that were saved with the series. The program also calculates a second result for a specified package.

  • Saves the and result and implicitly the measurement and series.

  • Displays the current results in the graphical browser of the Coverage API. The coverage statistics could also be extracted as text for reuse.

Syntax Syntax

  1. REPORT  z_coverage_api_series_example.
    
    * The Series
    DATA: factory    TYPE REF TO if_scv_factory,
          repository TYPE REF TO if_scv_repository,
          series     TYPE REF TO if_scv_series.
    * Default configuration
    DATA: configuration TYPE REF TO if_scv_result_configuration,
          selection     TYPE REF TO if_scv_selection,
          users         TYPE if_scv_measurement=>users.
    * Measurements and results
    DATA: measurement    TYPE REF TO if_scv_measurement,
                 default_result TYPE REF TO if_scv_result,
                        package_result TYPE REF TO if_scv_result.
    * Display
    DATA: display TYPE REF TO if_scv_result_display.
    * Exceptions
    DATA: ops_ex TYPE REF TO cx_scv_execution_error,
          call_ex TYPE REF TO cx_scv_call_error.
    TRY.
    * Create measurement series
      factory    = cl_scv_coverage_api=>get_factory( ).
      repository = cl_scv_coverage_api=>get_repository( ).
      series = factory->create_series( 'TEST_SERIES_NW_EHP3' ).
    
    * Set defaults for the series - first the scope of recording
        series->set_local_server_only( abap_false ).
    
    * Set the default users
        append 'KELLERH' to users.
        series->set_users( users ).
    
    * Then the selection of entities for which results are calculated
    * (not changeable after initial save)
        selection = series->get_selection( ).
        selection->include_component( 'BC-CCM-MON' ).
        " Exclude a sub-component of BC-CCM-MON
        selection->exclude_component( 'BC-CCM-MON-SHM' ).
        " Include explicitly two packages
        selection->include_package( 'SCSM' ).
        selection->include_package( 'SMOI' ).
        " Exclude a class pool and function group - the full
        " technical names of these entities must be used.
        selection->exclude_program( 'CL_CCMS_AL_DOC_VIEW_AL_FILTER=CP' ).
        selection->exclude_program( 'SAPLSALF' ).
    
    * Then the configuration of the results calculation
    * (read-only after initial save)
        configuration = series->get_result_configuration( ).
        " Calculate only top-level aggregated results
        configuration->set_ignore_hierarchy( abap_true ).
    
    * Try to save the series
        repository->save_series( series ). " Uniqueness of series name is checked.
      CATCH cx_scv_execution_error.
        TRY.
    * Load the series if it already has been created
            series = repository->load_series( 'TEST_SERIES_NW_EHP3' ).
          CATCH cx_scv_execution_error INTO ops_ex.
        ENDTRY.
    ENDTRY.
    
    * Create a measurement in the series - the name can be the
    * same for all instances of measurement
    TRY.
        measurement = series->create_measurement( 'MONITORING_API' ).
        measurement->start( ).
    
    * Run test programs - here a harmless CCMS standard program
        SUBMIT rsdssmpl_status AND RETURN.
    
        measurement->stop( ).
    
    * Calculate the results using the defaults of the measurement series
    * Series default selection and configuration are used
        default_result = measurement->build_selection_result(
                          i_result_name = 'MONITORING_COVERAGE' ).
    
    * Calculate the results for a separate package
        package_result = measurement->build_package_result( 'SCSM' ).
    
    * Save the results and implicitly the measurement and series
        repository->save_result( default_result ).
        repository->save_result( package_result ).
    
    * Display the results in a graphical pop-up - show_as_fullscreen also available
    * The display
        display = cl_scv_coverage_ui=>get_result_display( default_result ).
        display->show_as_popup( ).
        display = cl_scv_coverage_ui=>get_result_display( package_result ).
        display->show_as_popup( ).
    
      CATCH cx_scv_execution_error INTO ops_ex.
      CATCH cx_scv_call_error INTO call_ex.
    ENDTRY.
End of the code.