[SAP] OPEN SQL ๋ฐ์ดํฐ ์ฝ์ / ์์ / ์ญ์ / ํธ๋์ญ์ ์ฒ๋ฆฌ
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์ด ๋ฐ์ํ๋ฏ๋ก, ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.