/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 phaseAnomaly 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
InitAuditorandSummarizerauditors 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.