๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ABAP Concept (๐Ÿ“๊ฐœ๋…)/Etc.

SELECT๋ฌธ FROM @itab(์ธํ„ฐ๋„ํ…Œ์ด๋ธ”)์€ Database ์˜์—ญ์—์„œ ์ž‘๋™ ํ• ๊นŒ?

SQL์„ ์‚ฌ์šฉํ•  ๋•Œ ์šฐ๋ฆฌ๋Š” ๋ณดํ†ต "SELECT๋ฅผ ์“ฐ๋ฉด ๋‹น์—ฐํžˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB)๋กœ ์š”์ฒญ์ด ๊ฐ„๋‹ค"๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ABAP 7.52 ์ดํ›„ ๋“ฑ์žฅํ•œ FROM @itab ๊ตฌ๋ฌธ์—์„œ๋Š” ์ƒํ™ฉ์ด ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค. ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”๊นŒ์ง€ (@itab)์„ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋กœ ์‚ฌ์šฉํ•˜๋ฉด, ๊ณผ์—ฐ ํ•ญ์ƒ Database ์„œ๋ฒ„ (DB ๋ ˆ์ด์–ด)๊นŒ์ง€ ๋‹ค๋…€์˜ค๋Š” ๊ฑธ๊นŒ?

 

๐Ÿ“ŒDatabase ๋ ˆ์ด์–ด๋ž€?
๐Ÿ”—[ABAP Concept (๐Ÿ“๊ฐœ๋…)/Basic] - SAP 3-Tier ๊ตฌ์กฐ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ
 

SAP 3-Tier ๊ตฌ์กฐ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

SAP๋ฅผ ์ฒ˜์Œ ๋ฐฐ์šฐ๊ฑฐ๋‚˜ ABAP ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์‹œ์ž‘ํ–ˆ๋‹ค๋ฉด ํ•œ ๋ฒˆ์ฏค ์ด๋Ÿฐ ๋ง์„ ๋“ค์–ด๋ดค์„ ๊ฒƒ์ด๋‹ค. SAP๋Š” 3-Tier ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์–ด์š”. ๊ทผ๋ฐ ๊ทธ๊ฒŒ ๋„๋Œ€์ฒด ๋ฌด์Šจ ๋œป์ด์ง€? ํ”„๋ ˆ์  ํ…Œ์ด์…˜? ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜? ๋ฐ

twossun.tistory.com

 

 

์˜ค๋Š˜์€ ํ•ด๋‹น ์งˆ๋ฌธ์„ ์ค‘์‹ฌ์œผ๋กœ 

  • FROM @itab์˜ ๊ธฐ๋ณธ ๊ฐœ๋…
  • ์‹ค์ œ ์–ด๋–ค ๊ฒฝ์šฐ์— Database ์„œ๋ฒ„(DB ๋ ˆ์ด์–ด)๋ฅผ ํƒ€๊ณ 
  • ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” Application ์„œ๋ฒ„(AS ABAP) ๋ฉ”๋ชจ๋ฆฌ์—์„œ๋งŒ ๋๋‚˜๋Š”์ง€

์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.


1. FROM @itab ๊ธฐ๋ณธ ๊ฐœ๋…, ์‚ฌ์šฉ ๋ฐฉ๋ฒ• 

ABAP 7.52๋ถ€ํ„ฐ๋Š” SELECT๋ฌธ์˜ FROM์ ˆ์— Internal Table์„ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

SELECT carrid FROM @itab AS it_scarr INTO TABLE @DATA(result).
  • @๋ฅผ ๋ถ™์—ฌ์„œ ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”์„ SQL ๋ฌธ๋ฒ• ์•ˆ์—์„œ ์ง์ ‘ ์ฐธ์กฐ
  • ๋ฐ˜๋“œ์‹œ AS alias๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ณ„์นญ์„ ์ง€์ •
  • ์ธํ„ฐ๋„ํ…Œ์ด๋ธ”์ด ๋งˆ์น˜ DB ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ๋™์ž‘

โš ๏ธ ์ฃผ์˜ํ•  ์ ์€, FROM @itab์„ ์“ด๋‹ค๊ณ  ๋ฌด์กฐ๊ฑด DB๋กœ ์ „์†ก๋˜๋Š” ๊ฑด ์•„๋‹ˆ๋ผ๋Š” ์ ์ด๋‹ค. ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ(AS ABAP ์„œ๋ฒ„)์—์„œ๋งŒ ์ž‘๋™ํ•˜๊ฑฐ๋‚˜, DB ๋ ˆ์ด์–ด๊นŒ์ง€ ์ „์†ก๋  ์ˆ˜ ์žˆ๋‹ค.


2. FROM @itab ๋‹จ๋… ์‚ฌ์šฉ ์‹œ ๊ธฐ๋ณธ ๋™์ž‘

  • ๋‹ค๋ฅธ DB ํ…Œ์ด๋ธ” JOIN ์—†์ด FROM @itab๋งŒ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค๋ฉด, ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์€ Application ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์กฐํšŒ๋œ๋‹ค.  ์ฆ‰, Database Layer(DB ์„œ๋ฒ„)๋กœ ์ „์†ก๋˜์ง€ ์•Š๊ณ , SAP ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์— ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋œ๋‹ค. 

โœ… Application ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฑด ( ๋‹ค์Œ ๋‚ด์šฉ์„ ๋ชจ๋‘ ์ถฉ์กฑ )

  • ์˜ค์ง ์ธํ„ฐ๋„ํ…Œ์ด๋ธ” ํ•˜๋‚˜๋งŒ ์กฐํšŒํ•˜๋ฉฐ, ๋‹จ์ˆœ select, where ์กฐ๊ฑด์ธ ๊ฒฝ์šฐ
  • DB ํ…Œ์ด๋ธ”์ด๋‚˜ ๋‹ค๋ฅธ ์™ธ๋ถ€ ๊ฐ์ฒด์™€ Join, Subquery, Sorting ๊ฐ™์€ ๋ณต์žกํ•œ ์—ฐ์‚ฐ๋„ ์—†์Œ
  • ์ง‘๊ณ„ ํ•จ์ˆ˜, SQL ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

