๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿง‘‍๐Ÿ’ผ SAP/ABAP

[SAP ABAP] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ OPEN SQL vs NATIVE SQL

by Jay Din 2023. 11. 3.
728x90
๋ฐ˜์‘ํ˜•

SQL ์ •์˜

SQL์ด๋ž€ Structured Query Language์˜ ์•ฝ์ž์ž…๋‹ˆ๋‹ค.

SQL์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‚ฌ์šฉ๋˜๋Š” ํ‘œ์ค€ํ™”๋œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

์•„๋ž˜ ํ‘œ์™€ ๊ฐ™์ด ํฌ๊ฒŒ 3๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ, ABAP ํ”„๋กœ๊ทธ๋žจ์˜ OPEN SQL์—์„œ๋Š” DML์–ธ์–ด๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Data Manipulation Language
(DML)
๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์–ธ์–ด
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(ํ…Œ์ด๋ธ”)์— ์ •์˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ, ๊ฐฑ์‹  ์žฌ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด์ด๋‹ค.
Data Definition Language
(DDL)
๋ฐ์ดํ„ฐ ์ •์˜ ์–ธ์–ด
์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ๊ฐ„์— ๋ฐ์ดํ„ฐ ์š”๊ตฌ๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ธฐ์ˆ ํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด๋กœ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด์ด๋‹ค.
Data Control Language
(DCL)
๋ฐ์ดํ„ฐ ์ œ์–ด ์–ธ์–ด
๋ฌด๊ฒฐ์„ฑ, ๋ณด์•ˆ ๋ฐ ๊ถŒํ•œ ์ œ์–ด, ํšŒ๋ณต ๋“ฑ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด๋กœ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

 

SQL์˜ ์ข…๋ฅ˜

SQL์—๋Š” OPEN SQL๊ณผ NATIVE SQL ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

OPEN SQL OPEN SQL์€ ABAP ์–ธ์–ด์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ Database Interface๋ฅผ ํ†ตํ•ด NATIVE SQL๋กœ ๋ฒˆ์—ญ๋ฉ๋‹ˆ๋‹ค.
NATIVE SQL NATIVE SQL์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‚ฌ์šฉ๋˜๋Š” SQL์–ธ์–ด์ž…๋‹ˆ๋‹ค.

 

OPEN SQL์ด๋ž€?

OPEN SQL์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ABAP ๋ช…๋ น์–ด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ , ์„œ๋กœ ๋‹ค๋ฅธ DBMS(Database Management System) ํ™˜๊ฒฝ-์˜ค๋ผํด, MS SQL๊ณผ ๊ฐ™์€ DB-์—์„œ๋„ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

OPEN SQL์€ DDL, DCL์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ , SELECT๋ฌธ๊ณผ ๊ฐ™์€ DML๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Local Buffer๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, NATIVE SQL๋ณด๋‹ค ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์ด ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

ABAP ํ”„๋กœ๊ทธ๋žจ์„ ํ™œ์„ฑํ™”ํ•  ๋•Œ ์ž๋™์œผ๋กœ Syntax Check๊ฐ€ ์ˆ˜ํ–‰๋œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Local Buffer๋ž€?
'Local Buffer'๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ์ดˆ๋กœ DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ 'Local Buffer'์— ๋ณต์‚ฌํ•ด๋‘๊ณ ,
๋‹ค์Œ์— ๋‹ค์‹œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋ฉด DB์—์„œ ๋‹ค์‹œ ์ฐพ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ฒ„ํผ์—์„œ ์šฐ์„  ์ ‘๊ทผํ•จ์œผ๋กœ์จ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ์ค„์ด๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

Syntax Check๋ž€?
itab ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ตฌ๋ฌธ ๊ฒ€์‚ฌ ์‹คํ–‰์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

๋ชจ๋“  OPEN SQL์˜ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ SY-SUBRC = 0์„(์„ฑ๊ณตํ•˜์ง€ ๋ชปํ•˜๋ฉด 0 ์ด์™ธ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜), SY-DBCNT๋Š” ๋ฐ์ดํ„ฐ LINE ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

OPEN SQL ๋ช…๋ น์–ด

Keyword ๊ธฐ๋Šฅ
SELECT ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Œ
INSERT ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•จ
UPDATE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•จ
MODIFY INSERT + UPDATE์˜ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•จ

UPDATE: ๋™์ผํ•œ ํ‚ค๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ
INSERT: ๋™์ผํ•œ ํ‚ท๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
DELETE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ๊ฐ’์„ ์‚ญ์ œ

 

NATIVE SQL์ด๋ž€?

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง์ ‘ ์ ‘์†ํ•˜์—ฌ DML, DDL ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • DDL: ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ณ (CREATE), ๋ณ€๊ฒฝ(MODIFY)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

OPEN SQL์˜ Command Set(SELECT, UPDATE, DELETE ๋“ฑ)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

OPEN SQL๋กœ ํ•ด๊ฒฐ์ด ๋˜์ง€ ์•Š๋Š” ๋ณต์žกํ•œ SQL์€ NATIVE SQL์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

728x90

SQL๊ณผ Local Buffer

SAP Local Buffer๋Š” R/3 Architecture์—์„œ ์ง€์›ํ•˜๋Š” ๊ธฐ์ˆ ๋กœ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋Š” ์ค‘์š”ํ•œ ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

๋‹จ, ํ…Œ์ด๋ธ”์˜ Technical Setting์—์„œ Buffer๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์„ค์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ž‘๋™ ์ˆœ์„œ ์˜ˆ์‹œ

SELECT * FROM marc WHERE werks = '1101'
	IF SY-SUBRC EQ 0.
    	WRITE marc.
        EXIT.
    ENDIF.
ENDSELECT.

 

  1. MARC ํ…Œ์ด๋ธ”์—์„œ WERKS='1101'์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” SQL์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  2. DB Interface์—์„œ NATIVE SQL๋กœ ํ•ด์„ํ•˜์—ฌ ํ…Œ์ด๋ธ” MARC์—์„œ WERKS ํ•„๋“œ๊ฐ€ '1101'์ธ ๊ฐ’์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  3. MARC ํ…Œ์ด๋ธ”์—๋‹ˆ๋Š” WERKS='1101'์ธ Row๋Š” 3๊ฑด์ด๋ฉฐ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋Š” Local Buffer์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  4. MARC ํ…Œ์ด๋ธ”์—๋Š” WERKS='1101'์ธ Row๋Š” 3๊ฑด์ด๋ฉฐ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋Š” Local Buffer์— EXITํ•˜๊ฒŒ ๋˜์–ด, ํ”„๋กœ๊ทธ๋žจ์ด Displayํ•˜๋Š” ๊ฐ’์€ '1101'์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค.
  5. ๋‹ค์‹œ ํ•ด๋‹น SQL์„ ์‹คํ–‰ํ•˜๋ฉด, Local Buffer์— WERKS='1101'์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ , ๋ฐ”๋กœ Local Buffer์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 


์ฐธ๊ณ 

https://help.sap.com/doc/saphelp_nw73ehp1/7.31.19/en-us/fc/eb2e7d358411d1829f0000e829fbfe/loio9f45ddfc8f0a4eb59d9453854d562243_LowRes.png

EASY ABAP 2.0 ๋„์„œ ์ฐธ๊ณ 

728x90
๋ฐ˜์‘ํ˜•