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

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

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

ABAP ν”„λ‘œκ·Έλž˜λ° μ‹œ 인터널 ν…Œμ΄λΈ”μ„ μ„ μ–Έν•  λ•Œ μš°λ¦¬λŠ” 주둜 

DATA lt_mara TYPE TABLE OF mara.

 

μœ„μ™€ 같이 λ³„λ„λ‘œ ν‚€λ₯Ό λͺ…μ‹œν•˜μ§€ μ•Šκ³  ν…Œμ΄λΈ”μ„ μ„ μ–Έν•œλ‹€. 항상 μ΄λ ‡κ²Œ 써왔기 λ•Œλ¬Έμ— ν•΄λ‹Ή 인터널 ν…Œμ΄λΈ”μ—λŠ” ν‚€ (Key) κ°€ μ—†λŠ” 인터널 ν…Œμ΄λΈ”λ‘œ μΈμ‹ν•˜λŠ” κ²½μš°λ„ 있고, ABAP을 이제 막 μ‹œμž‘ν•˜λŠ” μ‚¬λžŒ μ€‘μ—λŠ” 인터널 ν…Œμ΄λΈ”μ—λŠ” ν‚€(Key) κ°œλ…μ΄ μ—†λŠ” κ²ƒμœΌλ‘œ μ•Œκ³  μžˆκΈ°λ„ ν•˜λ‹€. 

 

인터널 ν…Œμ΄λΈ”μ€ λ‹¨μˆœνžˆ 데이터λ₯Ό λ‹΄λŠ” 그릇이 μ•„λ‹ˆλΌ, 데이터λ₯Ό μ–΄λ–»κ²Œ λΉ λ₯΄κ²Œ μ°Ύκ³ , 쀑볡 없이 κ΄€λ¦¬ν•˜κ³ , μ„±λŠ₯을 높일 수 μžˆμ„μ§€λ₯Ό κ²°μ •μ§“λŠ” ꡬ쑰이고, 그것을 κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” 것이 λ°”λ‘œ  "KEY" μ˜΅μ…˜ 이닀.

 

μ•žμ— μ˜ˆμ œλŠ” 뒀에 WITH DEFAULT KEY κ΅¬λ¬Έμ΄ μƒλž΅λœ κ²ƒμœΌλ‘œ ABAPμ—μ„œ Standard table μœ ν˜•μ—μ„œ 기본으둜 μ •μ˜ν•œ default keyκ°€ 반영된 것이닀. μ•”λ¬΅μ μœΌλ‘œ μ„ μ–Έλ˜μ—ˆλ˜ 인터널 ν…Œμ΄λΈ”μ˜ defualt key κ°€ 무엇이고 κ·Έ 외에 λ‹€λ₯Έ key μ˜΅μ…˜λ“€μ€ 무엇이 μžˆλŠ”μ§€ μ•Œμ•„λ³΄λ„λ‘ ν•˜μž.

 


1. WITH DEFAULT KEY의 νŠΉμ§•

  • λ¬Έμžν˜•(Character) νƒ€μž… ν•„λ“œ λͺ¨λ‘λ₯Ό κΈ°λ³Έ ν‚€(Key)둜 μžλ™ μ„€μ •.
  • πŸ’‘λ¬Έμžν˜• νƒ€μž…μ€ ABAP Built-in Type의 Characterν˜•νƒœμΈ C(Char), N(Numc), D(DATE), T(TIME), STRING 을 말함. ( ⚠️ N νƒ€μž…μ€ λ¬Έμžν˜• 숫자 νƒ€μž…μœΌλ‘œ λ¬Έμžν˜•μ— 속함. )
  • μ •μˆ˜(INT), λΆ€λ™μ†Œμˆ˜μ (Float), 톡화/μˆ˜λŸ‰ νƒ€μž…(CURR, QUAN)의 ν•„λ“œκ°™μ΄ Character ν˜•νƒœλ₯Ό μ œμ™Έν•œ νƒ€μž…λ“€μ€ κΈ°λ³Έ ν‚€μ—μ„œ μ œμ™Έ
  • λͺ…μ‹œμ μœΌλ‘œ ν‚€λ₯Ό μ§€μ •ν•˜μ§€ μ•Šμ•„λ„ λ˜λ―€λ‘œ μ½”λ“œκ°€ 간단
  • 쀑볡 데이터 ν—ˆμš©
  • Standard Table μœ ν˜•μ—μ„œ μ‚¬μš©

