λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

ABAP Concept (πŸ“κ°œλ…)/Advanced

Internal Table의 κ°œλ…κ³Ό ꡬ성 μš”μ†Œ(Feat. Table Category)

 SAP ABAP의 핡심 κΈ°λŠ₯ 쀑 ν•˜λ‚˜μΈ 인터널 ν…Œμ΄λΈ”(Internal Table)은 ν”„λ‘œκ·Έλž¨ λ‚΄μ—μ„œ 데이터λ₯Ό μž„μ‹œλ‘œ μ €μž₯ν•˜κ³  μ²˜λ¦¬ν•  수 있게 ν•΄μ£ΌλŠ” μœ μ—°ν•œ μžλ£Œκ΅¬μ‘°μ΄λ‹€. 이λ₯Ό μ‰½κ²Œ μ΄ν•΄ν•˜κΈ° μœ„ν•΄ μ—‘μ…€ λ¬Έμ„œλ₯Ό 생각해 보자. μ—‘μ…€ μ‹œνŠΈλŠ” μ—¬λŸ¬ μ€„μ˜ 데이터λ₯Ό μ €μž₯ν•˜κ³  ν•„ν„°λ§ν•˜κ±°λ‚˜ μ •λ ¬ν•  수 μžˆλ‹€. 인터널 ν…Œμ΄λΈ”λ„ 이와 λΉ„μŠ·ν•˜κ²Œ μž‘λ™ν•œλ‹€. 각각의 ν…Œμ΄λΈ”μ€ 데이터λ₯Ό λ‹΄λŠ” 그릇이며, 이 그릇이 μ–΄λ–€ λͺ¨μ–‘인지, 그리고 κ·Έ λͺ¨μ–‘에 따라 μ–΄λ–€ κΈ°μ€€μœΌλ‘œ 데이터λ₯Ό λ„£κ³  κΊΌλ‚Ό 수 μžˆλŠ”μ§€ μ•Œμ•„λ³΄λ„λ‘ ν•˜μž.


1. 인터널 ν…Œμ΄λΈ”μ„ κ΅¬μ„±ν•˜λŠ” μš”μ†Œ – μ—‘μ…€ μ‹œνŠΈμ™€ 비ꡐ해 보자!

ABAPμ—μ„œ 인터널 ν…Œμ΄λΈ”μ€ λ‹€μŒ μ„Έ κ°€μ§€ μš”μ†Œλ‘œ μ •μ˜λœλ‹€. 

 

πŸ“ŒLine Type (ν–‰ νƒ€μž…)

  • μ—‘μ…€μ˜ "ν•œ ν–‰"에 해당함. 각 행은 λ¬Έμžμ—΄, 숫자, λ‚ μ§œ λ“± λ‹€μ–‘ν•œ ν˜•νƒœμ˜ 데이터λ₯Ό κ°€μ§ˆ 수 있으며, 이 κ΅¬μ‘°λŠ” Line Type으둜 μ •μ˜λœλ‹€.

πŸ“ŒTable Category (ν…Œμ΄λΈ” μœ ν˜•)

  • μ—‘μ…€μ—μ„œ μ •λ ¬ 방식, 쑰회 방식 등을 μ–΄λ–»κ²Œ μ²˜λ¦¬ν• μ§€λ₯Ό μ •μ˜ν•˜λŠ” 방식과 λΉ„μŠ·ν•˜λ‹€. 즉, ν…Œμ΄λΈ”μ΄ 데이터λ₯Ό μ €μž₯ν•˜κ³  κ²€μƒ‰ν•˜λŠ” 방식이닀.

πŸ“ŒTable Key (ν…Œμ΄λΈ” ν‚€)

  • μ—‘μ…€μ—μ„œ "κΈ°μ€€ μ—΄" λ˜λŠ” "고유 μ‹λ³„μž μ—΄"이라고 μƒκ°ν•˜λ©΄ λœλ‹€. 이 ν‚€λ₯Ό κΈ°μ€€μœΌλ‘œ νŠΉμ • 데이터λ₯Ό λΉ λ₯΄κ²Œ μ°Ύκ±°λ‚˜ 쀑볡을 λ°©μ§€ν•  수 μžˆλ‹€.

