[ABAP] SAP-Suchhilfe verwenden

Beispiel 1 (MATCHCODE OBJECT)

* Suchhilfen anlegen, ändern: SE11

* Tabellen
*
* DD30L - Suchhilfen
* DD30T - Texte zu Suchhilfen
* DD33S - Zuordnung von Suchhilfefeldern

* MATCHCODE OBJECT verknüpft das Eingabefeld des Parameters mit einer Suchhilfe aus dem ABAP Dictionary
* Beispiel: Suchhilfe /iwbep/sh_ddshlp_elem sucht nach Suchhilfen :)
PARAMETERS: p_dd03l TYPE shlpname MATCHCODE OBJECT /iwbep/sh_ddshlp_elem.

Beispiel 2 (Suche von Suchhilfen zu einer Tabelle in der Tabelle DD30L)

* Parameterwert für Tabellenname, um Suchhilfen zu einer Tabelle zu ermitteln
PARAMETERS: p_table TYPE selmethod DEFAULT 'USR02'.

START-OF-SELECTION.

  SELECT l~shlpname,
         l~as4local,
         l~selmethod,
         t~ddtext
    INTO TABLE @DATA(it_dd30l)
    FROM dd30l AS l
    INNER JOIN dd30t AS t ON l~shlpname = t~shlpname
    WHERE t~ddlanguage = @sy-langu
      AND l~selmethod = @p_table.

  IF sy-subrc = 0.
    TRY.
*   SALV-Table
        DATA: o_salv TYPE REF TO cl_salv_table.

        cl_salv_table=>factory( IMPORTING
                                  r_salv_table   = o_salv
                                CHANGING
                                  t_table        = it_dd30l ).

*   Grundeinstellungen
        o_salv->get_functions( )->set_all( abap_true ).
        o_salv->get_columns( )->set_optimize( abap_true ).
        o_salv->get_display_settings( )->set_list_header( |Suchhilfen zur Tabelle { p_table }| ).
        o_salv->get_display_settings( )->set_striped_pattern( abap_true ).
        o_salv->get_selections( )->set_selection_mode( if_salv_c_selection_mode=>row_column ).

*   Spaltenüberschriften: technischer Name und Beschreibungstexte
        LOOP AT o_salv->get_columns( )->get( ) ASSIGNING FIELD-SYMBOL(<c>).
          DATA(o_col) = <c>-r_column.
          o_col->set_short_text( || ).
          o_col->set_medium_text( || ).
          o_col->set_long_text( |{ o_col->get_columnname( ) } [{ o_col->get_long_text( ) }]| ).
        ENDLOOP.

        o_salv->display( ).
      CATCH cx_root INTO DATA(e_txt).
        WRITE: / e_txt->get_text( ).
    ENDTRY.
  ENDIF.