Skip to content

/AWS1/IF_CUS=>SEARCHRECOMMENDATIONS()

About SearchRecommendations

Retrieves recommendations for a profile in a specific domain. The profile is identified using a search key, which consists of a KeyName and a KeyValues list. The KeyName can be a predefined key (for example, _profileId, _phone, _email) or a custom-defined key.

The search key must match exactly one profile. If no profile matches the search key, the operation returns a ResourceNotFoundException. If more than one profile matches the search key, the operation returns a BadRequestException. You can use the SearchProfiles API to review the matching profiles.

Method Signature

METHODS /AWS1/IF_CUS~SEARCHRECOMMENDATIONS
  IMPORTING
    !IV_DOMAINNAME TYPE /AWS1/CUSNAME OPTIONAL
    !IV_KEYNAME TYPE /AWS1/CUSNAME OPTIONAL
    !IT_KEYVALUES TYPE /AWS1/CL_CUSKEYVALUESLIST_W=>TT_KEYVALUESLIST OPTIONAL
    !IO_RECOMMENDER TYPE REF TO /AWS1/CL_CUSRECOMMENDER OPTIONAL
    !IT_CANDIDATEIDS TYPE /AWS1/CL_CUSCANDIDATEIDLIST_W=>TT_CANDIDATEIDLIST OPTIONAL
    !IT_CONTEXT TYPE /AWS1/CL_CUSRECOMMENDERCTX_W=>TT_RECOMMENDERCONTEXT OPTIONAL
    !IO_DIVERSITY TYPE REF TO /AWS1/CL_CUSRECDIVERSITYCONFIG OPTIONAL
    !IO_METADATA TYPE REF TO /AWS1/CL_CUSRECMETADATA OPTIONAL
    !IV_MAXRECOMMENDATIONS TYPE /AWS1/CUSMAXSIZE500 OPTIONAL
  RETURNING
    VALUE(OO_OUTPUT) TYPE REF TO /aws1/cl_cussearchrecsresponse
  RAISING
    /AWS1/CX_CUSACCESSDENIEDEX
    /AWS1/CX_CUSBADREQUESTEX
    /AWS1/CX_CUSINTERNALSERVEREX
    /AWS1/CX_CUSRESOURCENOTFOUNDEX
    /AWS1/CX_CUSTHROTTLINGEX
    /AWS1/CX_CUSCLIENTEXC
    /AWS1/CX_CUSSERVEREXC
    /AWS1/CX_RT_TECHNICAL_GENERIC
    /AWS1/CX_RT_SERVICE_GENERIC.

IMPORTING

Required arguments:

iv_domainname TYPE /AWS1/CUSNAME /AWS1/CUSNAME

The unique name of the domain.

iv_keyname TYPE /AWS1/CUSNAME /AWS1/CUSNAME

A searchable identifier of a customer profile. You can use a predefined key, such as _profileId, _phone, or _email, or a custom-defined key.

it_keyvalues TYPE /AWS1/CL_CUSKEYVALUESLIST_W=>TT_KEYVALUESLIST TT_KEYVALUESLIST

A list of key values. Provide one value for each field of the search key.

io_recommender TYPE REF TO /AWS1/CL_CUSRECOMMENDER /AWS1/CL_CUSRECOMMENDER

The recommender used to generate the recommendations.

Optional arguments:

it_candidateids TYPE /AWS1/CL_CUSCANDIDATEIDLIST_W=>TT_CANDIDATEIDLIST TT_CANDIDATEIDLIST

A list of item IDs to rank for the user. Use this when you want to re-rank a specific set of items rather than getting recommendations from the full item catalog. Required for personalized-ranking use cases.

it_context TYPE /AWS1/CL_CUSRECOMMENDERCTX_W=>TT_RECOMMENDERCONTEXT TT_RECOMMENDERCONTEXT

The contextual metadata used to provide dynamic runtime information to tailor recommendations.

io_diversity TYPE REF TO /AWS1/CL_CUSRECDIVERSITYCONFIG /AWS1/CL_CUSRECDIVERSITYCONFIG

Runtime diversity configuration for this request. Enables diversity-aware recommendations and optionally supplies values for placeholder-based diversity caps configured on the recommender.

io_metadata TYPE REF TO /AWS1/CL_CUSRECMETADATA /AWS1/CL_CUSRECMETADATA

Configuration for metadata to include in recommendation responses.

iv_maxrecommendations TYPE /AWS1/CUSMAXSIZE500 /AWS1/CUSMAXSIZE500

The maximum number of recommendations to return. The default value is 5.

RETURNING

