今天我们来学习FICO模块的成本要素明细读取函数K_HIERARCHY_TABLES_READ。
一般来说,有了这个函数之后,不用自己去写SQL读取了,真是爽歪歪。部分同学说调用的时候有性能瓶颈。
我只能说是您调用的方式不对了。老顾问说,性能问题?不存在,梭哈即可~
导入参数:
参数名称 | 关联类型 | 可选的 | 说明 |
E_CLASS | SETHIER-SETCLASS | 必选 | 组类型 |
E_SETID | SETHIER-SETID | 必选 | 集的标识 |
E_KOKRS | SETHIER-KOKRS | 必选 | 控制范围 |
E_MANDT | SY-MANDT | 可选 | 当前用户的客户端标识 |
E_MASTER_DATA | GRPHP1 | 可选 | Set/Get 参数 HP1的结构 |
E_STRUCTURE | GRPHP2 | 可选 | Set/Get 参数 HP2 的结构 |
E_REPLACE_CLASS | SETHIER-SETCLASS | 可选 | 组类型 |
E_REPLACE_UNIT | SETHIER-KOKRS | 可选 | 控制范围 |
E_SUFFIX | GRPDYNP-SUFFIX | 可选 | 复制组的后缀 |
导出参数:
参数名称 | 关联类型 | 说明 |
I_DOUBLE_CHECK | FLAG | |
I_MASTER_DATA | GRPHP1 |
备注
例外:
参数名称 | 说明 |
NO_CONTROLLING_AREA | 控制区域不存在 |
NO_CHART_OF_ACCOUNT | 无帐户计划 |
DIFFERENT_CONTROLLING_AREAS | 不同的控制区域 |
DIFFERENT_CHART_OF_ACCOUNTS | 不同帐户的图表 |
SET_NOT_FOUND | 找不到集合 |
ILLEGAL_FIELD_REPLACEMENT | 非法的字段替换 |
ILLEGAL_TABLE_REPLACEMENT | 非法的表替换 |
CONVERT_ERROR | 转换错误 |
NO_OVERWRITE_STANDARD_HIER | 无覆盖标准 |
示例demo代码如下:
*bapi相关参数定义
DATA: LT_PARM LIKE STANDARD TABLE OF CMPERSPARM WITH HEADER LINE,
LT_SET LIKE STANDARD TABLE OF REPP_SCREEN-KOSTL_SET WITH HEADER LINE.
DATA: LD_KOKRS LIKE TKA01-KOKRS.
**********************************************
*中间省略LT_PARM数据获取
**********************************************
* E_KOKRS数据赋值
LOOP AT LT_PARM WHERE FIELDNAME = ‘KOKRS’.
LD_KOKRS = LT_PARM-LOW.
ENDLOOP.
* E_SETID数据赋值
LOOP AT LT_PARM WHERE FIELDNAME = ‘KOSTL’ OR
FIELDNAME = ‘KOSTL_SETX’ OR
FIELDNAME = ‘KOSTL_SET’.
CHECK NOT LT_PARM-LOW IS INITIAL.
CASE LT_PARM-FIELDNAME.
WHEN ‘KOSTL’.
LT_KOSTL_TAB-SIGN = LT_PARM-SEL_SIGN.
LT_KOSTL_TAB-OPTION = LT_PARM-SEL_OPTION.
LT_KOSTL_TAB-LOW = LT_PARM-LOW.
LT_KOSTL_TAB-HIGH = LT_PARM-HIGH.
APPEND LT_KOSTL_TAB.
WHEN ‘KOSTL_SETX’.
CALL FUNCTION ‘G_SET_ENCRYPT_SETID’
EXPORTING
SETCLASS = ‘0101’
SHORTNAME = LT_PARM-LOW
KOKRS = LD_KOKRS
IMPORTING
SETID = LT_SET
EXCEPTIONS
NO_CO_AREA_SPECIFIED = 1
ILLEGAL_SETCLASS = 2
OTHERS = 3.
IF SY-SUBRC EQ 0.
COLLECT LT_SET.
ENDIF.
WHEN ‘KOSTL_SET’.
LT_SET = LT_PARM-LOW.
COLLECT LT_SET.
ENDCASE.
ENDLOOP.
*调用bapi
IF NOT LT_SET[] IS INITIAL.
DATA: LT_VALUES LIKE STANDARD TABLE OF RGSB4 WITH HEADER LINE,
L_MASTER_DATA LIKE GRPHP1,
L_STRUCTURE LIKE GRPHP2,
L_REPLACE_CLASS LIKE SETHIER-SETCLASS,
L_REPLACE_UNIT LIKE SETHIER-KOKRS,
L_SUFFIX LIKE GRPDYNP-SUFFIX,
L_INFO LIKE GRPHINFO,
L_OVERWRITE LIKE SY-DATAR,
LT_NODES TYPE GSETH_NODE_TAB,
LS_NODE TYPE GSETH_NODE_LINE,
LS_VAL TYPE GSETH_VAL_LINE,
LT_VAL TYPE GSETH_VAL_TAB,
LT_PAR LIKE STANDARD TABLE OF MPO_COPERSCC-NODE
WITH HEADER LINE,
LD_CSKT LIKE CSKT,
LD_LEVEL LIKE GRPOBJECTS-HLEVEL.
LOOP AT LT_SET.
CALL FUNCTION ‘K_HIERARCHY_TABLES_READ’
EXPORTING
E_CLASS = ‘0101’
E_SETID = LT_SET
E_KOKRS = LD_KOKRS
E_MANDT = SY-MANDT
E_MASTER_DATA = L_MASTER_DATA
E_STRUCTURE = L_STRUCTURE
E_REPLACE_CLASS = L_REPLACE_CLASS
E_REPLACE_UNIT = L_REPLACE_UNIT
E_SUFFIX = L_SUFFIX
TABLES
T_NODES = LT_NODES
T_VALUES = LT_VAL
CHANGING
C_INFO = L_INFO
C_OVERWRITE = L_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
OTHERS = 11.
ENDLOOP.
ENDIF.
请问,您学会了么?
我的微信公众号【 hot583 】 或者在这个链接联系我
本文链接 :http://www.hot583.com/2022/06/21/k_hierarchy_tables_read/
本文为作者原创,如果这篇文章对您有用,欢迎转载,
转载请务必注明来源《今日热点在看》http://www.hot583.com/
微信原文《全文完》