Back to Shorts

How to get domain fixed values in ABAP?

Use FM DD_DOMVALUES_GET.

DATA lt_values TYPE TABLE OF dd07v.

CALL FUNCTION 'DD_DOMVALUES_GET'
  EXPORTING
    domname        = 'KOART'
    text           = 'X'     " 'X' = values + texts, ' ' = values only
    langu          = sy-langu
  TABLES
    dd07v_tab      = lt_values
  EXCEPTIONS
    wrong_textflag = 1
    OTHERS         = 2.

IF sy-subrc = 0.
  LOOP AT lt_values INTO DATA(ls_val).
    WRITE: / ls_val-domvalue_l, ls_val-ddtext.
  ENDLOOP.
ENDIF.

Result table DD07V_TAB contains DOMVALUE_L (the value), DOMVALUE_H (upper limit for interval-type domains), and DDTEXT (description).


AlternativeCL_ABAP_ELEMDESCR->get_ddic_fixed_values().

DATA ld_field TYPE koart.

DATA(lt_fixed) =
  CAST cl_abap_elemdescr(
    cl_abap_typedescr=>describe_by_data( ld_field )
  )->get_ddic_fixed_values( ).

LOOP AT lt_fixed INTO DATA(lx_fix).
  WRITE: / lx_fix-low, lx_fix-ddtext.
ENDLOOP.

Result is a DDFIXVALUES table — fields LOW, HIGH, DDTEXT.


Or query DD07T directly:

SELECT domvalue_l, ddtext
  FROM dd07t
  INTO TABLE @DATA(lt_dom)
  WHERE domname    = 'KOART'
    AND ddlanguage = @sy-langu
    AND as4local   = 'A'.

Always add AS4LOCAL = 'A' — the table stores multiple versions (active, inactive), so without this filter you may get duplicate rows.