Page tree
Skip to end of metadata
Go to start of metadata


    1. If the total check value from the manual execution is greater than the expected value of the total Check:
      1. Check if the objects involved in the total check are shared between several Analysis Units. For that run the following query on the central schema

        select  dso.object_id, dso.object_name, dso.object_full_name 
          from DSS_OBJECTS dso
          join ( select R.SNAPSHOT_ID,
                                R.OBJECT_ID,
                                count(distinct DLIM.PREVIOUS_OBJECT_ID) as SHARING_FACTOR,
                                count(distinct DLI.PREVIOUS_OBJECT_ID) as T_SHARING_FACTOR
                from DSS_METRIC_TYPES T
                join DSS_METRIC_HISTO_TREE HT
                  on HT.METRIC_ID = T.METRIC_ID
                 and T.METRIC_GROUP = 1
            --     and HT.METRIC_CRITICAL = 1
                join DSS_METRIC_RESULTS R
                  on R.METRIC_ID = HT.METRIC_ID + 1
                 and R.METRIC_VALUE_INDEX = 1
                 and R.SNAPSHOT_ID = HT.SNAPSHOT_ID 
                 join DSS_LINK_INFO DLI
                   on DLI.SNAPSHOT_ID = HT.SNAPSHOT_ID 
                  and DLI.LINK_TYPE_ID = 3
                  and DLI.NEXT_OBJECT_ID = R.OBJECT_ID
                 join DSS_LINK_INFO DLIM
                   on DLIM.SNAPSHOT_ID = HT.SNAPSHOT_ID 
                  and DLIM.LINK_TYPE_ID = 1
                  and DLIM.NEXT_OBJECT_ID = DLI.PREVIOUS_OBJECT_ID
                 join DSS_OBJECTS dsom
                   on dsom.OBJECT_ID = dlim.PREVIOUS_OBJECT_ID
                  and dsom.OBJECT_TYPE_ID = 20000
                  and dsom.OBJECT_NAME not like '%union_content%'
                 join DSS_OBJECTS dsot
                   on dsot.OBJECT_ID = dli.PREVIOUS_OBJECT_ID
                where R.SNAPSHOT_ID = <Snapshot_id>
                          and T.METRIC_Id = <Metric_id>
                group by R.SNAPSHOT_ID, R.OBJECT_ID
                        ) T
            on T.OBJECT_ID = dso.OBJECT_ID 
         where     T.SHARING_FACTOR > 1        
         or T.T_SHARING_FACTOR > 1

        Replace the metric_id with the metric Id of the Quality rule and the snapshot_id with the snapshot id from where the issue is observed. For the Quality rule Avoid using "SELECT DISTINCT", use DELETE-ADJACENT, the metric_id is equal to 7594:

        Following is a query result sample

        Query result example
        113422;"web.xml";"[S:\Sources\PPIT\Java\IdentityService\service\src\main\webapp\WEB-INF\web.xml]"
        Query result interpretation
         The query returns the object id, object_name and object full name

        If the query returns rows then there is Shared objects between Analysis units, the query returns the list of Shared objects

        1. Examine the configuration path of the Analysis Units and check if there is an Overlapping between paths, for more information refer to CMS - Analysis Unit editor:

        2. Check if the Shared objects are part of the overlapped Analysis Units by Viewing Analysis Unit content, for more information refer to CMS - Analysis Unit editor. you can use the following page to get the list of objects belonging to an analysis unit - SQL Queries - CAST Knowledge Base - Queries on objects - What is the Analysis Unit of an object or list of objects
          1. If the Shared objects are part of the overlapped Analysis Units:
            1. If the Analysis Units were configured manually, then this is an expected behavior.
            2. Else if the Analysis Units were discovered by the DMT then refer to Delivery Manager Tool Component DMT
          1. Else If the Shared objects are not part of the overlapped Analysis Units, then there is an issue with the Analysis Units creation, for further investigation refer to CMS Analysis Unit - Analysis Units creation

    2. Else If the total check value from the manual execution is lower than the expected value of the total Check:
      1. Get the list of objects counted in the total checks
      2. Run the TOTAL procedures manually on the knowledge schema by following the page SQL Queries - CAST Knowledge Base - Queries on metrics and diagnostics - How to run DETAIL and TOTAL procedures manually
      3. Identify the sub-query or condition of the procedure responsible for getting (depending on your initial observation) objects more or less than expected, You can proceed per identification by executing sub parts of the procedure. 
        If we take the example of the Quality rule Avoid using "SELECT DISTINCT", use DELETE-ADJACENT  that have the following TOTAL procedure:

        CREATE OR REPLACE FUNCTION DIAG_ABAP_ANA_ARTIF_T_TOTAL
                                                                (
                                                                        I_SNAPSHOT_ID IN                                              INT,
                                                                                       - the metric SNAPSHOT id I_METRIC_PARENT_ID IN INT,
                                                                                       - the metric parent id I_METRIC_ID IN          INT,
                                                                                       - the metric id I_METRIC_VALUE_INDEX IN        INT
                                                                )
                RETURN INT
        IS
                ERRORCODE INT := 0;
        BEGIN
                --<<NAME>>DIAG_ABAP_ANA_ARTIF_T_TOTAL<</NAME>>*/
                --<<COMMENT>> Template name = DSSGENERICTOTAL. <</COMMENT>>
                --<<COMMENT>> Definition = Number of ABAP Artifacts with OpenSQL queries. <</COMMENT>>
                INSERT
                INTO   DSS_METRIC_RESULTS
                       (
                              METRIC_NUM_VALUE  ,
                              METRIC_OBJECT_ID  ,
                              OBJECT_ID         ,
                              METRIC_ID         ,
                              METRIC_VALUE_INDEX,
                              SNAPSHOT_ID
                       )
                SELECT   COUNT( T1.OBJECT_ID),
                         0                   ,
                         SC.OBJECT_PARENT_ID ,
                         I_METRIC_ID         ,
                         I_METRIC_VALUE_INDEX,
                         I_SNAPSHOT_ID
                FROM     ObjInf T2          ,
                         DSSAPP_ARTIFACTS T1,
                         DSSAPP_MODULES MO  ,
                         DSS_METRIC_SCOPES SC
                WHERE    SC.SNAPSHOT_ID      = I_SNAPSHOT_ID
                AND      SC.METRIC_PARENT_ID = I_METRIC_PARENT_ID
                AND      SC.METRIC_ID        = I_METRIC_ID
                AND      SC.COMPUTE_VALUE    = 0
                AND      MO.TECHNO_TYPE      = -15 - Technologic ABAP object
                AND      MO.MODULE_ID        = SC.OBJECT_ID
                AND      T1.APPLICATION_ID   = SC.OBJECT_ID
                AND      NOT EXISTS
                         ( SELECT 1
                         FROM    DSS_OBJECT_EXCEPTIONS E
                         WHERE   E.METRIC_ID = I_METRIC_ID
                         AND     E.OBJECT_ID = T1.OBJECT_ID
                         )
                         - OPEN SQL
                AND      T1.OBJECT_ID = T2.IdObj
                AND      T2.InfTyp    = 9
                AND      T2.InfSubTyp = 1538
                AND      T2.InfVal    > 0
                GROUP BY SC.OBJECT_PARENT_ID,
                         SC.OBJECT_ID ;
                
                RETURN ERRORCODE;
        END DIAG_ABAP_ANA_ARTIF_T_TOTAL;

        a condition can be the following condition:

        AND      T2.InfTyp    = 9
      4. If the identified sub query involves the table ObjInf with the condition InfTyp = 9, then the issue occurred under the Metric Calculation, If so refer to the following page for further investigation CMS Snapshot analysis - Run Metrics Calculation

      5. Else if the identified sub query involves the table ObjInf with a condition different then InfTyp = 9, then the issue occurred under the Analyzer, If so refer to the following page for further investigation CMS Snapshot Analysis - Run Analyzer
      6. Else the issue occurred during Compute Snapshot then refer CMS Snapshot Analysis - Compute Snapshot

  • No labels