功能模块的问题-'RSDRI_INFOPROV_READ'-返回SY-SUBRC = 11

2020-09-10 23:48发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) SAP专家您好, 我正在尝试...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


SAP专家您好,

我正在尝试使用功能模块从BW标准多维数据集中读取数据

'RSDRI_INFOPROV_READ'

。 我收到SY_SUBRC = 11错误。 我不知道代码有什么问题。 我提到了高宝

https://wiki.scn.sap.com/ wiki/display/BI/OT-DBIF-RSDRI_INFOPROV_READ

还有演示程序

RSDRI_INFOPROV_READ_DEMO

对于SY-SUBRC = 11说

  • I_TH_SFC-此内部表包含要返回的特征/导航属性的列表。 请注意,CHAALIAS是特征值的返回列(E_T_DATA)的名称! 如果不匹配,则程序终止(使用sy-subrc = 11)。

我正确输入了名字。

你们能检查我是否想念任何东西。 代码如下。


TYPE-POOLS:rs,rsdrc。

类型:
gt_s_data的开始,
zbpc_emp2(10)类型c,
zbpc_title(32)类型c,
0comp_code(4)类型c,
zrxstatus(20)类型 c,
zbpc_init(32)类型c,
zbpc_site(32)类型c,
zbpc_fiwk(6)类型c,
0costcenter(10)类型c,
gt_s_data的结尾。/p>


g_s_data类型gt_s_data,


带有默认键初始大小10的gt_s_data
的g_t_data类型标准表,

g_s_sfc类型rsdri_s_sfc,
g_th_sfc类型rsdri_th_sfc,

g_s_sfk类型rsdri_s_sfk,
g_th_sfk类型rsdri_th_sfk,

g_s_range_rfc类型rsdri_s_range_rfc,
g_t_range_rfc类型rsdri_t_range_rfc,

g_s_range类型rsdri_s_range,
g_t_range类型rsdri_t_range。


清除g_th_sfc。

* zbpc_emp2
清除g_s_sfc。
*-特征名称
g_s_sfc-chanm ='ZBPC_EMP2'。
* --- G_T_DATA
g_s_sfc-中对应列的名称 chaalias ='ZBPC_EMP2'。
* ---否ORDER-BY
g_s_sfc-orderby =0。
* ---包括在特性列表中
INSERT g_s_sfc插入表g_th_sfc。

* zbpc_title
CLEAR g_s_sfc。
*-特征名称
g_s_sfc-chanm ='ZBPC_TITLE'。
* --- G_T_DATA
g_s_sfc-中对应列的名称 chaalias ='ZBPC_TITLE'。
* ---否ORDER-BY g_s_sfc-orderby =0。
* ---包含在特性列表中
INSERT g_s_sfc插入表g_th_sfc。


* 0comp_code
清除g_s_sfc。
*-特征名称
g_s_sfc-chanm ='0COMP_CODE'。
* --- G_T_DATA中相应列的名称
> g_s_sfc-chaalias ='0COMP_CODE'。
* ---否ORDER-BY
g_s_sfc-orderby = 0。

* zrxstatus
清除g_s_sfc。
*-特性名称
g_s_sfc-chanm ='ZRXSTATUS'。
* --- G_T_DATA
g_s_sfc-中对应列的名称 chaalias ='ZRXSTATUS'。
* ---否ORDER-BY g_s_sfc-orderby =0。
* ---包括在特性列表中
INSERT g_s_sfc插入表g_th_sfc。

* zbpc_emp2
清除g_s_sfc。
*-特征名称
g_s_sfc-chanm ='ZBPC_INIT'。
* --- G_T_DATA
g_s_sfc-中对应列的名称 chaalias ='ZBPC_INIT'。
* ---否ORDER-BY g_s_sfc-orderby =0。
* ---包括在特性列表中
INSERT g_s_sfc插入表g_th_sfc。

* zbpc_title
清除g_s_sfc。
*-特征名称
g_s_sfc-chanm ='ZBPC_SITE'。
* --- G_T_DATA
g_s_sfc-中对应列的名称 chaalias ='ZBPC_SITE'。
* ---否ORDER-BY g_s_sfc-orderby =0。
* ---包括在特征列表中
INSERT g_s_sfc插入表g_th_sfc。


