客户退出-分析授权问题

2020-08-27 14:28发布

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

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


专家们,

我正在为实现分析授权安全性而实施客户出口。 我使用的是7.4 SP5。 我找到了两个SCN指南,它们指导了我如何实施,并且面临两个问题,下面将对这两个问题进行说明。 请帮忙!

背景如下:

BW系统中的Z表:ZCOUNTRY_USER

该表中包含MANDT,UNAME和COUNTRY,它们都是键。 用户将输入此表中,并被分配一个允许查看的国家/地区。 (这就是目标)。

我创建了退出变量:ZSLDTO_EX_REG

进入CMOD并做了以下声明:

***安全客户退出ZSLDTO_EX_REG的声明***

数据:zcountry_user的it_zcountry_user类型标准表,

wa_zcountry_user类型TYPE zcountry_user。

数据:low_country,例如loc_var_range-low。

***安全客户退出声明的结束***

然后在case语句之间添加以下代码:

" ZSLDTO_EX_REG"时。

如果i_step EQ为"​​ 1"。

清除wa_zcountry_user。

选择*从zcountry_user插入表it_zcountry_user,其中uname = sy-uname。

如果sy-subrc = 0。

将it_zcountry_user循环到wa_zcountry_user。

l_s_range-low = wa_zcountry_user-country。

l_s_range-sign ='I'。

l_s_range-opt ='EQ'。

APPEND l_s_range到e_t_range。

清除:l_s_range,wa_zcountry_user。

ENDLOOP。

ENDIF。

ENDIF。

然后在case语句后添加:

*** BW安全性验证-可变屏幕

如果i_step EQ为'3'。

在i_t_var_range处循环运行,在INTO loc_var_range中,vnam ='ZSLDTO_EX_REG'。

清除:l_s_range。

low_country = loc_var_range-low。

***如果存储在自定义映射表中,则获取值***

单选*从zcountry_user输入INTO wa_zcountry_user

国家EQ low_country和uname EQ sy-uname。

IF sy-subrc NE 0。

通话功能'RRMS_MESSAGE_HANDLING'

导出

i_class ='RSBBS'

i_type ='E'

i_number ='000'

i_msgv1 ='无国家授权-'

i_msgv2 = loc_var_range-low

i_msgv3 =',输入其他国家或地区请求访问权限。'

i_msgv4 = sy-uname

例外情况

其他= 2。

*引发异常

再次升起。

ENDIF。

ENDLOOP。

ENDIF。

我已经将变量ZSLDTO_EX_REG分配给了分析授权ZCTR_TEST1,当我为用户分配了ZCTR_TEST1分析授权时,甚至在BW变量屏幕出现之前,我都会收到一条错误消息。 使用不同的BEx工具时,错误消息有所不同,但是当我为用户分配AA时,我什至没有进入可变屏幕。

这是我在RSRT中运行它时的错误消息:

错误消息无法使用对象折叠服务

信息消息对象已折叠>>行:87 Inc:LRRMSU13编:SAPLRRMS

严重消息"对象崩溃"程序CL_RSR中的系统错误,格式为GET_COB_PRO-01-

信息消息对象已折叠>>行:87 Inc:LRRMSU13编:SAPLRRMS

严重消息"对象崩溃"程序CL_RSR中的系统错误,格式为GET_COB_PRO-01-

当我不向用户分配分析授权时,我开始执行查询,变量" GB"出现在国家的变量屏幕上,符合预期。 当我执行查询时,我得到"没有授权"并且没有数据返回。

我在rsecadmin中进行了授权跟踪,发现下面的信息确实对国家/地区授权失败。

请让我知道您是否对如何解决有任何想法。

谢谢

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

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


专家们,

我正在为实现分析授权安全性而实施客户出口。 我使用的是7.4 SP5。 我找到了两个SCN指南,它们指导了我如何实施,并且面临两个问题,下面将对这两个问题进行说明。 请帮忙!

背景如下:

BW系统中的Z表:ZCOUNTRY_USER

该表中包含MANDT,UNAME和COUNTRY,它们都是键。 用户将输入此表中,并被分配一个允许查看的国家/地区。 (这就是目标)。

我创建了退出变量:ZSLDTO_EX_REG

进入CMOD并做了以下声明:

***安全客户退出ZSLDTO_EX_REG的声明***

数据:zcountry_user的it_zcountry_user类型标准表,

wa_zcountry_user类型TYPE zcountry_user。

数据:low_country,例如loc_var_range-low。

***安全客户退出声明的结束***

然后在case语句之间添加以下代码:

" ZSLDTO_EX_REG"时。

如果i_step EQ为"​​ 1"。

清除wa_zcountry_user。

选择*从zcountry_user插入表it_zcountry_user,其中uname = sy-uname。

如果sy-subrc = 0。

将it_zcountry_user循环到wa_zcountry_user。

l_s_range-low = wa_zcountry_user-country。

