Extend View & Reuse — Memperluas CDS tanpa Mengubah Base View
When projects grow, requirement berubah, atau kamu butuh custom field untuk customer/partner, kita tidak selalu ingin mengubah CDS standar yang sudah ada. CDS View extension memungkinkan developer menambah field atau association ke view yang sudah ada — tanpa memodifikasi object asli. Ini mirip konsep append structure di ABAP Dictionary, tapi untuk CDS. :contentReference[oaicite:1]{index=1}
1) Dua pendekatan utama
- Extend View Entity (new syntax) — direkomendasikan untuk view entity modern (define view entity). Ada statement baru
EXTEND VIEW ENTITY
untuk extensibility. :contentReference[oaicite:2]{index=2} - Extend / Append style (older templates) — untuk `define view` yang lebih lama, ADT menyediakan template Extend View yang menghasilkan object extension yang menambahkan kolom/association. Banyak tutorial praktis menjelaskan alurnya. :contentReference[oaicite:3]{index=3}
2) Contoh konsep (pattern) — extend via separate data definition
Prinsipnya: kamu buat object CDS baru (extension) yang menunjuk ke CDS base, lalu tambahkan elemen yang diperlukan. Extension ini disimpan di object terpisah dan dapat dideploy/transport secara independen.
2.a — Contoh pola umum (pseudocode / template)
-- Template style (ADT: "Extend View")
@AbapCatalog.sqlViewAppendName: 'ZV_BASE_EXT' "SQL append name (16 chars)
@EndUserText.label: 'Extension: add extra fields'
extend view ZCDS_BASE with ZCDS_BASE_EXT
{
-- refer to original data source alias of base view, e.g. "BaseSource.field"
BaseSource.extra_field,
AnotherSource.more_field
}
Note: Actual template generated by ADT may use keywords like EXTEND VIEW
or EXTEND VIEW ENTITY
depending on whether base view is legacy DEFINE VIEW
or modern DEFINE VIEW ENTITY
. Selalu gunakan template ADT agar format dan atribut transport/activation benar. :contentReference[oaicite:4]{index=4}
2.b — Contoh praktis: menambah field teks ke consumption view
-- Base consumption view (example)
define view ZCDS_MATERIAL_BASE
as select from mara as M
{
key M.matnr,
M.mtart,
M.matkl
}
-- Extension (contoh)
@AbapCatalog.sqlViewAppendName: 'ZV_MAT_EXT'
@EndUserText.label: 'Extension: add material description'
extend view ZCDS_MATERIAL_BASE with ZCDS_MATERIAL_BASE_EXT
{
M.maktx -- refer to data source field (MAKT) via path / alias if allowed
}
Di praktik nyata, kadang kamu perlu menggunakan path expression ke association extension (mis. _Extension
) atau extend the E-view dulu sebelum extend R-view (pattern SAP standar). Ini berguna terutama pada standar SAP yang membatasi sumber data ekstensi. :contentReference[oaicite:5]{index=5}
3) Extensibility Control & Annotations penting
Owner dari base view bisa mengontrol apakah view boleh di-extend, dan dari mana extension boleh mengambil data, lewat annotation seperti:
Annotation | Fungsi singkat |
---|---|
@AbapCatalog.viewEnhancementCategory | Menentukan bagian view yang boleh di-extend (mis. PROJECTION_LIST, AGGREGATE) |
@AbapCatalog.extensibility | Kontrol lebih detil atas extensibility (allowNewDatasources, dataSources, elementSuffix, dsb.) |
@AccessControl | Masih berlaku — extension tetap mengikuti security & DCL jika ada |
Dengan pengaturan ini, pemilik object mengatur batasan yang aman untuk ekstensi (mis. tidak membiarkan membaca sembarang tabel baru tanpa izin). :contentReference[oaicite:6]{index=6}
4) Best Practice untuk Reuse & Extension
- Jangan ubah base view langsung — buat extension object terpisah agar upgrade-safe.
- Gunakan E-views (extension includes) — SAP sering menyediakan E_* views sebagai target extension; tambah field ke E-view lalu expose ke R-view. Ini pattern aman untuk standard SAP. :contentReference[oaicite:7]{index=7}
- Limit sumber data — jika owner men-set
allowNewDatasources=false
, extension hanya boleh membaca dari dataSources yang diizinkan. - Dokumentasikan extension — jelaskan kenapa field ditambah, mapping tabel asal, dan impact ke OData/UI.
- Test data preview & OData exposure setelah aktivasi—pastikan tidak merusak binding ke Fiori Elements atau service metadata.
5) Kapan pakai extension vs membuat view baru?
- Pakai extension jika: butuh menambah field ke view existing yang banyak dipakai, dan kamu ingin preserve konsistensi nama service/object.
- Buat view baru jika: requirement berbeda total (struktur output berubah), atau kamu butuh behavior/aggregation berbeda.
CDS View extension adalah cara upgrade-safe untuk menambah field atau association tanpa memodifikasi base view. Gunakan template ADT (Extend View / Extend View Entity), perhatikan annotation extensibility yang di-set oleh owner, dan ikuti best practice SAP (pakai E-view pattern bila tersedia). Untuk referensi resmi dan panduan langkah demi langkah, cek dokumentasi SAP dan tutorial ADT. :contentReference[oaicite:8]{index=8}
➡️ Next (Episode 8): CDS untuk OData & Fiori — expose consumption view ke OData, service binding, dan testing via Gateway.
No comments:
Post a Comment