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.