Tuesday, 30 September 2025

ABAP CDS View Part 5 : CDS View dengan Join (Multi Table)

CDS View dengan Join di SAP ABAP | Tutorial SAP S/4HANA

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)
Summary:
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).

ABAP CDS View Part 4 : Membuat CDS View Basic (Single Table)

Cara Membuat Basic CDS View di ABAP | Panduan SAP S/4HANA

Membuat CDS View Basic (Single Table)

Kalau di Episode 1–3 kita bahas konsep, struktur, dan annotation, sekarang kita langsung masuk ke praktik teknik real. Fokus Episode 4 adalah membuat CDS View basic dari satu tabel saja, misalnya MARA. Cocok untuk pemula dan jadi pondasi sebelum masuk ke join.

1. Lokasi & Naming Pattern

  • Buat di ADT (Eclipse)
  • Folder: core data services → data definitions
  • Prefix object misal ZCDS_*
  • SQL View Name max 16 karakter, huruf kapital

2. Contoh CDS View Basic

@AbapCatalog.sqlViewName: 'ZVBASIC_MARA'
@AbapCatalog.compiler.compareFilter: true
@EndUserText.label: 'CDS View Basic dari Tabel MARA'

define view ZCDS_BASIC_MARA
  as select from mara
{
  key matnr,
      ersda,
      mtart,
      matkl,
      meins
}

Struktur ini adalah pondasi minimal:

  • Annotation untuk nama DB & label
  • define view + nama object
  • select from (tabel utama)
  • daftar field

3. Aktivasi View

Setelah selesai coding:

  • Tekan Ctrl + F3 atau klik Activate
  • View .hdbdip dibuat otomatis di DB
  • Pastikan tidak ada error syntax

4. Data Preview

Untuk cek data:

  • Klik kanan nama view → Open Data Preview
  • Bisa filter langsung dari Eclipse
  • Tampilkan hasil table view

5. Query via ABAP (Optional)

SELECT * FROM ZCDS_BASIC_MARA
  INTO TABLE @DATA(lt_data).

IF lt_data IS NOT INITIAL.
  WRITE / |Total: { lines( lt_data ) }|.
ENDIF.

6. Contoh Lain (But000)

Kalau mau ambil data business partner:

@AbapCatalog.sqlViewName: 'ZVBASIC_BP'
@EndUserText.label     : 'CDS Basic from BUT000'

define view ZCDS_BASIC_BP
  as select from but000
{
  key partner,
      type,
      name_first,
      name_last
}
Summary:
CDS Basic View adalah langkah pertama yang wajib dikuasai. Dengan struktur sederhana (single table), kamu bisa latihan aktivasi, preview data, dan mulai membangun fondasi untuk episode lanjutan seperti join, annotation lanjutan, dan exposure ke OData.

➡️ Next (Episode 5): CDS View dengan Join Antar Tabel (misal MARA + MAKT atau VBAK + VBAP).

ABAP CDS View Part 3 : Annotation dalam CDS View

Annotation Lengkap dalam ABAP CDS View | Panduan SAP S/4HANA

Annotation dalam CDS View

Di Episode 2 kita sudah lihat struktur dasar CDS View. Nah, di Episode 3 ini kita fokus pada annotation — elemen krusial yang bikin CDS powerful. Annotation digunakan untuk memberi metadata tambahan, mengontrol behavior, ekspos data, UI, security, sampai analytic integration.

1. Kategori Annotation Utama

Kategori Fungsi Contoh
Catalog Pengaturan DB View dan compiler @AbapCatalog.sqlViewName
Text/Documentation Label, deskripsi object @EndUserText.label
OData/Exposure Publish sebagai OData Service @OData.publish
Authorization Check akses user @AccessControl.authorizationCheck
UI Annotation Integrasi Fiori/UI5 @UI.lineItem
Analytics OLAP, cube, dimension @Analytics.query

2. Contoh Annotation Dasar

@AbapCatalog.sqlViewName: 'ZV_MARA_ANN'
@AbapCatalog.compiler.compareFilter: true
@EndUserText.label: 'CDS with Annotation Example'
@AccessControl.authorizationCheck: #CHECK
@OData.publish: true

define view ZCDS_MARA_ANN
  as select from mara
{
  key matnr,
      ersda,
      mtart,
      matkl
}
  • @OData.publish: true → otomatis generate service
  • @AccessControl.authorizationCheck: #CHECK → integrasi ke DCL
  • @AbapCatalog.sqlViewName → nama di database

3. Contoh UI Annotation

@UI.lineItem: [
  {
    position: 10,
    label: 'Material',
    value: matnr
  },
  {
    position: 20,
    label: 'Material Type',
    value: mtart
  }
]
define view ZCDS_UI_DEMO
  as select from mara
{
  key matnr,
      mtart,
      matkl
}

Annotation ini sering dipakai kalau CDS akan dihubungkan ke Fiori Elements tanpa perlu coding tambahan.

