반응형

     

     

    도메인 이란 필드의 기술적 속성을 정의하는 Dictionary 개체이다.
    이는 Data Element에 할당되어 사용되며, 다시 Data Element는 테이블의 필드, 프로그램 안에서 변수로 사용되게 된다.

     

    자동차를 예로 들자면 제네시스, 그랜저 등의 이름(내용적속성)을 Data Element 가 가지고 있다면 2300 cc, 휘발류엔진 , 하이브리드 등의 기술적 속성은 Domain 이 가지고 있다.

    Domain -> Data Element -> Table Field  or 변수

    위와 같이 할당이되어 질때  CHAR 16자리의 도메인을 CHAR 23 자리로 변경하면 이를 가진 모든 Data Element와 그를 포함한 Table Field 가 한 번에 변경되는 효과를 가질 수 있다.
    이것이 많은 편리함도 있겠지만 어디서 사용되는지 검사 없이 즉흥적인 변경은 많은 문제를 야기할 수도 있겠다.

     

    기술적 속성과 내용적 속성을 분리하여 재사용을 편하게 한 것은 SAP를 설계한 독일인들의 체계적인 성격을 엳볼수 있지 않나 생각한다.


    각 구성항목 들을 보자.


    생성을 하면 맨 처음 사용할 Domain의 code 명과 Description을 정한다.
    SAP에서 임의 Object 의 이름(CODE 명)을 정할 때 시스템 전체에 유일한 이름이 되므로 명명할 때 모듈 또는 프로젝트의 구분이 들어가도록 정하는 것이 일반적이다.

    SAP는 Code 뿐만 아니라  Descrption에도 목숨 거는 경향이 있어서 안 넣어주면 저장이 안 된다


    Properties 탭



    최종적으로 누가 변경을 했는지, 할당된 Package 가 무엇인지, 생성 언어가 무엇인지의 

    기본 History 정보가 있다.  한번이상 신경 쓸 부분은 아닌 걸로…

     

     

     

     

     

     Domain명과 이름을 지정하고, 할당된 개발 패키지를 볼 수 있다.

     

    Definition 탭  

     

     이 탭이 Domain의 기술적 속정을 정의하는 탭이 되겠다.

     

     

     

     

     

     

    Data Type        : ABAP Dictionary에 기 정의된 Data Type을 지정할 수 있다.

      
    No. Charaters   : 몇 자리의 Value 값을 가질지 정의한다.

     

    Decimal Places : 위에 선언한 자리 수중 소수점 자리를 몇 개 포함할지 지정한다.
    금액 or 수량 등의 필요시 사용한다

    Output Length : 화면에 보일 때 몇 자리로 보이는지를 결정한다. 

    만약 자동차 명을 넣는 CHAR 10 자리로 선언한다면 No. Charaters와 Output Length 가 같겠지만 
    금액의 경우 DEC 13_2(13자리 소수점 2자리 포함)로 선언할 경우

    1234567890123 => 화면에는 12,345,678,901.23처럼 1000 단위 구분자와 소수점을 구분하는 문자가 화면에 표시되어야 하므로 Output Length는 해당 값을 포함한 크기로 선언해야 한다.

    Conversion Routine : 테이블에 저장되어 있는 값이 화면에 보이는 값과 다를 필요가 있을 경우 
    IN, OUT 시 변경되는 값을 보여줄 펑션을 지정할 수 있다.

     

    일례로 123 가 테이블에 저장될 때 0000000123의 앞에 0을 붙여 10자리로 저장된다면

                                 

    123 -> IN 펑션을 지나면 -> 0000000123    ▶ 테이블에 저장될 때

    0000000123 -> OUT 펑션을 지나면 -> 123  저장된 값을 읽어 화면에 보여줄 때

     

     

     

    Matnr Conversion Exit 예시

     

     

    Value Ranges 탭

    Damain 이 가질 수 있는 값을 지정하고, 넣을 수 있는 값의 범례를 제공할 때 사용한다.

     

    이 Domain 은 A, B, C 만 넣을 수 있어 이런 식의 제안은 어떤 값을 넣을지 모르는 사용자에게

    여러모로 편리함을 줄 수 있다. 

     

    또한 넣을 수 있는 값을 보여주고 선택하게 함으로 입력의 오류를 감소시켜 데이터 무결성을

    유지하는데도 도움이 되겠다.

     

     

     

     

     

    Single Value : 하나의 값과 그 명칭을 넣을수 있다.

    Intervals     : 입력이 가능한 범위를 줄 수 있다.  그 범위가 Single Value와 겹치면 Activate 시 오류가 발생하므로 확인하자.

    Value Table : 같은 Domain을 가진 필드가 존재하는 테이블을 지정하여, 그 테이블의 필드에 저장된 값으로 제한을 할 수도 있다.

     

    Domain을 사용하는 이유 중 두 번째 유용한 이유가 되겠다. 

     

    관련 Table 및 View 참조

     

      DD01L : Domains

      DD01T : R/3 DD: domain texts

      DD07L : R/3 DD: values for the domains
      DD07T : DD: Texts for Domain Fixed Values (Language-Dependent)

     

      DD01V : DD: Domain header with text

      DD07V : View on fixed values and domain texts

     

    관련 Function 참조

     

      i) 도메인 속성 및 정보 읽기.

     

      CALL FUNCTION 'DDIF_DOMA_GET'
        EXPORTING
          name     = l_domain
          state    = 'A'
          langu    = langu
        IMPORTING
          dd01v_wa = domain_attr
          gotstate = l_gotstate
        EXCEPTIONS
          OTHERS   = 2.

     

      ii) Domain Value 모두 조회

     

      CALL FUNCTION 'DD_DD07V_GET'
        EXPORTING
          domain_name    = '도메인'
          langu               = sy-langu
          withtext            = 'X'
        TABLES
          dd07v_tab         = lt_dd07v
        EXCEPTIONS
          access_failure     = 1
          OTHERS            = 2.

     

      iii) Domain Value 단일 명칭 조회

     

      CALL FUNCTION 'DOMAIN_VALUE_GET'
           EXPORTING
                i_domname  = domain_name
                i_domvalue  = domain_value
           IMPORTING
                e_ddtext      = domain_text
           EXCEPTIONS
                not_exist      = 1
                OTHERS      = 2.

     

      

    이상으로 Domain에 대한 설명을 마치고 다음으로 Data Element에 대해 설명해보겠습니다.

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

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