条件联接-HANA计算视图(脚本或图形)

2020-08-23 01:12发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 如何在脚本视图或...

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

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


大家好,

如何在"脚本视图"或"图形视图"中执行此操作? 基本上,我想在计算视图中应用授权,因为我们的RS2HANA_AUTH_RUN运行不正常。 我已经对此提出了一张SAP罚单,但他们还没有答复。

--------------------------------------------------- -------------------------------------------------- ------------------

空白表示所有访问权限

--------------------------------------------------- -------------------------------------------------- ------------------

这是我的示例数据。

--------------------------------------------------- -------------------------------------------------- ------------------

--------------------------------------------------- -------------------------------------------------- ------------------

--------------------------------------------------- -------------------------------------------------- ------------------

--------------------------------------------------- -------------------------------------------------- ------------------

假设我是用户X,我可以访问的数据应该是COMPCODE = A,CUSTOMER = 100和200。

--------------------------------------------------- -------------------------------------------------- ------------------

如果我是用户Y,则可以访问ALL DATA(无限制)。 空白表示全部。

--------------------------------------------------- -------------------------------------------------- ------------------

对于用户Z,我可以访问COMPCODE = B和CUSTOMER = ALL。

谢谢。

输了

付费偷看设置
发送
6条回答
渐行渐远_HoldOn
1楼-- · 2020-08-23 01:40

嗨,

您的示例关于用户X是否正确,如果B包含COMPCODE = C且CUSTOMER = 200会怎样?

选择B. *
 从B
 存在的地方(
   选择'X'
   从A
   A.USERNAME = CURRENT_USER
     AND(A.COMPCODE =''AND A.CUSTOMER =''
         或A.COMPCODE =''AND A.CUSTOMER = B.CUSTOMER
         或A.COMPCODE = B.COMPCODE和A.CUSTOMER =''
         或A.COMPCODE = B.COMPCODE和A.CUSTOMER = B.CUSTOMER
     )
 )
悠然的二货
2楼-- · 2020-08-23 01:24

您好达尼尔·扎卡耶夫

是的,示例是 正确。

关于您的问题,如果用户B包含COMPCODE = C而CUSTOMER = 200,该怎么办? 然后将不会显示任何数据。

或者您在问,如果表B包含COMPCODE = C而CUSTOMER = 200,该怎么办? 然后结果仍然是下面的2行。

谢谢。

Loed

SAP砖家
3楼-- · 2020-08-23 01:45

尝试以下语法:

 SELECT
 A.USERNAME,
 B.COMPCODE,
 客户
 材料
 从
 :TABLE_A A
 联接:TABLE_B B
 在B.COMPCODE =上(如果A.COMPCODE =''然后是B.COMPCODE ELSE A.COMPCODE结束)
 AND B.CUSTOMER =(当A.CUSTOMER =''THEN B.CUSTOMER ELSE A.CUSTOMER END的情况)
 

输出将如下所示:

软件心理学工程师
4楼-- · 2020-08-23 01:25

1。 如果表A中的条目不正确,则联接可能导致B中的重复项。因此,您需要提供唯一性。 或使用EXISTS。

2。 当COMPCODE和CUSTOMER无关时(例如,几个COMPCODE中存在CUSTOMER),例如用户X和表A中COMPCODE为空的行,结果可能不正确。 CUSTOMER = 200,然后SQL查询为用户X返回此记录,但是我认为这是错误的。 因此,我们需要知道对于每个客户而言,COMPCODE是否都是唯一的?

3。 瞧瞧,您写道,对于用户X,我们只需要检查COMPCODE =" A",但是在Konrad表达式中,用户X的第二行加入了,而没有检查COMPCODE不为空的第一条记录是否存在……

绿领巾童鞋
5楼-- · 2020-08-23 01:45

我的意思是表B包含{COMPCODE = C,CUSTOMER = 200}。

由于用户X在表A中的行COMPCODE =",因此他必须能够在表B中看到此行...如果您说"不",我想知道"为什么"。

小c菟菟
6楼-- · 2020-08-23 01:29

嗨,Loed,

您检查了我的表情吗? 对于空行,它考虑了已填充的COMPCODE/CUSTOMER。 另外,我的表达式无法使用数据,因此不会产生重复数据。

或者在表达式的结果中需要USERNAME字段? 如果您写的是RS2HANA tcode,则使用BW,因此所有BW用户的数据库用户名都将相同,但是某些BI工具(BOBJ/SAC)使用的CV具有唯一的数据库用户名?

br,丹尼尔

一周热门 更多>