oo_output TYPE REF TO /aws1/cl_cussearchrecsresponse /AWS1/CL_CUSSEARCHRECSRESPONSE

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->searchrecommendations(
  io_diversity = new /aws1/cl_cusrecdiversityconfig(
    it_values = VALUE /aws1/cl_cusdiversityvalsmap_w=>tt_diversityvaluesmap(
      (
        VALUE /aws1/cl_cusdiversityvalsmap_w=>ts_diversityvaluesmap_maprow(
          key = |string|
          value = new /aws1/cl_cusdiversityvalsmap_w( 123 )
        )
      )
    )
    iv_enabled = ABAP_TRUE
  )
  io_metadata = new /aws1/cl_cusrecmetadata(
    it_columns = VALUE /aws1/cl_cusmetcolumnslist_w=>tt_metadatacolumnslist(
      ( new /aws1/cl_cusmetcolumnslist_w( |string| ) )
    )
  )
  io_recommender = new /aws1/cl_cusrecommender(
    it_filters = VALUE /aws1/cl_cusrecommenderfilter=>tt_recommenderfilters(
      (
        new /aws1/cl_cusrecommenderfilter(
          it_values = VALUE /aws1/cl_cusrecmdrfiltervals_w=>tt_recommenderfiltervalues(
            (
              VALUE /aws1/cl_cusrecmdrfiltervals_w=>ts_recmdrfiltervalues_maprow(
                key = |string|
                value = new /aws1/cl_cusrecmdrfiltervals_w( |string| )
              )
            )
          )
          iv_name = |string|
        )
      )
    )
    it_promotionalfilters = VALUE /aws1/cl_cusrecmdrpromofilter=>tt_recommenderpromofilters(
      (
        new /aws1/cl_cusrecmdrpromofilter(
          it_values = VALUE /aws1/cl_cusrecmdrfiltervals_w=>tt_recommenderfiltervalues(
            (
              VALUE /aws1/cl_cusrecmdrfiltervals_w=>ts_recmdrfiltervalues_maprow(
                key = |string|
                value = new /aws1/cl_cusrecmdrfiltervals_w( |string| )
              )
            )
          )
          iv_name = |string|
          iv_percentpromoteditems = 123
          iv_promotionname = |string|
        )
      )
    )
    iv_name = |string|
  )
  it_candidateids = VALUE /aws1/cl_cuscandidateidlist_w=>tt_candidateidlist(
    ( new /aws1/cl_cuscandidateidlist_w( |string| ) )
  )
  it_context = VALUE /aws1/cl_cusrecommenderctx_w=>tt_recommendercontext(
    (
      VALUE /aws1/cl_cusrecommenderctx_w=>ts_recommendercontext_maprow(
        key = |string|
        value = new /aws1/cl_cusrecommenderctx_w( |string| )
      )
    )
  )
  it_keyvalues = VALUE /aws1/cl_cuskeyvalueslist_w=>tt_keyvalueslist(
    ( new /aws1/cl_cuskeyvalueslist_w( |string| ) )
  )
  iv_domainname = |string|
  iv_keyname = |string|
  iv_maxrecommendations = 123
).

This is an example of reading all possible response values

lo_result = lo_result.
IF lo_result IS NOT INITIAL.
  lv_uuid = lo_result->get_profileid( ).
  LOOP AT lo_result->get_recommendations( ) into lo_row.
    lo_row_1 = lo_row.
    IF lo_row_1 IS NOT INITIAL.
      lo_catalogitem = lo_row_1->get_catalogitem( ).
      IF lo_catalogitem IS NOT INITIAL.
        lv_sensitivestring1to255 = lo_catalogitem->get_id( ).
        lv_sensitivestring1to255 = lo_catalogitem->get_name( ).
        lv_sensitivestring1to255 = lo_catalogitem->get_code( ).
        lv_sensitivestring1to255 = lo_catalogitem->get_type( ).
        lv_sensitivestring1to255 = lo_catalogitem->get_category( ).
        lv_sensitivestring1to255 = lo_catalogitem->get_description( ).
        lv_sensitivestring1to1000 = lo_catalogitem->get_additionalinformation( ).
        lv_sensitivestring1to1000 = lo_catalogitem->get_imagelink( ).
        lv_sensitivestring1to1000 = lo_catalogitem->get_link( ).
        lv_timestamp = lo_catalogitem->get_createdat( ).
        lv_timestamp = lo_catalogitem->get_updatedat( ).
        lv_sensitivestring1to255 = lo_catalogitem->get_price( ).
        LOOP AT lo_catalogitem->get_attributes( ) into ls_row_2.
          lv_key = ls_row_2-key.
          lo_value = ls_row_2-value.
          IF lo_value IS NOT INITIAL.
            lv_string1to255 = lo_value->get_value( ).
          ENDIF.
        ENDLOOP.
      ENDIF.
      lv_double0to1 = lo_row_1->get_score( ).
    ENDIF.
  ENDLOOP.
ENDIF.