Skip to content

/AWS1/IF_APC=>STOPEXPERIMENTRUN()

About StopExperimentRun

Stops a running experiment. Stopping an experiment run ends audience exposure and returns users to the currently deployed feature flag configuration.

Method Signature

METHODS /AWS1/IF_APC~STOPEXPERIMENTRUN
  IMPORTING
    !IV_APPLICATIONIDENTIFIER TYPE /AWS1/APCIDENTIFIER OPTIONAL
    !IV_EXPERIMENTDEFINITIONID TYPE /AWS1/APCIDENTIFIER OPTIONAL
    !IV_RUN TYPE /AWS1/APCPOSITIVEINTEGER OPTIONAL
    !IO_RESULT TYPE REF TO /AWS1/CL_APCEXPERIMENTRUNRSLT OPTIONAL
    !IO_DEPLOYMENTPARAMETERS TYPE REF TO /AWS1/CL_APCDEPLOYPARAMETERS OPTIONAL
  RETURNING
    VALUE(OO_OUTPUT) TYPE REF TO /aws1/cl_apcexperimentrun
  RAISING
    /AWS1/CX_APCBADREQUESTEX
    /AWS1/CX_APCINTERNALSERVEREX
    /AWS1/CX_APCRESOURCENOTFOUNDEX
    /AWS1/CX_APCCLIENTEXC
    /AWS1/CX_APCSERVEREXC
    /AWS1/CX_RT_TECHNICAL_GENERIC
    /AWS1/CX_RT_SERVICE_GENERIC.

IMPORTING

Required arguments:

iv_applicationidentifier TYPE /AWS1/APCIDENTIFIER /AWS1/APCIDENTIFIER

The application ID or name.

iv_experimentdefinitionid TYPE /AWS1/APCIDENTIFIER /AWS1/APCIDENTIFIER

The experiment definition ID or name.

iv_run TYPE /AWS1/APCPOSITIVEINTEGER /AWS1/APCPOSITIVEINTEGER

The run number to stop.

Optional arguments:

io_result TYPE REF TO /AWS1/CL_APCEXPERIMENTRUNRSLT /AWS1/CL_APCEXPERIMENTRUNRSLT

The result of the experiment run, including an executive summary and reasons for or against launching.

io_deploymentparameters TYPE REF TO /AWS1/CL_APCDEPLOYPARAMETERS /AWS1/CL_APCDEPLOYPARAMETERS

Optional deployment parameters for the stop operation.

RETURNING

oo_output TYPE REF TO /aws1/cl_apcexperimentrun /AWS1/CL_APCEXPERIMENTRUN

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->stopexperimentrun(
  io_deploymentparameters = new /aws1/cl_apcdeployparameters(
    it_dynamicextensionparams = VALUE /aws1/cl_apcdynamicparammap_w=>tt_dynamicparametermap(
      (
        VALUE /aws1/cl_apcdynamicparammap_w=>ts_dynamicparametermap_maprow(
          key = |string|
          value = new /aws1/cl_apcdynamicparammap_w( |string| )
        )
      )
    )
    it_tags = VALUE /aws1/cl_apctagmap_w=>tt_tagmap(
      (
        VALUE /aws1/cl_apctagmap_w=>ts_tagmap_maprow(
          key = |string|
          value = new /aws1/cl_apctagmap_w( |string| )
        )
      )
    )
  )
  io_result = new /aws1/cl_apcexperimentrunrslt(
    iv_executivesummary = |string|
    iv_reasonsnottolaunch = |string|
    iv_reasonstolaunch = |string|
  )
  iv_applicationidentifier = |string|
  iv_experimentdefinitionid = |string|
  iv_run = 123
).

This is an example of reading all possible response values

