CDS View dengan Join (Multi Table)
Kalau di Episode 4 kita main di single table CDS, sekarang kita naik level. Episode 5 fokus pada JOIN – fitur penting untuk gabung data dari beberapa tabel sekaligus, mirip SELECT JOIN di SQL, tapi lebih elegan dan reusable.
1. Tipe Join dalam CDS
- Inner Join – hanya data yang cocok di kedua tabel
- Left Outer Join – semua dari tabel utama + matching dari tabel kedua
- Right Join jarang dipakai (direkomendasikan hindari)
2. Contoh Join: MARA + MAKT
Contoh umum: Material Master (MARA) dengan Deskripsi Material (MAKT).
@AbapCatalog.sqlViewName: 'ZV_JOIN_MARA'
@EndUserText.label : 'CDS Join MARA dan MAKT'
define view ZCDS_JOIN_MARA
as select from mara as A
inner join makt as B
on A.matnr = B.matnr
{
key A.matnr,
A.mtart,
A.matkl,
B.maktx,
B.spras
}
Alias A
dan B
membantu membaca struktur dengan lebih jelas.
3. Contoh Left Outer Join
Kalau mau semua material muncul walaupun tidak ada translation:
define view ZCDS_JOIN_LEFT
as select from mara as A
left outer join makt as B
on A.matnr = B.matnr
{
key A.matnr,
B.maktx,
B.spras
}
4. Data Preview & Aktivasi
- Tekan Ctrl + F3 untuk aktivasi
- Klik kanan → Open Data Preview
- Cek hasil join langsung dari Eclipse
5. Contoh Join di Modul SD (Header + Item)
@AbapCatalog.sqlViewName: 'ZV_VBAK_VBAP'
@EndUserText.label : 'CDS Join VBAP dan VBAK'
define view ZCDS_JOIN_SALES
as select from vbak as H
inner join vbap as I
on H.vbeln = I.vbeln
{
key H.vbeln,
H.auart,
I.posnr,
I.matnr,
I.netwr
}
Struktur header–item ini sering dipakai untuk laporan atau OData.
6. Tips & Best Practice
- Gunakan alias A, B, H, I biar kode clean
- Hindari wildcard (
*
) - Selalu pakai key field untuk identifikasi
- Join secukupnya (hindari join 7–8 tabel sekaligus)
Join adalah fitur penting dalam CDS untuk gabung data dari beberapa tabel. Gunakan inner atau left join sesuai kebutuhan. Dengan struktur rapi dan alias, CDS View kamu siap dipakai untuk OData, analitik, atau laporan Fiori.
➡️ Next (Episode 6): CDS View dengan Filter & Parameter (misal p_langu, date filter, top N data).
No comments:
Post a Comment