* 0comp_code
清除g_s_sfc。
* ---特征名称
g_s_sfc-chanm ='ZBPC_FIWK'。
* --- G_T_DATA g_s_sfc-chaalias ='ZBPC_FIWK'。
*-否ORDER-BY
g_s_sfc-orderby = 0。

* zrxstatus
清除g_s_sfc。
*-特性名称
g_s_sfc-chanm ='0COSTCENTER'。
* --- G_T_DATA
中相应列的名称
g_s_sfc- chaalias ='0COSTCENTER'。
* ---否ORDER-BY g_s_sfc-orderby =0。
* ---包括在特性列表中
INSERT g_s_sfc插入表g_th_sfc。

*对于以下关键指标,应返回:
* 0INVCD_CST,0INVCD_VAL

清除g_th_sfk。

* 0INVCD_CST
CLEAR g_s_sfk。
* ---关键图形名称
g_s_sfk-kyfnm ='ZCOUNT'。
*-G_T_DATA
g_s_sfk中对应列的名称 -kyfalias ='ZCOUNT'。
* ---聚合
g_s_sfk-aggr ='SUM'。
* ---包含在关键指标列表中
INSERT g_s_sfk插入表g_th_sfk。

* 0INVCD_VAL
清除g_s_sfk。
* ---关键图形名称
g_s_sfk-kyfnm ='0AMOUNT'。
*-G_T_DATA
g_s_sfk中对应列的名称 -kyfalias ='0AMOUNT'。
* ---聚合
g_s_sfk-aggr ='SUM'。
* ---包括在关键指标列表中
INSERT g_s_sfk插入表g_th_sfk。


清除g_t_range。

清除g_s_range。

* ---特征名称
g_s_range-chanm ='ZBPC_FIWK'。
* ---包括或排除条件?
g_s_range-sign = rs_c_range_sign-includes。
*- -比较运算符
g_s_range-compop = rs_c_range_opt-between。
*-低值
g_s_range-low ='201901'。
*-高值
g_s_range-high ='201952'。
* ---包括在限制列表中
APPEND g_s_range至g_t_range。


清除g_s_range。
*-特征名称
g_s_range-chanm ='0COMP_CODE'。
* ---包含或排除条件?
g_s_range-sign = rs_c_range_sign-includes。
*-比较运算符
g_s_range-compop = rs_c_range_opt-equal。
* ---低值
g_s_range-low ='2100'。
*- -纳入限制列表
APPEND g_s_range至g_t_range。


数据:g_end_of_data类型rs_bool,
g_first_call类型rs_bool。

* ---当读取最后一个数据
*数据包时,此变量将设置为TRUE
g_end_of_data = rs_c_false。
* ---此变量指示这是否为初始变量
*调用读取模块或进行后续调用(
*仅检索已选择的数据)
g_first_call = rs_c_true。


其中g_end_of_data = rs_c_false。

呼叫功能'RSDRI_INFOPROV_READ'
导出
i_infoprov ='ZBPC_HC03'
i_th_sfc = g_th_sfk
i_th_sfk = g_th_sfk
i_t_range = g_t_atum
i-d_ave
= rs_c_false
i_save_in_file = rs_c_false
i_packagesize = 10
i_authority_check = rsdrc_c_authchk-read
* i_debug ='X'
IMPORTING
e_t_data = g_t_data
g_ e_end_of_of 更改
c_first_call = g_first_call
例外情况
非法输入= 1
非法输入sfc = 2
非法输入sfk = 3
非法输入范围= 4
非法输入表= 5
否授权= 6
非法下载= 8
非法表名= 9
其他= 11。

IF sy-subrc <>0。
BREAK-POINT。 " #EC NOBREAK
退出。
ENDIF。

为了示例,

*:打印返回的数据
PERFORM print_result。

ENDWHILE。


* ------------------------------------------- -------------------------- *
* FORM print_result
* ------------- -------------------------------------------------- ------ *
*
* ----------------------------------- ---------------------------------- *
FORM打印结果。

将g_t_data循环到g_s_data中。
写:/g_s_data-zbpc_emp2,
g_s_data-zbpc_title,
g_s_data-0comp_code,
g_s_data-zbpc_init,
g_s_data-zbpc_init。 ENDLOOP。


ENDFORM。