반응형
Notice
Recent Posts
Recent Comments
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

세상 모든 잡동사니 집합소 스레TV

[BC]Dictionary Object & Nametab 본문

기술/SAP BC

[BC]Dictionary Object & Nametab

스레TV 2025. 4. 24. 11:13
728x90
반응형

✅ 1. Dictionary Object란?

📘 정의:

Dictionary Object는 SAP의 ABAP Dictionary (SE11) 안에서 정의되는 모든 데이터 구조를 의미합니다.
이들은 SAP 시스템 내에서 데이터베이스 테이블을 정의하거나, 데이터를 저장/처리하는 구조를 만드는 데 사용됩니다.

🔹 대표적인 Dictionary Object 종류:

객체 유형설명
Table (Transparent/Cluster/Pooled) 실제 DB 테이블. 데이터 저장
View 여러 테이블을 조합해 조회 용도로 사용
Data Element 필드의 타입과 속성 정의
Domain 필드 값의 범위, 길이, 유형 정의
Structure 물리적 테이블은 아니지만 필드 묶음 (예: 인터페이스용)
Table Type 내부 테이블 정의 시 사용

🛠 예시:

  • MARA는 Material Master 데이터를 저장하는 Transparent Table입니다.
  • 이 테이블의 필드 중 MATNR은 Data Element이고, 그것은 다시 Domain을 통해 길이와 형식을 정의받습니다.

✅ 2. Name Tab (네임탭)이란?

📘 정의:

Name Tab은 SAP 시스템 내부에서 사용되는 **테이블의 메타데이터(정의 정보)**를 담고 있는 일종의 시스템 내부 캐시 테이블입니다.

SAP는 퍼포먼스를 위해, 테이블이나 필드 정보를 매번 ABAP Dictionary에서 직접 조회하지 않고, 한 번 로딩된 정보를 Name Tab에 저장하고 이를 재사용합니다.

🔹 이름탭에 저장되는 주요 정보:

  • 테이블의 필드 이름
  • 필드 데이터 타입
  • 필드 길이
  • Key 여부
  • 기타 속성 (nullable, default 등)

이런 정보를 저장하고 있다가 ABAP 프로그램이 데이터를 다룰 때 빠르게 참조할 수 있도록 도와줍니다.


✅ 관계 요약

  • Dictionary Object는 테이블/도메인/뷰/데이터요소 같은 정의 객체입니다.
  • Name Tab은 이러한 Dictionary Object의 정의가 시스템 내부에서 빠르게 사용될 수 있도록 캐시 형태로 저장된 정의 정보입니다.

✅ 트랜스포트 시 어떤 일이 발생하나?

  1. 트랜스포트로 Dictionary Object가 들어오면,
  2. 시스템은 그것을 데이터베이스에 적용함과 동시에,
  3. Name Tab도 업데이트/이동/재생성되어 시스템이 변경 내용을 인식할 수 있게 합니다.
  4. 이 Name Tab 업데이트는 보통 배치 작업으로 실행됩니다.

 

✅ 예시 시나리오: 테이블 ZEMPLOYEE 생성

🔷 개발자가 ABAP Dictionary(SE11)에서 아래와 같은 테이블을 정의했다고 가정해 봅시다:

필드 이름데이터 타입설명
EMPID CHAR(10) 사원 ID
NAME CHAR(50) 이름
DEPT CHAR(10) 부서 코드

📌 1. 이 테이블에 해당하는 Dictionary Objects는 다음과 같습니다:

객체설명
Table: ZEMPLOYEE 전체 테이블 정의
Data Element: ZEMPID_EL EMPID 필드의 속성 정의 (Label, Help 등)
Domain: ZEMPID_DM EMPID의 타입 (CHAR), 길이 (10), 값 범위 등을 정의
(같은 방식으로 NAME, DEPT도 Data Element 및 Domain을 가짐)  

🧠 시스템 내부 처리 구조 (그림처럼 생각하기)

┌────────────────────────┐
│ ABAP Dictionary (SE11) │   ← 개발자가 객체 생성
└────────────────────────┘
           │
           ▼
┌────────────────────────┐
│ Dictionary Objects     │
│  - Table: ZEMPLOYEE    │
│  - Data Element, Domain│
└────────────────────────┘
           │
           ▼
┌────────────────────────┐
│ 실제 DB Table 생성     │
│  => ZEMPLOYEE          │
└────────────────────────┘
           │
           ▼
┌────────────────────────┐
│ Name Tab (메타데이터 캐시) │
│  - EMPID, NAME, DEPT 정의   │
│  - 타입, 길이, Key 여부 등  │
└────────────────────────┘

✅ Name Tab이 중요한 이유

  • ABAP 프로그램이나 시스템이 테이블을 사용할 때마다,
    • 매번 Dictionary에서 구조를 읽으면 느립니다.
    • 그래서 Name Tab에 저장된 정보를 빠르게 불러옵니다 (캐시).
  • 예: SELECT * FROM ZEMPLOYEE를 실행하면 SAP는 먼저 Name Tab을 참조하여 필드와 타입 정보를 가져옵니다.

✅ 트랜스포트 시 처리 순서 요약

  1. 개발 시스템에서 ZEMPLOYEE 테이블을 만든 후 트랜스포트 요청 생성
  2. 품질(QA) 시스템에 임포트
  3. 임포트되면서 시스템이 다음 작업을 수행:
    • Dictionary Object 등록
    • 실제 DB에 테이블 생성/수정
    • Name Tab 이동 및 갱신 (배치 작업으로 수행됨)
    • 객체 활성화

✅ 추가 그림 설명 (요약)

 

트랜스포트 임포트 시 내부 처리 순서
┌──────────────┐
│ 트랜스포트 요청 │
└────┬─────────┘
     ▼
 [1] Dictionary Object 적용
     ▼
 [2] DB에 구조 반영
     ▼
 [3] Name Tab 이동 및 갱신 (배치)
     ▼
 [4] 활성화 및 사용 가능 상태

 

<관련 C_TADM_23>

When importing a transport request, which steps are executed by a batch job? Note: There are 3 correct answers to this question

  • A.Move name tab
  • B.Import of dictionary objects
  • C.Distribution of dictionary objects
  • D.Activation of ABAP programs
  • E.Activation of dictionary objects

답: A,C,D,E

반응형
Comments