πŸ’‘ 3κ°€μ§€ μš”μ†Œλ‘œ κ΅¬μ„±λ˜λŠ” 인터널 ν…Œμ΄λΈ”μ˜ νƒ€μž…μ€ ABAP  Programμ—μ„œ "TYPES" λ˜λŠ” "DATA" ꡬ문을 μ‚¬μš©ν•΄μ„œ 선언을 ν•˜λ©°, ABAP Dictionaryμ—μ„œλŠ” Data Type의  "TABLE TYPE"μ—μ„œ  μ •μ˜ν•  수 μžˆλ‹€. 

< ABAP Dictionary μ—μ„œ Table Type ν™”λ©΄ >

 

μœ„ ν™”λ©΄κ³Ό 같이 ABAP Dicationaryμ—μ„œλ„ μ•žμ„œ μ„€λͺ…ν•œ 인터널 ν…Œμ΄λΈ”μ˜ 3κ°€μ§€ ꡬ성 μš”μ†Œλ‘œ μ •μ˜λ˜μ–΄ μžˆλ‹€.

  • Line Type 
  • Initialization and access  ➑️ Table Category
  • Primary Key, Secondary Key ➑️ Table Key

2. Table Category (ν…Œμ΄λΈ” μœ ν˜•) 별 νŠΉμ§• 및 μ‚¬μš© – μ–΄λ–€ μ—‘μ…€ μ‹œνŠΈλ₯Ό μ„ νƒν• κΉŒ?

βœ… Standard Table (ν‘œμ€€ ν…Œμ΄λΈ”)

  • μ—‘μ…€ → λ‹¨μˆœ 리슀트 ν˜•νƒœ. 정렬도 μ—†κ³ , κ·Έλƒ₯ 행을 μŒ“μ•„ μ˜¬λ¦°λ‹€.
  • νŠΉμ§•: 인덱슀λ₯Ό ν†΅ν•œ 순차적 μ ‘κ·Ό. ν‚€λ₯Ό ν†΅ν•œ 검색은 느림.
  • μž₯점: κ°„λ‹¨ν•œ ꡬ쑰, λΉ λ₯Έ μ‚½μž…
  • 단점: κΈ°λ³Έ μ •λ ¬ μ•ˆλ¨, 검색 μ„±λŠ₯ 떨어짐
⚠️ Standard Tableμ—μ„œ READ TABLE... WITH KEYλ₯Ό μ‚¬μš©ν•  경우, 기본적으둜 μ„ ν˜• 검색이 μˆ˜ν–‰λœλ‹€. λ§Œμ•½ BINARY SEARCH μ˜΅μ…˜μ„ μ‚¬μš©ν•˜κ³  ν…Œμ΄λΈ”μ΄ μ •λ ¬λ˜μ–΄ μžˆλ‹€λ©΄ 둜그 μˆ˜μ€€μ˜ μ„±λŠ₯을 λ‚Ό 수 μžˆλ‹€. ν•˜μ§€λ§Œ λ°˜λ“œμ‹œ WITH KEY 뒀에 μ˜€λŠ” ν•„λ“œλ“€μ΄ 정렬이 λ˜μ–΄ μžˆμ–΄μ•Ό μ •ν™•ν•œ 값을 κ°€μ Έμ˜¬ 수 μžˆλ‹€.

 