< WITH DEFAULT KEY μ„ μ–Έ 예제 >

μœ„ μ˜ˆμ‹œμ—μ„œ WITH DEFAULT KEYλ₯Ό μ‚¬μš©ν•˜λ©΄, Character ν˜•νƒœ( Char, Numc )인 id와 name ν•„λ“œκ°€ KEY κ°€ 되고, Numeric ν˜•νƒœ ( I ) 인 age ν•„λ“œλŠ” ν‚€μ—μ„œ μ œμ™Έλœλ‹€.

πŸ’‘ COLLECT ꡬ문 μ‚¬μš© μ‹œ λ³„λ„μ˜ KEYλ₯Ό μ„ μ–Έν•˜μ§€ μ•Šμ€ 경우 Character ν˜•νƒœμ˜ ν•„λ“œλ“€μ„ KEY둜 ν•΄μ„œ Numeric ν˜•νƒœμ˜ ν•„ 값듀이 ν•©μ‚°λ˜μ–΄ ν•΄λ‹Ή μΈν„°λ„ν…Œμ΄λΈ”μ˜ 데이터듀이 MERGE λœλ‹€. 

2. READ TABLE μ‚¬μš© μ‹œ KEY ν™œμš© 

< READ TABLE... WITH TABLE KEY ... 예제 >

 

⚠️ μ΄λ•Œ, WITH KEY ꡬ문처럼 μƒκ°ν•΄μ„œ WITH TABLE KEY 뒀에 "ID"λ‚˜ "NAME" ν•„λ“œ ν•˜λ‚˜λ§Œ μ“°κ²Œ 되면 Syntax μ—λŸ¬κ°€ λ°œμƒν•œλ‹€. DEFAULT KEYλŠ” μ•žμ—μ„œ λ§ν•œ Character ν˜•νƒœμ˜ λͺ¨λ“  ν•„λ“œλ₯Ό ν•˜λ‚˜λ‘œ λ¬Άμ–΄μ„œ λ§ν•˜λŠ” 것이기 λ•Œλ¬Έμ— ν‚€ν•„λ“œ λͺ¨λ‘λ₯Ό ( "ID + NAME" ) λͺ…μ‹œν•΄ μ€˜μ•Ό ν•œλ‹€. 


3. READ TABLE μ‹œ WITH KEY  vs  WITH TABLE KEY 차이?

인터널 ν…Œμ΄λΈ”μ—μ„œ 데이터λ₯Ό 검색할 λ•Œ 자주 μ‚¬μš©ν•˜λŠ” READ TABLE κ΅¬λ¬Έμ—λŠ” WITH KEY 와 WITH TABLE KEY λΌλŠ” 두 κ°€μ§€ 방식이 μžˆλŠ”λ° 이 λ‘˜μ€ λΉ„μŠ·ν•΄ λ³΄μ΄μ§€λ§Œ, λ™μž‘ 방식과 μ‚¬μš© κ°€λŠ₯ν•œ λ²”μœ„κ°€ λ‹€λ₯΄λ‹€.

βœ… WITH KEY

  • ν‚€λ‘œ μ§€μ •ν•œ ν•„λ“œκ°€ μ•„λ‹ˆλ”λΌλ„ μ–΄λ–€ ν•„λ“œλ“  검색 κ°€λŠ₯
  • Standard Table순차 탐색 방식
  • 킀와 λ¬΄κ΄€ν•˜κ²Œ μ›ν•˜λŠ” ν•„λ“œ 쑰건으둜 검색할 수 μžˆμ–΄μ„œ μœ μ—°ν•˜μ§€λ§Œ μ„±λŠ₯은 λ–¨μ–΄μ§ˆ 수 있음
  • READ TABLE... WITH KEY name = 'κ°•λ°±ν˜Έ' .. μ—μ„œ name은 ν‚€κ°€ μ•„λ‹ˆλ”λΌλ„ 순차적으둜 νƒμƒ‰ν•˜μ—¬ 검색 κ°€λŠ₯

