如何在 ABAP 中创建两个复合外键

How to create two compound foreign keys in ABAP

我得到了三个 table。 user taguser_taguser的初级是iduser+clienttag的初级是idtag+client。现在我想为这两个主键 table user_tag 创建外键 而无需在那里有两次客户端。

我该怎么做?在条目中如何显示help/check(输入可用的只有一个来源,而client有两个来源)?

这里是例子:

client|idtag     client|iduser
-------------    -------------
  1   |  1         1   |  3   
  1   |  2         1   |  4  
  2   |  1         2   |  3    

我的新 table 的可能值:

client|idtag|iduser
--------------------
  1   |  1  |  3
  1   |  1  |  4    
  1   |  2  |  3 
  1   |  2  |  4  
  2   |  1  |  3    

现在在我的支票中table 我想检查一下我的钥匙在里面 table。如果我不检查客户端,我将有更多我不想要的可能性(不一致):

client|idtag|iduser
--------------------
  2   |  1  |  4    
  2   |  2  |  3 
  2   |  2  |  4  

只需考虑 CLIENT(或 MANDT)之类的隐含的东西,就像它不存在一样,只需将外键定义为 IDTAG, IDUSER 就好像你是为 MySQL 或 Postgres 之类的数据库执行此操作。

我不知道您的要求是什么,但总有可能在 SAP 中定义透明表不依赖于客户端,但这不太可能用于应用程序数据,而是用于跨客户端配置。

只是从另一个角度来解释:当您登录 SAP 时,您的登录是特定于客户端的。

当你写一个select喜欢

SELECT * FROM USER.
...
ENDSELECT.

您只能获得与实际客户有关的条目。系统在实际客户端上限制 selection 显式。

如果您想要一个独立于客户端的 selection,您必须在 select 语句中使用加法 CLIENT SPECIFIC

也就是说:正常情况下,不同客户端的数据是不会混在一起的。因此,如果您的 user_tag 只有一个客户端密钥,也没有问题。