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

CS Student’s SAP&Tech Journey๐Ÿ’ซ

[SAP] ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”(Internal Table) (4) ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ ์ˆ˜์ •, ์‚ญ์ œ, ์ •๋ ฌํ•˜๊ธฐ ๋ณธ๋ฌธ

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

[SAP] ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”(Internal Table) (4) ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ ์ˆ˜์ •, ์‚ญ์ œ, ์ •๋ ฌํ•˜๊ธฐ

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

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

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ฐ์ดํ„ฐ ์ˆ˜์ •, ์‚ญ์ œ, ์ •๋ ฌ์— ๋Œ€ํ•ด ์ƒ์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

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

 

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

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

informatik.tistory.com


 

1. ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ ์ˆ˜์ • (MODIFY TABLE)

โœ… ํŠน์ • ๋ฐ์ดํ„ฐ ์ˆ˜์ • (READ TABLE + MODIFY)

READ TABLE gt_flight INTO gw_flight WITH KEY carrid = 'AA'.

IF sy-subrc = 0. * ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ
  gw_flight-percentage = '99.99'. * ๊ฐ’ ๋ณ€๊ฒฝ
  MODIFY TABLE gt_flight FROM gw_flight. * ์ˆ˜์ •๋œ ๋ฐ์ดํ„ฐ ๋ฐ˜์˜
ENDIF.

๐Ÿ“Œ ํŠน์ง•

  • READ TABLE๋กœ ํŠน์ • ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ํ›„ MODIFY๋กœ ๋ฐ˜์˜
  • sy-subrc๋ฅผ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ ์กด์žฌ ์—ฌ๋ถ€ ์ฒดํฌ
  • MODIFY๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ธฐ์กด ํ–‰์ด ์—…๋ฐ์ดํŠธ๋จ
  • READ TABLE ์—†์ด MODIFY TABLE์„ ์‹คํ–‰ํ•˜๋ฉด ์›ํ•˜๋Š” ํ–‰์ด ์ˆ˜์ •๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Œ

 

โœ… LOOP๋ฅผ ํ™œ์šฉํ•œ ์—ฌ๋Ÿฌ ๊ฐœ ๋ฐ์ดํ„ฐ ์ˆ˜์ •

LOOP AT gt_flight INTO gw_flight WHERE percentage < '50.00'.
  gw_flight-percentage = '60.00'. * ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ˆ˜์ •
  MODIFY TABLE gt_flight FROM gw_flight.
ENDLOOP.

๐Ÿ“Œ ํŠน์ง•

  • WHERE ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์ˆ˜์ • ๊ฐ€๋Šฅ
  • LOOP๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ˜๋ณต์ ์œผ๋กœ MODIFY๋ฅผ ์‹คํ–‰ํ•  ํ•„์š” ์—†์Œ
  •  MODIFY๋Š” ํ…Œ์ด๋ธ”์„ ์ˆ˜์ •ํ•  ๋•Œ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ 

 

2. ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ ์‚ญ์ œ (DELETE TABLE)

โœ… ํŠน์ • Key ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์‚ญ์ œ (DELETE ... WHERE)

DELETE gt_flight WHERE carrid = 'AA'.

๐Ÿ“Œ ํŠน์ง•

  • ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์‚ญ์ œ
  •  Standard, Sorted, Hashed Table ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • Hashed Table์—์„œ๋Š” WHERE ์กฐ๊ฑด์ด ํ•„์ˆ˜ (Index ์‚ญ์ œ ๋ถˆ๊ฐ€๋Šฅ)

 

โœ… ํŠน์ • Index์˜ ๋ฐ์ดํ„ฐ ์‚ญ์ œ (DELETE ... INDEX)

DELETE gt_flight INDEX 3.

๐Ÿ“Œ ํŠน์ง•

  • ํŠน์ • ์œ„์น˜(Index)์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์‚ญ์ œ ๊ฐ€๋Šฅ
  • Standard Table์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

โœ…LOOP๋ฅผ ํ™œ์šฉํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์‚ญ์ œ

LOOP AT gt_flight INTO gw_flight WHERE percentage < '50.00'.
  DELETE gt_flight WHERE percentage < '50.00'.
ENDLOOP.

