SELECT_RECORDS

in src/zgoog_cl_data_cluster.clas.abap [0:0]


METHOD SELECT_RECORDS.

  DATA: lo_struc_def TYPE REF TO cl_abap_structdescr.

  lo_struc_def ?=
       cl_abap_typedescr=>describe_by_name( iv_table ).

  DATA: lt_where_clause TYPE tt_string.
  DATA: lv_and_clause TYPE string.

  DATA: lr_component TYPE REF TO abap_compdescr.

  LOOP AT lo_struc_def->components
       REFERENCE INTO lr_component.

    IF lr_component->name = 'MANDT'.
      CONTINUE.
    ENDIF.

    IF lr_component->name = 'SRTF2'.
      EXIT.
    ENDIF.

    DATA: lv_where TYPE string.

    lv_where =
      |{ lv_and_clause }| &
      |{ lr_component->name }| &
      | EQ | &
      | IT_KEY-{ lr_component->name } |.

    APPEND lv_where TO lt_where_clause.

    lv_and_clause = |AND |.
  ENDLOOP.

  IF it_key IS NOT INITIAL.
    SELECT *
      FROM (iv_table)
      INTO CORRESPONDING FIELDS OF TABLE et_result
      FOR ALL ENTRIES IN it_key
      WHERE (lt_where_clause).
  ENDIF.