본문 바로가기

ABAP 프로그래밍 개념/ABAP Data Dictioanry

1.4 Foreign Keys

외래 키(Foreign keys)는 테이블 간의 관계를 정의합니다. 한 테이블의 필드가 다른 테이블에서 키 필드로 존재하는 경우, 두 테이블은 외래 키 관계에 있다고 말합니다. 필드가 키로 존재하는 테이블을  체크 테이블(check table)이라고 하며, 다른 테이블은 외래 키 테이블(foreign key table)이라고 합니다.

SFLIGHT 테이블의 PLANETYPE 필드는 SAPLANE 테이블에서 키 필드로 존재합니다. 여기서 SFLIGHT 테이블은 외래 키 테이블(foreign key table)이며, SAPLANE 테이블은 체크 테이블(check table)입니다.

체크 테이블을 사용하면 외래 키 테이블의 필드에 대해 자동 입력 유효성 검사를 수행할 수 있습니다. 이를 통해 데이터 무결성이 유지되며 잘못된 데이터가 시스템에 입력되지 않도록 할 수 있습니다. 예를 들어, MATNR 필드를 가진 사용자 정의 테이블이 있고, 이 필드에는 자재 마스터 테이블 MARA에서 유지되는 유효한 자재 번호만 입력되어야 하는 경우, MARA를 체크 테이블로 사용하여 외래 키 관계를 생성할 수 있습니다.

사용자가 사용자 정의 테이블에 자재 번호를 입력할 때, 시스템은 자동으로 해당 레코드가 MARA 테이블에 존재하는지 확인합니다. 외래 키 관계는 ABAP 데이터 사전에서만 생성되며, 데이터베이스에는 생성되지 않습니다. 이 체크는 사용자가 레코드를 화면을 통해 입력할 때에만 체크 테이블을 대상으로 수행됩니다. Open SQL 문을 사용하여 레코드를 업데이트하는 경우에는 체크가 수행되지 않습니다. Open SQL 문을 프로그래밍할 때에는 체크 테이블을 수동으로 고려하여 프로그램에서 확인해야 합니다.

외래 키 관계를 만드려면 다음과 같은 단계를 빠르면 됩니다.

1. Table Maintenance 화면에서, 필드를 클릭하고 Foreign Keys라는 아이콘을 클릭합니다.

2. Value Table이 필드의 도메인에 유지되면, 시스템은 Value Table을 기반으로 제안을 생성할지 묻는 프롬프트를 표시합니다. Value Table은 데이터 엘리먼트에 첨부된 도메인에서 유지됩니다.. Value Table은 필드에 대한 가능한 항목을 지정하지만, 어떤 유효성 검사도 수행하지 않습니다.

체크 테이블은 필드 입력에 대해 유효성 검사를 수행합니다. 대부분의 경우, Value Table과 체크 테이블은 동일할 것입니다. 그렇지 않은 경우, 값 테이블은 가능한 항목으로 값을 제안할 수 있고, 체크 테이블은 해당 항목을 거부할 수 있습니다. 시스템 제안을 수락하거나 다른 테이블을 체크 테이블로 유지할 수 있습니다.

3. Change Foreign Key 화면에서 아래 옵션에 값을 입력할 수 있습니다.

▶ Check Table(점검테이블) : 체크 테이블(점검 테이블)의 이름을 입력하고, "제안 생성(Generate Proposal)"을 클릭하여 외래 키 테이블과 매핑할 수 있는 검사 테이블의 필드 목록을 표시하세요.
▶ Generic(일반) : 외래 키 테이블에서 체크 테이블(점검 테이블)의 키 필드와 일치하는 여러 필드가 있는 경우, 해당 확인란을 선택하여 해당 필드에 대한 입력 유효성 검사를 무시할 수 있습니다.
▶ Constant : 다른 필드에 대해 상수 값을 할당할 수 있으므로, 시스템은 입력 유효성 검사를 위해 Check Table(점검테이블)의 해당 필드가 할당된 상수 값을 가지고 있는지 확인할 수 있습니다.
▶ Screen Check (화면점검 점검요청): 이 확인란을 선택하면 시스템이 외래 키 필드에 대해 Check Table(점검테이블)을 대상으로 입력 유효성 검사를 수행합니다. 선택적으로 사용자 정의 오류 메시지를 할당할 수도 있습니다.
▶ Semantic Attributes : 선택적으로 외래 키 관계를 생성하는 동안 의미 속성(semantic attributes)을 유지할 수도 있습니다. 주로 문서화 목적으로 사용됩니다.
▶ Foreign Key Field Type : 선택적으로 외래 키 필드의 유형을 정의할 수 있습니다. 이를 통해 외래 키 테이블의 외래 키 필드의 의미를 설명할 수 있습니다. 몇 가지 옵션이 있습니다.
- Non-key-fields/candidates : 외래 키 테이블의 필드가 행을 고유하게 식별하지 않는 키가 아닌 필드(nonkey fields)인지 여부를 나타냅니다.
- Key fields/candidates :  외래 키 테이블의 필드가 행을 고유하게 식별하는 키 필드인지 여부를 나타냅니다.
- Key fields of a text table : 이 옵션을 선택한 경우, 외래 키 테이블은 Check Table(점검테이블)의 텍스트 테이블로 처리됩니다. 외래 키 테이블의 Primary Key는 Check Table(점검테이블)과 일치해야 하며, LANG 유형의 언어 키 필드가 존재해야 합니다. 하나의 검사 테이블에는 하나의 텍스트 테이블만 있을 수 있습니다. 텍스트 테이블의 항목은 화면 필드 및 기타 목적에 대한 입력 도움으로 사용됩니다.
▶ Cardinality : 외래 키 테이블에 대해 n:m cardinality를 정의할 수 있습니다. cardinality는 예를 들어 Check Table(점검테이블)의 각 레코드마다 외래 키 테이블에 몇 개의 레코드가 존재할 수 있는지를 지정합니다. 가능한 옵션을 선택하기 위해 (F4) 도움말을 사용하세요. 각 옵션의 짧은 텍스트는 cardinality에 대해 충분한 설명을 제공합니다.

4. Copy 버튼을 눌러 Foreign Key 관계를 저장합니다.

반응형

'ABAP 프로그래밍 개념 > ABAP Data Dictioanry' 카테고리의 다른 글

1.6 Append Structure  (0) 2023.05.26
1.5 Include Structure  (0) 2023.05.26
1.3 Table Maintenance Generator  (0) 2023.05.25
1. 2 Index  (0) 2023.05.25
1.1 Creating a Database Table  (0) 2023.05.22