βœ… Sorted Table (μ •λ ¬ ν…Œμ΄λΈ”)

  • μ—‘μ…€ →  νŠΉμ • μ—΄λ‘œ 항상 μ •λ ¬λœ ν•„ν„° λ·° μ‹œνŠΈ
  • νŠΉμ§•: 킀에 따라 μžλ™ μ •λ ¬, Binary Search( 이진 검색 )으둜 λΉ λ₯Έ 쑰회
  • μž₯점: ν‚€ 검색 μ„±λŠ₯ μ’‹μŒ, λΆ€λΆ„ ν‚€ 검색 κ°€λŠ₯, 인덱슀 접근도 κ°€λŠ₯ 
  • 단점: μ •λ ¬ μœ μ§€ μœ„ν•΄ APPEND μ‚¬μš© λΆˆκ°€. INSERTμ‹œ Standard Table μœ ν˜•λ³΄λ‹€ λ‘œλ“œκ°€ 더 λ°œμƒν•¨
πŸ’‘ Sorted Table은 λ‚΄λΆ€μ μœΌλ‘œ 항상 μ •λ ¬λœ μƒνƒœλ₯Ό μœ μ§€ν•˜λ―€λ‘œ, READ TABLE ... WITH KEYλ₯Ό μ‚¬μš©ν•  λ•Œ μžλ™μœΌλ‘œ Binary Search( 이진 검색 )이 μˆ˜ν–‰λœλ‹€. λ”°λΌμ„œ λ³„λ„λ‘œ BINARY SEARCHλ₯Ό μ§€μ •ν•˜μ§€ μ•Šμ•„λ„ 둜그 μˆ˜μ€€μ˜ μ„±λŠ₯을 얻을 수 μžˆλ‹€λŠ” 것이 Standard Table과의 차이점이닀.

 

βœ… Hashed Table (ν•΄μ‹œ ν…Œμ΄λΈ”)

  • μ—‘μ…€ →  VLOOKUP이 항상 μ¦‰μ‹œ μž‘λ™ν•˜λŠ” 고속 κ²€μƒ‰μš© μ‹œνŠΈ
  • νŠΉμ§•: ν•΄μ‹œ μ•Œκ³ λ¦¬μ¦˜ 기반 고속 검색. 순차 접근은 λΆˆκ°€.
  • μž₯점: μž…λ ₯ 데이터 양에 상관없이 μΌμ •ν•œ μ‹œκ°„ μ•ˆμ— 탐색 κ°€λŠ₯, λŒ€λŸ‰ λ°μ΄ν„°μ—μ„œ κ°•λ ₯함. 
  • 단점: μ •λ ¬ μ—†μŒ, APPEND λΆˆκ°€, 데이터 μ‚½μž…/μ‚­μ œμ— λ‘œλ“œκ°€ κ±Έ.

3. ν…Œμ΄λΈ” ν‚€(Table Key)와  ν™œμš© – 고유 ID μ—΄ vs. μ—†λŠ” μ‹œνŠΈμ˜ 차이

βœ…  Primary Key (κΈ°λ³Έ ν‚€)

  • ν•œ 쀄을 ꡬ뢄 μ§“λŠ” κ³ μœ ν•œ μ—΄ (μ—‘μ…€μ—μ„œ μ£Όλ―Όλ²ˆν˜Έλ‚˜ μƒν’ˆμ½”λ“œ μ—΄κ³Ό μœ μ‚¬). WITH UNIQUE KEY λ˜λŠ” WITH NON-UNIQUE KEY둜 μ„€μ • κ°€λŠ₯

βœ…  Secondary Key (보쑰 ν‚€) 

  • 보쑰적으둜 μ •λ ¬ν•˜κ±°λ‚˜ 쑰회λ₯Ό λΉ λ₯΄κ²Œ ν•˜κΈ° μœ„ν•œ μΆ”κ°€ μ—΄. WITH NON-UNIQUE SORTED KEY 보쑰킀이름 COMPONENTS λ³΄μ‘°ν‚€ν•„λ“œ 와 같은 ν˜•μ‹μœΌλ‘œ μ„€μ • κ°€λŠ₯ 

