今天同事在HANA STUDIO中用属性视图开发时,遇到有某张表的权限且能正常查看,但是放到Projection中时再查看这个Projection时发现空数据,我一看,好家伙,这不是我好多年前踩过的坑吗,如果遇到相同的问题,那就可能就是你模型Default Client的配置问题了
而在HANA Studio中,模型默认的client为Session Client,这样出现开头说的那种情况就很好理解了
在HANA中,只有极少数的表符合下列要求:
如果在实际的环境中,你有一张表恰好满足了这些条件,那么恭喜你,你就会出现开头说的那种百思不得骑姐的问题。
要注意的是,只要表里有一个字段满足上述条件就会出发HANA的机制,无论你是否使用这个字段。
点开HANA>Security>Users>你自己的用户,然后见下图最后一行,可以看到,我这边用户默认的Session Client为空
--创建一张满足Session Client会生效的表
CREATE COLUMN TABLE "SUSER"."TEMP_ADIL0317" (
"MANDT" NVARCHAR(3),
"NAME" NVARCHAR(5),
"SSEX" VARCHAR(5),
PRIMARY KEY ("MANDT")) UNLOAD PRIORITY 5 AUTO MERGE
;
--准备一条数据
insert into "SUSER"."TEMP_ADIL0317" values('100','Adil','男');
就是这么朴实无华的一个模型,看结果
我的数呢??????????????????
在模型的S emantics>View Properties中,将Default Client调整为Cross Client
当你所用到的表刚刚刚刚好满足那些条件的时候,HANA模型会自动将MANDT或者CLENT作为一个过滤条件,去过滤你默认的seeion client,这时候当你的默认值与底表中的MANDT或者CLIENT不相同时,则会出现你啥也看不到的情况。
然而我感觉这可能是SAP官方为了解决不同用户在使用同一张表时,可以为用户做权限的一种方式吧。
如果你有什么更好的理解或见解,请在下方留言共同交流。