SAP/ABAP ๋ฌธ๋ฒ• | Open SQL

[SAP] OPEN SQL ๋ฐ์ดํ„ฐ ์‚ฝ์ž… / ์ˆ˜์ • / ์‚ญ์ œ / ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ

์ธํฌ๋งˆํ‹ฑ 2025. 3. 28. 15:50

SAP ์‹œ์Šคํ…œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„  OPEN SQL ๋ฌธ๋ฒ•์„ ๋ฐ˜๋“œ์‹œ ์ตํ˜€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ABAP์—์„œ ์‚ฌ์šฉํ•˜๋Š” OPEN SQL์€ SAP ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฑฐ์ณ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋งž๊ฒŒ ์ž๋™์œผ๋กœ ๋ณ€ํ™˜๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐœ๋ฐœ์ž๋Š” ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ DB ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ฐ์ดํ„ฐ ์‚ฝ์ž…(INSERT), ์ˆ˜์ •(UPDATE), ์‚ญ์ œ(DELETE) ๊ทธ๋ฆฌ๊ณ  ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ(COMMIT / ROLLBACK) ๋ฐฉ์‹๊นŒ์ง€ ์‹ค์Šต ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 


 

โœ… OPEN SQL ๊ตฌ์กฐ์™€ ๊ฐœ๋…

  • ABAP์—์„œ ์‚ฌ์šฉํ•˜๋Š” SQL = OPEN SQL
  • ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” DB ์ธํ„ฐํŽ˜์ด์Šค → Native SQL๋กœ ์ž๋™ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ: SELECT * FROM SCARR → MSSQL, HANA DB ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์‹คํ–‰๋จ

โœ”๏ธ SY-SUBRC / SY-DBCNT๋Š” ๊ฐ๊ฐ ์„ฑ๊ณต ์—ฌ๋ถ€ / ์ฒ˜๋ฆฌ ๊ฑด์ˆ˜๋ฅผ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
โœ”๏ธ ํด๋ผ์ด์–ธํŠธ๋Š” ๋กœ์ปฌ(์˜ˆ: 400๋ฒˆ) ๊ธฐ์ค€์œผ๋กœ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ(์˜ˆ: 800๋ฒˆ) ์ ‘๊ทผ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ถˆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿ“Œ INSERT - ๋ฐ์ดํ„ฐ ์‚ฝ์ž…

๋ฌธ๋ฒ•

INSERT <ํ…Œ์ด๋ธ”> FROM <์›Œํฌ์—์–ด๋ฆฌ์–ด>.
INSERT <ํ…Œ์ด๋ธ”> FROM TABLE <๋‚ด๋ถ€ ํ…Œ์ด๋ธ”>.

์˜ˆ์ œ

DATA GS_SCARR TYPE SCARR.

GS_SCARR-carrid = 'KA'.
GS_SCARR-carrname = 'Korean Air'.
GS_SCARR-currcode = 'KRW'.
GS_SCARR-url = 'http://www.koreanair.com'.

INSERT ZSCARR_07 FROM GS_SCARR.
WRITE: / SY-SUBRC, SY-DBCNT.
  • SY-SUBRC = 0 → ์„ฑ๊ณต, SY-DBCNT = 1 → ํ•œ ๊ฑด ์‚ฝ์ž…

โœ”๏ธ ์—ฌ๋Ÿฌ ๊ฑด ์‚ฝ์ž… ์‹œ์—๋Š” FROM TABLE ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ค‘๋ณต ํ‚ค ๋ฐœ์ƒ ์‹œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ACCEPTING DUPLICATE KEYS ์˜ต์…˜์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋คํ”„๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๐Ÿ“Œ UPDATE - ๋ฐ์ดํ„ฐ ์ˆ˜์ •

๋ฌธ๋ฒ•

UPDATE <ํ…Œ์ด๋ธ”> FROM <์›Œํฌ์—์–ด๋ฆฌ์–ด>.
UPDATE <ํ…Œ์ด๋ธ”> SET <ํ•„๋“œ> = <๊ฐ’> WHERE <์กฐ๊ฑด>.

์˜ˆ์ œ

SELECT SINGLE * INTO GS_SCARR FROM ZSCARR_07 WHERE carrid = 'KA'.
GS_SCARR-currcode = 'EUR'.
UPDATE ZSCARR_07 FROM GS_SCARR.

UPDATE ZSCARR_07 SET url = 'http://www.naver.com'
  WHERE carrid = 'AA'.

โœ”๏ธ ์ฒซ ๋ฒˆ์งธ ๋ฐฉ์‹์€ WorkArea๋ฅผ ํ†ตํ•ด ์ „์ฒด ๋ ˆ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •
โœ”๏ธ ๋‘ ๋ฒˆ์งธ ๋ฐฉ์‹์€ ํŠน์ • ํ•„๋“œ๋งŒ ์ง์ ‘ ์ง€์ •ํ•ด์„œ ์ˆ˜์ •

 

 

๐Ÿ“Œ MODIFY - ์‚ฝ์ž… ๋˜๋Š” ์ˆ˜์ • ์ž๋™ ํŒ๋‹จ

๋ฌธ๋ฒ•

MODIFY <ํ…Œ์ด๋ธ”> FROM <์›Œํฌ์—์–ด๋ฆฌ์–ด>.

โœ… ํ•ด๋‹น ํ‚ค๊ฐ€ ์กด์žฌํ•˜๋ฉด UPDATE, ์—†์œผ๋ฉด INSERT๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

GS_SCARR-carrid = 'LH'.
MODIFY ZSCARR_07 FROM GS_SCARR.  " INSERT

GS_SCARR-carrid = 'AA'.
MODIFY ZSCARR_07 FROM GS_SCARR.  " UPDATE

 

 

๐Ÿ“Œ DELETE - ๋ฐ์ดํ„ฐ ์‚ญ์ œ

๋ฌธ๋ฒ•

DELETE <ํ…Œ์ด๋ธ”> FROM <์›Œํฌ์—์–ด๋ฆฌ์–ด>.
DELETE FROM <ํ…Œ์ด๋ธ”> WHERE <์กฐ๊ฑด>.

์˜ˆ์ œ

DELETE FROM ZSCARR_07 WHERE carrname = ''.

 

 

๐Ÿ“ŒํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ - COMMIT / ROLLBACK

๋ช…์‹œ์  ์ฒ˜๋ฆฌ (Explicit)

COMMIT WORK.     " ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜ "
ROLLBACK WORK.   " ๋ชจ๋“  ์ž‘์—… ๋˜๋Œ๋ฆผ "

 

๋ฌต์‹œ์  ์ฒ˜๋ฆฌ (Implicit)

  • ํ™”๋ฉด์ด ๋ฐ”๋€” ๋•Œ (CALL SCREEN ๋“ฑ)
  • REPORT๊ฐ€ ๋๊นŒ์ง€ ์‹คํ–‰๋  ๋•Œ
  • RFC ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ
  • WAIT ๋ฌธ ์‚ฌ์šฉ ์‹œ

→ ์ด ๊ฒฝ์šฐ๋„ ์ž๋™์œผ๋กœ COMMIT์ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ, ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.