Wednesday, 1 October 2025

ABAP CDS View Part 9 : CDS Analytical — Fact, Dimension & Annotation

CDS Analytical: Fact & Dimension untuk Reporting di SAP S/4HANA

CDS Analytical — Fact, Dimension & Annotation untuk Reporting

Di episode ini kita membahas CDS Analytical: bagaimana merancang CDS sebagai sumber data analitik (fact & dimension), anotasi yang umum dipakai untuk analytical/embedded analytics, serta cara mengkonsumsi hasilnya di Fiori atau SAP Analytics Cloud (SAC).

1. Konsep: Fact vs Dimension

  • Fact: berisi ukuran (measures) numerik yang bisa di-aggregate—misalnya jumlah penjualan, quantity, revenue.
  • Dimension: konteks atau atribut untuk memotong/menyaring fact—mis. customer, material, time, region.
  • Di model CDS Analytical kita biasanya memisahkan view menjadi fact view (menampung measures) dan beberapa dimension view untuk atribut.

2. Kenapa pisah Fact & Dimension?

  • Memudahkan reuse: dimensi bisa dipakai oleh banyak faktur/kueri.
  • Performance: view analytical dapat dioptimalkan untuk agregasi dan push-down ke HANA.
  • Compatibility: memudahkan konsumsi oleh tools analitik (SAC, Fiori Analytical, atau reporting engine).

3. Annotation Analytic yang sering dipakai (konsep)

Beberapa annotation di CDS berguna untuk menandai bahwa view ini dimaksudkan untuk analytic/query dan untuk mengidentifikasi measures vs dimensions. Contoh umum (konsep, cek ADT SAP doc untuk variant lengkap):

AnotasiTujuan
@VDM.viewType: #ANALYTICALMenandai view sebagai analytical/consumption type.
@Analytics.query: trueMengindikasikan view dapat dipakai sebagai query/analytical dataset.
@DefaultAggregate / agregasiMenentukan fungsi agregasi default untuk field numeric (sum, avg).
@Semantics.amount / @Semantics.unitOfMeasureMenandakan field sebagai amount dan unit (penting untuk pemformatan/UOM).
@UI.lineItem / @UI.selectionFieldUI hints untuk Fiori Elements Analytical apps.

Catatan: detail nama annotation bisa berbeda-beda versi SAP; gunakan ADT/Help untuk memastikan nama dan parameter yang tepat.

4. Contoh Arsitektur Sederhana

Contoh pattern yang sering dipakai:

  1. Dimension Material — CDS yang expose atribut material (material id, description, group).
  2. Dimension Customer — CDS yang expose customer attributes (id, name, region).
  3. Fact Sales — CDS yang mengambil transaksi penjualan (header/item) dan menyediakan measures seperti NetValue, Quantity.
  4. Consumption / Analytical View — menggabungkan fact + dimension (via association/join) dan menandainya sebagai consumption/analytical untuk reporting.

5. Contoh CDS (pattern) — Dimension + Fact + Consumption

Berikut contoh sederhana (kode contoh; sesuaikan nama tabel/field dengan sistem Anda):

-- Dimension: Material
@AbapCatalog.sqlViewName: 'ZV_DIM_MAT'
@EndUserText.label: 'Dimension Material'
define view ZCDS_DIM_MATERIAL
  as select from mara
{
  key matnr      as MaterialID,
      matkl      as MaterialGroup,
      mtart      as MaterialType
}

-- Dimension: Customer (contoh)
@AbapCatalog.sqlViewName: 'ZV_DIM_CUST'
@EndUserText.label: 'Dimension Customer'
define view ZCDS_DIM_CUSTOMER
  as select from kna1
{
  key kunnr     as CustomerID,
      name1     as CustomerName,
      regio     as Region
}

-- Fact: Sales (mengumpulkan measures)
@AbapCatalog.sqlViewName: 'ZV_FACT_SALES'
@EndUserText.label: 'Fact Sales'
define view ZCDS_FACT_SALES
  as select from vbap as I
    inner join vbak as H on I.vbeln = H.vbeln
{
  key H.vbeln            as SalesDoc,
      I.posnr            as ItemNo,
      I.matnr            as MaterialID,
      H.kunnr           as CustomerID,
      sum( I.netwr )     as TotalNetValue,   -- measure (aggregate)
      sum( I.kwmeng )    as TotalQuantity
}
-- Catatan: penulisan agregasi / grouping bisa membutuhkan sintaks 'group by' tergantung pada versi CDS.

Jika Anda perlu agregasi kompleks (rolling, windowing), pertimbangkan CDS Table Function/AMDP untuk logika yang lebih fleksibel.

6. Membuat Consumption / Analytical View

Setelah punya fact + dimension, biasanya dibuat consumption view yang menghubungkan keduanya dan memberikan annotation untuk analytic consumption.

@AbapCatalog.sqlViewName: 'ZV_CDS_SALES_CONS'
@EndUserText.label: 'Consumption: Sales for Analytics'
@VDM.viewType: #ANALYTICAL
@Analytics.query: true

define view ZCDS_SALES_ANALYTICS
  as select from ZCDS_FACT_SALES as F
    left outer join ZCDS_DIM_MATERIAL   as M  on F.MaterialID = M.MaterialID
    left outer join ZCDS_DIM_CUSTOMER   as C  on F.CustomerID = C.CustomerID
{
  key F.SalesDoc,
      F.ItemNo,
      M.MaterialID,
      M.MaterialGroup,
      C.CustomerID,
      C.CustomerName,
      F.TotalNetValue    as NetValue    @Semantics.amount: true,
      F.TotalQuantity    as Quantity
}

7. Aktivasi & Konsumsi Reporting

  • Aktifkan semua view di ADT (Ctrl+F3).
  • Jika pakai Fiori Analytical atau Fiori Elements, tambahkan UI annotation (@UI.lineItem, @UI.selectionField) pada consumption view agar list/filters terbentuk otomatis.
  • Untuk SAC: expose consumption view via OData (lihat Episode 8) atau buat connection langsung ke S/4HANA sebagai source (tergantung arsitektur landscape).
  • Test metadata (/…/$metadata) agar tools analitik dapat membaca measures & dimensions dengan benar.

8. Praktik Terbaik (Best Practices)

  • Pisahkan fact & dimension untuk reuse dan kejelasan model.
  • Tandai measures dengan semantic annotation (amount, currency, unit) agar tools men-format angka dengan benar.
  • Kendalikan jumlah field yang di-expose ke consumption view — hanya field yang dibutuhkan untuk analitik.
  • Uji performa pada HANA: pastikan filter pushdown dan agregasi terjadi di DB untuk skala besar.
  • Gunakan table function / AMDP untuk scenario agregasi kompleks atau perhitungan windowing.
  • Document setiap measure: definisi, sumber, dan periode (mis. net value in document currency).
Ringkasan:
CDS Analytical membantu membuat model data yang rapi untuk reporting: fact menyimpan measures, dimension menyimpan atribut, dan consumption view menggabungkan keduanya untuk consumption oleh Fiori atau tools analitik seperti SAC. Gunakan annotation analytic & semantic agar hasil konsumsi tepat, dan selalu cek performa & metadata sebelum dipakai produksi.

➡️ Next (Episode 10): Authorization & DCL — mengamankan CDS dengan Data Control Language, role-based access, dan contoh implementasi DCL.

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...