入参根据集名称和成本控制范围返回成本要素的集合,结合两个函数获取;
涉及集的表、T-DOCE、函数组、函数
Tcode:
GS01 Create set
GS02 Change Set
GS03 Display Set
GS04 Delete set
GS07 Exports sets
GS08 Import sets
GS09 Copy sets from client
表:
SETCLS
SETCLST
SETHEADER
SETHEADERT
SETLEAF
SETNODE
SETLINET
函数组:
GSAC
GSGF
函数:
G_SET_ENCRYPT_SETID
G_SET_GET_ALL_VALUES
FUNCTION zlyfm_hierarchy_tables_read.
*"----------------------------------------------------------------------
*"*"局部接口:
*" IMPORTING
*" REFERENCE(I_SETNAME) TYPE SETNAMENEW
*" REFERENCE(I_KOKRS) TYPE SETHIER-KOKRS
*" EXPORTING
*" REFERENCE(E_INFO) TYPE GRPHINFO
*" REFERENCE(E_SUBRC) TYPE SY-SUBRC
*" TABLES
*" T_ACCOUNT STRUCTURE ZLY_S_COSTELEMENTS
*" CHANGING
*" REFERENCE(I_OVERWRITE) TYPE SY-DATAR DEFAULT 'X'
*"----------------------------------------------------------------------
DATA lt_nodes TYPE gseth_node_tab.
DATA lt_values TYPE gseth_val_tab.
DATA ls_values TYPE grpvalues.
DATA lv_setid TYPE sethier-setid.
DATA ls_setinfo TYPE setinfo.
CALL FUNCTION 'G_SET_GET_ID_FROM_NAME'
EXPORTING
shortname = i_setname
IMPORTING
new_setid = lv_setid
set_info = ls_setinfo
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.
e_subrc = sy-subrc.
CHECK e_subrc IS INITIAL.
CALL FUNCTION 'K_HIERARCHY_TABLES_READ'
EXPORTING
e_class = ls_setinfo-setclass
e_setid = lv_setid
e_kokrs = i_kokrs
TABLES
t_nodes = lt_nodes
t_values = lt_values
CHANGING
c_info = e_info
c_overwrite = i_overwrite
EXCEPTIONS
no_controlling_area = 1
no_chart_of_account = 2
different_controlling_areas = 3
different_chart_of_accounts = 4
set_not_found = 5
illegal_field_replacement = 6
illegal_table_replacement = 7
fm_raise = 8
convert_error = 9
no_overwrite_standard_hier = 10
no_bukrs_for_kokrs = 11
OTHERS = 12.
CHECK e_subrc IS INITIAL.
DELETE lt_values WHERE vfrom IS INITIAL AND vto IS INITIAL.
*返回集名中起始和截止科目
LOOP AT lt_values INTO ls_values.
t_account-setname = i_setname.
t_account-valsign = 'I'.
t_account-valoption = 'BT'.
IF ls_values-vto IS INITIAL.
t_account-valto = ls_values-vfrom.
ELSE.
t_account-valfrom = ls_values-vfrom.
t_account-valto = ls_values-vto.
ENDIF.
APPEND t_account .CLEAR:t_account.
ENDLOOP.
ENDFUNCTION.
其次 函数组KKHI下面很多函数非常有用,其中K_HIERARCHY_TABLES_READ也可以读取成本中心组,利润中心组等,GSGF也同样可以达到功效;
另外:该函数BAPI_COSTCENTERGROUP_GETLIST 的函数组中也有许多相关获取成本中心组的方法 Object BUS1112 (Cost Center Group) - Method GetList