Tuesday, 30 September 2025

ABAP CDS View Part 7 : Extend View & Reuse

Extend & Reuse CDS View — Extend View Entity di ABAP CDS | SAP Tutorial

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:

AnnotationFungsi singkat
@AbapCatalog.viewEnhancementCategoryMenentukan bagian view yang boleh di-extend (mis. PROJECTION_LIST, AGGREGATE)
@AbapCatalog.extensibilityKontrol lebih detil atas extensibility (allowNewDatasources, dataSources, elementSuffix, dsb.)
@AccessControlMasih 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.
Summary:
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

ABAP CDS View Part 10 : Authorization & DCL untuk ABAP CDS

Authorization & DCL di ABAP CDS | Panduan Lengkap (PFCG, @AccessControl, DCL) Authorization & DCL untuk ABAP CDS — Pandua...