βœ…  Default Key 

  • WITH DEFAULT KEYλ₯Ό μ§€μ •ν•˜λ©΄, λ¬Έμžν˜•, λ‚ μ§œν˜• ν•„λ“œλ§Œ ν‚€λ‘œ μžλ™ 포함. ν•˜μ§€λ§Œ μ •μˆ˜ν˜•, μˆ˜λŸ‰/ν†΅ν™”ν˜•μ€ ν‚€μ— ν¬ν•¨λ˜μ§€ μ•Šμ•„ μ£Όμ˜κ°€ ν•„μš”

βœ…  Empty Key

  • μ—‘μ…€ λΉ„μœ : μ–΄λ–€ 열도 κ³ μœ ν•˜μ§€ μ•Šκ³ , λͺ¨λ“  행이 κ·Έλƒ₯ 자유둭게 좔가됨. WITH EMPTY KEYλ₯Ό μ‚¬μš©ν•˜λ©΄ μ€‘볡 ν—ˆμš©, ν‚€ κΈ°λ°˜ μ‘°νšŒ λΆˆκ°€

4. 상황별 선택 μš”λ Ή

ν…Œμ΄λΈ” μœ ν˜• 상황 검색 기반 이유
Standard Table λ‹¨μˆœ λ°˜λ³΅, μ€‘볡 ν—ˆμš© 순차 탐색 λΉ λ₯Έ μ‚½μž…, μ œμ•½ μ—†μŒ
Sorted Table μ •λ ¬λœ κ²€μƒ‰ ν•„μš” 이진 탐색 μžλ™ μ •λ ¬ + Binary Search
Hashed Table λΉ λ₯Έ ν‚€ μ‘°νšŒ ν•΄μ‹œ μ•Œκ³ λ¦¬μ¦˜ ν•΄μ‹œ κΈ°λ°˜ κ³ μ† κ²€μƒ‰

 

 

 

 


ℹ️ 같이 읽으면 쒋은 ν¬μŠ€νŒ…

πŸ”—[ABAP Concept (πŸ“κ°œλ…)/Advanced] - Internal Table Header line( 헀더라인 ) κ°œλ… 및 μ§€μ–‘ν•΄μ•Ό ν•˜λŠ” 이유

 

Internal Table Header line( 헀더라인 ) κ°œλ… 및 μ§€μ–‘ν•΄μ•Ό ν•˜λŠ” 이유

Internal Table의 Header Line( 헀더 라인 )은 과거에 자주 μ‚¬μš©λ˜μ—ˆμ§€λ§Œ, ν˜„μž¬λŠ” λΉ„μΆ”μ²œλ˜λŠ” κΈ°λŠ₯ 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. 이 κΈ€μ—μ„œλŠ” Header Lineμ΄λž€ 무엇인지, μ–Έμ œ μ‚¬μš©λ˜λŠ”μ§€, 그리고 μ™œ 더 이상 μ‚¬μš©ν•˜μ§€ 말

twossun.tistory.com

πŸ”—[ABAP Concept (πŸ“κ°œλ…)/Advanced] - Internal Table의 default key 및 κ΄€λ ¨ μ˜΅μ…˜( with key )

 

Internal Table의 default key 및 κ΄€λ ¨ μ˜΅μ…˜( with key )

ABAP ν”„λ‘œκ·Έλž˜λ° μ‹œ 인터널 ν…Œμ΄λΈ”μ„ μ„ μ–Έν•  λ•Œ μš°λ¦¬λŠ” 주둜 DATA: lt_mara TYPE TABLE OF mara. μœ„와 같이 λ³„λ„λ‘œ ν‚€λ₯Ό λͺ…μ‹œν•˜μ§€ μ•Šκ³  ν…Œμ΄λΈ”μ„ μ„ μ–Έν•œλ‹€. 항상 μ΄λ ‡κ²Œ 써왔기 λ•Œλ¬Έμ— ν•΄λ‹Ή 인터널 ν…Œμ΄λΈ”

twossun.tistory.com