๊ด€๋ฆฌ ๋ฉ”๋‰ด

CS Studentโ€™s SAP&Tech Journey๐Ÿ’ซ

[SAP] ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”(Internal Table) (3) ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ๋ณธ๋ฌธ

SAP/์ธํ„ฐ๋„ ํ…Œ์ด๋ธ” Internal Table

[SAP] ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”(Internal Table) (3) ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ

์ธํฌ๋งˆํ‹ฑ 2025. 2. 7. 21:28

SAP ABAP์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”(Internal Table, IT)์€ ํ•„์ˆ˜์ ์ธ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.
์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ์ž„์‹œ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”๋กœ, ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ์กฐ์ž‘ํ•˜๋Š” ๋ฐ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„ ์ƒ์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 


์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•
๊ณผ ๊ด€๋ จ๋œ ํฌ์ŠคํŒ… ๋ณด๋Ÿฌ๊ฐ€๊ธฐโฌ‡๏ธ

 

ABAP ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”(Internal Table) (2) ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ ์‚ฝ์ž…ํ•˜๊ธฐ

SAP ABAP์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”(Internal Table, IT)์€ ํ•„์ˆ˜์ ์ธ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ์ž„์‹œ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”๋กœ, ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ

informatik.tistory.com


 

 

1. READ TABLE์„ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ

ํŠน์ •ํ•œ ํ•œ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์ด๋ฉฐ, Index ๋˜๋Š” Key๋ฅผ ์ด์šฉํ•ด์„œ ๊ฒ€์ƒ‰ํ•œ๋‹ค.

 

โœ…READ TABLE (INDEX ๋ฐฉ์‹ - ์œ„์น˜๋กœ ๋ฐ์ดํ„ฐ ์กฐํšŒ)

READ TABLE gt_flight INTO gw_flight INDEX 2. "INDEX 2์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ gw_flight์— ๋‹ด๊ธด๋‹ค.
WRITE: / gw_flight-carrid, gw_flight-connid.

๐Ÿ“Œ ํŠน์ง•

  • ์ธ๋ฑ์Šค(Index)๋Š” 1๋ถ€ํ„ฐ ์‹œ์ž‘
  • ์ •๋ ฌ ์ˆœ์„œ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Œ
  • ๋ฐ์ดํ„ฐ๊ฐ€ ํ•ญ์ƒ ๊ฐ™์€ ์œ„์น˜์— ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

โœ… READ TABLE (KEY ๋ฐฉ์‹ - ํŠน์ • ๊ฐ’์œผ๋กœ ์กฐํšŒ)

READ TABLE gt_flight INTO gw_flight WITH KEY carrid = 'AA'.
WRITE: / gw_flight-carrid, gw_flight-connid.

๐Ÿ“Œ ํŠน์ง•

  • ํŠน์ • ํ‚ค ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰
  • Hashed Table ๋˜๋Š” Sorted Table์—์„œ ๋น ๋ฅธ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ
  • ์ค‘๋ณต๋œ ๊ฐ’์ด ์žˆ์„ ๊ฒฝ์šฐ, ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ ๋ฐ˜ํ™˜

 

2. LOOP AT์„ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ

์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฝ์–ด์„œ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ํ•„ํ„ฐ๋ง ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

โœ… LOOP AT (์ „์ฒด ๋ฐ์ดํ„ฐ ์กฐํšŒ)

LOOP AT gt_flight INTO gw_flight.
  WRITE: / gw_flight-carrid, gw_flight-connid.
ENDLOOP.

๐Ÿ“Œ ํŠน์ง•

  •  ํŠน์ • ํ‚ค ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰
  • Hashed Table ๋˜๋Š” Sorted Table์—์„œ ๋น ๋ฅธ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ
  • ์ค‘๋ณต๋œ ๊ฐ’์ด ์žˆ์„ ๊ฒฝ์šฐ, ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ ๋ฐ˜ํ™˜

 

โœ… LOOP AT (WHERE ์กฐ๊ฑด์„ ํ™œ์šฉํ•œ ํ•„ํ„ฐ๋ง)

LOOP AT gt_flight INTO gw_flight WHERE percentage > '90.00'.
  WRITE: / gw_flight-carrid, gw_flight-connid, gw_flight-percentage.
ENDLOOP.

๐Ÿ“Œ ํŠน์ง•

  • ํŠน์ • ์กฐ๊ฑด(WHERE)์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ์Œ
  • ์ฝ๊ธฐ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋จ (๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ œ์™ธ ๊ฐ€๋Šฅ)

 

