도메인 이란 필드의 기술적 속성을 정의하는 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 ▶ 저장된 값을 읽어 화면에 보여줄 때
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에 대해 설명해보겠습니다.
긴 글 읽어 주셔서 감사합니다.
'ABAP' 카테고리의 다른 글
[SAP ABAP 강좌 6] 테이블 (Table) - Search Help (0) | 2020.12.01 |
---|---|
[SAP ABAP 강좌 5] 테이블 (Table) - Check Table (0) | 2020.11.29 |
[SAP ABAP 강좌 4] 테이블 (Table) - Currency/Quantity Fields탭 (6) | 2020.11.28 |
[SAP ABAP 강좌 3] 테이블 (Table) 생성 (2) | 2020.11.27 |
[SAP ABAP 강좌 2] 데이타 엘리먼트 (Data Element) (0) | 2020.11.25 |
최근댓글