4. Authorization Annotation

@AccessControl.authorizationCheck: #NOT_REQUIRED
-- atau
@AccessControl.authorizationCheck: #CHECK

Kalau pakai #CHECK, maka harus ada DCL (Data Control Language) yang mengatur role-based access.

5. Contoh Analytic Annotation (Singkat)

@Analytics.query: true
@VDM.viewType: #CONSUMPTION

Biasanya dipakai untuk reporting (misalnya embedded analytics).

Summary:
Annotation adalah “superpower”-nya CDS View. Dengan anotasi, satu object bisa sekaligus jadi source OData, UI Fiori, analytic cube, atau dilindungi security.

➡️ Next Episode (4): Praktik Membuat CDS Basic View
(dari tabel MARA, join sederhana, dan aktivasi).

Monday, 29 September 2025

ABAP CDS View Part 2 : Struktur & Sintaks Dasar ABAP CDS View

Struktur & Sintaks Dasar ABAP CDS View | Tutorial SAP S/4HANA

Struktur & Sintaks Dasar ABAP CDS View

Setelah memahami konsep CDS di Episode 1, sekarang kita lanjut ke bagian teknis: bagaimana struktur dasar CDS View, elemen pentingnya, dan contoh sederhana yang bisa langsung dicoba di ADT Eclipse.

1. Komponen Utama dalam CDS View

  • Define View — deklarasi utama
  • SQL Source — tabel / source data
  • Annotation — metadata tambahan
  • Field List — kolom yang diekspose

2. Contoh Struktur Dasar

@AbapCatalog.sqlViewName: 'ZV_MARA_DEMO'
@AbapCatalog.compiler.compareFilter: true
@EndUserText.label: 'Contoh CDS View Sederhana'

define view ZCDS_MARA_DEMO
  as select from mara
{
  matnr,
  ersda,
  mtart,
  matkl
}

Penjelasan singkat:

  • @AbapCatalog.sqlViewName → nama view di level DB
  • @EndUserText.label → nama yang tampil di UI
  • define view → deklarasi object
  • select from → ambil data dari tabel
  • Field list → kolom yang diekspos

3. Annotation Dasar yang Wajib Diketahui

  • @AbapCatalog.sqlViewName — identifier level DB
  • @EndUserText.label — deskripsi object
  • @AccessControl.authorizationCheck — security
  • @OData.publish — expose ke OData

4. Aktivasi & Testing

Setelah kode dibuat di ADT Eclipse:

  • Tekan Ctrl + F3 atau klik Activate
  • Gunakan Data Preview untuk cek data
  • Bisa juga query via SELECT * FROM di ABAP

Contoh Preview Query di ABAP

SELECT * FROM ZCDS_MARA_DEMO
  INTO TABLE @DATA(lt_mara).
Summary:
Struktur CDS sangat sederhana: annotation, define view, select from, dan daftar field. Dengan format ini, kita bisa mulai membangun view yang reusable dan performa tinggi.

➡️ Up Next (Episode 3): Annotation lengkap CDS View (kategori teknis, UI, OData, authorization, dan contoh penerapannya).

ABAP CDS View Part 1: Introduction to ABAP CDS View (Pengenalan)

Pengenalan ABAP CDS View | SAP S/4HANA

Introduction to ABAP CDS View (Pengenalan)

Core Data Services (CDS) adalah teknologi modern di SAP yang memungkinkan kita mendefinisikan data secara semantik di database layer. In SAP S/4HANA, CDS becomes a fundamental concept karena mendukung performance tinggi, analytical capabilities, dan integrasi langsung ke OData/Fiori.

What is a CDS View?

CDS View adalah “next generation view” yang ditulis dengan sintaks deklaratif berbasis SQL, tapi diperkaya dengan annotation yang memberikan fungsi tambahan seperti UI exposure, authorization, layanan OData, sampai analitik.

Why SAP Introduced CDS?

  • Higher performance dengan HANA pushdown
  • Mendukung arsitektur service-based dan reuse
  • OData exposure langsung tanpa coding tambahan
  • Mengurangi beban di layer ABAP klasik

CDS vs SE11 Classical View

Aspect SE11 View CDS View
Creation Method GUI (SE11) Source Code via ADT Eclipse
Annotation Support No Yes (UI, OData, Auth, etc.)
Performance Standard Optimized for HANA
OData Exposure Manual & Limited Native via annotation

Main Benefits (Keunggulan)

  • Query lebih cepat untuk data besar
  • Reusable objects antar modul
  • Mudah dihubungkan dengan OData, Fiori, RAP
  • Dapat digunakan untuk reporting dan BI

Types of CDS View

  • Basic View – single source/table
  • Composite View – combine beberapa basic view
  • Consumption View – presentasi, UI, OData
  • Analytical View – laporan OLAP/BI

Use Case Examples

  • Laporan penjualan antar tabel SD
  • Expose material ke aplikasi Fiori
  • Mengurangi SELECT kompleks di ABAP
  • Source data dashboard atau analitik
