SAP 테이블 외래키 지정하는 방법

이번 포스팅은 SAP 테이블 외래키 지정하는 방법에 대해서 알아보도록 하겠습니다.

SAP Table에 Foreign key를 생성하여 데이터베이스의 무결성을 높일 수 있습니다.

Foreign key를 한마디로 정의한다면, ‘입력값이 들어가도 되는 값인지?’ 를 판단하는 것입니다.

즉, 현재 입력 값을 Check table에 허용 가능한 값을 가지고 있는 테이블의 검사를 통해 입력 가능 여부를 확인하는 것입니다.

SAP Table Foreign key(외래키) 생성 방법

SE11, SE16N 혹은 모듈 풀의 Screen Input/Outout field에서 체크 가능합니다. 그러나, 소스 코드 상에서 db 업데이트를 하는 경우에는 동작하지 않습니다.

Foreign key의 생성

ztest2 라는 테이블 bukrs Field에 Foreign key를 생성해 보겠습니다.

se11 수정모드로 들어간 후, Foreign key 버튼을 누릅니다.

SAP 테이블에서 외래키 추가 버튼

자동으로 T001에 제안(Proposal)되어 나옵니다. 활성화를 진행합니다.

General Proposal 기능을 통해 외래키 연계하기

T-CODE : SE11에서 외래키 테스트

se11 data browser를 통해 T001에 없는 회사코드를 입력해보니 오류가 발생합니다.

SE11 데이터 조회 테스트

T-CODE : SE16에서 외래키 테스트

se16n 역시 오류가 발생합니다.

SE16 데이터 조회 테스트

Module Pool 개발 프로그램 외래키 테스트

Screen에 해당 테이블 컬럼을 from dict. 형태로 input/output field를 구성한 후 Foreign key check 에 체크 후 테스트를 진행하면 됩니다.

MODULE POOL SCREEN에서의 외래키 체크 로직

주의 사항 : 소스 코드에서는 자동 체크하지 않음

하지만, 소스 코드상에서 insert/update 구문을 통해 밀어넣게 되면 그 값은 정상적으로 입력이 됩니다.

DATA : LT_ZTEST2 LIKE ZTEST2 OCCURS 0 WITH HEADER LINE.

LT_ZTEST2-BUKRS = '2500'.
LT_ZTEST2-GJAHR = '2014'.
LT_ZTEST2-BELNR = '0000000001'.
APPEND LT_ZTEST2.
CLEAR : LT_ZTEST2.

MODIFY ZTEST2 FROM TABLE LT_ZTEST2.

IF SY-SUBRC EQ 0.
  MESSAGE S000 WITH '입력 성공'.
ENDIF.

따라서, 사용자의 입력이 발생하는 리포트 프로그램 혹은 엑셀 업로드, 기타 외부 인터페이스 로직에서는 해당 테이블의 check table 기준으로 추가적인 validation check 로직을 넣어주어야 합니다.

SAP 테이블에 대한 좀 더 상세한 외래키 정보는 아래의 SAP 공식 문서를 참고해보시기 바랍니다.

SAP Help : Foreign Keys

함께 보면 좋은 글

SAP 유지보수 뷰 엑셀로 다운로드 받는 방법

SAP 유지보수뷰 수정 버튼 없애기 2가지 방법

SAP 유지보수뷰 New Entry 유효성 체크 방법