ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ABAP Dictionary] Overview & Table
    SAP/Abap 2022. 1. 29. 17:36

     

     

    GF[Abap Dictionary: Overview]

    Abap Dictionary란 abap 프로그램에서 사용되는 object들을 의미한다(Table, View, Structure, Type...)
    Abap Dictionary는 이러한 object들의 정보(metadata, data definition)를 중앙집중식으로 관리한다.
    • Abap dictionary와 Abap workbench는 동적으로 연결되어 있다.
      • Abap dictionary 내 변경된 object의 metadata는 모든 시스템 object에게 알려진다.
      • 모든 데이터를 중앙집중식으로 관리함으로써 데이터의 integrity(무결성)와 consistency(일관성), security(안정성)을 보장한다.

    1) Abap dictionary의 종류

    • Database object: Table, View
      • Table: 시스템 / 프로그램에서 생성된 데이터를 저장하는 실제 물리적인 공간으로 DB를 구성한다.
      • View: 하나 이상의 table이 논리적으로 결합한 구조로 실제 데이터가 아닌 논리적으로 구성된 데이터가 조회된다.
    • Type definition: Structure, Data element, Table type
      • 사용자 정의 type을 지원한다.
    • Tool: Search help, Lock object
      • 데이터 관리 및 정의 기능 외의 추가 기능을 의미한다.

     

     

    [Table]

    0) Overview

    • Abap dictionary's Table != Database' Table
      • Abap dict에서 생성된 테이블은 SAP DB Utility에 의해 변역되어 실제 물리적인 DB 테이블로 생성된다.
    • 사용자는 DBMS(DataBase Management System)에 접근하여 실제 물리적인 테이블과 데이터를 변경할 수 없다.
      • Abap dict의 테이블과 DB의 테이블은 실제로 존재하는 형태가 다르기 때문에 데이터의 Integrity(무결성)를 보존하기 위해.
      • 하나의 예로 abap dict에서 생성한 foreign key(외래키)는 실제 DB에 존재하지 않는다.
    • Abap dictionary table의 종류
      • Transparent table: 일반적인 형태의 테이블
      • Pooled / Cluster table: 여러개의 테이블을 그룹화한 테이블
    • Abap dictionary table의 속성
    Table field 테이블을 구성하는 필드의 이름과 속성. key 필드가 존재.
    Foreign key 하나의 테이블과 다른 테이블간의 관계를 정의하는 key 필드.
    Technical setting 테이블의 속성을 설정(데이터 총 건수, 버퍼링 설정 등).
    Index 데이터 조회(SELECT)속도를 향상시켜주는 필드. 그러나 삽입(INSERT) 속도는 감소.
    • [Tcode:SE11]: 모든 abap dictionary 오브젝트를 삽입/변경/조회/삭제 할수있는 유틸리티.

     

    1) Table field

    테이블 속성을 표현하기 위한 개별 구성요소
    • ex) 사원정보 테이블을 구성하는 [사원번호, 출신지역, 전화번호 등]과 같은 사원정보의 속성
    • Table field의 속성
    Field name 필드명, 문자로 시작하는 16자리 문자(언더바(_) 포함 가능)
    Key flag 테이블의 key를 정의
    Initial 필드의 기본값을 설정
    Field type 필드의 데이터 타입 지정
    Field length 필드의 데이터 길이 지정
    Decimal places 소수점 이하 자리수 지정
    Short text 필드의 의미를 기술

     

    2) Reference field & Reference table

    • 수량 또는 금액 데이터를 표현하기 위해서는 QUAN(수량)과 CURR(화폐) 데이터 타입을 참조해야 한다.
      • 수량 또는 금액 데이터는 수량단위(kg, g, ton), 화폐단위(USD, KRW)에 따라 전혀 다른 데이터가 될수있다.
      • 수량: UNIT(Unit of measure) 타입을 지정해야한다.
      • 금액: CUKY(Currency key: 소수자리수) 타입을 지정해야 한다.

       => 데이터 값은 QUAN 또는 CURR 타입으로 지정하고, 해당 값의 단위를 UNIT 또는 CUKY 타입 데이터를 참조(reference)한다.

    • ex) 10.00 데이터를 기준으로 KRW와 USD 비교
      • KRW: 소수자리수가 0이므로 10.00값에서 소수자리를 사용하지 않고 1,000으로 변환
      • USD: 소수자리수가 2이므로 10.00값에서 소수자리 2자리를 사용해 그대로 10.00으로 변환
    • 위와 같은 통화(화폐)별 소수자릿수 정보는 TCURX테이블에 저장되어 있다.
    • 테이블 SFLIGHT의 경우 금액(PRICE) 데이터가 통화(CURRENCY) 데이터를 참조하고 있음을 확인할수 있다.
      • PRICE 데이터는 CURRENCY값에 따라 적절히 변환되어 표현된다.

    • 즉, CURRENCY필드값은 USD로 소수자리수 2를 의미하므로 PRICE필드값 422.94값은 실제로 422.94를 의미한다.
    • 만약, CURRENCY필드값이 KRW(소수자리수 0)이라면, PRICE필드값 422.94값은 실제로 42294를 의미하게 된다.

    REPORT ZA07_01.
    
    PARAMETERS p_cost TYPE p DECIMALS 2.
    PARAMETERS p_cuky TYPE c LENGTH 3.
    
    DATA : lv_dec TYPE tcurx-currdec.
    
    SELECT SINGLE currdec
      INTO lv_dec
      FROM tcurx
      WHERE currkey = p_cuky.
    
    IF sy-subrc = 0.
      IF lv_dec > 0.
        p_cost = p_cost * ( 100 / 10 ** lv_dec ).
      ELSE.
        p_cost = p_cost * 100.
      ENDIF.
    ELSE.
      p_cost = p_cost.
    ENDIF.
    
    WRITE p_cost.

     

     

    2) Table 생성 및 변경

    • 교재 344p ~ 351p 참고

     

    3) Table field 속성

      • Table field는 key field와 generic field로 구성된다.
    Key field 테이블 데이터를 구분할 수 있는 기준이 되는 field
    Generic field key field 이외의 내용을 저장하는 field
    • Key field
      • 테이블 내 데이터를 구분할 수 있는 기준이 되는 필드로 구성된 필드
      • key field를 구성하는 각 필드는 initial value가 기본으로 선택되며 primary index가 자동 생성된다.
    • Initial value
      • 특정 필드의 초기값을 의미한다. 즉, 필드의 값이 존재하지 않을때 NULL값이 아닌 초기값을 부여한다.
      • INITIAL != NULL => NULL과는 달리 메모리공간을 갖고, 연산이 가능하며 [IS [NOT] INITIAL] 비교연산이 가능하다.

     

    4) Foreign key

    • 테이블간의 참조관계를 정의하며 data의 integrity(무결성)와 consistency(일관성)을 보장한다.
    • 참조하는 테이블을 foreign key table, 참조 대상이 되는 테이블을 check table이라 한다.
    • Foreign key 테이블의 foreign key는 check 테이블의 primary key를 참조하며, 같은 타입이어야 한다.
    • Value check: foreign key필드 값이 check 테이블에 존재하는 값인지 확인하는 과정
    • Foreign key가 check 테이블의 일부 primary key만 참조하는 경우 참조되지 않는 필드는 generic으로 설정한다.
    • Constant foreign key값을 통해 foreign key값이 특정 상수값을 참조하도록 설정할 수 있다.

     

    5) Table enhancement

    • Include structure
      • Structure 자체를 테이블에 추가하는 방법으로 다수의 테이블간 공통요소를 추가할때 유용하다.
    • Append structure
      • 하나의 테이블에만 추가가 가능한 structure로 테이블 자체를 수정하지 않고 필드를 추가할 수 있다.
    • Table enhancement category
      • 테이블의 APPEND, INCLUDE기능을 사용하기 위한 유형
      • Cannot be enhanced APPEND, INCLUDE 기능 사용 불가능
        Can be enhanced(character type) Character 타입을 통한 APPEND, INCLUDE만 가능
        Can be enhanced(character | numeric type) Character 또는 numeric 타입을 통한 APPEND, INCLUDE만 가능
        Can be enhanced(deep | anytype) 모든 데이터 타입을 통한 APPEND, INCLUDE 가능

     

    6) Index

    SQL구문의 성능 향상을 위해 사용되는 요소로, 테이블 내 데이터 조회속도 향상을 위해 별도로 정렬하여 저장한 테이블을 의미한다.
    • 데이터 조회 빈도수가 많은 경우 성능이 향상되지만, 데이터 추가 빈도수가 많은 경우 성능이 저하될 수 있다.

     

    7) Technical setting

    Database에 테이블 생성 시, 정의해야 하는 기술적 속성을 의미한다.
    1. Logical storage parameters
      • Technical setting에서 가장 중요한 항목
      • Data class: 테이블 내의 실제 데이터가 저장될 DB내의 물리적인 영역을 의미한다.
        • DB내에 테이블이 생성되면 물리적 영역인 TABLESPACE에 생성된다.
        • Master data 변경이 자주 발생하지 않는 데이터
          Transaction data 변경이 자주 발생하는 데이터 => transaction 발생시마다 변경되는 데이터
          Organizational data 시스템 설치 이후 거의 변경되지 않는 데이터
          System data 시스템 자체에서 요구되는 데이터
          Customer data 고객의 필요에 따라 생성되는 데이터
      • Size category: 테이블에 생성될수 있는 최대 record 수.
    2. Buffering
      • 데이터 조회시 직접 DB에 접근하기 전에 application server영역의 buffer에서 데이터를 조회하는 기능
        • Client/Server 모델에서 데이터 access시간을 효과적으로 절감할 수 있다.
        • Master data 성격의 데이터에 큰 효과를 낸다 => 변경이 자주 발생하지 않으므로 buffering만으로 쉽게 조회 가능
      • Buffering option
        • Buffering not permitted Transaction이 자주 발생하는 테이블에 세팅.
          Transaction 발생시 데이터가 자주 변경되므로 버퍼링이 비효율적이다.
          Buffering allowed but switched off 고객이 버퍼링 사용 여부를 결정할 수 있는 타입.
          Buffering activated 데이터의 변경 빈도가 적고 조회 빈도가 높은 테이블에 세팅.
          Buffering을 통해 효과적으로 성능을 향상시킬 수 있다.
      • Buffering type
        • Buffering activated option 설정시 지정해야하는 타입. 
        • Single record Table record에 직접 접근된 정보만 버퍼에 저장한다.
          다른 타입에 비해 필요한 저장공간이 적지만, DB에 접근하는 횟수가 증가한다.
          Generic area buffered 접근된 key값에 해당하는 모든 데이터가 버퍼에 저장된다.
          Fully buffered 모든 table 데이터가 버퍼에 저장된다.
          데이터가 적고, 조회 빈도가 높으며 추가 빈도가 적은 테이블에 설정된다.

    'SAP > Abap' 카테고리의 다른 글

    [ABAP Dictionary] Structure & View & Else...  (0) 2022.02.05
    [Debugging] Debugger  (0) 2022.01.22
    [Internal Table] Internal table  (0) 2022.01.19
    [Internal Table] Internal table 개념  (0) 2022.01.19
    [Modularization] Function  (0) 2022.01.18
Designed by Tistory.