Skip to content

/AWS1/IF_CWS=>LISTAUDITFINDINGS()

About ListAuditFindings

Returns a list of audit findings that provide automated analysis of service behavior and root cause analysis. These findings help identify the most significant observations about your services, including performance issues, anomalies, and potential problems. The findings are generated using heuristic algorithms based on established troubleshooting patterns.

Method Signature

METHODS /AWS1/IF_CWS~LISTAUDITFINDINGS
  IMPORTING
    !IV_STARTTIME TYPE /AWS1/CWSTIMESTAMP OPTIONAL
    !IV_ENDTIME TYPE /AWS1/CWSTIMESTAMP OPTIONAL
    !IT_AUDITORS TYPE /AWS1/CL_CWSAUDITORS_W=>TT_AUDITORS OPTIONAL
    !IT_AUDITTARGETS TYPE /AWS1/CL_CWSAUDITTARGET=>TT_AUDITTARGETS OPTIONAL
    !IV_DETAILLEVEL TYPE /AWS1/CWSDETAILLEVEL OPTIONAL
    !IV_NEXTTOKEN TYPE /AWS1/CWSNEXTTOKEN OPTIONAL
    !IV_MAXRESULTS TYPE /AWS1/CWSLISTAUDITFNDGMAXRSLTS OPTIONAL
  RETURNING
    VALUE(OO_OUTPUT) TYPE REF TO /aws1/cl_cwslistauditfndgsout
  RAISING
    /AWS1/CX_CWSTHROTTLINGEX
    /AWS1/CX_CWSVALIDATIONEX
    /AWS1/CX_CWSCLIENTEXC
    /AWS1/CX_CWSSERVEREXC
    /AWS1/CX_RT_TECHNICAL_GENERIC
    /AWS1/CX_RT_SERVICE_GENERIC.

IMPORTING

Required arguments:

iv_starttime TYPE /AWS1/CWSTIMESTAMP /AWS1/CWSTIMESTAMP

The start of the time period to retrieve audit findings for. When used in a raw HTTP Query API, it is formatted as epoch time in seconds. For example, 1698778057

iv_endtime TYPE /AWS1/CWSTIMESTAMP /AWS1/CWSTIMESTAMP

The end of the time period to retrieve audit findings for. When used in a raw HTTP Query API, it is formatted as epoch time in seconds. For example, 1698778057

it_audittargets TYPE /AWS1/CL_CWSAUDITTARGET=>TT_AUDITTARGETS TT_AUDITTARGETS

A list of audit targets to filter the findings by. You can specify services, SLOs, or service operations to limit the audit findings to specific entities.

Optional arguments:

it_auditors TYPE /AWS1/CL_CWSAUDITORS_W=>TT_AUDITORS TT_AUDITORS

A list of auditor names to filter the findings by. Only findings generated by the specified auditors will be returned.

The following auditors are available for configuration:

  • slo - SloAuditor: Identifies SLO violations and detects breached thresholds during the Assessment phase.

  • operation_metric - OperationMetricAuditor: Detects anomalies in service operation metrics from Application Signals RED metrics during the Assessment phase

    Anomaly detection is not supported for sparse metrics (those missing more than 80% of datapoints within the given time period).

  • service_quota - ServiceQuotaAuditor: Monitors resource utilization against service quotas during the Assessment phase

  • trace - TraceAuditor: Performs deep-dive analysis of distributed traces, correlating traces with breached SLOs or abnormal RED metrics during the Analysis phase

  • dependency_metric - CriticalPathAuditor: Analyzes service dependency impacts and maps dependency relationships from Application Signals RED metrics during the Analysis phase

  • top_contributor - TopContributorAuditor: Identifies infrastructure-level contributors to issues by analyzing EMF logs of Application Signals RED metrics during the Analysis phase

  • log - LogAuditor: Extracts insights from application logs, categorizing error types and ranking severity by frequency during the Analysis phase

InitAuditor and Summarizer auditors are not configurable as they are automatically triggered during the audit process.

iv_detaillevel TYPE /AWS1/CWSDETAILLEVEL /AWS1/CWSDETAILLEVEL

The level of details of the audit findings. Supported values: BRIEF, DETAILED.

iv_nexttoken TYPE /AWS1/CWSNEXTTOKEN /AWS1/CWSNEXTTOKEN

Include this value, if it was returned by the previous operation, to get the next set of audit findings.

iv_maxresults TYPE /AWS1/CWSLISTAUDITFNDGMAXRSLTS /AWS1/CWSLISTAUDITFNDGMAXRSLTS

The maximum number of audit findings to return in one operation. If you omit this parameter, the default of 10 is used.

RETURNING

oo_output TYPE REF TO /aws1/cl_cwslistauditfndgsout /AWS1/CL_CWSLISTAUDITFNDGSOUT

Domain /AWS1/RT_ACCOUNT_ID
Primitive Type NUMC

Examples

Syntax Example

This is an example of the syntax for calling the method. It includes every possible argument and initializes every possible value. The data provided is not necessarily semantically accurate (for example the value "string" may be provided for something that is intended to be an instance ID, or in some cases two arguments may be mutually exclusive). The syntax shows the ABAP syntax for creating the various data structures.

