[ABAP] Datenelemente anhand von Datentypen und Suchstrings (Tabelle DD01L, DD01T) suchen

In der Praxis kommt es oft vor, dass man zu einem Datenelement oder einer Tabelle einen passenden fertigen SAP-Datentyp aus dem DDIC sucht. Dieses kleine Programm hilft dabei, schnell und effizient das passende aus den Tabellen DD01L und DD01T zu suchen (Datentyp, Sprache, Kurztext).

* Datentyp
PARAMETERS: p_dtyp TYPE dd04l-datatype DEFAULT 'DATS'.
* Sprache
PARAMETERS: p_lang TYPE dd04t-ddlanguage DEFAULT 'D'.
* Suchtext für Suche in Kurzbeschreibung
PARAMETERS: p_search TYPE string LOWER CASE.

START-OF-SELECTION.

  SELECT dl~rollname,  " Datenelement
         dl~domname,   " Domäne
         dl~datatype,  " Datentyp
         dl~leng,      " Zahl der Stellen
         dl~memoryid,  " Parameter-Id
         dl~entitytab, " Wertetabelle
         dt~ddtext     " Kurzbeschreibung
    INTO TABLE @DATA(it_result)
    FROM dd04l AS dl
    INNER JOIN dd04t AS dt ON ( dl~rollname = dt~rollname AND dl~dtelmaster = dt~ddlanguage AND dl~as4local = dt~as4local AND dl~as4vers = dt~as4vers )
    WHERE dl~as4local   = 'A'
      AND dl~datatype   = @p_dtyp
      AND dt~ddlanguage = @p_lang.

  IF sy-subrc = 0.
    TRY.
        DATA(it_result2) = it_result.

* wenn nach bestimmten Inhalt gesucht werden soll -> Filtern
        IF NOT p_search IS INITIAL.
          it_result2 = VALUE #( FOR <s> IN it_result WHERE ( ddtext CS p_search )
                                (
                                   <s>
                                )
                              ).
        ENDIF.

* 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_result2 ).

* 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( |Datentypen ({ lines( it_result2 ) })| ).
        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.

Links

[ABAP] ALV-Grid: Standard F4-Suchhilfe für Spalten aktivieren

* im LVC-Feldkatalog müssen für die Felder der F4-Spalten folgende Parameter gesetzt werden:
* tabname = 'MARA'.
* ref_table = 'MARA'.
* domname = 'MATNR'.
* f4availabl = abap_true.

DATA: o_alv TYPE REF TO cl_gui_alv_grid.

...

* F4-Hilfe festlegen
DATA(it_f4help) = VALUE lvc_t_f4( ( fieldname = 'MATNR'
                                    register = abap_true
                                    chngeafter = abap_true ) ).

o_alv->register_f4_for_fields( it_f4help ).