βœ… WITH TABLE KEY

  • λ°˜λ“œμ‹œ ν‚€λ‘œ μ§€μ •ν•œ ν•„λ“œλ₯Ό μ‚¬μš©ν•΄μ•Ό 함
  • Sorted TableBinary Search 탐색 방식
  • Hashed Tableν•΄μ‹œ 탐색 방식
  • λͺ…μ‹œμ μΈ ν‚€ νƒμƒ‰μœΌλ‘œ 더 μ•ˆμ „ν•˜κ³  μ„±λŠ₯이 뛰어남

4. WITH DEFAULT KEY 외에 λ‹€μ–‘ν•œ KEY μ„ μ–Έ 방식

βœ… WITH EMPTY KEY

DATA: lt_data TYPE STANDARD TABLE OF mara WITH EMPTY KEY.
  • ν‚€λ₯Ό μ•„μ˜ˆ μ„ μ–Έν•˜μ§€ μ•ŠμŒ. μ™„μ „ μžμœ λ‘œμš΄ κ΅¬μ‘°
  • Standard Table μœ ν˜•μ—λ§Œ μ‚¬μš©κ°€λŠ₯ 
  • 쀑볡 데이터 ν—ˆμš©, ν‚€ κ΄€λ ¨ 였λ₯˜ μ—†μŒ, μœ μ—°ν•¨
  • READ TABLE ... WITH KEY μ‚¬μš© λΆˆκ°€, μ€‘볡 λ°©μ§€ λΆˆκ°€
  • Collect ꡬ문 λΆˆκ°€ 

βœ… WITH UNIQUE KEY

DATA: lt_data TYPE SORTED TABLE OF mara WITH UNIQUE KEY matnr.
  • μ§€μ •λœ ν‚€ ν•„λ“œ 쑰합이 μ€‘λ³΅λ˜μ§€ μ•ŠμŒ. 쀑볡 μ‹œ dump λ°œμƒ 
  • Sorted Table μœ ν˜•μ—μ„œλŠ” ν•„μˆ˜ μ•„λ‹˜ (UNIQUE λ˜λŠ” NON-UNIQUE 선택 κ°€λŠ₯)
  • Hashed Table μœ ν˜•μ€ UNIQUE만 ν—ˆμš©
  • 데이터 무결성 보μž₯, 쀑볡 λ°©μ§€, λΉ λ₯Έ 탐색 κ°€λŠ₯
  • 쀑볡 λ°μ΄ν„° μ‚½μž… μ‹œ μ˜€λ₯˜ λ°œμƒ, INSERT μ‹€νŒ¨ κ°€λŠ₯μ„± μžˆμŒ

βœ… WITH NON-UNIQUE KEY

DATA: lt_data TYPE STANDARD TABLE OF mara WITH NON-UNIQUE KEY matnr.
  • μ§€μ •λœ ν‚€ ν•„λ“œλ‘œ μ •λ ¬ 및 검색은 ν•˜μ§€λ§Œ 쀑볡 ν—ˆμš©.
  • Standard Table, Sorted Table μœ ν˜•μ—μ„œ μ‚¬μš© κ°€λŠ₯. 
  • μ •λ ¬ 및 검색 κ°€λŠ₯, μœ μ—°ν•¨.

 

 


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

πŸ”— [ABAP Concept (πŸ“κ°œλ…)/Advanced] - Internal Table의 κ°œλ…κ³Ό ꡬ성 μš”μ†Œ(Feat. Table Category)
 

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

SAP ABAP의 핡심 κΈ°λŠ₯ 쀑 ν•˜λ‚˜μΈ 인터널 ν…Œμ΄λΈ”(Internal Table)은 ν”„λ‘œκ·Έλž¨ λ‚΄μ—μ„œ 데이터λ₯Ό μž„μ‹œλ‘œ μ €μž₯ν•˜κ³  μ²˜λ¦¬ν•  수 있게 ν•΄μ£ΌλŠ” μœ μ—°ν•œ μžλ£Œκ΅¬μ‘°μ΄λ‹€. 이λ₯Ό μ‰½κ²Œ μ΄ν•΄ν•˜κΈ° μœ„ν•΄ μ—‘μ…€ λ¬Έμ„œλ₯Ό 생각

twossun.tistory.com

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

 

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

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

twossun.tistory.com