3. FROM @itab์ธ๋ฐ DB๋ฅผ ํƒ€๋Š” ๊ฒฝ์šฐ

  • SELECT๋ฌธ์— ํŠน์ • SQL ์—ฐ์‚ฐ์ด ํฌํ•จ๋˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด DB๋ฅผ ํƒ€๊ฒŒ ๋œ๋‹ค. 

โœ… DB๋ฅผ ํƒ€๋Š” ์กฐ๊ฑด ( ๋‹ค์Œ ๋‚ด์šฉ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ถฉ์กฑ ํ•˜๋ฉด )

์กฐ๊ฑด ์˜ˆ์‹œ ์„ค๋ช…
์ง‘๊ณ„ ํ•จ์ˆ˜ ์‚ฌ์šฉ SUM(), COUNT(), AVG() SQL ์ง‘๊ณ„ ์—ฐ์‚ฐ์€ DB๋งŒ ๊ฐ€๋Šฅ
DISTINCT ์‚ฌ์šฉ SELECT DISTINCT field FROM @itab ์ค‘๋ณต ์ œ๊ฑฐ๋Š” DB ์—ฐ์‚ฐ
SQL ํ‘œํ˜„์‹ ์‚ฌ์šฉ CASE, COALESCE, SUBSTRING ๋“ฑ SQL ์—”์ง„์ด ํ•„์š”
GROUP BY ์‚ฌ์šฉ GROUP BY field ๊ทธ๋ฃนํ•‘ ์—ฐ์‚ฐ์€ DB๋งŒ ์ฒ˜๋ฆฌ
DB ํ…Œ์ด๋ธ”๊ณผ JOIN INNER JOIN DBํ…Œ์ด๋ธ” DB ๋ ˆ์ด์–ด์—์„œ ์กฐ์ธ ์ˆ˜ํ–‰

 

์ฆ‰, FROM์— @itab๋งŒ ์žˆ์–ด๋„, SELECT๋ฌธ ์•ˆ์—์„œ SUM, DISTINCT, CASE, GROUP BY ๊ฐ™์€ SQL ์—ฐ์‚ฐ์ด ๋‚˜์˜ค๋ฉด โžก ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์„ DB๋กœ ์ž„์‹œ ์ „์†กํ•ด์„œ ๊ฑฐ๊ธฐ์„œ ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋œ๋‹ค. 

SELECT a~carrid, b~connid
   FROM @itab AS a INNER JOIN spfli AS b ON a~carrid = b~carrid
   INTO TABLE @DATA(join_result).
SELECT FROM @lt_vbap AS itab
 FIELDS vbeln, SUM( kwmeng ) as kwmeng
 GROUP BY vbeln INTO TABLE @data(lt_sum).

 

์œ„์™€ ๊ฐ™์ด ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ” ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด์„œ, ์ง‘๊ณ„ ํ•จ์ˆ˜๋“ฑ์„ ์‚ฌ์šฉํ–ˆ์„ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ๊ณ  ๋ฉ”์„ธ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

< DB์—์„œ ์ˆ˜ํ–‰๋œ๋‹ค๋Š” Warning ๋ฉ”์„ธ์ง€ >

 

๐Ÿ’ก ํ•ด๋‹น Syntax Check ๊ฒฝ๊ณ ๋ฅผ skip ํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์ฟผ๋ฆฌ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ํ”„๋ผ๊ทธ๋งˆ ##itab_db_select ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค. 

๐Ÿ“– Pragma(ํ”„๋ผ๊ทธ๋งˆ)

์ฃผ๋กœ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋‚˜ ๊ฒฝ๊ณ ๋ฅผ ์–ต์ œํ•˜๊ฑฐ๋‚˜ ์˜ˆ์™ธ์ ์ธ ์ƒํ™ฉ์„ ๋ช…์‹œ์ ์œผ๋กœ ํ—ˆ์šฉํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋Ÿฐํƒ€์ž„ ๋™์ž‘์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค. 
โœ”๏ธ ์ •์ƒ์ ์ธ ์ฝ”๋”ฉ์ธ๋ฐ๋„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฒฝ๊ณ ๋ฅผ ๋„์šธ ๋•Œ
โœ”๏ธ SAP ํ‘œ์ค€ ์ฝ”๋“œ๋‚˜ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์™€ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•ด์•ผ ํ•  ๋•Œ
โœ”๏ธ ์˜ˆ์™ธ ์ƒํ™ฉ์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ฌด์‹œํ•˜๊ณ ์ž ํ•  ๋•Œ

 


4. ์Šคํƒ ๋‹ค๋“œ ABAP Guide ์‚ฌํ•ญ

  • Internal Table์„ SELECT๋กœ ์“ฐ๋Š” ๊ฑด ์„ฑ๋Šฅ์ƒ ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Œ
  • READ TABLE, LOOP AT ๊ฐ™์€ ๊ณ ์ „์ ์ธ ABAP ๋ฐฉ์‹์ด ๋” ๋น ๋ฅผ ์ˆ˜ ์žˆ์Œ
  • SELECT๋ฅผ ๊ตณ์ด ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋ผ๋ฉด SQL ๋ฌธ๋ฒ•์„ ํ™œ์šฉํ•ด์•ผ ํ•˜๋Š” ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ (JOIN, Aggregation ๋“ฑ)์— ํ•œ์ •ํ•ด์•ผ ํ•จ