lo_result = lo_result.
IF lo_result IS NOT INITIAL.
  lv_id = lo_result->get_applicationid( ).
  lv_id = lo_result->get_experimentdefinitionid00( ).
  lv_integer = lo_result->get_run( ).
  lv_description = lo_result->get_description( ).
  lv_experimentrunstatus = lo_result->get_status( ).
  lv_nullablepercentage = lo_result->get_exposurepercentage( ).
  lo_treatmentoverrides = lo_result->get_treatmentoverrides( ).
  IF lo_treatmentoverrides IS NOT INITIAL.
    LOOP AT lo_treatmentoverrides->get_inline( ) into ls_row.
      lv_key = ls_row-key.
      lo_value = ls_row-value.
      IF lo_value IS NOT INITIAL.
        lv_treatmentkey = lo_value->get_value( ).
      ENDIF.
    ENDLOOP.
  ENDIF.
  lo_experimentrunresult = lo_result->get_result( ).
  IF lo_experimentrunresult IS NOT INITIAL.
    lv_description = lo_experimentrunresult->get_executivesummary( ).
    lv_description = lo_experimentrunresult->get_reasonstolaunch( ).
    lv_description = lo_experimentrunresult->get_reasonsnottolaunch( ).
  ENDIF.
  lv_iso8601datetime = lo_result->get_startedat( ).
  lv_iso8601datetime = lo_result->get_updatedat( ).
  lv_iso8601datetime = lo_result->get_endedat( ).
  lo_experimentdefinitionsna = lo_result->get_experimentdefnsnapshot( ).
  IF lo_experimentdefinitionsna IS NOT INITIAL.
    lv_id = lo_experimentdefinitionsna->get_applicationid( ).
    lv_id = lo_experimentdefinitionsna->get_id( ).
    lv_name = lo_experimentdefinitionsna->get_name( ).
    lv_description = lo_experimentdefinitionsna->get_hypothesis( ).
    lv_id = lo_experimentdefinitionsna->get_configurationprofileid( ).
    lv_id = lo_experimentdefinitionsna->get_environmentid( ).
    lv_flagkey = lo_experimentdefinitionsna->get_flagkey( ).
    lv_rule = lo_experimentdefinitionsna->get_audiencerule( ).
    lv_description = lo_experimentdefinitionsna->get_audiencedescription( ).
    lv_description = lo_experimentdefinitionsna->get_launchcriteria( ).
    LOOP AT lo_experimentdefinitionsna->get_treatments( ) into lo_row_1.
      lo_row_2 = lo_row_1.
      IF lo_row_2 IS NOT INITIAL.
        lv_treatmentkey = lo_row_2->get_key( ).
        lv_weight = lo_row_2->get_weight( ).
        lv_description = lo_row_2->get_description( ).
        lo_flagvalue = lo_row_2->get_flagvalue( ).
        IF lo_flagvalue IS NOT INITIAL.
          lv_boolean = lo_flagvalue->get_enabled( ).
          LOOP AT lo_flagvalue->get_attributevalues( ) into ls_row_3.
            lv_key_1 = ls_row_3-key.
            lo_value_1 = ls_row_3-value.
            IF lo_value_1 IS NOT INITIAL.
              lv_attributestring = lo_value_1->get_stringvalue( ).
              lv_double = lo_value_1->get_numbervalue( ).
              lv_boolean = lo_value_1->get_booleanvalue( ).
              LOOP AT lo_value_1->get_stringarray( ) into lo_row_4.
                lo_row_5 = lo_row_4.
                IF lo_row_5 IS NOT INITIAL.
                  lv_attributestring = lo_row_5->get_value( ).
                ENDIF.
              ENDLOOP.
              LOOP AT lo_value_1->get_numberarray( ) into lo_row_6.
                lo_row_7 = lo_row_6.
                IF lo_row_7 IS NOT INITIAL.
                  lv_double = lo_row_7->get_value( ).
                ENDIF.
              ENDLOOP.
            ENDIF.
          ENDLOOP.
        ENDIF.
      ENDIF.
    ENDLOOP.
    lo_treatment = lo_experimentdefinitionsna->get_control( ).
    IF lo_treatment IS NOT INITIAL.
      lv_treatmentkey = lo_treatment->get_key( ).
      lv_weight = lo_treatment->get_weight( ).
      lv_description = lo_treatment->get_description( ).
      lo_flagvalue = lo_treatment->get_flagvalue( ).
      IF lo_flagvalue IS NOT INITIAL.
        lv_boolean = lo_flagvalue->get_enabled( ).
        LOOP AT lo_flagvalue->get_attributevalues( ) into ls_row_3.
          lv_key_1 = ls_row_3-key.
          lo_value_1 = ls_row_3-value.
          IF lo_value_1 IS NOT INITIAL.
            lv_attributestring = lo_value_1->get_stringvalue( ).
            lv_double = lo_value_1->get_numbervalue( ).
            lv_boolean = lo_value_1->get_booleanvalue( ).
            LOOP AT lo_value_1->get_stringarray( ) into lo_row_4.
              lo_row_5 = lo_row_4.
              IF lo_row_5 IS NOT INITIAL.
                lv_attributestring = lo_row_5->get_value( ).
              ENDIF.
            ENDLOOP.
            LOOP AT lo_value_1->get_numberarray( ) into lo_row_6.
              lo_row_7 = lo_row_6.
              IF lo_row_7 IS NOT INITIAL.
                lv_double = lo_row_7->get_value( ).
              ENDIF.
            ENDLOOP.
          ENDIF.
        ENDLOOP.
      ENDIF.
    ENDIF.
  ENDIF.
ENDIF.

To stop an experiment run

The following StopExperimentRun example stops a running experiment and records the result.

DATA(lo_result) = lo_client->stopexperimentrun(
  io_result = new /aws1/cl_apcexperimentrunrslt(
    iv_executivesummary = |t1 wins with 16% lift in conversion|
    iv_reasonstolaunch = |Significant improvement in key metric|
  )
  iv_applicationidentifier = |339ohji|
  iv_experimentdefinitionid = |bsxyd7k|
  iv_run = 1
).