anchor.diff:      endif.
   
     endmethod.
  -
   
     method validate_sift_and_get_type.
   
  
positive.code:     endif.
  
      ed_output_type = id_if_desc->get_method_parameter_type(
        p_method_name    = <method>-name
        p_parameter_name = es_output_param-name ).
  
      if i_config-field_only is not initial.
  
negative.code:         code = 'MF' ). "#EC NOTEXT
      endif.
  
      validate_method_and_get_otype(
        exporting
          id_if_desc = id_if_desc
          i_config   = i_config
          i_method   = <method>
        importing
          ed_output_type  = ed_output_type
          es_output_param = es_output_param ).
  
      et_sift_types = validate_filter_and_get_ftype(
        id_if_desc = id_if_desc
        i_config   = i_config ).
  
    endmethod.
  
    method validate_filter_and_get_ftype.
  
      " check filters
      if boolc( i_config-sift_param is initial and i_config-sift_const is initial )
        <> boolc( i_config-mock_tab_key is initial ). " XOR
        zcx_mockup_loader_error=>raise(
          msg  = 'Specify both i_sift_param/const and i_mock_tab_key'
          code = 'MS' ). "#EC NOTEXT
      elseif i_config-sift_param is not initial and i_config-sift_const is not initial.
        zcx_mockup_loader_error=>raise(
          msg  = 'Cannot combine sift_param and sift_const'
          code = 'CS' ). "#EC NOTEXT
      endif.
  
      data ls_filter_type like line of rt_sift_types.
      if i_config-sift_param is not initial.
        ls_filter_type-type = validate_sift_and_get_type(
          id_if_desc     = id_if_desc
          iv_method_name = i_config-method_name
          iv_param_name  = i_config-sift_param ).
        ls_filter_type-mock_tab_key = i_config-mock_tab_key.
        append ls_filter_type to rt_sift_types.
      elseif i_config-filter is not initial.
        field-symbols <f> like line of i_config-filter.
        loop at i_config-filter assigning <f>.
  