外键检查表分配错误

时间:2016-01-18 06:10:38

标签: sap abap sap-data-dictionary

我有两个表:ZDEPARTMENT01ZEMPLOY01

ZDEPARTMENT01有一个外键DEPHEAD,其数据元素为域ZPERSONNEL_NO的{​​{1}}(NUMC,10)。 ZPERSONNEL_NO有一个主键ZEMPLOY01,其数据元素为域EMP_NUM的{​​{1}}(NUMC,10)。

ZEMP_NUM是外键,ZEMP_NUM是检查键,ZDEPARTMENT01-DEPHEADZEMPLOY01-EMP_NUM具有值表:ZDEPARTMENT01-DEPHEAD

在为ZPERSONNEL_NO设置检查表时,我收到错误检查表ZEMPLOY01没有关键字段,字段为DEPHEAD

的域名ZPERSONNEL_NO

即使两个域具有相同的数据类型和长度(但不同的域),系统也无法识别外键表并检查表关系。

该文档说明:系统尝试将检查表的关键字段分配给具有相同域的表的字段。这是否意味着除了数据类型和长度之外,外键表和检查表之间的域名应该相同?

如何解决这个问题?

enter image description here

enter image description here

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:4)

是的,这意味着什么。您有两个数据元素: ZEMP_NUM ZPERSONNEL_NO 。如果在表中双击这些,则将导航到数据元素定义。在那里,您会看到分配给每个人的。这些应该是相同的,所以使它们相同。

以这种方式思考: 为可能出现在多个位置的数据提供结构一致性。您不会在某些地方拥有10位数的员工ID,而在其他地方则不会有8位数,否则会导致10位数的记录被截断。同样,如果您的数字用完并需要将员工ID扩展到11位数,那么您需要确保在每个使用过的表格中,它都会发生变化。 域名允许您这样做。域还允许您配置默认查找关系(值表)或可以选择的固定值(例如,Employee表)。

数据元素提供上下文相关性。您会注意到,除了提供数据元素的域之外,您还可以定义字段标签和标题,还可以分配自定义搜索帮助。这些允许您以与当前活动相关的方式向用户显示该字段。在这种情况下,您可以为员工"部门主管"贴上标签,因为如果有一个字段用于保存部门主管的ID并且仅显示为"员工&#34,则会令人困惑。 ;。您还可以添加一个搜索帮助,将Employee列表限制为仅标记为" Managers"。

答案 1 :(得分:2)

正如消息中已经说过的那样,您必须调整数据元素以使用相同的域:

  

检查表必须具有检查域的关键字段   字段已分配。

(documentation)

我对此并不完全确定,但我相信这背后的基本原理是,这将阻止您更改其中一个表字段定义,而不会同时更改另一个。

答案 2 :(得分:0)

我认为您的问题是关键字段定义。表' ZEMPLOY01'有关键领域' CARRIER'和' EMPNUM'如果你想要那个外键' DEPHEAD'表' ZDEPARTMENT01'如果你有两个选择:

  1. 更改表格' ZEMPLOY01'中定义的关键字段。只需设置“EMPNUM'作为你唯一的关键领域然后尝试建立关系。

  2. 添加字段' CARRIER'到表' ZDEPARTMENT01'然后尝试建立关系。

  3. 请确认。

    希望它有所帮助。