то же самое, что предлагалось выше, но с примером
Code:
*&---------------------------------------------------------------------*
*& Form get_text_from_domain
*&---------------------------------------------------------------------*
* Текст для пост. знач. домена
*----------------------------------------------------------------------*
FORM get_text_from_domain
USING iv_value TYPE any
CHANGING ch_text TYPE any.
DATA:
li_tdescr TYPE REF TO cl_abap_typedescr ,
li_edescr TYPE REF TO cl_abap_elemdescr ,
lv_name TYPE ddobjname ,
ls_dd07v TYPE dd07v ,
lt_dd07v TYPE STANDARD TABLE OF dd07v ,
ls_dd04v TYPE dd04v.
CLEAR ch_text.
* по ссылке - получаем элемент данных
CALL METHOD cl_abap_datadescr=>describe_by_data
EXPORTING
p_data = iv_value
RECEIVING
p_descr_ref = li_tdescr.
li_edescr ?= li_tdescr.
lv_name = li_edescr->help_id.
* по элементу данных - получаем домен
CALL FUNCTION 'DDIF_DTEL_GET'
EXPORTING
name = lv_name
state = 'A'
langu = ' '
IMPORTING
dd04v_wa = ls_dd04v
EXCEPTIONS
illegal_input = 1
OTHERS = 2.
CHECK sy-subrc EQ 0.
lv_name = ls_dd04v-domname.
* получаем постоянные значения этого домена
CALL FUNCTION 'DDIF_DOMA_GET'
EXPORTING
name = lv_name
langu = sy-langu
TABLES
dd07v_tab = lt_dd07v
EXCEPTIONS
illegal_input = 1
OTHERS = 2.
CHECK sy-subrc EQ 0.
* среди них ищем текстовку к заданному значению
READ TABLE lt_dd07v INTO ls_dd07v
WITH KEY domvalue_l = iv_value.
ch_text = ls_dd07v-ddtext.
ENDFORM. "get_text_from_domain