取集需要用Function 'G_SET_GET_ALL_VALUES',
但取得的结果值是From To的形式,所以取值结束后再采取算法判断。
CALL FUNCTION 'G_SET_GET_ALL_VALUES'
EXPORTING
client = sy-mandt
setnr = 'ZFI_CCTR2'
class = '0000'
TABLES
set_values = li_set_values
EXCEPTIONS
set_not_found = 1
OTHERS = 2.
LOOP AT li_set_values INTO lw_set_values.
IF w_main-kostl BETWEEN lw_set_values-from AND lw_set_values-to.
lflg_in = 'X'.
EXIT.
ENDIF.
ENDLOOP.
IF lflg_in IS NOT INITIAL.
w_main-ryfl = p9219-z41hrbzhfl.
ELSE.
CLEAR w_main-ryfl.
ENDIF.
取系统标准集的时候,有时候需要转换一下,通过shortname转成真正的ID,再通过GET_ALL_VALUES的函数取得所有层次下的值。
注意,集是有上下层关系的,GET_ALL_VALUES会取得所有下层的集包含值和本身包含的值的集合。
CALL FUNCTION 'G_SET_GET_ID_FROM_NAME'
EXPORTING
shortname = s_rfugr-low
IMPORTING
new_setid = l_setnr
EXCEPTIONS
no_set_found = 1
no_set_picked_from_popup = 2
wrong_class = 3
wrong_subclass = 4
table_field_not_found = 5
fields_dont_match = 6
set_is_empty = 7
formula_in_set = 8
set_is_dynamic = 9
OTHERS = 10.
CALL FUNCTION 'G_SET_GET_ALL_VALUES'
EXPORTING
setnr = l_setnr
TABLES
set_values = lt_set_values
EXCEPTIONS
set_not_found = 1
OTHERS = 2.
如果集是多层次组集合,则通过函数K_HIERARCHY_TABLES_READ可以取得集下的所有组,然后再通过组可以取得具体值