๐ก SAP CDS ๋ทฐ(Core Data Services View)
CDS ๋ทฐ๋ SQL ๊ธฐ๋ฐ์ ๋ทฐ(View)๋ฅผ ๋ณด๋ค ๊ฐ๋ ฅํ๊ฒ ํ์ฅํ SAP์ ๋ฐ์ดํฐ ์ ์ ์ธ์ด์
๋๋ค.
๊ธฐ์กด ABAP SQL์ด ๊ฐ์ง ํ๊ณ๋ฅผ ๊ทน๋ณตํ๋ฉฐ, ์ฑ๋ฅ๊ณผ ๊ฐ๋
์ฑ ๋ชจ๋๋ฅผ ๊ฐ์ถ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๋ฐฉ์์ผ๋ก ๊ฐ๊ด๋ฐ๊ณ ์์ต๋๋ค.
| ํญ๋ชฉ | CDS ๋ทฐ | SQL ๋ทฐ |
|---|---|---|
| ๊ธฐ๋ฅ | ํด๋ผ์ด์ธํธ ์ฒ๋ฆฌ, ๊ถํ ๊ด๋ฆฌ, ์๋ฉํฑ ์ ๋ณด ์ ๊ณต, ์ต์ SQL ๊ธฐ๋ฅ ์ฌ์ฉ ๊ฐ๋ฅ | DB ๊ฐ์ฒด ํํ, ์ ํ์ ๊ธฐ๋ฅ |
| ์์ฑ ์์น | ABAP ๋ ํฌ์งํ ๋ฆฌ์์ ์ ์, DB ์ง์ ์์ฑ ์๋ | DB ๋ด๋ถ์ ์ง์ ์์ฑ |
| ABAP Dictionary | OpenSQL๋ก ์กฐํ ๊ฐ๋ฅ | ์กฐํ๋ง ๊ฐ๋ฅ, ์์ ๋ถ๊ฐ |
| ํด๋ผ์ด์ธํธ ํ๋ | ์ฌ์ฉ ๊ฐ๋ฅ | ์ผ๋ฐ์ ์ผ๋ก ๋ฏธ์ฌ์ฉ |
| ์๋ฉํฑ ์ ๋ณด | ์ ๊ณตํจ | ์ ๊ณตํ์ง ์์ |
โ CDS ๋ทฐ๋ ์ฑ๋ฅ, ๊ตฌ์กฐํ, ์ฐ๋ ์ธก๋ฉด์์ ๊ธฐ์กด SQL ๋ทฐ๋ณด๋ค ์ ๋ฆฌํฉ๋๋ค.
CDS ๋ทฐ๋ Eclipse ๊ธฐ๋ฐ ๊ฐ๋ฐํ๊ฒฝ์์ ์์ฑ๋ฉ๋๋ค.
Help > Install New Software โ SAP HANA ํ๋ฌ๊ทธ์ธ ์ค์น New > ABAP Project ์์ฑ ํ SAP ์๋ฒ ์ ์ (ID, PW, Client ์
๋ ฅ) New > Other > Core Data Services > Data DefinitionCDS ๋ทฐ๋ SQL SELECT ๊ตฌ๋ฌธ๊ณผ ์ ์ฌํ๊ฒ ์์ฑ๋๋ฉฐ, ๋ค์ํ ๋ด์ฅ ํจ์ ๋ฐ ์ฐ์ฐ์ ์ง์ํฉ๋๋ค.
@AbapCatalog.sqlViewName: 'ZVIEW_EXAMPLE'
define view ZCDS_SALES as select from sflight
{
carrid,
connid,
seatsocc,
price,
round( price / seatsocc, 2 ) as avg_price_per_seat
}
๊ธฐ์กด ABAP์์๋ ์ฌ๋ฌ ํ ์ด๋ธ์ ์กฐ์ธํ๋ ค๋ฉด ๋ฐ๋ณต์ ์ผ๋ก SELECT, LOOP, READ TABLE ๋ฑ์ ๋ณต์กํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํด์ผ ํ์ต๋๋ค.
SELECT * FROM sflight INTO TABLE @DATA(lt_sflight).
LOOP AT lt_sflight INTO DATA(ls_sflight).
SELECT SINGLE carrname INTO @DATA(lv_carrname)
FROM scarr
WHERE carrid = @ls_sflight-carrid.
ENDLOOP.`
CDS ๋ทฐ์์๋ ์กฐ์ธ์ ๋ทฐ ์ ์์ ํ ๋ฒ์ ์ฒ๋ฆฌํ ์ ์์ด ๊ฐ๊ฒฐํ๊ณ ์ฑ๋ฅ๋ ๋ฐ์ด๋ฉ๋๋ค.
define view ZCDS_FLIGHT_INFO as
select from sflight
inner join scarr on sflight.carrid = scarr.carrid
{
sflight.carrid,
scarr.carrname,
sflight.connid,
sflight.price
}
ABAP์์๋ ๊ณ์ฐ ๋ก์ง์ด SQL์์ ์ด๋ ต๊ณ ๋ณดํต ABAP ์ฝ๋์์ ์ฒ๋ฆฌํจ:
DATA(avg_price) = price / seatsocc.`
๊ณ์ฐ๋ ํ๋๋ฅผ ๋ทฐ ์ ์ ์์์ ๋ฐ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค:
round( price / seatsocc, 2 ) as avg_price_per_seat
ABAP SQL์ ๋จ์ํ ๋ฐ์ดํฐ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ๋ฉฐ, ๊ถํ ์ ์ด๋ ํ๋ ์ค๋ช ์ ์ถ๊ฐ ์ฝ๋๋ก ๊ตฌํํด์ผ ํฉ๋๋ค.
CDS๋ @Annotations๋ฅผ ํตํด ๋ทฐ์ ๊ถํ(Authorization), ์ค๋ช , UI ์์ฑ ๋ฑ์ ๋ฐ๋ก ๋ถ์ฌํ ์ ์์ต๋๋ค.
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'ํญ๊ณตํธ ์์ฝ ๋ทฐ'
โ ์์ฝ
| ํญ๋ชฉ | ABAP SQL | CDS ๋ทฐ |
|---|---|---|
| ๋ค๋จ๊ณ ์กฐ์ธ | ๋ณต์กํ ์ค์ฒฉ SELECT & LOOP | ๋จ์ผ SELECT ์ ์ ๊ฐ๋ฅ |
| ๊ณ์ฐ ํ๋ | ์ฝ๋๋ก ์๋ ๊ณ์ฐ | ๋ทฐ ๋ด์ฅ ์์์ผ๋ก ์ฒ๋ฆฌ |
| ์๋ฉํฑ/๊ถํ ๊ด๋ฆฌ | ๊ตฌํ ์ฝ๋ ๋ณ๋ ํ์ | Annotation์ผ๋ก ์ง์ ์ค์ |
| ๊ฐ๋ ์ฑ | SQL + ABAP ์์ | ๊น๋ํ SQL ๊ธฐ๋ฐ ์ ์ |
| ํผํฌ๋จผ์ค | ๋ฐํ์์์ ์ฒ๋ฆฌ | DB ๋ ๋ฒจ์์ HANA ์ต์ ํ ์คํ |