BTP
Custom CDS Entry ๋?
2026.05.0646
๐กSummary Custom CDS Entity = ABAP Class ๊ธฐ๋ฐ ๋ฐ์ดํฐ ๊ฐ๊ณต Basic CDS(์ผ๋ฐ CDS) = DB ๊ธฐ๋ฐ ๋ฐ์ดํฐ ๊ฐ๊ณต Custom CDS Entity ๋ ์ธ๋ถ์์ Odata/RAP๋ก ์กฐํ ๋๋ CRUD ์์ฒญ์ ABAP Class์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ADT์์ Custom Entity๋ฅผ ๊ทธ๋ฅ F8๋ก ์กฐํ์ ๋ฐ์ดํฐ ์กฐํ๊ฐ ์๋๋๊ฒ. DB๊ฐ ์์ผ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ ์ ์๊ณ ABAP Class์์ ๋จผ์ ์ฒ๋ฆฌ ๋ ์ดํ์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ผํ๊ธฐ ๋๋ฌธ
Custeom CDS Entity๋ SQL ๊ตฌ์กฐ๊ฐ ์๋.
๋ฐ๋ผ์ entity ํ์ธ ์ select from ... ๊ฐ ์์
๋์ Annotation ์ผ๋ก @ObjectModel.query.implementedBy: ๋ฅผ ํตํด ABAP Class๋ฅผ ์์ฑํ๊ฒ ๋จ
@EndUserText.label: 'API Based Custom Entity'
@ObjectModel.query.implementedBy: 'ABAP:ZCL_ABAP_CLASS' "<- ABAP Class
define root custom entity ZI_CUSTOM_CDS "<- select from ... ๊ฐ ์์
{
key Id : abap.char(20);
Name : abap.char(50);
Value : abap.char(100);
}โ ๏ธ ์ฃผ์ - โCustom Entity๊ฐ SQLํ์์ด ์๋๋ผ๋ ๊ฒโ ์ด์ง, โABAP Class์์ SQL์ ์ฌ์ฉํ์ง ๋ชปํ๋ค๋ ๊ฒโ ์ด ์๋.
- ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ก์ง์ ABAP ํด๋์ค๊ฐ ๊ตฌํ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ธ์ ํธ๊ฐ ์์ฑ๋์ง ์์
- ABAP SQL๋ก ์ง์ ์ ๊ทผํ ์ ์์
- ์ฃผ๋ก RAP unmanaged query ๊ฐ์ ์๋๋ฆฌ์ค์์ ์ฌ์ฉ
์ธ๋ถ์์ ํธ์ถ์ ํ๋ค๊ณ ?
๐ก ์ธ๋ถ์์ OData/RAP ์๋น์ค๋ฅผ ํธ์ถํ๋ค ๋ ๋ป์,์ธ๋ถ๊ฐ ์กฐํ ์์ฒญ(request) ์ ๋ณด๋ด๋ ๊ฒ์ด์ง, ABAP Class์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ฃ์ด์ค๋ค ๋ ๋ป์ ์๋๋๋ค.
1. OData/RAP ์๋น์ค ํธ์ถ
- ์ธ๋ถ๊ฐ SAP endpoint๋ฅผ ํธ์ถ
- ์: GET /.../SalesOrders
- SAP ๋ด๋ถ์์ ABAP Class๊ฐ ์คํ๋จ
- ABAP Class๊ฐ ๋ฐ์ดํฐ๋ฅผ ์กฐํ/๊ฐ๊ณตํด์ ์๋ต ๋ฐํ
- ์ธ๋ถ๋ โ์์ฒญโ๋ง ํจ
์ฆ:
์ธ๋ถ -> ์กฐํ ์์ฒญ
ABAP Class -> ๋ฐ์ดํฐ ์์ง ํ ์๋ต
2. ABAP Class์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ๋ ๊ตฌ์กฐ
- ์ธ๋ถ๊ฐ payload ์์ฒด๋ฅผ SAP์ ์ ๋ฌ
- SAP๊ฐ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ์ ์ฅ/์ฒ๋ฆฌ
- ๋ณดํต POST, PATCH, CREATE, UPDATE ๊ฐ์ ์ ๋ ฅ ์๋๋ฆฌ์ค
- ์ด๊ฑด ์กฐํ์ฉ Custom Entity ์๋ ๋ค๋ฅธ ์ฑ๊ฒฉ
์ฆ ํผ๋๋ ์ ์๋ ๋ถ๋ถ์:
- ์๋น์ค ํธ์ถ = ์คํ ํธ๋ฆฌ๊ฑฐ
- ๋ฐ์ดํฐ ์ฃผ์ = ์ ๋ ฅ payload ์ ๋ฌ
Custom Entity ๋ ์ฃผ๋ก ์ฒซ ๋ฒ์งธ์ ๋๋ค.
์ธ๋ถ๊ฐ ํ๋ ์ผ์:
- โ์ด ๋ฐ์ดํฐ ๋ณด์ฌ์คโ
- โ์ด ์กฐ๊ฑด์ผ๋ก ์กฐํํด์คโ
๊ทธ๋ฌ๋ฉด ABAP Class๊ฐ:
- API ํธ์ถ
- ํ ์ด๋ธ ์กฐํ
- ๊ฐ๊ณต
- ์๋ต ๋ฐํ
flowchart LR
A["์ธ๋ถ ์์คํ
"] -->|์กฐํ ์์ฒญ OData/RAP| B["SAP Service Endpoint"]
B --> C["Custom CDS Entity"]
C -->|implementedBy| D["ABAP Query Provider Class"]
D --> E["API ํธ์ถ / ํ
์ด๋ธ ์กฐํ / ๋ฐ์ดํฐ ๊ฐ๊ณต"]
E --> D
D -->|์๋ต ๋ฐ์ดํฐ ๋ฐํ| B
B --> ATable Function ๊ณผ Custom Entity ์ฐจ์ด์
๐ก ๊ฒ์ผ๋ก๋ ๋น์ทํ์ง๋ง ํต์ฌ์ด ๋ค๋ฆ. Custom Entity ์ Table Function ์ โ ์ด๋์ ์คํ๋๋๋ โ์ โ ๋ฌด์์ผ๋ก ์ฌ์ฌ์ฉ๋๋๋ โ์ ์ฐจ์ด๊ฐ ์์.
๊ณต์ ๊ทผ๊ฑฐ:
- Custom Entity๋ transient์ด๊ณ ABAP SQL์ด๋ ๋ค๋ฅธ CDS์ data source๋ก ๋ชป ์๋๋ค: Custom Entities
- Table Function์ AMDP/SQLScript๋ก DB์์ ์คํ๋๊ณ ๋ค๋ฅธ CDS๋ ABAP SQL์ data source๋ก ์ธ ์ ์์ต๋๋ค: Table Functions
์ข์ ์๋ฃ ๊ฐ์ฌํฉ๋๋ค.