๐Ÿ“Œ ํŠน์ง•

  •  WHERE ์กฐ๊ฑด์„ ํ™œ์šฉํ•ด ํŠน์ • ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๋ฐ์ดํ„ฐ ์‚ญ์ œ
  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์‚ญ์ œ ๊ฐ€๋Šฅ
  • ๋ฐ˜๋Œ€๋กœ ์—ญ์ˆœ(DESCENDING)์œผ๋กœ LOOP๋ฅผ ๋Œ๋ฆฌ๋ฉด ์•ˆ์ „ํ•˜๊ฒŒ ์‚ญ์ œ ๊ฐ€๋Šฅ
  • LOOP ๋‚ด๋ถ€์—์„œ DELETE๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜๋ฉด์„œ Index๊ฐ€ ๋ณ€ํ•  ์ˆ˜ ์žˆ์Œ

 

3. ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ” ์ •๋ ฌ (SORT TABLE)

๐Ÿ“Œ ๊ธฐ๋ณธ์ ์œผ๋กœ Primary Key ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋จ
๐Ÿ“Œ  ์ •๋ ฌ ๋ฐฉํ–ฅ์„ ASCENDING(์˜ค๋ฆ„์ฐจ์ˆœ) / DESCENDING(๋‚ด๋ฆผ์ฐจ์ˆœ) ์ง€์ • ๊ฐ€๋Šฅ
๐Ÿ“Œ  ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•„๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ ๊ฐ€๋Šฅ

 

โœ… ๊ธฐ๋ณธ ์ •๋ ฌ (SORT ์‚ฌ์šฉ)

SORT gt_flight. " ๊ธฐ๋ณธ ์ •๋ ฌ (Primary Key ๊ธฐ์ค€)

๐Ÿ“Œ ํŠน์ง•

  • ๊ธฐ๋ณธ ์ •๋ ฌ ๊ธฐ์ค€์€ Primary Key
  • ์ •๋ ฌ ๊ธฐ์ค€์ด ์—†์œผ๋ฉด ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ ๋˜๋Š” ์ˆซ์ž ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ๋จ

 

โœ… ํŠน์ • ํ•„๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ

SORT gt_flight BY percentage.

๐Ÿ“Œ ํŠน์ง•

  • ํŠน์ • ํ•„๋“œ(percentage)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ ๊ฐ€๋Šฅ
  • ๊ธฐ๋ณธ๊ฐ’์€ ์˜ค๋ฆ„์ฐจ์ˆœ(ASCENDING)

 

โœ… ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ (DESCENDING)

SORT gt_flight BY percentage DESCENDING.

๐Ÿ“Œ ํŠน์ง•

  • DESCENDING์„ ์‚ฌ์šฉํ•˜๋ฉด ํฐ ๊ฐ’๋ถ€ํ„ฐ ์ž‘์€ ๊ฐ’ ์ˆœ์„œ๋กœ ์ •๋ ฌ๋จ
  • ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด Sorted Table์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋™ ์ •๋ ฌ๋จ

 

โœ… ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•„๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ

SORT gt_flight BY percentage DESCENDING carrid ASCENDING.

๐Ÿ“Œ ํŠน์ง•

  • percentage ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ, ๊ฐ™์€ ๊ฐ’์ด๋ฉด carrid ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ

 

 

 ๐ŸŽฏ ์ •๋ฆฌ: ๋ฐ์ดํ„ฐ ์ˆ˜์ •, ์‚ญ์ œ, ์ •๋ ฌ ๋ฐฉ๋ฒ•

  ๋ฐฉ๋ฒ• ์„ค๋ช…
๋ฐ์ดํ„ฐ ์ˆ˜์ • MODIFY TABLE ํŠน์ • ํ–‰์„ ์ฐพ์•„์„œ ๊ฐ’์„ ๋ณ€๊ฒฝ
  LOOP AT ... WHERE ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ–‰์„ ์กฐ๊ฑด์— ๋งž์ถฐ ๋ณ€๊ฒฝ
๋ฐ์ดํ„ฐ ์‚ญ์ œ DELETE ... WHERE ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํ–‰ ์‚ญ์ œ
  DELETE ... INDEX ํŠน์ • ์œ„์น˜(Index)์˜ ํ–‰ ์‚ญ์ œ
๋ฐ์ดํ„ฐ ์ •๋ ฌ SORT TABLE ๊ธฐ๋ณธ ์ •๋ ฌ (Primary Key ๊ธฐ์ค€)
  SORT ... BY ํ•„๋“œ๋ช… ํŠน์ • ํ•„๋“œ ๊ธฐ์ค€ ์ •๋ ฌ
  SORT ... BY ํ•„๋“œ๋ช… DESCENDING ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