Summary:
CDS View bukan sekadar pengganti view lama, tetapi fondasi utama pengembangan modern di SAP S/4HANA. Memahami dasar CDS akan sangat membantu sebelum masuk ke syntax, annotation, dan integrasi teknis.

➡️ Up Next (Episode 2): Basic Structure & Syntax CDS (struktur file, annotation dasar, dan contoh yang bisa langsung dicoba).

Tuesday, 23 September 2025

Belajar ABAP Summary Part 1–16

Belajar ABAP Summary Part 1–16 | Expandable Sitemap

Belajar ABAP Part 16: Security Best Practices & Authorization in ABAP/CDS

Belajar ABAP Part 16: Security Best Practices & Authorization in ABAP/CDS

Belajar ABAP Part 16: Security Best Practices & Authorization in ABAP/CDS

Security adalah aspek kritikal dalam pengembangan ABAP. Tanpa kontrol otorisasi yang baik, data sensitif bisa terekspos ke user yang tidak berhak. Di part ini kita akan membahas bagaimana Authorization bekerja di ABAP dan CDS, serta best practices untuk menulis kode yang aman.

1. Authorization Object

Authorization Object adalah komponen di SAP yang mendefinisikan izin akses berdasarkan field-field tertentu (misalnya Company Code, Activity). Authorization Object digunakan dalam role (via PFCG).

Contoh Authorization Object standar: M_BEST_BSA (untuk Purchase Requisition by Document Type).

2. Authority-Check di ABAP

Dalam ABAP, validasi otorisasi dilakukan dengan statement AUTHORITY-CHECK. Contoh sederhana:

AUTHORITY-CHECK OBJECT 'Z_SALES_AUTH'
  ID 'VKORG' FIELD lv_vkorg
  ID 'ACTVT' FIELD '03'.  "Display

IF sy-subrc <> 0.
  MESSAGE 'You are not authorized to view this Sales Org' TYPE 'E'.
ENDIF.
Gunakan sy-subrc untuk mengecek hasil: 0 = authorized, selain itu tidak berhak.

3. DCL (Data Control Language) di CDS

Di dunia CDS View, security dikelola dengan DCL (Data Control Language). DCL mengikat Authorization Object dengan CDS sehingga filter terjadi otomatis di query.

Contoh DCL untuk CDS View Sales Data:

@EndUserText.label: 'Authorization for Sales Data'
define role ZR_SALES_AUTH {
  grant select on ZC_SalesData
    where VKORG = aspect pfcg_auth(VKORG, 'Z_SALES_AUTH');
}

Dengan DCL ini, user hanya bisa melihat Sales Org sesuai otorisasi di role.

4. Best Practices Security di ABAP/CDS

  • Selalu gunakan AUTHORITY-CHECK untuk transaksi Z-report.
  • Implementasikan DCL di CDS agar query otomatis secure.
  • Hindari hardcode user dalam program.
  • Lakukan input validation (cek value kosong, tipe data, dsb).
  • Cegah SQL injection dengan parameterized query (gunakan Open SQL, jangan string concatenation).

5. Real Case: Proteksi Report Z Sales

Misal ada report Z_SALES_REPORT yang menampilkan data sales berdasarkan Sales Organization. Kita ingin supaya hanya user dengan otorisasi tertentu bisa akses.

Contoh Implementasi

REPORT z_sales_report.

PARAMETERS: p_vkorg TYPE vkorg.

" Authorization check
AUTHORITY-CHECK OBJECT 'Z_SALES_AUTH'
  ID 'VKORG' FIELD p_vkorg
  ID 'ACTVT' FIELD '03'.

IF sy-subrc <> 0.
  MESSAGE 'Not authorized for this Sales Org' TYPE 'E'.
ENDIF.

" Jika authorized, fetch data
SELECT vbeln, vkorg, netwr
  FROM vbak
  INTO TABLE @DATA(lt_sales)
  WHERE vkorg = @p_vkorg.

cl_demo_output=>display( lt_sales ).

Pada contoh di atas:

  • User input Sales Org (p_vkorg).
  • Program cek otorisasi via AUTHORITY-CHECK.
  • Jika tidak berhak → error message.
  • Jika berhak → data ditampilkan.

6. Summary

Key Takeaways Part 16:
  • Authorization Object adalah dasar kontrol akses di SAP.
  • AUTHORITY-CHECK wajib dipakai di ABAP report untuk validasi akses.
  • DCL di CDS mengikat security langsung ke level database query.
  • Selalu ikuti best practices security seperti input validation, SQL injection prevention, dan role-based access.
  • Real case: proteksi Z_SALES_REPORT dengan AUTHORITY-CHECK agar hanya user berotorisasi yang bisa lihat data.

SAP ABAP - Upload Count PID dengan BAPI

Upload Count PID dengan BAPI di ABAP — Contoh Program YMMC100 Upload Count PID dengan BAPI di ABAP — Progr...