반응형

     

     

    Table 생성 시 Foreign Key로 지정한 필드는 Check Table을 가질 수 있다.
    단 Foreign key로 지정된 필드와 동일한 Data Element를 Key Field로 사용하는 테이블만 Check Table로 사용할 수 있다.

    Check Table이 지정되면 입력받은 값이 Check Table에 있는 값이 아니면 입력을 못하게 하거나, Possible Enrty로 Check Table의 데이터를 보여주고 사용자가 입력 가능한 값의 범위를 제시할 수 있다.

     

    하지만 우리가 코딩으로 INSERT, MODIFY 등의 구문으로 직접 데이타를 저장하면 모두 무시되고 테이블에 값이 들어간다.

    값을 제한하고, Possible Entry로 제시하고 하는경우는 모두 입력화면을 연결한 경우라 생각하자.

     

    MATNR2라는 필드에 커서를 두고 Foreign Key 버튼을 누르면 Check Table을 입력하는 화면이 나타난다.

     

     

    해당 필드가 사용하는 Domain에 Value Table 이 지정되어 있는 경우는 기본적으로 Value Table을 Check Table로 제시해 준다. 다른 테이블을 원하면 사용자가 변경하여도 된다.  Value Table이 없는 경우는 입력없이 빈 화면이 뜰 것이다.

     

    Domain에 지정된 Value Table

     Check Table 설정을 위한 복잡한 화면이 뜬다. 딱 봐도 머리 아프다.

     

     

    Check Table과 필드 매핑은 Check Table의 Key Field 중 우리 테이블에 같은 필드가 있으면(같은 Data Element를 사용한 필드) 기본 매핑을 제시해준다. 그렇지 않은 Key 필드는 Generic 체크된 상태로 필드를 보여준다.

     

    강제로 Check Table을 MARC라는 테이블로 변경하여 보면 WERKS 필드는 매핑 없이 나타나게 된다.

     

     

    한 가지씩 항목들을 살펴보자.

     

    Foreign Key Fields

    - Generic : Check Table Key Field와 연결될 필드를 찾을 수 없을 때 체크된다.

     

    - Constant : Check Table Key Field 매핑은 되지 않지만 Check Table Key Field 값을 특정값으로 제한하고 싶을 때 입력한다. 마치 Join 시 상수값을 넣는 것과 같다. 

     

    Screen Check

    - Check Required : 체크되면 Check Table에 있는 값으로 입력 가능값이 제한된다.

     

    - Error Message : Check Required 체크된 경우 값이 범위를 벗어나면 보내줄 메시지를 세팅할 수 있다. 

     

    Semantic Attrubutes

    Check Table과의 연결관계를 설정한다.  정확해야 하는 필수 사항은 아니다.

    Foreign Key field type

    - Not Specified :  상관없음. 설정하지 않는다. Cardinality 필요 없음.

     

    - Non-Key-Fields/Candidates : Foreign Key 필드가 Key Field가 아니고 값이 Unique 하지 않을 경우. Cardinality 필요.

     

    - Key Fields/CandidatesForeign Key 필드가 Key Field이고 값이 Unique 한 경우. Cardinality 필요.

     

    Key Fields of Text Table : 우리 테이블이 Check Table의 Text 테이블이면서 Key로 언어 키를 가진 경우. Cardinality 필요. 텍스트 테이블은 하나만 가질 수 있으며 Screen 등에서 Possible Entry 생성 시 자동으로 보인다.

     

    텍스트 테이블을 만드는 것은 다음에 한번 해보도록 하자. 

     

    - Cardinality : Foreign Key와 Check Table 과의 데이터 연결관계를 설정한다. Logging을 위한 목적일 뿐 틀렸다고 문제가 되는 것은 아니다.

     

    1 : 반드시 하나의 값이 있다. Unique.

    C : 값이 있을수도 없을 수도 있다 (Option)

    N : 하나이상의 값이 반드시 있다.

    CN : 하나이상의 값이 있을수도 없을 수도 있다(Option)

     

    Check Table 관점에서 

     

    1 : Check Table의 각 레코드에 대해 정확히 하나의 종속 레코드가 있습니다.

    C : Check Table의 각 레코드에 대해 최대 하나의 종속 레코드가 있습니다.

    N : Check Table의 각 레코드에 대해 하나 이상의 종속 레코드가 있습니다.

    CN : Check Table의 각 레코드에 대해 여러 종속 레코드가 있습니다.

     

    Cardinality는 ERD를 이용한 테이블의 데이터 연관도를 나타낼 때 필요로 한다.

    보통 CBO Table을 만들때 우리는 가볍게 무시하고 넘어가게 된다. 그렇다 실제로 넣지 않아도 사용상의 아무 문제가 없다.

    SE11에서 Graphic이라는 아이콘을 누르면 SAP ERD가 나타난다.

    예로 본것은 자재 Text 테이블의 데이터 관계를 본 것이다. 이와 같은 테이블 단위의 데이터 연결성을 가지고 프로그램을 설계하려면 Cardinality, Optionality 같은 데이터 연결을 무시하면 안 되겠다.

    ABAP이 Standard에 없는 작은 기능을 구현하는 방향으로 개발이 되다보니 큰 그림은 무시하고 가는 경향도 생기는 것 같다. 

     

     

     

    위의 MAKT(자재명) 테이블과 Check Table로 설정된 MARA(자재) 테이블의 데이타 관계를 보면 1:CN의 관계가 형성됨을 알 수 있다.

     

     

    좀 장황하게 왔다 글의 밑부분은 가볍게 봐주시면 좋겠다.

     

    이상으로 Check Table에 대한 설명을 마치겠습니다.

    긴 글 읽어 주셔서 감사합니다.



    728x90
    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기