l_s_range-sign ='I'。

l_s_range-opt ='EQ'。

APPEND l_s_range到e_t_range。

清除:l_s_range,wa_zcountry_user。

ENDLOOP。

ENDIF。

ENDIF。

然后在case语句后添加:

*** BW安全性验证-可变屏幕

如果i_step EQ为'3'。

在i_t_var_range处循环运行,在INTO loc_var_range中,vnam ='ZSLDTO_EX_REG'。

清除:l_s_range。

low_country = loc_var_range-low。

***如果存储在自定义映射表中,则获取值***

单选*从zcountry_user输入INTO wa_zcountry_user

国家EQ low_country和uname EQ sy-uname。

IF sy-subrc NE 0。

通话功能'RRMS_MESSAGE_HANDLING'

导出

i_class ='RSBBS'

i_type ='E'

i_number ='000'

i_msgv1 ='无国家授权-'

i_msgv2 = loc_var_range-low

i_msgv3 =',输入其他国家或地区请求访问权限。'

i_msgv4 = sy-uname

例外情况

其他= 2。

*引发异常

再次升起。

ENDIF。

ENDLOOP。

ENDIF。

我已经将变量ZSLDTO_EX_REG分配给了分析授权ZCTR_TEST1,当我为用户分配了ZCTR_TEST1分析授权时,甚至在BW变量屏幕出现之前,我都会收到一条错误消息。 使用不同的BEx工具时,错误消息有所不同,但是当我为用户分配AA时,我什至没有进入可变屏幕。

这是我在RSRT中运行它时的错误消息:

错误消息无法使用对象折叠服务

信息消息对象已折叠>>行:87 Inc:LRRMSU13编:SAPLRRMS

严重消息"对象崩溃"程序CL_RSR中的系统错误,格式为GET_COB_PRO-01-

信息消息对象已折叠>>行:87 Inc:LRRMSU13编:SAPLRRMS

严重消息"对象崩溃"程序CL_RSR中的系统错误,格式为GET_COB_PRO-01-

当我不向用户分配分析授权时,我开始执行查询,变量" GB"出现在国家的变量屏幕上,符合预期。 当我执行查询时,我得到"没有授权"并且没有数据返回。

我在rsecadmin中进行了授权跟踪,发现下面的信息确实对国家/地区授权失败。

请让我知道您是否对如何解决有任何想法。

谢谢

付费偷看设置
发送
4条回答
DafaDDDa
1楼 · 2020-08-27 15:15.采纳回答

嗨,亚当,

恐怕您的用户出口变量实现错误。 分析授权中的用户出口变量将在i_step = 0中进行处理。您仅应在此处理时间进行编程,而无需进行其他操作。

还请与RSEC_GET_USERNAME功能模块一起确定分析授权用户名(而不是sy-uname)。 这将与"分析授权"跟踪工具一起以适当的方式工作。

 ...
 当" ZSLDTO_EX_REG"时。
   数据:
     l_username类型xubname。
如果i_step EQ为'0'。 调用函数" RSEC_GET_USERNAME" 输入 e_username = l_username。 刷新it_zcountry_user。 SELECT * FROM zcountry_user进入表it_zcountry_user,其中uname = l_username。 如果sy-subrc = 0。 将it_zcountry_user循环到wa_zcountry_user中。 清除:l_s_range,wa_zcountry_user。 l_s_range-sign ='I'。 l_s_range-opt ='EQ'。 l_s_range-low = wa_zcountry_user-country。 l_s_range-sign ='I'。 附录l_s_range至e_t_range。 结局。 万一。 万一。 ...

请注意编程验证(i_step = 3)。 首先要集中精力使i_step = 0变量正常工作。

此外,请照常在BEx查询中使用Authorization变量。 您也可以将它们设置为"输入准备就绪",以便将它们用作默认值(类似于i_step = 1)。

最诚挚的问候,

Sander

软件心理学工程师
2楼-- · 2020-08-27 15:03

你好@Sander Van Willigen,

我在istep 0中编写了一个客户退出变量逻辑,并在BEx查询中使用了授权变量。 但是,出口根本没有被调用。 仅当我在BEx中使用客户出口变量时,才会调用客户出口代码。

我没有在istep 1中写任何东西。

DafaDDDa
3楼-- · 2020-08-27 15:11

嗨,亚当,

ZSLDTO_EX_REG:对于此变量,它从ZCOUNTRY_USER在I_STEP 1中填充数据, 再次说明为什么您已经基于用户(执行报告的用户)填写了I_STEP 1,所以在I_STEP 3中编写了代码。


谢谢您,

Nanda


邮件的编辑者: 南达·安南(Nanda Anantha)

闻人可可
4楼-- · 2020-08-27 15:23

嗨,南达,

我无法这样做,因为我检查了0COUNTRY的身份验证相关性,因为我确实为其他用户创建了其他一些分析授权。 但是我确实想到了这个……

一周热门 更多>