SAP ABAP BAPI 50连载38-K_HIERARCHY_TABLES_READ成本要素组明细

今天我们来学习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/

微信原文《全文完》

今日热点在看SAP HOT583