DATA(lo_result) = lo_client->listauditfindings(
  it_auditors = VALUE /aws1/cl_cwsauditors_w=>tt_auditors(
    ( new /aws1/cl_cwsauditors_w( |string| ) )
  )
  it_audittargets = VALUE /aws1/cl_cwsaudittarget=>tt_audittargets(
    (
      new /aws1/cl_cwsaudittarget(
        io_data = new /aws1/cl_cwsaudittargetentity(
          io_canary = new /aws1/cl_cwscanaryentity( |string| )
          io_service = new /aws1/cl_cwsserviceentity(
            iv_awsaccountid = |string|
            iv_environment = |string|
            iv_name = |string|
            iv_type = |string|
          )
          io_serviceoperation = new /aws1/cl_cwsserviceopentity(
            io_service = new /aws1/cl_cwsserviceentity(
              iv_awsaccountid = |string|
              iv_environment = |string|
              iv_name = |string|
              iv_type = |string|
            )
            iv_metrictype = |string|
            iv_operation = |string|
          )
          io_slo = new /aws1/cl_cwssvclevelobjiveent(
            iv_sloarn = |string|
            iv_sloname = |string|
          )
        )
        iv_type = |string|
      )
    )
  )
  iv_detaillevel = |string|
  iv_endtime = '20150101000000.0000000'
  iv_maxresults = 123
  iv_nexttoken = |string|
  iv_starttime = '20150101000000.0000000'
).

This is an example of reading all possible response values

lo_result = lo_result.
IF lo_result IS NOT INITIAL.
  lv_timestamp = lo_result->get_starttime( ).
  lv_timestamp = lo_result->get_endtime( ).
  LOOP AT lo_result->get_auditfindings( ) into lo_row.
    lo_row_1 = lo_row.
    IF lo_row_1 IS NOT INITIAL.
      LOOP AT lo_row_1->get_keyattributes( ) into ls_row_2.
        lv_key = ls_row_2-key.
        lo_value = ls_row_2-value.
        IF lo_value IS NOT INITIAL.
          lv_keyattributevalue = lo_value->get_value( ).
        ENDIF.
      ENDLOOP.
      LOOP AT lo_row_1->get_auditorresults( ) into lo_row_3.
        lo_row_4 = lo_row_3.
        IF lo_row_4 IS NOT INITIAL.
          lv_string = lo_row_4->get_auditor( ).
          lv_string = lo_row_4->get_description( ).
          LOOP AT lo_row_4->get_data( ) into ls_row_5.
            lv_key_1 = ls_row_5-key.
            lo_value_1 = ls_row_5-value.
            IF lo_value_1 IS NOT INITIAL.
              lv_string = lo_value_1->get_value( ).
            ENDIF.
          ENDLOOP.
          lv_severity = lo_row_4->get_severity( ).
        ENDIF.
      ENDLOOP.
      lv_string = lo_row_1->get_operation( ).
      lo_metricgraph = lo_row_1->get_metricgraph( ).
      IF lo_metricgraph IS NOT INITIAL.
        LOOP AT lo_metricgraph->get_metricdataqueries( ) into lo_row_6.
          lo_row_7 = lo_row_6.
          IF lo_row_7 IS NOT INITIAL.
            lv_metricid = lo_row_7->get_id( ).
            lo_metricstat = lo_row_7->get_metricstat( ).
            IF lo_metricstat IS NOT INITIAL.
              lo_metric = lo_metricstat->get_metric( ).
              IF lo_metric IS NOT INITIAL.
                lv_namespace = lo_metric->get_namespace( ).
                lv_metricname = lo_metric->get_metricname( ).
                LOOP AT lo_metric->get_dimensions( ) into lo_row_8.
                  lo_row_9 = lo_row_8.
                  IF lo_row_9 IS NOT INITIAL.
                    lv_dimensionname = lo_row_9->get_name( ).
                    lv_dimensionvalue = lo_row_9->get_value( ).
                  ENDIF.
                ENDLOOP.
              ENDIF.
              lv_period = lo_metricstat->get_period( ).
              lv_stat = lo_metricstat->get_stat( ).
              lv_standardunit = lo_metricstat->get_unit( ).
            ENDIF.
            lv_metricexpression = lo_row_7->get_expression( ).
            lv_metriclabel = lo_row_7->get_label( ).
            lv_returndata = lo_row_7->get_returndata( ).
            lv_period = lo_row_7->get_period( ).
            lv_accountid = lo_row_7->get_accountid( ).
          ENDIF.
        ENDLOOP.
        lv_timestamp = lo_metricgraph->get_starttime( ).
        lv_timestamp = lo_metricgraph->get_endtime( ).
      ENDIF.
      lo_dependencygraph = lo_row_1->get_dependencygraph( ).
      IF lo_dependencygraph IS NOT INITIAL.
        LOOP AT lo_dependencygraph->get_nodes( ) into lo_row_10.
          lo_row_11 = lo_row_10.
          IF lo_row_11 IS NOT INITIAL.
            LOOP AT lo_row_11->get_keyattributes( ) into ls_row_2.
              lv_key = ls_row_2-key.
              lo_value = ls_row_2-value.
              IF lo_value IS NOT INITIAL.
                lv_keyattributevalue = lo_value->get_value( ).
              ENDIF.
            ENDLOOP.
            lv_string = lo_row_11->get_name( ).
            lv_string = lo_row_11->get_nodeid( ).
            lv_string = lo_row_11->get_operation( ).
            lv_string = lo_row_11->get_type( ).
            lv_double = lo_row_11->get_duration( ).
            lv_string = lo_row_11->get_status( ).
          ENDIF.
        ENDLOOP.
        LOOP AT lo_dependencygraph->get_edges( ) into lo_row_12.
          lo_row_13 = lo_row_12.
          IF lo_row_13 IS NOT INITIAL.
            lv_string = lo_row_13->get_sourcenodeid( ).
            lv_string = lo_row_13->get_destinationnodeid( ).
            lv_double = lo_row_13->get_duration( ).
            lv_connectiontype = lo_row_13->get_connectiontype( ).
          ENDIF.
        ENDLOOP.
      ENDIF.
      lv_string = lo_row_1->get_type( ).
    ENDIF.
  ENDLOOP.
  lv_nexttoken = lo_result->get_nexttoken( ).
ENDIF.