[ABAP] Text Table

토마토·2024년 8월 19일
0

ABAP 기본

목록 보기
6/10

Text Table 이란?

다국어 지원을 위해 언어별 Text를 관리하는 테이블을 의미한다
주로 Text Table은 Main Table과 별도로 존재한다

이 때, 아래 두 가지 조건을 충족해야 한다

  • Text Table은 다국어 지원을 위해 반드시 언어키를 저장하는 필드가 존재해야 함
  • 언어키를 가진 필드는 반드시 PK로 지정되어 있어야 함

Value Range 에 값이 들어갈 땐 우측의 Short Desctiption에도 내역을 넣어주는데,
해당 Desctiption도 Value Table로 나갈 때 발맞춰서 Text Table로 나간다
(Value Table과 Text Table 별도의 테이블로 관리)

  • Value Table ⇒ E, W, S, N
  • Text Table ⇒ East, West, South, North
    • 각국의 언어별로 저장 → 이를 위해 언어들어있는 필드 추가
    • 언어는 반드시 키로 잡혀있어야함 (중첩 방지)
      → E, W, S, N가 언어별로 들어있으므로 언어키 잡아서 고유하게 만들어줌

예시로 살펴보기

TMABC 테이블을 예로 살펴보자
TMABC 테이블은 두 개의 필드를 가지고있는걸로 보인다

그러나 실제로 실행해보면 TMABC 필드까지 총 세 개의 필드가 표시된걸 볼 수 있다
해당 TMABC 필드는 TMABC 테이블의 Text Field 이다

Text Field 보는 법

  1. Domain 상 연결된 Value Table 찾기
  2. Value Table의 Text Table 찾기
  3. 표 조회하여 Text Field 찾기

1. Value Table 찾기

MAABC 의 도메인 상 Value Table 확인

MAABC 의 도메인 상 Value Table은 TMABC 이다

TMABC 더블클릭해서 테이블 보기

2. Text Table 찾기

Value Table 상단 Goto → Text Table 클릭

Text Table은 TMABCT 으로 확인된다

3. Text Field 보기

Text Table 표를 조회하여 Description 확인
TMABC 필드가 Text Field인걸 확인할 수 있다

정리

  • MAABC Main Table
  • TMABC Value Table
  • TMABCT Text Table
  • TMABC Text Field

Text Table 조인

Select문과 Database View에서 Text Table 조인하여 필드의 텍스트 내역을 표기하는 법을 알아보자

Select문에서 조인하기

✔️ LEFT OUTER JOIN 활용하기

MATNR은 PK이므로 한개 뿐인데 Text Table 언어키라서 레코드가 3개 나옴

아래와 같이 하나의 언어키로 출력되어야 함

📌 OUTER JOIN 으로 Text테이블 걸기

  • INNER JOIN 사용 시 Text 보유한 자재코드만 출력되기 때문
  • Text 없는 자재코드도 리스트에 나와야하므로 LEFT OUTER JOIN 사용

📌 WHERE가 아닌 AND로 조건 추가하기

  • OUTER JOIN에 걸려있는 테이블 필드는 WHERE 조건에 절대 올 수 없음
    • LEFT OUTER JOIN은 optional / WHERE은 반드시 지켜줘야하는 조건
    • 따라서 조건이 서로 모순되기 때문
  • OUTER JOIN에서 WHERE 조건 주는 법
    • WHERE 조건을 AND 로 대체하기 (Join 조건으로 옮기기)

📌 언어키는 sy-langu 시스템변수 활용

  • Join조건의 ON 아래에 AND b~spras = sy-langu. 추가

🔑 코드보기

Database View에서 조인하기

💡 텍스트 필드 가져오는 두 가지 방법

  1. Main TableValue TableText Table
  • Value Table 통해서 Text Table 가져오기
  • Value Table 통해서 찾는게 정석임
  • Relationships 버튼 사용 가능
  1. Main TableText Table
  • 중간 Value Table 생략하고 Main Table과 Text Table 바로 조인
  • Relationships 버튼 사용 불가 → Join Conditions 직접 기재

MARC-DISMM 필드의 Text Field 조인

  • MARCT438AT438T
  • MARCT438T

DISMM의 Value Table : T438A
DISMM의 Text Table : T438T

📌 Value Table 조인 후 Text Table 가져오기

profile
멋쟁이 토마토

0개의 댓글