3. SELECT INTO TABLE์„ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ (DB ์กฐํšŒ ํ›„ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์— ์ €์žฅ)

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

โœ… SELECT INTO TABLE์„ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

SELECT * FROM SFLIGHT INTO TABLE gt_flight WHERE CARRID = 'AA'.

๐Ÿ“Œ ํŠน์ง•

  •  DB์—์„œ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์„ ์ฑ„์›€
  • ์กฐ๊ฑด(WHERE)์„ ์‚ฌ์šฉํ•ด ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ
  • ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ํšจ์œจ์ 

 

4. ์œ ํ‹ธ ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•œ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ” ์ฝ๊ธฐ (cl_demo_output)

์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋””๋ฒ„๊น…ํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค.

cl_demo_output=>display_data( gt_flight ). " ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ” ์ „์ฒด ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ

๐Ÿ“Œ ํŠน์ง•

  • ์ฝ”๋“œ ํ•œ ์ค„๋กœ ํ…Œ์ด๋ธ” ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ ๊ฐ€๋Šฅ
  • ๊ฐœ๋ณ„ WRITE ์—†์ด ์ž๋™์œผ๋กœ ์ •๋ฆฌ๋œ ํฌ๋งท ์ œ๊ณต
  • ๋””๋ฒ„๊น… ์‹œ ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ ํ™•์ธ ๊ฐ€๋Šฅ

 

5. FOR ALL ENTRIES์„ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ (๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ ์กฐํšŒ ์ตœ์ ํ™”)

์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

โœ… FOR ALL ENTRIES๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง

SELECT * FROM SFLIGHT INTO TABLE gt_flight
  FOR ALL ENTRIES IN gt_request
  WHERE CARRID = gt_request-carrid.

๐Ÿ“Œ ํŠน์ง•

  • ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”(gt_request)๊ณผ ๋งค์นญ๋˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ DB์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ
  •  JOINS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ํ…Œ์ด๋ธ” ๊ฐ„ ๊ด€๊ณ„๋ฅผ ์„ค์ • ๊ฐ€๋Šฅ

 

 

6. ์ •๋ฆฌ

๋ฐฉ๋ฒ• ์„ค๋ช… ํŠน์ง•
1. READ TABLE (INDEX ๋ฐฉ์‹) ํŠน์ • ์œ„์น˜(Index)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Œ ๋ฐ์ดํ„ฐ ์œ„์น˜๋ฅผ ์•Œ๊ณ  ์žˆ์„ ๋•Œ ์œ ์šฉ
2. READ TABLE (KEY ๋ฐฉ์‹) ํŠน์ • ํ‚ค ๊ฐ’์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ Sorted / Hashed Table์—์„œ ๋น ๋ฆ„
3. LOOP AT ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ์Œ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ•„ํ„ฐ๋ง ๊ฐ€๋Šฅ
4. SELECT INTO TABLE DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”๋กœ ์ €์žฅ SQL์„ ์‚ฌ์šฉํ•ด ํšจ์œจ์  ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ
5. FOR ALL ENTRIES ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์„ ๊ธฐ๋ฐ˜์œผ๋กœ DB ์กฐํšŒ ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ ์กฐํšŒ ์‹œ ์ตœ์ ํ™” ๊ฐ€๋Šฅ
6. ์œ ํ‹ธ (cl_demo_output) ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ถœ๋ ฅ ๋””๋ฒ„๊น… ๋ฐ ๋ฐ์ดํ„ฐ ํ™•์ธ์— ์œ ์šฉ

๐Ÿ’ก ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์˜ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ? โ†’ READ TABLE WITH KEY
๐Ÿ’ก ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ? โ†’ LOOP AT
๐Ÿ’ก DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•  ๋•Œ? โ†’ SELECT INTO TABLE
๐Ÿ’ก ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์„ ๊ธฐ์ค€์œผ๋กœ DB ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ? โ†’ FOR ALL ENTRIES
๐Ÿ’ก ๋””๋ฒ„๊น… ๋ฐ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ์ด ํ•„์š”ํ•  ๋•Œ? โ†’ cl_demo_output=> display_data()

 

๐ŸŽฏ ํ—ท๊ฐˆ๋ฆฌ๋Š” ํฌ์ธํŠธ

  • SELECT โ†’ DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ฝ์–ด์˜ค๋Š” ๊ฒƒ
  • READ TABLE โ†’ ์ด๋ฏธ ์ƒ์„ฑ๋œ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๊ฒƒ(๋ฉ”๋ชจ๋ฆฌ(์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”) ์กฐํšŒ)